2012-01-05 20 views
0

我是cocos3d中的新手,現在我遇到了問題。如何更改cocos3d中的輪換順序

在cocos3d中,我想旋轉一個節點。我在X軸,Y軸,Z軸有角度的話,我使用的屬性:旋轉而旋轉,像這樣:

theNodeToBeRotated.rotation = cc3v(x,y,z); 

但我發現,我預計它沒有旋轉,因爲文檔說旋轉順序是yxz。

我想將順序更改爲x-y-z。任何人都可以讓我知道如何?

回答

1

您可能需要進一步澄清有關以下內容:

的OpenGL ES(麥角和,cocos3D)使用y軸的了,因此旋轉次序是「因爲我預期不旋轉」仍然xyz。如果您要導入模型,則需要考慮3D編輯器的座標系並進行相應的調整。

如果您不習慣使用三維表示,從2D到3D的飛躍可能是一個重大障礙。在Cocos3D:

  • x軸爲正,右側和負左側
  • y軸是積極向上,負向下
  • z軸爲正朝着你和負移動離開你

設想那三條軸線,甚至更好,一塊字符串。

如果圍繞x軸旋轉,請從左向右水平握住字符串:對象將朝您旋轉或遠離您。

如果您圍繞y軸旋轉,請垂直握住琴絃,使其像旋轉門一樣旋轉。

如果圍繞z軸旋轉,請將一端靠近胸部,另一端儘量遠離:物體會像鐘面一樣旋轉。

- 更新

我嚴重不建議改變旋轉順序,因爲它是用X-Y-Z OpenGL標準。如果你想修改它,看看CC3GLMatrixMath,尋找kmMat4RotationYXZ - 還有kmMat4RotationZYX。如果你想要X-Y-Z,你需要構造你自己的旋轉矩陣,並相應地在CC3GLMatrix和CC3GLMatrixMath中進行更新。

作爲參考,您也有OpenGL Red book - 它應該有一些建議給你。

+0

非常感謝。在CC3Node屬性旋轉的文檔中,它說「旋轉是以YXZ順序執行的,這是OpenGL的默認設置」。所以我希望知道,有沒有辦法改變順序,以以xyz順序執行? – charles 2012-01-06 03:50:34

+0

已更新答案,以包含有關CC3GLMatrix和CC3MatrixMath的詳細信息。 – 2012-01-06 08:51:15

+0

我不是要求你創建新的標籤。查看cocos3d並找到cc3glmatrix/cc3matrixmath – 2012-01-10 12:10:05