Yon*_*ree 10 javascript 3d three.js
我对three.js和3d编程很新,所以这似乎是一个非常简单的问题.理想情况下,我希望答案可以帮助我理解基本原则.
我有一个对象需要在另一个点(原点,在这种情况下为了简单起见)"指向",这可以通过该Object3D.lookAt(point)
功能轻松完成.这很好地指向了物体的Z轴.
我还想looker
围绕其Z轴旋转我的对象,称为其X轴通常指向另一个对象,refObj
.我知道X轴不能直接指向,refObj
除非该物体与原点形成直角.我想的X轴looker
为位于由形成的平面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 = ??;
}
Run Code Online (Sandbox Code Playgroud)
Wes*_*ley 16
你真正要说的是你想要对象的y轴(对象的up
-vector)与平面正交.
您所要做的就是up
在调用之前设置对象的-vector lookAt( origin )
.
up
通过获取您知道位于平面中的两个向量的交叉积来计算所需的向量.
这是一个工作小提琴:http://jsfiddle.net/rQasN/43/
请注意,您的问题有两种解决方案,因为计算向量和它的否定都将与平面正交.
编辑:小提琴更新为three.js r.71
归档时间: |
|
查看次数: |
9339 次 |
最近记录: |