如何设置摄像头初始位置(Three.jsVR)?

问题描述 投票:2回答:1

如果我没有给摄像头设置初始位置,WEB borwser和Oculus Go浏览器的表现是不同的(见下图)。

const camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );
// camera position is Vector3(0, 0, 0)
scene.add( camera );

Initial camera position in WEB browser

图1--WEB浏览器中摄像头的初始位置 1 - WEB浏览器(如谷歌浏览器)中的初始摄像头位置。

Initial camera position in VR browser

图2 - VR浏览器中的初始摄像头位置(如Oculus Go的默认浏览器)。2 - VR浏览器中的初始摄像头位置(例如Oculus Go的默认浏览器)。

它看起来像 Three.js的场景知道它在哪个环境中运行,并自动调整摄像机的位置。我怎样才能改变摄像机的初始位置?

目前,我正在做这样的思考。

const cameraHolder = new Group();

cameraHolder.add(camera);
cameraHolder.position.set(0, 1, 0);

scene.add(cameraHolder); 

但还是不能解决在不同环境下摄像机位置不同的问题。

three.js virtual-reality perspectivecamera oculusgo
1个回答
0
投票

我相信这是参考空间的行为。如果你使用参考空间类型为 *-floor 设备知道你的身高。摄像机的y被设置为你的设备的y位置,这是有道理的。由于我找不到从哪里抓取设备的高度,我只是将参考空间类型设置为本地。

this.renderer.xr.setReferenceSpaceType( 'local' );

对我来说 scene.add(cameraHolder) 是必要的,否则摄像机就无法接收到位置旋转。老式HMD的摄像头连接在一个 "头 "模型上,然后你会转动头部而不是摄像头。

© www.soinside.com 2019 - 2024. All rights reserved.