![](/img/trans.png)
[英]three.js lookAt() : how to point some local axis which *isn't* the positive Z axis towards another object
[英]Three.js - How to rotate an object to lookAt one point and orient towards another
我對three.js和3d編程很新,所以這看起來像一個非常簡單的問題。 理想情況下,我希望答案可以幫助我理解基本原則。
我有一個對象需要在另一個點(原點,在這種情況下為了簡單起見)“指向”,這可以使用Object3D.lookAt(point)
函數輕松完成。 這很好地指向了物體的Z軸。
我還想圍繞其Z軸旋轉我的對象(稱為looker
,使其X軸通常指向另一個對象refObj
。 我知道X軸不能直接指向refObj
除非該對象與原點形成直角。 我想要的X軸looker
趴在被創建的平面origin
, refObj
和looker
,圖示如下:
進行旋轉的最簡單方法似乎是修改looker.rotation.z
,但我不知道如何計算值應該是什么。
一般來說,我lookAt
一個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軸(對象的up
向量)與平面正交。
在調用lookAt( origin )
之前,您所要做的就是設置對象的up
向量。
您up
通過獲取您知道位於平面中的兩個向量的交叉積來計算所需的up
矢量。
這是一個工作小提琴: http : //jsfiddle.net/rQasN/43/
請注意,您的問題有兩種解決方案,因為計算向量和它的否定都將與平面正交。
編輯:小提琴更新為three.js r.71
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.