【发布时间】:2014-11-14 03:08:07
【问题描述】:
我有一个固定位置的透视相机,它通过键盘输入围绕所有 3 个轴旋转。以随机间隔,独立于用户输入,我需要将对象放置在相机的视野内,无论相机朝哪个方向看。对象还需要从相机的 fov 中心偏移特定的 x 和 y 距离,并从相机的位置偏移特定的 z 距离。我不能使用 camera.addChild,因为一旦添加了对象,我需要通过独立于相机移动的补间来移动对象。
如何做到这一点?
【问题讨论】:
标签: three.js
我有一个固定位置的透视相机,它通过键盘输入围绕所有 3 个轴旋转。以随机间隔,独立于用户输入,我需要将对象放置在相机的视野内,无论相机朝哪个方向看。对象还需要从相机的 fov 中心偏移特定的 x 和 y 距离,并从相机的位置偏移特定的 z 距离。我不能使用 camera.addChild,因为一旦添加了对象,我需要通过独立于相机移动的补间来移动对象。
如何做到这一点?
【问题讨论】:
标签: three.js
您想将一个点从相机空间转换到世界空间。
在相机的坐标系中,相机位于原点,正向下看它的负 z 轴。
将对象放在相机前面(在相机的坐标系中)。
object.position.set( x, y, - z ); // z is the distance in front of the camera, and is positive
现在,将对象的位置从相机空间转换到世界空间:
object.position.applyMatrix4( camera.matrixWorld );
three.js r.69
【讨论】: