Как я могу получить направление камеры с помощью webxr?

Я хотел бы использовать camera.getWorldDirection() и получить доступ к указаниям на головном дисплее. Я смог сделать это с помощью предыдущего API webVR. Когда я использую новый HelioWebXRPolyfill.js от THREE, я не могу получать текущие позиции.


person Cagri    schedule 01.01.2020    source источник
comment
Камера в новой реализации webXR, похоже, не имеет ссылки на фактический вид гарнитуры, она находится в стороне от него. Если я получаю camera.rotation и смотрю по сторонам с помощью гарнитуры, изменений нет. Я тоже ищу ответ на этот вопрос ?!   -  person T0m    schedule 07.01.2020
comment
Я столкнулся с той же проблемой? Вы разрешили это?   -  person Stanly    schedule 07.04.2020


Ответы (4)



Кажется, что вызов renderer.xr.getCamera() не полностью копирует различные свойства элемента камеры, которые camera.getWorldDirection() ожидает найти. Я не уверен, откуда эта проблема (возможно, из-за полифила?), Но вы можете обойти ее, вычислив направление самостоятельно:

        let xrCamera = this.renderer.xr.getCamera(sceneCamera)
        let e = xrCamera.matrixWorld.elements
        let direction = new THREE.Vector3(-e[8], -e[9], -e[10]).normalize()
person ksimeon    schedule 10.01.2020

Я придумал простое решение. Просто родительский блок для камеры и используйте его вместо камеры.

camera.add( camerabox );

Это не работает:

var direction = new THREE.Vector3();
camera.getWorldDirection( direction );

Это ДЕЙСТВИТЕЛЬНО работает:

var direction = new THREE.Vector3();
camerabox.getWorldDirection( direction );
person phil    schedule 20.01.2020
comment
На самом деле это не работает с инструментами разработчика FireFox WebXR. Под камерой вы имели в виду прикрепление сетки с помощью BoxGeometry? - person kgz; 03.12.2020

глобальная переменная

var cameraVector = new THREE.Vector3();  //define once and reuse it!

в вашем цикле рендеринга

let xrCamera = renderer.xr.getCamera(camera);
xrCamera.getWorldDirection(cameraVector);
//heading vector for webXR camera now within cameraVector
person stereopan-com    schedule 05.08.2020