Three.js 获取Object3d子对象的方向
好吧,问题是:我用透视相机作为Object3d的孩子来追踪它Three.js 获取Object3d子对象的方向,three.js,raycasting,perspectivecamera,Three.js,Raycasting,Perspectivecamera,好吧,问题是:我用透视相机作为Object3d的孩子来追踪它 ... player.add(backCamera); backCamera.position.set(0, 10, -80); backCamera.lookAt(player.position); ... 现在我尝试使用光线投射器在相机和播放器之间找到对象,使它们不可见,但我需要相机位置和相机方向 多亏了这一点,我才能够找到像这样的“真实”相机位置: ... player.updateMatrixWorld(); var vec
...
player.add(backCamera);
backCamera.position.set(0, 10, -80);
backCamera.lookAt(player.position);
...
现在我尝试使用光线投射器在相机和播放器之间找到对象,使它们不可见,但我需要相机位置和相机方向
多亏了这一点,我才能够找到像这样的“真实”相机位置:
...
player.updateMatrixWorld();
var vector = new THREE.Vector3();
var temp = vector.setFromMatrixPosition(backCamera.matrixWorld);
...
但我仍然需要找到“真正”的摄像机方位。我试着遵循这个问题中的方法
...
var pLocal = new THREE.Vector3( 0, 0, -1 );
var pWorld = pLocal.applyMatrix4(backCamera.matrixWorld);
var direction = pWorld.sub(backCamera.position).normalize();
raycaster.set(temp, direction);
...
但是光线似乎没有正确定向,可能是因为定向是相对于父对象的。知道相机正在查看的目标位置(例如,TP,目标位置),并且您知道相机位置(例如,VRP,视图参考点),相机定向简单地由以下公式给出:
TP-VRP
您可能也希望正常化 因为相机是另一个对象的子对象,所以需要减去相机的世界位置,而不是
camera.position
.hmm@WestLangley为什么没有.setFromMatrixRotation?我想他可以用这个,但它不见了……啊,明白了: