2014-09-12 113 views
1

我有scenemeshes和目標object三個js獲取mesh.lookAt(object)的座標;

當我建立

mesh.lookAt(對象)

齧合正確地面向對象的。

如何在另一個網格上重複此網格的旋轉以強制另一個網格面向相同的方向(不是同一個對象,但與第一個網格具有相同的方向)?

我怎樣才能獲得第一個的旋轉座標網格

我怎樣才能得到這個座標,而不需要創建網格和訂單mesh.lookAt(object)。這意味着只需要計算這個座標而不需要在某個對象上使用它?

UPDATE: 唯一可能的解決方案是創建新的THREE.Object3D()和使用object.lookAt(target)。然後對所有後來加載的對象重複旋轉,如:new_object.rotation.set(object.rotation.x,object.rotation.y,object.rotation.z) 您將只創建一個對象,而不是大量無用的Vector3-s。

不要使用new_object.rotation = object.rotation它是功能性解決方案,但變量保持連接。更改object輪換,也會更新new_object.rotation(渲染器正在更新每幀的所有值)。

回答

1

您可以將其他網格物體的局部旋轉設置爲正確方向的機械裝置的局部旋轉。

anyOtherMesh.rotation = mesh.rotation; 
+0

嗨,THX,但我怎樣才能訪問如果我沒有這個對象的旋轉值,我的東西,我想知道,並獲得旋轉的值,並適用於第二個網格,但我不想旋轉第一個網格 – Martin 2014-09-14 17:25:04

+0

真實情況:我有船,在開始之前我使用(object.lookAt(myWayTarget),但會跳到旅行的位置,這看起來很醜)我需要動畫旋轉。這就是爲什麼我需要一個座標之前是船隻旋轉到動態平穩地移動到這個旋轉。 製作另一個對象,旋轉它並使用AnotherObject.rotation作爲動畫的完成座標不會很明智,但我找不到另一種方法。 – Martin 2014-09-14 17:31:50

0

怎麼樣一個 的lookAt(新THREE.Vector3(target.position.x,target.position.y,target.position.z) ?

+0

這三個問題中的哪一個會提供這個地址? – 2015-09-10 00:17:59

+0

更新的問題與最知名的解決方案。 – Martin 2015-09-14 10:58:32

+0

@paul它意味着每個旋轉對象上的每個幀都有一個新的vector3。我認爲這是一個微不足道的行動,應該更節約成本。在這種情況下,您需要總是創建新的Vector,並使用lookAt函數重新計算矩陣旋轉,當您的結果已經完成並從第一個對象準備就緒時... – Martin 2015-09-14 11:02:01