2019/08/09
Maya&3dsMax<骨の互換性>
はじめまして、BACKBONEの塙です。
今回は、MayaのJointを3dsmax(以下max)へ転送した際に、
max側でどのように読み込まれるかを検証してみたいと思います。
転送方法はMayaの標準機能の「Send to 3ds max」を使用します。
検証するアトリビュートは下表となります。
1.Rotate Order ※画像は左側がMaya、右側がmaxです。
max側での名称はAxis Orderに変更されますが、設定はそのまま転送することが出来ました。
2.Rotate Axis
max側でRotate Axisのアトリビュートが存在しないため、Rotateに値が入るようです。
念のため、scriptでも確認を取りました。
(Exporse Transform Helperを使用して確認しましたが、Local Euler Anglesに値が入っていました。)
3.Degree of Freedom(以下DOF)
max側でDOFのアトリビュートが存在しないため、転送することが出来ませんでした。
maxにはMayaのDOFと同様のLocksという機能が存在しますが、
LocksのRotateにはDOFの設定は入力されないようです。
4.Stiffness
max側でStiffnessのアトリビュートが存在しないため、転送することが出来ませんでした。
5.Preferred Angle
max側にもPreferred Angleのアトリビュートは存在しましたが、転送することが出来ませんでした。
6.Joint Orient
① Rotateの値は0で、Joint Orientだけに値が設定されている場合
max側でJoint Orientのアトリビュートが存在しないため、
Rotateに値が入りRotate Axisと同様の結果となりました。
② Rotate、Joint Orientに値が設定されている場合
RotateとJointOrientの値が合算され、Rotateに値が入るようです。
単純に足し算で合算されているわけではなく、
しっかりと角度計算された合算値として転送されるようです。
試しにMaya側でmatrixを使用してRotateの値を出してみると、maxのRotateの値と合致しました。
7.Inverse Scale
① Mayaでinverse Scaleがコネクションされている場合
max側でinverse Scaleのアトリビュートが存在しないため、
Invers Scaleの値は変換されてmaxのscaleに値が入るようです。
MayaのJointは親のスケールを相殺しますが、maxは親のスケールを継承します。
(max側でInherit ScaleをOffにしておけば、親のスケールを相殺する事は可能です。)
検証結果では、下図のように親の不均一スケールによるシアー分がズレたような形状となりました。
② Mayaでinverse Scaleのコネクションを外した場合
Maya側でInverse Scaleに値が入力されていても、max側のScaleには値が入らないようです。
一見影響があるように見えますが、upLeg_jt_Lの不均一スケールを継承しているだけで、
lowLeg_jt_Lのscale値には影響はありません。
この検証から、Inverse Scaleのコネクションが外れている場合、
Inverse Scaleの値が無視されることが分かりました。
コネクションが外れている状態でもSegment Scale CompensateのOn / Offでの検証を行いましたが、
結果の違いは見られず、上記と同様の結果でした。
8.Segment Scale Compensate(以下SSC)
① MayaでSSCがOnの場合
max側でSSCのアトリビュートが存在しないため、転送することが出来ませんでした。
Inverse Scaleの①の検証と同じ結果となります。
② MayaでSSCがOffの場合
Inverse Scaleの②の検証と同じ結果となりました。
9.Shear
「Send to 3ds max」ではFBX形式で転送されますが、
FBX形式ではShearの値は出力できないため、転送することが出来ませんでした。
10.Inherits Transform
max側でInherits Transformのアトリビュートが存在しないため、転送することが出来ませんでした。
Inheritsという機能は存在しますが、機能性が異なるようです。
まとめ
検証は以上となります。
上記の検証結果をまとめますと、下図のようになりました。
Mayaとmaxを両方使用する案件などで、何かしらのお役に立てれば幸いです。
次はmaxのJointについて検証してみたいと思います。
では。
※免責事項※
本記事内で公開している全ての情報について、その完全性、正確性、適用性、有用性等いかなる保証も行っておりません。
これらの情報のご利用により、何らかの不都合や損害が発生したとしても、当社は何らの責任を負うものではありません。
自己責任でご使用ください。