ゼンゼロのアンビーのリグを組んでみる その3
はい。その3です。
引き続きセットアップ進めていきます。
左側のIKFKをセットアップします。
前回IKのセッティングができてなかったので、足と腕にIKハンドルを作成します。
IKのジョイントを表示させます。

Skeleton > Create IK Handle(オプション)> Rotate Plane Solverを選択
腕:1→2のジョイントを選択
足:1→2のジョイントを選択
そうするとikHandleがアウトライナに出現します。
それをわかりやすいように名前を変更します。

それからこのIK handleをIKのコントローラーにペアレントします。

あ。大事なこと書くの忘れてました。
IKをセッティングする際に、ジョイントの優先角度を決めないといけません。でないと以下のような現象が起きます。

設定方法は簡単です。
膝のジョイントを選択し、曲げたい方向に適当な角度に回した後、
Skeleton → Set Preferred Angleを実行します。
そうすると優先角度がジョイントに登録されるので、膝が逆回転しなくなります。ちなみ優先角度の情報はアトリビュートエディタで確認できます。


このようにIKコントローラーで動かせるようになりました。
が、つま先のコントローラーも追従させたいので以下のようにします。
そもそも、toeのコントローラーがfootIKの子供になってなかったのでペアレントします。

次にIK_L_foot → IK_L_toeの順にまたIK Handleを作ります。
設定は以下のようにして1‐2を選択。

生成されたIK Handleをtoeコントローラー(L_toe_ik_ctrl)の子供にしてあげればOK!

この要領で、腕も進めていきます。
できました!↓

できましたが、IKのhandの回転に違和感が…
なぜか、ひじの部分が動くのと、コントローラーの向きとマニュピレーターの向きがズレてるのも気になります。が、これは次回に気を付ける部分として先に進みたいと思います。

コントローラーをつけるにあたって、骨の位置とか回転を変えたいな~という場面が多く調整したかったのですが、スキンバインドされてる骨なので動かない。そういう時の対処法を探したらよい記事がありました。
これはメッシュのウェイト情報をXMLデータとして書き出す方法です。
これでウェイト情報をどこかにいったん保存しておいて、スキンバインドを解除してジョイントの調整ができるようになりました。
ジョイントが決まったらまたインポートすればメッシュとジョイントがバインドされた状態に戻ります。
(補足)ちなみにインポートするときはいったん適当にジョイントとスキンバインドしてスキンクラスターを作成してからXMLをインポートする必要があります。スキンクラスターとはジョイントとメッシュをバインドするときに自動で生まれるノードのこと。バインドせずにXMLインポートしても何も起きないので注意
この記事を見つける前にこれじゃね?と思ってやってたやり方が罠だったので追記しておくと、項目 SkinのWeight Exportは名前的にそれっぽいのですが全然反応しなくて迷いました。結局これは使わずに、記事のとおり、項目 DeformのExport Wightからやったらうまくいきました。

もう仕組みは完成したのであとは左右にコントローラーを設置します。
コントローラーは複製して名前を変更して中心軸で-Xスケールすれば左右反転が可能です。
複製するのは以下の部分です。(赤:腕のコントローラー群 青:足のコントローラー群 緑:IKFKスイッチ)

原点にロケーターを作成し、複製したコントローラーを全部ペアレントして-xスケールすると丁度反転します。

そしたらロケーター内のコントローラーの名前を変更します。
フリーのリネームツール「Ari Renamer」がとても便利です。

そのあとは左側で作成したコントローラーと同じ階層に移動します。(全体の階層を少し変更してます)

R側のノードを繋ぎなおせば完成。

細かいところの調整はまだまだありますが、
とりあえずIKFKのコントローラーを設置するところまでできました!
やってて思ったのは、最初に設定したジョイントに余計な回転値が入ってたりするとエラー出たり、挙動がおかしくなったりしてめちゃくちゃ時間かかる。
次はジョイントの名前とかノードの名前、回転値とかのチェックをツール化したいと思いました。じゃないと手作業ではエラーが起こってしまう…(とくに自分はこういうの苦手なので)
無事アンビーは完成ということで、今後アップデートしていきたいと思います。
次回は生成AIからちびキャラでも作って動かすまでやってみようかなと思います。
ここまで読んでいただき感謝。
