获取Object3d孩子的方向

时间:2014-05-21 10:23:50

标签: three.js raycasting perspectivecamera

好的,问题在于:我使用PerspectiveCamera作为Object3d的子进程来追逐它。

...
player.add(backCamera);
backCamera.position.set(0, 10, -80);
backCamera.lookAt(player.position);
...

现在我正在尝试使用Raycaster找到相机和播放器之间的物体并让它们不可见,但我需要相机位置和相机方向。

感谢question我能够找到像这样的“真实”相机位置:

...
player.updateMatrixWorld();
var vector = new THREE.Vector3();
var temp = vector.setFromMatrixPosition(backCamera.matrixWorld);
...

但我仍然需要找到“真正的”相机方向。我试图遵循this approach以及该问题中链接的方法。

...
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);
...

但似乎光线未正确定向,可能是因为方向相对于父对象。

1 个答案:

答案 0 :(得分:1)

了解相机正在查看的目标位置(例如,TP,目标位置),并且您知道相机位置(例如,VRP,查看参考点),相机方向简单地通过以下方式给出:

TP-VRP

您可能也想要正常化。