見出し画像

【b3d_mkn】blenderリグにモキャプ用ボーンを追加する話【blender】

【b3d_mkn】自分で作ったblenderリグの概念まとめ【blender】|makeInuFilm (note.com)

今回やった事

mixamoとかmoveOneとかWonderStudio、他にもtext to motionサービスも今後発展して行きそうなので、その辺を考慮するとコントローラーリグをモーションキャプチャ対応のリグにするのが必須になっていきそうなので更新

基本構造 IKFKの切り替え機構があるリグをどうやって
モーションキャプチャ対応にするかが今回の課題

うまく行かなかった構想

ほんとはモキャプ用アーマチュアをボーンコンストレイントで"回転コピー"とか"チャイルド"使えば行けるやろ、あとはベイクで適当にやっとこ 的な甘い事を考えてました

結果は×

回転コピーでMocapBone(以下"MCP")をFKと同期させると、そもそもFKのアクション(アニメーション)を上書き調整する事が出来ない
チャイルドだとFK/IK切り替え機構と干渉して循環参照になりました

1日位で結構簡単に実装できるやろ!と思っていましたが夢破れて三が日

motionbuilder等ではアニメーションレイヤーが優秀なので、humanIKにベイクされたデータを調整しなおすのは比較的容易な部類だった訳ですが
公式にアニメーションレイヤがあるわけではないblenderではそうも行かず

うまく行った構想

という事で仕切り直し、考え方を改めて、2~3年前に考えてた原始的な方法で突破しました、シンプルイズ最強です

図にするとこんな感じ

根本の設計は変えず、あらかじめ用意されているFKボーンの親にMCPボーンを追加して、MCPが受け取った後、FKで調整が出来るようにしました(胴体は上半身下半身分離リグがあるのでちょっとコントローラーとの差異が不格好だけどやむを得ない)

階層図

上図のMCP_~がモキャプ用の受け取りボーンで、子供のFKで調整すると最終的にMasterボーンが受け取って、スキニングされている骨が動く

エクスポートするアーマチュアとインポートするアーマチュアで何故リネーム処理を挟むのかというと、mixamoのボーン命名規則とwonderstudio等はほぼ一致するので、MCP_ではなくmixamoのボーン命名規則にしてしまえば1工程省けるのだけれど、今後他のアプリや機能も追加されていく上で、命名規則を全方位で対応する事を考えると独自の命名規則に一旦リネームする工程を挟む方が今後拡張させやすかったので泣く泣くそういう仕様にしました 

mixamoの命名規則というのは mixamoの適当なモーションをfbxでダウンロードしてそのままインポートすると付いてる骨の名前の事です(hipsとかspineとか)

運用の流れとしては 
①キャラをまずスキニング骨と1メッシュ1マテリアルだけの状態で書き出しをする
 ※メッシュオブジェクトやマテリアルが複数あるとエラーの原因になりやすくて疲れたので複数のオブジェクトを綺麗に統合する機構も書いた
②運用するアプリに読み込ませてキャラのモーションを焼き付けてもらう
③焼き付けたFBXをダウンロードしてblenderでインポート
④blender内でモキャプアーマチュア→コントロールリグアーマチュアに焼き付けるまでを自動化した機構を実行してベイク完了
⑤FKボーンを弄って最終アニメーションに持っていくまでを頑張る

余談

blenderのリグって大体dumped Trackかチャイルドか親子を巧く使いこなせば大体何でもできるからmayaより楽なのよね……

ちなみに、コントロールリグを運用してないとか、autorigpro使ってるなら上記はまた別のワークフローになるので全く参考にならないです、あくまで自分でリグを作りたい人用の参考としてお納めください

注意点とTIPS


アクション — Blender Manual
ほんとはコントロールリグが無い運用をしているのであればblenderのアクション同じ名前の骨且つ、ロール(骨の軸)とか一致してるのであれば面倒くさい工程を挟まず一発でモーションを流用する事が出来るので、便利っちゃ便利なんですが、今回はほとんど使えませんでした

理由としてはmixamoやwonderStudioではTポーズでの運用が大前提で、自分のコントロールリグはAポーズ(厳密に言うと自前の素体生成システムがAポーズ前提で、この自前リグはTでもAでも大丈夫)
なので、インポートエクスポートをする際に必ず骨軸が一致しなくなるので使う事が出来ませんでした

という事で骨のworld_matrixをスクリプト上で取得して無理やり一致させる形でキーフレームを打ち直すという手順でベイクを行っています(TからAにする位なら別に大きな誤差にはならないのでセーフ)

実際にどういう挙動をしているかの動画/ X (twitter.com)

結論

モキャプ用の骨はFKの親階層に骨を追加して突破しよう!(古典)

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