2012-01-05 19 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エディタの座標系を考慮して、それに応じて調整する必要があります。

3次元表現の操作に慣れていない場合は、2Dから3Dへの飛躍が大きな障害になる可能性があります。 Cocos3D内:

  • x軸は左
  • y軸の右側に正および負であることは、正の上向き及びz軸を使用し、負に向かって移動する正である
  • 下方に負でありますあなたから離れていく

これらの3本の線、あるいはそれ以上のストリングを想定してください。

x軸を中心に回転させる場合は、文字列を左から右に水平に保持します。オブジェクトはあなたの方に、またはあなたから離れて回転します。

y軸を中心に回転させる場合は、脚から頭まで垂直に文字列を保持します。オブジェクトは回転するドアのように回転します。

z軸を中心に回転させる場合は、一方の端を胸の近くに、もう一方の端をできるだけ遠くに保持します。オブジェクトは時計のように回転します。

-

を更新し、私は頻繁にY-X-Zを使用するためのOpenGLの標準であるように、回転の順序を変更することをお勧めしません。あなたはそれを変更したい場合は、CC3GLMatrixMathを見て、kmMat4RotationYXZを探して - kmMat4RotationZYXもあります。 X-Y-Zを使用する場合は、独自の回転行列を作成し、CC3GLMatrixおよびCC3GLMatrixMathでそれに応じて更新する必要があります。

参考として、OpenGL Red bookもあります。お勧めします。

+0

ありがとうCC3Nodeプロパティの回転の文書では、 "回転がYXZの順序で実行されています。これはOpenGLのデフォルトです"と言いました。私が知りたいのは、順序を変更する方法があることですxyzの順序で実行? – charles

+0

CC3GLMatrixおよびCC3MatrixMathに関する詳細を含めるように更新されました。 –

+0

新しいタグを作成するように求めていません。cocos3d内を見て、cc3glmatrix/cc3matrixmathを見つけてください –

関連する問題