私は cocos3d を始めたばかりですが、問題があります。
cocos3dでノードを回転させたい。x 軸、y 軸、z 軸の角度を取得し、プロパティ:rotation を使用して次のように回転させました。
theNodeToBeRotated.rotation = cc3v(x,y,z);
しかし、ドキュメントには回転順序がyxzであると記載されていたため、期待どおりに回転していないことがわかりました。
順番をxyzに変更したいです。誰でも方法を教えてもらえますか?
次の点についてさらに明確にする必要があるかもしれません:「期待どおりに回転しなかった」
OpenGL ES(およびergo、cocos3D)は、y軸を上として使用するため、回転順序はxyzのままです。モデルをインポートする場合は、3Dエディターの座標系を考慮し、それに応じて調整する必要があります。
3次元表現での作業に慣れていない場合、2Dから3Dへの飛躍は大きなハードルになる可能性があります。Cocos3D内:
これらの3本の軸線、またはさらに良いのは1本のひもを想像してください。
x軸を中心に回転している場合は、文字列を左から右に水平に保持します。オブジェクトは手前または手前に回転します。
y軸を中心に回転している場合は、ストリングを足から頭まで垂直に保持します。オブジェクトは、回転ドアのように回転します。
z軸を中心に回転する場合は、一方の端を胸の近くに、もう一方の端をできるだけ遠くに保持します。オブジェクトは時計の文字盤のように回転します。
- アップデート
YXZを使用するのはOpenGL標準であるため、回転順序を変更することは強くお勧めしません。変更したい場合は、CC3GLMatrixMathを見て、kmMat4RotationYXZを探してください。kmMat4RotationZYXもあります。XYZが必要な場合は、独自の回転行列を作成し、それに応じてCC3GLMatrixおよびCC3GLMatrixMathで更新する必要があります。
参考までに、OpenGLRedブックもあります。いくつかの提案があるはずです。