この記事はHoudini Apprenticeアドベントカレンダー2024 2日目の記事です。
1からHoudini APEXでアニメーションを作成する方法を知りたい方は、下記の記事からさかのぼることが可能です。
Houdiniでアニメーションを作ろう パート12:Ragdollでプロップアニメーション編
前回のシーンがある方は引き続きそのシーンを使用してください。
SideFXのAnimationWorkshopから、シーンファイルをダウンロードしていない方はファイルをダウンロードしてシーンを開きます。
パート12では小道具にRagdollを追加してRigidbodyダイナミクスを適用する方法を確認しました。
次はElectraにRagdollを設定する方法を見ていきましょう。
ご自身のキャラクターを使用する場合は、コリジョンシェイプなどを自分で設定する必要があります。
使用するテストジオメトリのElectraノードを確認します。
Part1 -setup and posingのtestgeometry electra6を選択します。
パラメータ内に『Configure Ragdoll』というチェックボックスがあるのがわかります。
この『Configure Ragdoll』をオンにすることで、ElectraにRagdollを使用できるようになります。
シーンアニメートに進むとElectraが表示されているのが確認できます。
CキーからRagdollモードに入ると、Electra用のRagdollが自動的に生成されています。
ここでCtrl + Gを押してRagdoll設定に入り、Ground Displayを再びオフにします。
「Auto Reload Target Animation」と。
「Auto Reset Simulation」をオンにします
何か変更を加えるとすぐに更新が反映されます。再生し確認できることは、キャラクターがまっすぐ下に崩れ落ちることです。
Electraをオフにして、
Ragdoolコントロールだけをオンの状態にしておきます。そして、再度コリジョンシェイプを確認します。
次にコリジョンシェイプを選択して、Gキーを押してラグドールのパラメータを開きます。以前行った操作と非常に似た方法で、キャラクターのアクティブ/非アクティブ状態を切り替えることができます。
静止させて、上半身だけを動かしたい場合、上記のようにコリジョンシェイプを選択しアクティブをオフにすることで対応できます。
これにより、上半身だけが動作する状態になります。また、体全体をアクティブな状態にしたまま、頭部だけを非アクティブにすることも可能です。
こうすると、すべてが頭部によって支えられて静止します。
このようにして、非常に簡単に制御が可能になります。また、必要であればキーフレームを設定できます。
例えば、体の下半身に何か動きを加えたい場合、まず頭部をアクティブに戻してから、下半身を選択します。
フレーム15に移動し、マウスのカーソルをActiveに置いた状態でkキーを押すことで、Activeのキーフレームを設定します。
その直前の14フレームでは、アクティブをオフに設定し、キーフレームを設定します。これにより、体が動き始め、その後、下半身(脚)が15フレームで崩れていきます。
このように、どの部分をどのフレームでアクティブにするかを決めることができます。例えば、最初にアニメーションを実行し、その後にラグドールへ移行する場合の設定も可能です。ここでは、階段がセットアップされたシーンを使用して見ていきましょう。
Stairsを確認すると単純にCopyノードが使用されていることがわかります。これにより、ボックスを使ってステップの総数を設定し、階段の高さや低さを簡単に調整できます。
APEX Scene Add Animatiであるtry_me11をAltキーを押しながら複製します。
この中ではキャラクターが階段を降りている簡単なアニメーションを確認できます。
彼女が階段で滑り落ちるような動きを作りたいと思いますので、再びラグドールを使用してその動きを設定していきます。
CキーからRagdollモードに入ります。
Control + Gを開き、再びGround Displayをオフにします。
地面は現在表示する必要はありません。
再生すると、現在の状態ではすべてが落下しており、階段も一緒に落下しています。これを修正するために、階段を選択し、Gキーを押してRagdollモードに入ります。
Animatedに移動します。そこで階段を選択し、Activeをオフに設定します。
これで階段が滑り落ちることはなく、適切な位置に留まります。
ただし、階段はコリジョンオブジェクト(衝突オブジェクト)として使用されています。
Selection SetsからEL_Woodの表示をオフにしてRagdollのみ表示します。
再生するとElectraが既存のアニメーションを無視して落下していることがわかります。
ここで、Electraを選択し、どこでそのRagdollの動きを開始させたいのかを決定する必要があります。
Selection SetsでElectra_Ragdollを選択します。
最初はキャラクターの歩行アニメーションを実行したい場合、Match World Transforms を有効にします。
有効にしたら、Kキーを使用してキーを設定します。
同様に、Position(位置)、Orientation(方向)の Stiffness(剛性) にキーを設定します。
これにより、アニメーションのワールドトランスフォームに一致する形でキャラクターが動作するようになり、アニメーションを正確に追従することが可能になります。
Auto Reset Simulationと有効にし、
Auto Reload Target Animationをオンに設定します。
変更を加えた際に更新結果をリアルタイムで確認できます。
現在行いたいのは、特定の地点でキャラクターをスリップさせることです。
20フレームに移動し、Match World Transformation、Position Stiffness、Orientation Stiffnessに値はそのままでキーを追加します。これにより、キャラクターの動きが滑り出すタイミングに合わせて適切に設定されます。
次に、フレーム25で、PositionStiffnessを0.1に、OrientationStiffnessの値を0に設定します。(値の変更時に少し計算時間が発生する)この操作により、キャラクターがフレーム25からその場で崩れ落ちるようなRagdollモーションが行われます。
キャラクターが歩行して、すぐに崩れ落ちる動作が設定されています。まだ落下しているだけで、環境や状況を考慮していないことが分かります。これは、アニメーションがここまでしか設定されていないためです。
そのため、アニメーションをもう少し詳細に操作する必要があります。その際に、Electraのコントロールを有効にして調整を加えることで、よりリアルな動作を作り出すことが可能です。
調整するために、設定を変更していきましょう。
まず、Electraの表示モードを変更するために、VisualizeをSkin Geometryに変更します。
Electraの姿の元のモデルが表示され、衝突形状のジオメトリに邪魔されることがありません。
次に、Electraの動きを調整します。
Selection SetsでElectraを展開し、Electra_blockを表示し、ピンをクリックしてキーを設定できるようにします。Ragdollを表示した状態で、コントローラーのみ表示し動かすこともできるのですが、動かしにくいので元のアニメーションを表示したほうがアニメーションしやすいと思います。
ピンに関しては「Houdiniでアニメーションを作ろう パート3:グローバルトランスフォームとチャンネルウィジェット」で説明しています。
Electra_Ragdollは非表示にします。
1フレームでElectra_blockにkキーを使用してキーを設定します。
フレーム20とフレーム25で、少し変更を加えます。
25フレームに移動し、足が滑っているように前の足を移動し、少し上向きに回転し
更にCOGを少し前に移動し、後ろ向きにのけぞったような状態に回転します。
Electra_blockにピンを設定しているので、kキーを押せばキーが必要なコントローラーに設定されます。
25フレームのまま更に腕の位置も調整し、キーを追加します。
更に頭も回転します。
右側の動きも同様に設定し、それを完了させます。その後、頭部を少し後ろに回転させ、倒れ込むような動きを加えます。これで再生すると、スライド動作が加わり、その後にラグドールが機能する様子が確認できます。
Selection SetsでRagdollを表示すると(見えずらければEl_Woodは一旦非表示)
修正したアニメーションにそってRagdollモーションが変化しています。
もしRagdollモーションが更新されない場合、下記2つの設定が有効になっているか確認し、無効の場合は有効にします。
調整を加えることで、動きに変化をつけることができます。例えば、ラグドールの挙動がどのように動作しているかをタイムスライダを動かして確認しつつ、ポーズを調整できます。そしてもちろん、Electraの全コントロールを選択して、すべてを一括で制御することも可能です。
Electra_blockを選択した後、キーをベイクして新しいレイヤーに移すことができます。例えば、フレーム20へ移動し、Start Recording Posesをクリックします。
ラグドールを有効化した20フレームからタイムスライダを動かすことでポーズの記録を開始し、必要なフレームまでアニメーションを進めることができます。
ポーズの記録を停止するためにStop Recording Posesをクリックします。
アニメーションレイヤーを確認すると、ragdollレイヤーが追加されていることが分かります。
Animateモードに移動して、
Electraと階段を再び表示すると、すべてのコントロールにキーが設定されていることが確認できます。
Selection SetsでEl_Woodの表示をオンにしておきます。
必要に応じてここからアニメーションを続けることができますし、また、レコーディング時に例えば5フレームごとに少ないキーでベイクすることで制御しやすくアニメーションを簡単にすることもできます。逆にレイヤーをミュートして再度変更を加えることも可能です。
以上がキャラクターにおけるラグドールの基本です。机で設定したラグドールと非常に似ています。アクティブになるタイミングや、ワールドアニメーションとのマッチング方法を設定したり、ポーズを調整してラグドールを開始することが可能です。