見出し画像

【Blenderから】キャラモデルデータ移行調査【Mayaへ】

はじめに

皆さん、こんにちは。涼海と申します。
今回はBlenderからMayaへのキャラモデル移行調査についてのメモです。
何かしら間違えているところもあるかと思いますが、何かありましたらご教授いただけると幸いです。
よろしくお願いいたします。

参考

今回の参考

今回の参考です。
いつもありがとうございます。

使用するデータ

使用するデータは私が以前に作成したイヨちゃんです。かわいい。

データ的には

  • 1メッシュ

  • UV1枚 UVアニメーション無し

  • マテリアル1つ テクスチャ1枚

  • Modifier : Armatureのみ ウェイト設定済み

  • Shape Keys無し

  • Normals : チェック有り 30°

  • Transform : 000,000,111

  • デフォーム用ボーンのみ設定

  • 回転軸 : 1Y 2X 3Z

  • アニメーション無し

  • 以後作業はMayaでのリグ作成

となっております。

確認用データ

調査内容

使用バージョン

Blender : 3.2.1
Maya : 2022.3

書き出し時の問題点

最初にBlenderからMayaへモデルを移行する際に出てくる問題点を洗い出しておきたいと思います。
そのため、いったんExport設定Transform以下を初期設定で書き出してみようと思います。

初期設定FBXをMayaにImport

見つけた問題点

  1. メッシュ

    • Rotate Xに-90が入っている。

    • Scale XYZに100が入っている。

  2. ボーン

    • エンドボーンの見た目が大きすぎる。

    • 一番親のロケーターにRotate X : -90が入っている。

    • 一番親のロケーターにScale XYZ : 100が入っている。

    • HipにRotate X : 90が入っている。

    • UpperLeg(L,R)のRotateXZに数値が入っている。

    • LowerLeg(L,R)のRotateXZに数値が入っている。

    • Shoulder(L,R)のRotateXYに数値が入っている。

    • UpperArm(L,R)のRotateXYZに数値が入っている。

    • LowerArm(L,R)のRotateXYZに数値が入っている。

    • Primary Axis : Y / Secondary Axis : Xになっている。

その他気づいたこと

  • Blenderでのキャラモデル一番親の人型マークの部分の名前がMayaでの一番親のロケーターの名前になる。

  • モデルのオブジェクト名がMayaのモデル名、シェイプ名になる。

  • エンドボーン(Blenderで作成していない最先端のジョイント)の名前は「一つ前のボーンの名前 + _end」になっている。

問題点としては、トランスフォームRotateScaleとボーンの回転軸が挙げられそうです。
特にボーンのRotateは、背骨とは異なる回転軸を設定した腕と脚に見られます。
ボーンの見た目はMaya上で変更すれば大丈夫そうでしょうか。

なぜ問題が出てくるのか

  • トランスフォーム系の問題点が出てくる理由としては、「BlenderとMayaの座標軸が異なるから」という可能性が高い。

  • スケーリングもデフォルトの設定がBlenderとMayaで異なっており、100となってしまっている可能性が考えられる。

  • ボーンの回転軸はBlenderではプライマリがY、MayaではプライマリがXであるために問題が起きている。

  • 腕と脚のRotateに数値が入っているのは、Mayaのボーン内のJoint Orientで吸収したい回転が、Transformに出てきてしまっている可能性が高い。

FBX書き出し設定〈Include他〉

次にBlenderでのFBX書き出し設定を見ていきましょう。
まずは、おそらく大丈夫だろうという設定を3つ確認しておきます。

  1. Path Mode / Batch Mode
    Path Modeは、エクスポートされたファイルでパスを参照する場合に絶対パスを使うか相対パスを使うかなどの設定ができる。
    調べてみると、テクスチャ付きのFBXを書き出す際に使用されるらしい。
    基本的には初期設定のまま(Auto)で良さそう。
    Batch Modeは、グループやシーンをエクスポートする設定。
    キャラ単体を書き出す際には基本的に初期設定(Off)で良さそう。

  2. Limit to
    書き出すものに制限をかけることができる。
    Batch Modeを設定している時は設定できない。
    Selected Objects : 選択したもののみ
    Visible Objects : 表示されているもののみ
    Active Collection : アクティブになっているコレクションの中のみ
    キャラメッシュとアーマチュアを選択した状態で、Selected Objectsで設定するのが個人的にはやりやすい。

  3. Object Types
    どの種類のオブジェクトを書き出すか設定する。
    書き出したいものを選択すればよいのだが、今回はキャラモデルなのでMeshとArmatureを選択できていれば良い。

FBX書き出し設定〈Transform〉

  1. Scale
    Exportするデータをすべて設定した値にスケーリングする。
    そのため、Scaleに100が入っているから0.01と入れてしまうとモデルの大きさ自体が0.01スケーリングされるため、とても小さくなってしまう。
    モデル自体の大きさは変えたくないため、初期設定(1.00)のままで良いと思う。

  2. Apply Scalings
    スケーリングの単位をFBXにするかBlenderの設定のままにするかを変更する(?)。
    Unityに持っていく際にはFBX Allにしたら良いらしいのだが、Mayaに持っていく際にはどの設定にしても変わらないっぽい。
    エンドボーンの大きさが変わって分かりやすくなるのと、Unityに持っていくのと合わせることでミスを減らせる可能性あるため、いったんFBX Allにしておいて良い気がする。

  3. Forward
    前向きの座標を変更できる。
    Mayaの前座標は+Zだが、ここをZにするとキャラが後ろ向きになってしまったため、初期設定(-Z)で良い。
    また、4のUpと軸が一緒になると変更される。

  4. Up
    高さの座標を変更できる。
    MayaはY座標が高さのため、初期設定(Y Up)で良い。
    また、3のForwardと軸が一緒になると変更される。

  5. Apply Unit
    現在のBlenderの単位設定を考慮する。
    未設定は生の設定(?)を適用する。
    これはBlenderのUnit設定を変えると使える設定ぽい。
    Propaties > Scene Propaties > Unit > Unit Scaleを「0.01」に変更したうえでチェックをONOFFしてみると、ONではScaleが1,1,1、OFFでは変わらず100,100,100になっていた。
    そのため、基本的にはチェックが入っていて良いと考える。

  6. Use Space Transform
    チェックを入れたままだと、BlenderがZUpでMayaがYUpでも、高さ軸として考えてくれる。
    チェックを外すと、BlenderのZ軸とMayaのZ軸が対応するため、キャラクターが倒れる。
    4のUpのおかげで倒れないようになっているのかと思ったら、この設定のおかげで倒れないようになっているぽい。
    これを外すとメッシュの回転値が0,0,0になるため、外しても良い可能性あり。その際には、キャラクターが倒れてしまうので注意。

  7. Apply Transform
    回転値を良い感じにしてくれるらしいが、実験的な仕様であり、アーマチュアなど壊れる可能性あるため、チェックは基本外す。
    ちなみにチェックつけてても、見た感じメッシュの回転値がきれいになって、倒れないようになってるだけだった。

scaleを0.01にした時のキャラクター
Apply Scalings : FBX Units Scale
Apply Scalings : FBX Custom Scale
Apply Scalings : FBX All
Forward : Z Forward
Apply Unit チェック有り
Apply Unit チェック無し
UnitScale0.01時、Apply Unity チェック有り
UnitScale0.01時、Apply Unity チェック無し
Use Space Transform チェック有り
Use Space Transform チェック無し

ここまでで可能になったことは、ScaleXYZに入っている100,100,100を1,1,1にすることでした。
方法としては、プロパティ内Unitを0.01にして、大きさを元に戻して、100になったスケールを1にApplyします。
Export設定でApply Unitにチェックを入れることで、設定できました。
これは、スケールを0.01にApplyしてあげるのと同じ考え方ですね。もっと簡単にできないだろうか……。

FBX書き出し設定〈Geometry〉

  1. Smoothing
    法線の設定。
    基本的に初期設定(Normals Only)で良さそう。

  2. Export Subdivision Surface
    サブディビをエクスポートするらしい。
    今回の問題点には影響されなさそうであるため、基本的に初期設定(チェック無し)で良さそう。

  3. Apply Modifiers
    モディファイアが適用される。
    基本的に初期設定(チェック有り)で良さそう。

  4. Loose Edges
    孤立する辺を2頂点で書き出せる。
    面がない時点でエラーモデルのため、基本的に初期設定(チェック無し)で良さそう。

  5. Triangulate Faces
    三角面でエクスポートされる。
    基本的に初期設定(チェック無し)で良さそう。

  6. Tangent Space
    タンジェントスペースの設定。
    今回の問題点に影響はなさそうなため、基本的に初期設定(チェック無し)で良さそう。
    ちなみに私、タンジェントスペースがよくわかっておりません……。勉強せねば……。

ここでは、問題点の解決になる設定変更はありませんでした。
しかし、見た目に関する設定等があるため、今後勉強していく必要がありますね。

FBX書き出し設定〈Armature〉

  1. Primary Bone Axis
    ボーンの方向を指定できる。
    プライマリは次のボーンに向けた軸であるため、BlenderではY、MayaではXとなる。
    そのため、今回は X Axisにするのが良さそう。

  2. Secondary Bone Axis
    ボーンの方向を指定できる。
    セカンダリはボーンの主の回転軸とすることが多く、個人的にはBlenderではX、MayaではYとすることが多い(ここに必須指定はなく、人によって異なる)。
    そのため、今回は Y Axisにするのが良さそう。

  3. Armature FBXNode
    アーマチュア(キャラの一番親になる人型マークのやつだと思う)を何にするかを設定できるっぽい。
    しかし、Mayaに持っていった場合にはすべてLocatorとなるため、初期設定(Null)で良いと思う。

  4. Only Deform Bones
    デフォームボーンのみを書き出すか、デフォームボーン以外も書き出すかを設定できる。
    デフォームボーンを子に持つ非デフォームボーンも書き出せる。
    しかし、個人的なデータ管理として、書き出す際にデフォームボーンのみのキャラクターにするため、基本的には初期設定(チェック無し)で良いと思う。

  5. Add Leaf Bone
    エンドボーンを書き出すか、書き出さないかを設定できる。
    今回はMayaでリグを組むことを以後の作業として考えているため、基本的には初期設定(チェック有り)で良いと思う。
    以後の作業がエンドボーンがいらない(Unityなどに持っていくなど)場合には、チェックを外すのが良い。

Primary : X / Secondary : Y

FBX書き出し設定〈Bake Animation〉

今回、アニメーションを設定していないキャラモデルをMayaに移行することを目的としているため、基本的にチェックを外す。

ここは、アニメーションをFBXで書き出す際に必須な項目のため、今後勉強していきたいと思います……!!

調査内容結果

調査した結果、以下の方法でBlenderからMayaへキャラモデルを移行するのがベストなのではないかと考えました。

  1. Properties > Scene Properties > Units > Unit Scale
    を 0.01 に設定する。

  2. キャラモデルのArmatureのScaleを100,100,100にし、
    ctrl + A > Apply > Scale
    でScaleを1,1,1にする。

  3. キャラモデルのメッシュのScaleを100,100,100にし、
    ctrl + A > Apply > Scale
    でScaleを1,1,1にする。

  4. キャラモデルとアーマチュアを選択して
    File > Export > FBX
    を選択。

  5. FBXExportのオプションを以下画像のように設定する。

  6. Mayaにインポートする。

  7. Rigging > Deform > Export Weights…
    でウェイトを書き出す。

  8. Rigging > Skin > Unbind Skin
    でウェイトを外す。

  9. キャラモデル(メッシュ)のRotateXに-90を入れて立たせ、フリーズする。

  10. LocatorのRotateXに-90を入れて、ボーンを立たせる。

  11. ボーンを全選択して、Rotateのみをフリーズさせる(Joint OrientにTransformの回転を吸収してもらう)。

  12. HipボーンをLocatorの子から外し、LocatorのRotateを0,0,0にした上で、またHipボーンをLocatorの子に戻す。

  13. Rigging > Deform > Import Weights…
    でウェイトを読み込む。

  14. ボーンの軸方向やウェイトなどを確認して、大丈夫だったら終了。

5.FBXExport オプション設定

おそらく、このような感じで移行すれば、大丈夫だと思います。
しかし、モデル完成後にデータのUnitを変更するのはかなり怖いと思いますため、モデリング前に設定しておくことをおすすめします。
もし、他にも危険なところ、間違い等ございましたら、私のツイッターまでご連絡いただけると幸いです。

おまけ

今回はBlenderの標準機能のみで解決しようと試みましたが、いろいろと調べてみると「Asset Creation Toolset 3」というアドオンを見つけたので、ちょっと試してみようと思います。

こちらを導入して、上記サイトを参考に設定してFBXを書き出し、Mayaにインポートしたところ以下のような感じになりました。

  • 一番上のRotateはちゃんと0,0,0になっている。

  • 体の向きはZ Forward , Y Upになっている。

  • 各Scale値が100,100,100となってしまっている。

  • 腕や脚などのボーンに回転値が入ってしまっている。

Joint Orientの設定はMayaのほうでしなくてはならず、それに加えてScaleの数値もフリーズしないとならないようです。
そのため、標準機能のみの方法とあまり変わりなく、アドオンによる作業の簡易化は難しいようでした。

さいごに

今回はBlenderからMayaにキャラモデルを移行する方法を調査してみました。
一応できることにはできますが、私の調べた限りでは少々手間がかかるようです。
もし、より簡単に移行ができる方法等ご存じの方がおりましたら、ご教授いただけると幸いです。
また、今回はアニメーションの移行は行いませんでしたが、また機会のあるときに調査してみようと思います。

最後におすすめBGMを貼って終わりにさせていただきます。

長い記事となりましたが、ここまで読んでくださりありがとうございました。

ではまたどこかで。

この記事が気に入ったらサポートをしてみませんか?