gpt4 book ai didi

three.js - threejs - 重新定位后使用 Controller 在AR中进行光线转换

转载 作者:行者123 更新时间:2023-12-04 17:21:08 25 4
gpt4 key购买 nike

我是 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);
}

如何实现光线转换到正确的新位置?

谢谢!

最佳答案

假设 this.scene 实际上是主要的 threejs Scene,改变它的旋转或位置通常是个坏主意,因为它会影响场景内的一切,包括 Controller 。我建议改为移动您的对象,或将您的对象添加到 Group 并移动它。

关于three.js - threejs - 重新定位后使用 Controller 在AR中进行光线转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66177496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com