Javascript Three.js-如何旋转对象以观察一个点并朝向另一个点
一般来说,我对three.js和3d编程都是新手,所以这似乎是一个非常简单的问题。理想情况下,我希望答案能帮助我理解基本原则 我有一个对象需要“指向”另一个点(为了简单起见,这里是原点),这可以通过Javascript Three.js-如何旋转对象以观察一个点并朝向另一个点,javascript,3d,three.js,Javascript,3d,Three.js,一般来说,我对three.js和3d编程都是新手,所以这似乎是一个非常简单的问题。理想情况下,我希望答案能帮助我理解基本原则 我有一个对象需要“指向”另一个点(为了简单起见,这里是原点),这可以通过Object3D.lookAt(point)函数轻松完成。这将使对象的Z轴精确地指向该点 我还想围绕Z轴旋转名为looker的对象,使其X轴通常指向另一个对象refObj。我知道X轴不能直接指向REOBJ,除非该对象与原点成直角。我希望looker的X轴位于由origin、refObj和looker创
Object3D.lookAt(point)
函数轻松完成。这将使对象的Z轴精确地指向该点
我还想围绕Z轴旋转名为looker
的对象,使其X轴通常指向另一个对象refObj
。我知道X轴不能直接指向REOBJ
,除非该对象与原点成直角。我希望looker
的X轴位于由origin
、refObj
和looker
创建的平面上,如下图所示:
进行旋转的最简单方法似乎是修改looker.rotation.z
,但我不知道如何计算该值
一般来说,我想要一个扩展版的lookAt
函数,它采用第二个坐标,X轴将指向该坐标。大概是这样的:
function lookAtAndOrient(objectToAdjust, pointToLookAt, pointToOrientXTowards)
{
// First we look at the pointToLookAt
objectToAdjust.lookAt(pointToLookAt);
// Then we rotate the object
objectToAdjust.rotation.z = ??;
}
我已经创建了一个你真正想说的是你希望对象的y轴(对象的
向上
-向量)与平面正交
在调用lookAt(origin)
之前,只需设置对象的up
-向量
通过取平面上已知的两个向量的叉积,计算所需的up
向量
这是一把小提琴:
请注意,您的问题有两种解决方案,因为计算向量及其求反都与平面正交
编辑:fiddle更新为three.js r.71