この記事はHoudiniアドベントカレンダー2021 13日目の記事です。
はじめに
「作ったものを動かしたい!」
「簡単に動かしたい!」
「自分なりの動きも追加したい!」
そんな願いを叶えるべく、気になるツールのCascadeurをHoudiniで使ってみた記録です。
動く楽しさが伝わるといいなーと思います。
零号機ベースモデル提供:Gato_Cangrejo氏
この記事で紹介する内容
- MixamoのモーションデータをCascadeurに取り込み加工
- モーションをHoudiniに取り込みリターゲット
- Rig attrib VOPで注視点や接地などの制御
作業環境
- Houdini indie 19.0.383
- Redshift 3.0.59
ツール類
- Mixamo
言わずと知れたAdobeグループのモーションデータ提供サービス
https://www.mixamo.com - Cascadeur
とっても気になる物理モーション作成ツール
https://cascadeur.com
参考記事
- Houdiniの新しいリギングとアニメーション:KineFX機能まとめ
https://qiita.com/jyouryuusui/items/cc4c7c529fed71f03df3 - KineFX Part2:MotionClipアニメーション入門
https://qiita.com/jyouryuusui/items/1ba0c8844c4d51b9878e - kinefx list of tutorials(サルにもわかる Houdini)
http://ikatnek.blogspot.com/2021/02/kinefx-list-of-tutorials.html
※困ったときは公式ドキュメント。
困ってなくても公式ドキュメント。
MixamoのモーションデータをCascadeurに取り込み加工
Mixamoからモーションダウンロード
定番のMixamo様から好みのモーションをCascadeurへ取り込みます。
FBX(スキンなし)なしでお好みのモーションを収集します。
今回は動きが大きくわかりやすいように、下記の5つのモーションを使いました。
モーションデータをダウンロードしたら準備完了です。
Cascadeurへ取り込み
用意したモーションFBXをCascadeurで開きます。
new scene - Import Fbx/Dae - Animation
デフォルトの状態だと何も表示されていないので、左上のモード切替からジョイントモードに切り替えます。
必要ないフレームを削除しておきます。
範囲選択してカギマークのボタンをクリックするとキーフレームが追加(削除)されます。
次に新しいシーンを開き、追加するモーションを読み込みます。
モーションをコピーするためにコピーするジョイントとフレーム範囲を選択します。
Ctrl+Shift+C コピー元のポイントをコピー
別シーンを開かず同一シーン内でトラックに複数モーションを並べてコピペできる方法がある気がしますが、私は別シーンの方が見やすい気がして分けることにしました。
コピー先のシーンに戻り、コピー先のジョイントとフレーム範囲を選択します。
Ctrl+Shift+V コピー先にポイントをペースト
元のモーションとコピペしたモーションの間が断絶しているので範囲選択して補間ツールでつなぎます。
これを繰り返して複数モーションをつないだり、間に好きな動きを入れたりして調整します。
元のMixamoのFXBファイルは全フレームにキーが打ってあり、モーションを変更したい場合は特徴点となるフレームだけ残して削除し補間しても似た結果が再現されます。
好きなように調整したらFBX形式でモーションのみ保存します。
File - Export Fbx/Dae - Without Meshes
モーションをHoudiniに取り込みリターゲット
ベースメッシュのスケルトンにモーションデータをリターゲットします。
KineFX登場後にずいぶん紹介されてるので、手順は軽く。
片側のみスケルトンを調整し、半分削除してミラーコピーします。
Cascadeurから書き出したFBXファイルをfbx anim importノードで読み込みrig stash poseのインプット左に接続。
fbx anim importノードをコピーし、OutputをRest poseに変えてからrig stash poseのインプット右に接続。
rig match poseノードでソーススケルトンのポーズを調整。
map pointsノードでポイントの対応を指定。
Rig attrib VOPで注視点や接地などの制御
プラスアルファの部分で便利な制御を追加します。
Look at
カメラなどでも使う、特定のオブジェクト方向を追従するようにするVOPを追加しました。
rigattribvop内にlookatノードを追加して設定しています。
Collision
地面が凸凹していたり、傾斜していたりする際に足がめり込まないように追従します。
(うまくできていないですが)
Rig attrib VOPの第2、第3入力をVOPで参照するため、Compute transforms for inputのチェックを外しています。
接地対策はRig attrib VOPで指定する方法のほか、adapt to terrainノードを使う方法もあります。
おわりに
単純にMixamoモーションをつなぐだけだと足の入れ替えや態勢、重心の移動など不自然な点が出てきます。
実際の動きをよく観察することが魅力的なモーションへの近道だと実感しました。
実はMocap for allを使ったモーションキャプチャとMotion clipなどにも触れたかったのですがそこまでいけませんでした。
- Mocap for all
カメラ2つとPCで全身モーションキャプチャが始められるモーションキャプチャアプリケーション
https://vrlab.akiya-souken.co.jp
お手軽に始められて楽しいのでおすすめです!
Houdiniでよいクリスマスを!