2015-12-26 3 views
2

У меня есть следующий код:Невозможно изменить положение камеры при использовании VRControls

... 
camera = new THREE.PerspectiveCamera(75, screenRatio, 1, 10000); 
camera.position.z = -10; // position.set(0, 0, -10) also not working. 
controls = new THREE.VRControls(camera); 
effect = new THREE.VREffect(renderer); 
effect.setSize(window.innerWidth, window.innerHeight); 
... 

VRControls работает синхронно с акселерометром, но я не могу изменить положение камеры. Он кажется застрявшим в точке происхождения (0,0,0). Он работал отлично, прежде чем применять VRControls и VREffect.

ответ

3

Обнаружено решение внутри демонстрации Sechelt от Mozilla VR Team demos. Я поставлю здесь фрагмент кода в качестве ссылки для других начинающих VR.

Добавление камеры в группу вместо обновления положения камеры напрямую - это способ перемещения камеры.

var scene, renderer, cameraRatio, camera, controls, effect, dolly; 

function init() { 
    scene = new THREE.Scene(); 

    renderer = new THREE.WebGLRenderer({ antialias: true }); 
    renderer.setSize(window.innerWidth, window.innerHeight); 
    document.body.appendChild(renderer.domElement); 

    cameraRatio = window.innerWidth/window.innerHeight; 
    camera = new THREE.PerspectiveCamera(75, cameraRatio, 1, 1000);  

    controls = new THREE.VRControls(camera); 
    effect = new THREE.VREffect(renderer); 
    effect.setSize(window.innerWidth, window.innerHeight); 

    // This helps move the camera 
    dolly = new THREE.Group(); 
    dolly.position.set(0, 0, 0); 
    scene.add(dolly); 
    dolly.add(camera); 

    ... 
    // Of course, there should be lights, objects, etc 
} 

function animate() { 
    dolly.position.x += 0.1; 
    controls.update(); 
    effect.render(scene, camera); 
} 

init(); 
animate(); 
+0

Я не знаю точно, почему группа тележек необходима для изменения положения камеры. VRControls всегда переопределяет положение камеры в исходное положение? –

0

Я думаю, что камера сейчас object. Вместо этого вы можете попробовать object.position.set().