Threejs - 重新定位后使用控制器在 AR 中进行光线投射

时间:2021-02-12 18:52:35

标签: three.js augmented-reality webxr

我对 Threejs 比较陌生,所以我所做的可能不是最有效的方法。

我在移动设备上有一个 AR 对象,我想知道在触摸屏幕时是否与它相交。
我使用以下代码生成光线投射,并且它最初有效。

    const tempMatrix = new THREE.Matrix4();
    tempMatrix.identity().extractRotation(this.controller.matrixWorld);
    this.raycaster.ray.origin.setFromMatrixPosition(this.controller.matrixWorld);
    this.raycaster.ray.direction.set(0, 0, -1).applyMatrix4(tempMatrix);

但是,我可以通过移动和旋转整个场景来重新定位对象(即重置位置,使对象相对于当前相机方向和位置在前面)。

重新定位后,光线投射完全偏移,不会在我触摸屏幕附近的任何地方投射光线。

重新定位是这样完成的(虽然它有效,如果有更好的方法,请告诉我!):

public handleReposition(): void {
    const xRotation = Math.abs(this.camera.rotation.x) > Math.PI / 2 ? -Math.PI : 0;
    const yRotation = this.camera.rotation.y;

    this.scene.rotation.set(xRotation, yRotation, xRotation);
    this.scene.position.set(this.camera.position.x, this.camera.position.y, this.camera.position.z);
  }

如何才能将光线投射到正确的新位置?

谢谢!

0 个答案:

没有答案
相关问题