关于three.js:获取Object3d子对象的方向

Get orientation of an Object3d child

好的,问题来了:我使用 PerspectiveCamera 作为 Object3d 的子对象来追逐它。

1
2
3
4
5
...
player.add(backCamera);
backCamera.position.set(0, 10, -80);
backCamera.lookAt(player.position);
...

现在我正在尝试使用 Raycaster 来查找相机和玩家之间的对象并使它们不可见,但我需要相机位置和相机方向。

感谢这个问题,我能够找到这样的"真实"相机位置:

1
2
3
4
5
...
player.updateMatrixWorld();
var vector = new THREE.Vector3();
var temp = vector.setFromMatrixPosition(backCamera.matrixWorld);
...

但我仍然需要找到"真实"的相机方向。我试图遵循这种方法以及该问题中链接的方法。

1
2
3
4
5
6
7
...
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,Target Position),并且您知道相机位置(例如,VRP,View Reference Point),相机方向简单地由下式给出:

1
TP-VRP

你可能也想标准化。