この記事はHoudini Apprenticeアドベントカレンダー2025 4日目の記事です。
Mayaやその他DCCツールでウェイト付けまでおわったキャラクタを読み込み、Houdini21のAutorig Builderを使用してリグを作成したいと思います。この時にリグポーズ用にジョイントの角度に修正を加えたいことがあります。
FBX Character Importでキャラクタを読み込み、スケルトンやメッシュデータをPackします。
Pack後、Autorig Builderにつないでリグを作っていきますよね。
参照:Houdini21 :Autorig Builderを使用したリギング パート3 FBXでロードしたキャラクタにリグをセットアップ
===ここからは読み物===
異なるDCCツールで作成したCapture Pose(バインドぽーじ)がリグには向いていないという場合があったとします。
実際にAutorig Builderでコンポーネントカタログからコンポーネント(例えば、LegやArm)を割り当ててみると、少しスケルトンの状況を修正したいと思う場合があります。
例えば、下記のキャラクタをみるとジョイントの方向を使用して膝の向きをコントロールするリグができていますが、デフォルトの位置が気に入りません。または、Legコンポーネントを追加すると、ポールベクターが意図しない横方向を向いてしまうことがあります。これは、キャラクターのスケルトンの脚が完全にまっすぐで、「どちらの方向に曲がるべきか」という情報が欠如しているために発生する、リギングにおける典型的な問題です。
ただし、スケルトンおよびウェイトは他のDCCツールで作成したので、そこまで戻りたくない!リグを作る時にポーズだけ修正したいという場合です。(Mayaの優先回転角のような感じでCapture Poseとは異なるスケルトン状態を設定し、リグに使いたい)
この問題を解決するため、Apexのパッキングを行う前段階でスケルトン自体にわずかな[修正]を追加します。
つまり、FBX Character ImportとPack Characterの間に追加していきます
FBX Character Importノードは3つの主要な出力を持ち、それぞれが異なる役割を担っています。
出力 |
内容 |
説明 |
第1出力 |
ジオメトリ |
スキンウェイト情報を含む、デフォメーションの対象となるポリゴンメッシュ。これが最終的にレンダリングされるサーフェスです。 |
第2出力 |
スケルトン |
リギングとスキニングの基準となる、静的なキャプチャポーズ(Tポーズなど)のジョイント階層。このポーズがデフォメーションの原点となります。 |
第3出力 |
アニメーション付きスケルトン |
FBXファイルにアニメーションが含まれている場合、そのデータが出力されます。今回のケースでは使用しません。
|
===ここまでは読み物===
後の作業効率と可読性を高めるため、ネットワークを整理します。
1. 第1出力(ジオメトリ)からnullノードを作成し、名前をGEOとします。
2. 第2出力(スケルトン)からも同様にnullノードを作成し、名前をSKELSSとします。
これらのnullノードは、各データストリームの終端を明確に示すブックマークとして機能し、複雑なネットワーク内でのデータフローを視覚的に追跡しやすくします。
Rig Poseノードでスケルトンを修正するため、FBX Character ImportのCapture Pose出力を新しく作成したRig Poseに接続し、その結果に新しいNullを接続します。このノードを使い、膝の関節を曲げるよう修正していきます。
Rig Poseによってスケルトンの位置を変更時、ジオメトリメッシュもそれに追従させる必要があります。JointDeformノードを使用し、変更後のスケルトンを使ってジオメトリを変形させます。
Joint Deform SOPはウェイトを作るのではなく、ウェイトを元に変形を実行するノードです。
接続順は、第一入力にジオメトリ、第二入力にキャプチャポーズ(元のスケルトン)、第三入力にRig Pose後のスケルトンです。
Joint DeformノードのDelete Capture Attributesオプションは必ず無効にしてください。この設定はリグが正しく機能するために不可欠です。
このオプションって何なの?ってなりますよね。
「Delete Capture Attributes」がオンの状態は、「変形(Deform)が終わったから、もう計算に使ったウェイトはいらないよね? データを軽くするために消しておくね」という動作です。モデルは変形しますが、ウェイト情報は空っぽになります。つまり、この後レンダリングという最終工程へ進む場合は、軽くなるのでこの機能が有効です。
オフにするということは、「変形はするけど、ウェイト情報はそのまま持っていて」という動作です。
モデルは変形し、かつ「どのボーンに追従するか」という情報も保持し続けます。この後にまだ処理が続く場合(再利用、エクスポート、リグの修正など)は、ウェイト情報を持ち続ける必要があるため、これをオフにします。
Joint Deform の接続が終わったら、Rig Poseを使用してジョイントを回転しポーズを修正していきます。
ジョイントが直線状に作成されているならば少しだけ前方に曲げてください。(後の工程のために、肘も同様に曲げておくと効率的です)。この曲げは、ごく僅かで構いません。重要なのは、IKソルバーに曲がる方向のヒントを与えることです。
FBX Character ImportノードとJoint Deformノードの前後でディスプレイフラグを交互に切り替えてみてください。メッシュが新しいスケルトンのポーズに正しく追従していることを視覚的に確認できます。
APEX Pack Characterにつないでいきます。
Joint Deformから出力されるものはもちろんジオメトリです。そのため、Pack Characterの第2入力であるGeoにいれいます。
Rig Poseで修正したジョイントをPack Characterの第3入力Capture Poseに入力します。
このApex Pack CharacterノードではAdd FK and Bone Deform Componentsを有効にするとビューポートでジオメトリ等が表示されます。
このオプションは「自動でとりあえず動く状態にするスイッチ」であり、以前はAPEX Autorig Componentを繋いで行う「2つの基本的なリグ作業」を、このノードの中で勝手にやってくれます。
ここで自動処理してくれる「2つの基本的なリグ作業」は、FKとBone Deform です。
Autorig ComponentのFK(Forward Kinematics):
スケルトンの構造通りに、親から子へと動く仕組み(FK)を作ります。
これにより、スケルトンの各ジョイントに対応する「操作用コントローラ(TransformObject)」が自動生成されます。
Autorig ComponentのBone Deform:
「骨を動かしたら、メッシュ(皮膚)もついてくる」という仕組みを作ります。
これがないと、いくら骨を動かしてもキャラクターの見た目は微動だにしません。
一言で言うと、「これをオンにするだけで、手動でリグを組まなくても、すぐにポーズをつけたりアニメーションできる状態になる」という役割があります。
この後にAutorig ComponentやAutorig Builderで詳細なリグを作成していく場合はこの機能を使用する必要はありません。
再度、Add FK and Bone Deform Componentsをオフにします。
Pack Characterの下にAutorig Builderを作成するとまたジオメトリが見えるようになります。
Auto updaterを有効にすると準備ができます。
後はAutorig Builderを使用して腕や足のリグコンポーネントを追加します。
意図した場所にPole Vectorコントローラーを配置することができました。
このような形でスケルトンとウェイトが設定されたキャラクタのためにリグポーズを修正することができます。
ご参考になれば幸いです。