相对于相机位置和方向的物体的ThreeJS计算

时间:2015-11-09 00:19:54

标签: three.js

这似乎是一个非常常见的问题,但我无法在网上找到一个例子,而且我的数学菜鸟太多了......

使用ThreeJS,我有一个库可以根据用户位置进行空间音频定位(https://github.com/tmwoz/hrtf-panner-js),但我的代码假设相机直视前方并且不移动。由于我的相机正在移动,我需要获得相对于相机位置和方向的3D物体的xyz位置。

//finds the object in world coordinates
var p = new THREE.Vector3();
p.setFromMatrixPosition(visual.object.matrixWorld);
this.audioTrack.updateHrtf(p.x, p.y, p.z);

如何将对象转换为相机空间坐标?谢谢你的帮助!

注意:我知道WebAudio API有一个简单的机制,但它没有HRTF(头部相关传输函数)库的功能,这听起来好多了。

1 个答案:

答案 0 :(得分:2)

要将Vector3 vec从世界空间转换为相机空间,请执行以下操作:

camera.matrixWorldInverse.getInverse( camera.matrixWorld );

vec.applyMatrix4( camera.matrixWorldInverse );

three.js r.73