2013-04-10 92 views
5

我想基於它的旋轉移動three.js中的多維數據集,但不知道如何去做。基於three.js中的旋轉移動對象

到目前爲止,我可以使用A & D鍵旋轉立方體的z軸旋轉。用W鍵我希望它相對於它的旋轉向前移動。

從2D我就這麼沿着線的東西:

float angle = GradToRad(obj.rotation); 
obj.x = obj.x + cos(angle) * velocity; 
obj.y = obj.y + sin(angle) * velocity; 

下面是當前實現的圖像。 3D Cube three.js

如何在three.js中應用類似的東西?

回答

7

可以認爲物體面向它們的正Z軸。因此,要向前移動對象,相對於它自己的座標系中,你可以使用

Object3D.translateZ(distance); 

three.js所r.57

+0

是的,但只是沿着Z軸平移不會讓我的物體相對於它的旋轉移動。當我轉動物體時,我希望它沿着它的「面向」移動。 – Placeable 2013-04-11 14:01:52

+0

當旋轉向量爲(0,0,0)時,物體「面對」的方向是什麼?這是您應用旋轉後要移入的局部方向。 – WestLangley 2013-04-11 14:10:18

+0

我圍繞Z軸旋轉。 – Placeable 2013-04-11 14:22:53

0

在單個(均勻投影)4×4 matrix中表達旋轉和平移可能是最容易的。 three.js中的Object3D.matrix成員已經這樣做了,但您可能必須將matrixAutoUpdate設置爲false才能直接使用該成員。然後您可以使用translate方法移動對象在其自己的參考框架中。

+0

用戶直接在three.js中混淆對象矩陣是非常不可取的。只有在你真正瞭解自己在做什麼並且熟悉圖書館的內部運作時才這樣做。 – WestLangley 2013-04-10 14:20:08

0

你的2D方法是我究竟是如何做到了在three.js所。對於Y位置,我使用地形碰撞技術(仍然需要工作);