摄像机在WebVR Cardboard / three.js中连续前进

时间:2018-03-01 20:44:37

标签: javascript three.js google-cardboard webvr

在一个只需要纸板查看器的环境中,我一直试图让摄像机慢慢地朝着用户在three.js / WebVR项目中查看的方向前进。

我通过大量的反复试验发现,在非虚拟现实环境中通常可以使用的功能在WebVR中不起作用,我会假设因为透视摄像机的行为已被覆盖可能?

以下内容:

function render() {
    camera.translateZ(-0.02);
    renderer.render( scene, camera );
}

没用,相机保持静止。所以我想到将相机添加到另一个对象并移动该对象:

var cube = new THREE.Mesh( geometry, material );
scene.add( cube );
cube.add(camera);
...
function render() {
    cube.translateZ(-0.02);
    cube.rotation.copy(camera.rotation);
    renderer.render( scene, camera );
}

以上工作,相机随立方体一起移动但旋转关闭。通过纸板观察器向北看,似乎为了让摄像机向东移动,我必须将观察者向东旋转180度,以便我朝南。

我想我可能会对四元数和欧拉旋转感到困惑,或者我错过了使用vector3定位的技巧?

任何想法都非常感谢!

1 个答案:

答案 0 :(得分:0)

制作空GameObject并将其设为MainCamera,然后将该脚本附加到该空游戏对象上。

GameObject cameraMain;
float speed = 2f;

void Start () {
    cameraMain = GameObject.FindGameObjectWithTag("MainCamera");
}

void Update () {
    transform.localPosition += transform.forward * speed * Time.deltaTime;
    transform.localRotation = Quaternion.Euler(cameraMain.transform.localEulerAngles.x, cameraMain.transform.localEulerAngles.y, cameraMain.transform.localEulerAngles.z);
}