IKRetarget、MannyのデフォルトのIKRigをそのまま使っていませんか?
IKRetargetはそれぞれのボーン階層によってセットアップする必要があります。
例えば
・ルートボーンがない(全部腰から生えてる)
・腕の骨が4本ある
・手の指の生え方が違う
・腰骨が右足と左足で別れてる
この辺のボーンにリターゲットをするのに、デフォルトのIKRigをつかうと「なんかちゃう…」って感じのリターゲットになります。その辺の話です。
ゲームメーカーズさんのこの記事
https://gamemakers.jp/article/2022_10_24_20821/
を読んで実行できる感じの知識感で書いてます。
IKRigについて
IKRigはリターゲッターのもとになるもの(に近い)です。実はこれ単品で足の高さ合わせ作ったりばねを作ったりできるんですが機能別サンプルのIKRigを見てください。
リターゲットをするときに重要なのは実際のところ右下の「IKリターゲティング」です。とりあえずここが構造が一致していれば何とかリターゲティングができます。
FullBodyIKはじゃあなんのためにあるの?
FullBodyIKは好みです。場合によってはつけない方がいい場合もあります。
FullBodyIKはリターゲット元とリターゲット先でエフェクター(黄色の四角いやつ)の位置を一致させるように働きます。
これがないと例えばものを拾うアニメーションとかをリターゲットした時、身長や腕の長さによって手の到達点が変わってしまいます。
これを解決するやつです。
逆に身長差が著しいモデルでIKを使用すると、逆に変になることがあるので、時と場合によって使いましょう。ダンスとかだと使わない方がいい可能性があります。手足が伸びきる動きが身長高いモデルだと伸びなかったりするので。
リターゲティングルートってどこがいいの?
リターゲティングルートは通常はPelvisあるいはHip(腰骨)になっています。基本的にここで問題ありません
が、モデルによってはなぜか腰骨がなく全部Rootから生えていたり左右でわかれていたりします。
もしそういうモデルだった場合Blenderとかでボーンを編集してしまうのが一番楽です。
RetargetRootを設定しないという裏技もあるのですがあまりお勧めしません
IKRetargeterについて
リターゲットをする本体です。これを作るとAnim BPで「Retarget pose from Mesh」というノードを使うことでソースに入れたSkeltalMeshの動きをその場でリターゲットさせることができます。
基本的に重要なのは「とにかくポーズを一緒にさせる」これだけです。
IKRetargeterは二つのモデルのポーズが一致していれば何とかなります。手オンリーのモデルと人のモデルでもIKRigをセットアップしてRetargeterでポーズさえ一致させればリターゲットできます。いけます。
細かい調整方法としてチェンマッピングのチェーンを選んだ上で回転のアルファや平行移動のアルファを調整すると回転量を調整することができます。知らんかった(merao様ありがとうございます)
IKをリターゲットに使用する
実はIKRigで設定しただけではIKの位置に合わせてくれません(どうして)
各チェーンを選択した上で、詳細タブからソースにブレンドに数値を入れる必要があります
関節の数がおかしいのを何とかしてみる
上のモデルは腕が4分割されています。
当然IKは「間をいい感じに曲げる」なので人間みたいな曲がり方はしてくれません。
複雑骨折かな?
これをIKの意味があまりなくなる代わりにほぼまっすぐにすることができます
IKRigを組み替えます。
今まで
・右腕
・左腕
というくくりだったチェーンを
・右上腕
・右下腕
・左上腕
・左下腕
に変えます。
腕が分裂しているキャラとMannyの両方でこれを行います。
腕が分裂しているキャラの方にフルボディIK上の角度制約を追加します。
ソルバスタックのフルボディIKを選択した状態で上のボーン階層を右クリックすると設定を選択ボーンに追加というものを選ぶことができます。
これで動かしたくないボーンに制約を追加することができます。
回転の剛性、位置の剛性を上げて制限をすべての角度でLockedにしておけばほぼ動きません。(ある程度動くことはあります)
角度などはガン無視ですが、人間の腕とおおむね同じ2個2個でアニメーションしてくれました!
実際にリターゲットしてみる ~手と人間編~
手のIKRigの作成
今回はVRテンプレートの手のSkeltalMeshを持ってきました。
こんな感じでチェーンを設定していきます。
リターゲティングルートはRootに設定しました。
なんでHandじゃないの?というとなぜかリターゲティングルートに設定されたボーンは回転が制限されてしまうことがあるからです。症状的に謎なのですがアニメーションでガッツリ動くようなものはリターゲティングルートは避けましょう。
MannyのIKRigの作成
手のリターゲットをするにはボーン階層が大きく違います。特にリターゲティングルートが重要です。
こちらはHandに設定します。ほかに似た位置のボーンがないので…
IKRetargeterの作成
リターゲットをしていきます
Mannyをソースに、手をリターゲット先に設定します。
いい感じにポーズが同じになるように設定します。
歩きで動かしてみる
通常のIK_Mannequinでリターゲットをしてみる
ちなみに通常のIK_Mannequinでリターゲットをするとこうなります
カスタムしたIKRig、大事!
最後までお読みいただきありがとうございました。みんなもUEでRigを触ろう!