パート1、パート2を元に実際にFBXでロードしたキャラクタにHoudiniでリグをつけてみようと思います。
fbxcharacter import SOPを使用しFBXを読み込んできます。
たんに読み込んでくるだけでなく、オプションで調整が可能です。
Houdini21では更にこのオプションが増えています。
Convert Unites
Mayaで作成したキャラクタデータをそのまま読み込むとスケールが100倍になります。このノードにはConvert Unitsがあるため、これをHoudiniのスケール(cm→mへ)へ修正が可能です。このオプションは以前から存在しました。
Normalize Joint Scales
これは21に追加されたオプションです。
有効にすると、インポートしたシーン内のジョイントのトランスフォーム・アトリビュートは回転と平行移動の行列に変換され、スケールは (1, 1, 1) に正規化されます。
これは結構重要なオプションです。Autorig Builderでリグを作る前提としてジョイントのスケールは1であることという条件があります。
Conver Unitsを有効にして、Nrmaolize Joint Scalesを無効のままだと
ジョイントのTransform(3×3)を確認すると以下のようになっています。
この行列をSRTに分解するとScaleはつまり0.01ということになります。Conver Unitsしたことで、スケールを0.01にしているんですね。スケールが1じゃないと後のリグ工程で問題が発生する可能性があります。
ここでNormalize Joint Scalesを有効にしてReloadすると
スケールが1に修正されています。
この設定により、これらのジョイントのワールド空間トランスフォームは FBX ファイルからインポートした値とは異なる状態になります。結果として、元の DCCにリグを書き戻す際のラウンドトリップ・ワークフローが破綻してしまうため、注意です。
Remove Namespaces from Joint Names
これも21から追加されたオプションでうれしい機能です。有効にすると、FBX ファイルからインポートされたジョイント名から、あらゆるネームスペースのプレフィックス(接頭辞)が削除されます。
例えば、このFBXはMixamoからダウンロードしているのでジョイントのnameアトリビュートにmiamorig:というプレフィックスが入ってしまっています。
この機能を使用し、Reloadするとプレフィックスが削除されます。
これで読み込んだジョイントを修正することができました。
FBX Character Importノードを選択し、ビューポートで右クリックすると表示メニューが出てくるので、Display Joint Axesを表示しておくと後で便利です。
では、Autorig Builderで作成する前に前提条件をチェックしてみましょう。
キャラクターは +Z 方向を向いていること。→◎
-
入力スケルトンの一次軸(Primary)と二次軸(Secondary)は、APEX Autorig Builder SOP の Main Axis および Secondary Axis パラメータと一致させること
→各ジョイントごとにOrientがバラバラだともちろんリグが正しく動きません。先ほどJoint Axesを常時したのでチェックしてみてください。
もし、バラバラであればRig Doctorを使用し修正することが可能です。
Rig Doctorをつなぎ、Initialize Transformsをを有効にして、Re-Orient to Childを有効にします。
Joint Orientを修正することができます。Orient Jointsなどでも修正できます。詳細は以前の下記の記事をご参照ください。
https://support.borndigital.co.jp/hc/ja/articles/7768517710233
入力スケルトンでは、重複しない固有のジョイント名(ユニークなジョイント名)を使用してください。→◎
- 体の左右を示すインジケーター(接頭辞/接尾辞)は、入力スケルトン内で一貫していること
このデータはLeft*、Right*で統一されています。 - 入力スケルトン上のすべてのトランスフォームに対して、スケール値は 1 を使用→修正済
準備はできたので、Apex Pack Characterに接続します。
これで必要な構造ができました。
Apex Autorig Builderを接続します。
このままだと設定があっていない可能性があります。
その場合、このボタンを押すと入力しているジョイントから値を設定することができます。
下記のようにポップアップウィンドウが表示されます。
私の読み込んだジョイントだと、
左右を示すインジケーター→Left*>Right*
Primary AxisはZ軸
Secondary AxisはX軸
になっていることがわかります。
Okをクリックします。
準備ができたので、パート1同様コンポーネントカタログから割り当てていきます。
ドラッグ&ドロップで簡単に基本リグを全て組むことができました!
FKIKブレンド、ReverseFootや鎖骨なども全て設定されています。
アニメーションは下記のシリーズをご参考にしてみてください。
https://support.borndigital.co.jp/hc/ja/articles/39094840692761
または、コンテンツライブラリのHHarryRigシーンをダウンロードし、Harry_Animationをみるとどのようにアニメーションをつけているのかわかりやすいです。