three.js - 如何设置初始相机位置(Three.js/VR)?

标签 three.js virtual-reality perspectivecamera oculusgo

如果我没有为相机设置初始位置,WEB 浏览器和 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 - 网络浏览器(例如 Google Chrome)中的初始相机位置

Initial camera position in VR browser

图片。 2 - VR 浏览器中的初始相机位置(例如 Oculus Go 的默认浏览器)

看起来Three.js的场景知道它在什么环境下运行并自动调整相机位置。如何更改相机的初始位置?

目前,我正在做这样的事情:

const cameraHolder = new Group();

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

scene.add(cameraHolder); 

但同样,它并没有解决不同环境中不同位置的问题。

最佳答案

我相信这是引用空间的行为。如果您使用 *-floor 的引用空间类型,设备就会知道您有多高。然后将相机 y 设置为您的设备 y 位置,这是有道理的。因为我找不到从哪里获取设备高度,所以我只是将引用空间类型设置为本地。

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

对我来说,scene.add(cameraHolder) 是必需的,否则相机将无法接收位置/旋转。旧 HMD 将摄像头连接到“头部”模型,然后您将转动头部而不是摄像头。

关于three.js - 如何设置初始相机位置(Three.js/VR)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54007573/

相关文章:

c++ - 带相机旋转的 3d 透视投影

javascript - 如何在 THREE.js 中定位纹理图像

javascript - 如何在 OBJLoader 加载的对象上应用纹理?

c# - 统一如何使用单个操纵杆控制相机 View ?

Three.js如何开启VR立体模式

java libgdx 移动透视相机

javascript - THREE.JS 动画的最佳选择

javascript - 如何在多维数据集对象中交互子对象 - Three.js

unity3d - Unity 拆分立体显示

c++ - 透视投影和 View 矩阵 : Both depth buffer and triangle face orientation are reversed in OpenGL