この記事は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でよいクリスマスを!