Как сделать так, чтобы куб всегда появлялся перед камерой XR (телефона)? - PullRequest
1 голос
/ 27 апреля 2020

Я пытаюсь сделать кубик мной sh, чтобы он всегда располагался перед камерой XR.

Независимо от того, как я перемещаю камеру телефона, куб должен появляться прямо перед камерой, показывая только одну сторону куба.

Во-первых, я добавил куб себе sh в сцена в начале:

material = new THREE.MeshLambertMaterial({ color: 0x9797CE });
box = new THREE.Mesh(new THREE.CubeGeometry(1, 1, 1), material);
box.position.set(0, 0, -3);
scene.add(box);

А затем попытался нарисовать прямоугольник перед камерой XR:

function animate() {
    let xrCamera = renderer.xr.getCamera(camera);
    box.position.set(xrCamera.position.x, xrCamera.position.y, xrCamera.position.z - 3);
    box.rotation.set(xrCamera.rotation.x, xrCamera.rotation.y, xrCamera.rotation.z);
    renderer.render(scene, camera);
}

Когда я запускаю код, куб появляется перед камера моего телефона.

Но когда я поворачиваю свой телефон, куб вращается в том же положении, не следуя за камерой.

Я также пытался xrCamera.add(box), но, похоже, он не работает.

Как правильно сделать так, чтобы куб всегда оставался перед камерой XR?

1 Ответ

1 голос
/ 27 апреля 2020

Важно знать, что в настоящее время (r115) свойства преобразования position, rotation и scale, а также локальная матрица камеры XR не обновляются.

Вместо этого добавить поле к xrCamera, добавить его к camera. Кроме того, имейте в виду, что WebXRManager.getCamera() предназначен только для внутреннего использования и не является частью публичного c API.

...