Houdiniでアニメーションを作ろう パート11:Dynamic Motionサンプル
ここからはRagdollの設定に入ります。
前回のシーンがある方は引き続きそのシーンを使用してください。
SideFXのAnimationWorkshopからまだ、シーンファイルをダウンロードしていない方はファイルをダウンロードしてシーンを開きます。
ボールを投げるシーンでボールに別の動きを加える方法をまず紹介します。
まずは、Part2 Animation Tools > Throw > ragdollThrow_ExampleにDisplay フラグを設定します。
前回はDynamic Motionを使用してコントロールや調整ができましたが、今回は投げた後、Ragdoll機能を使って、剛体(RBD)モーションを加えます。複雑な設定をしなくても、リアルな物理動作を簡単に実現できます。
では、Ragdollを使用して、このアニメーションを実行していきます。
TransientConstraint_ExampleにDisplay フラグを設定します。
Selection SetsでBballを選択し、
Cキーを押してRagdollを選択します。
コリジョン形状を選択します。
Acceptをクリックしてください。
GキーでControl Parmsを開くとActiveにキーフレームが設定されていることがわかります。
ボールのラグドールは58フレームでオフ、59フレームでオンになります。
これでボールを拾い、その後投げられたボールが跳ねる動きが設定できました。
とても簡単にこのモーションを作成することができました。
Selection SetsでBballを非表示に、Ragdollのボールのみ表示します。
Ragdollが設定されたボールのみが表示されるようになりました。
このRagdollのアニメーションをボールに再適用することもできます。
まず、Bballを選択します。
Bake Keys to New Layerが有効になっていることを確認します。
これで、非破壊的に作業できるようにします。
Start Recording Posesをクリックして開始します。
タイムスライダーをドラッグすると各フレームにキーが追加されます。キーの数を減らしたい場合は、間隔を空けることもできますが、今回は正確な動きを得るためにそのまま全フレームにキーを追加します。
これで完全に固定されるようになります。Stop Recording Posesをクリックして記録を停止します。C
キーからアニメーションに戻ると、新しいRagdollレイヤーが作成されています。
Selection SetsでをBballをオンにすると、動かない状態が続き、
記録したポーズ以降アニメーションが適用されています。
これは、Ragdollレイヤーがオーバーライドレイヤーとして作成されたためです。
そのためアニメーションレイヤーにキーを設定する必要があります。
Ragdollのアニメーションが始まる前の58フレームではRagdollレイヤーは0に設定し、Altキーを押しながら、Ragdollレイヤーの数値部分をクリックすることでキーを追加します。
次に59フレームに移動し、Ragdollレイヤーを1に設定します。
これにより最初はTransient Constraintで手と一緒にアニメーションが行われ、
その後、Ragdollアニメーションが有効になります。
これで、ベースレイヤーの拾う動作などが反映され、その後にバウンドの動きが加わる形になります。
手作業で設定する代わりに、Ragdollを使って思い通りの動作を簡単に実現することができました。
次に別の例を見てみましょう。例えば、キャラクターが立ち上がるシーンで、簡単なアニメーションレイヤーを追加してみたいと思います。
Standup_Layers_ExampleにDisplay フラグを設定します。
再生して確認します。
Electraがテーブルを持ち上げ、後ろに椅子を蹴り返す動作が設定されています。
例えば、テーブルをひっくり返す動作を追加したい場合、一からアニメーションで作る必要はありません。その代わりに、Ragdollを使用して設定することができます。
それでは、Ragdoll設定を確認したいと思います。
CキーからRagdollを選択するとコリジョンシェイプがないというメッセージがでますので、それぞれRagdollCollisionを選択します。
椅子
机
Selection Setsで確認するとragdollが確認できます。
表示がRagdollコリジョンシェイプの表示だけになりました。
ここでtable_Ragdollの設定を確認します。
Gキーを押してConfiguration Parametersウィンドウを表示し、RagdollとAnimated切り替えます。
Selection Setsでtable_ragdollを展開し、Controlを選択します。
RagdollのControlを選択すると、Configuration ParametersでActiveにキーフレームが設定されていることがわかります。
フレーム64に移動し、アクティブのキーが設定されていることがわかります。
Windows>Animation Editorを開くと、アクティブ状態が切り替わるポイント(0から1になる箇所)が確認できます。
CTRL +Gを押して、Action Buttonウィンドウを表示します。
Ragdoll Settingsに切り替えます。
そこでAuto Reload Animationを有効にします。
次にSolver設定に切り替えて、Auto Reset Simulationをオンにします。
テーブルコントローラーを表示します。これは元のアニメーションがついたものです。
64フレームでこのtableを選択し、少し回転させます。
自動的にアニメーションが更新されるのが確認できます。
Selection SetsでTableの表示設定をオフにすると、Ragdollに動きが反映されているのがわかります。。
これでテーブルが完全にひっくり返る動作が設定されました。速く動かすほど、当然ながらモーションも大きくなります。
次に、椅子の動作を確認します。同じ手順で椅子を選択して設定を行います。
足が上がり、ちょうどフレーム77あたりで椅子に当たるタイミングになります。
Selection SetsのChair_ragdollを選択し、フレーム76でActiveにマウスのカーソルを合わせ、kキーを押すことでRagdollのActiveにキーを設定します。この時はActiveはオフにキーが設定されます。
フレーム77でチェックボックスを使ってアクティブに切り替えます。
これでキャラクターが椅子を蹴ると、椅子が後ろに倒れる動きが確認できます。
この動きを調整して、より大きな動きにすることも可能です。テーブルと同じように、アニメーションを修正できます。
最後にこのRagdollアニメーションをテーブルと椅子のアニメーションとして同時に記録していきます。
例えば、Selection Setsでchairとtableを選択し、フレーム59でStart Recording Posesをクリックします。
タイムラインをドラッグすると、テーブルのアニメーションだけでなく、椅子のアニメーションも同時に記録されます。
アニメーションレイヤーを確認するとragdollレイヤーが追加されていることがわかります。
CキーからAnimationモードに戻り、Selection Setsでキャラクターを再度表示にすると、アニメーションが適用されているのが確認できます。
Ragdollのアニメーションレイヤーでオーバーレイを有効にする場合、59フレームに移動してragdollレイヤーの値を0に設定してAltキーと左マウスクリックでキーを設定し
次に60フレームでragdollレイヤーを1に設定します。
設定を確認し、アニメーションを再生します。これですべてのアニメーションが設定され、動作が反映されました。