Houdiniでアニメーションを作ろう パート8:Transient Constraint(一時的なコンストレイン)とモーションパスの表示
ダウンロードしたシーンファイルのDynamic Motion部分を使用します。
ダウンロードしていないかたは、SidefxのAnimation Workshopからシーンファイルをダウンロードしてください。
従来のキーフレーム アニメーションでは、放物線のリアルな動きを実現するのは難しく、面倒な作業です。
このDynamic motion=物理ベースのモーションを使用すると、重要なポーズにおおまかにキーを設定すると、ポーズ間のモーションとスペーシング(間隔)が物理ベースの軌道に置換されます。 これによって、シーン内で軌道を扱うアニメーションワークフローが大幅に迅速化および簡略化することができます。
今回はこの『Dynamic Motion 』をご紹介していきます。
『Dynamic Motion』の主な使用方法は2つあり、1つ目は基本的には、特定のフレームから次のフレームに向けて、物理的に正確な動きを自動的に作成するものです。
アニメーションを入力として受け取り、アニメーション区間をProjectile(斜方投射)モーションに置換します。この影響でキャラクタの位置は変更されますが、キャラクタのポーズは変更されません。
シーンファイルでサンプルを見てみましょう。ThrowパートのJimmyの+マークを開いて展開します。
JimmyCatchHigh_ExampleにDisplayフラグを設定します。
このサンプルでは、ボールがあるフレームで離され、次のフレームでキャッチされるように設定されています。すでに設定済みなので、アニメーションレイヤーを表示して再生します。
角度とボールの軌道が決まり、2つの動作をつなぐパスができています。この仕組みについては後で詳しく説明します。
次の例として、もう1つの使い方を紹介します。ここでは、クリエイティブなコントロールが可能な方法を使用しています。
ボールを投げると、アニメーションが変わり、異なるフレームでキャッチすることになります。
ボールの動きが変わることで、キャッチするタイミングも変わるからです。ここではクリエイティブなコントロールを活用し、ボールをどの高さまで投げるかを決定できます。
それでは、この機能をもう少しわかりやすく説明するために、いくつかのシンプルな例を見てみましょう。
ネットワークエディタでDynamic Motionの部分に移動し、
Soccor内のtry_me3ノードにDisplayフラグを設定し、Color1でCtrl押しながらTemplateをクリックします。
try_me3をAltキーを押しながらドラッグしてコピーを作成できます。
これにより、元のデータを安全に残しつつ、作業を進めることができます。
ここではJimmyの例を見ていきます。Jimmyがボールをヘディングする動きのラフなアニメーションを5フレームごとに設定しています。
ここで行うのは、ボールの接触ポイントを設定することです。
ボールが
キーフレームが設定されているフレームで、ボールを少し動かして調整します。
これで、Jimmyが各ポイントでボールをヘディングするようなアニメーションにすることができました。
再生して確認すると、ボールがあまり良い動きをしていないことがわかります。
ここで、『Dynamic Motion』を使うことで、ボールの動きを素早く改善できます。操作が非常に簡単で、手動で調整するよりもはるかに効率的です。
Dynamic Motionツールを使用すると、物理的に正確なProjectile Motion(斜方投射)や振り子のの軌道をアニメーションに追加することができます。
Cキーを押してラジアルメニューを開くか、上部メニューから『Dynamic Motion』を選択します。
Dynamic Motionモードに入ったら、Control+Gを使って『Dynamic Motion』の設定を確認します。
Gキーを押すと設定が表示されます。
現在のモードは『Basic』になっていますが、今回はこちらのモードを使用します。
再生して確認します。
ボールが当たるフレームを設定し、その間のアニメーションが適切に行われるようにしていきます。
1フレームに移動して、リセットして最初からやり直します。
まず最初に行うのは、重心の設定です。
ここではボールのコントロール1つしかありませんが、複数のコントロールがあるキャラクターの場合、3つ選択すると異なる重心が設定されます。ボールの場合は中心が重心になります。
重心の選択はHキーで行えます。
ツールのメッセージはSelect center of mass controlsをなっています。
ここでHキーを押して重心を設定し、新しいアニメーションを開始します。
ここからスタートします。
ツールメッセージはStart a new projectile motionとなっています。
1フレームで再度Hキーを押してアニメーション開始フレームを指定し、
次にフレーム10に移動します。
メッセージがSelect Projectile end positionに変わっていますので、Hキーをおしてアニメーションの終わりを指定します。
バウンドの動きになるので、同じ10フレームで再度Hキーを押して新しい振り子モーションの開始を指定し、次の20フレームで終了を設定していきます。
1回目のHキーを押したときは下記メッセージが表示され、
再度同じフレームでHキーを押すとメッセージが変わります。
これを全てのキーフレームで行ってください。
タイムスライダーを操作すると、3Dビューから設定が外れるためショートカットが聞かなくなります。
再度3Dビューをクリックしてからhキーを押すように注意してください。
Selection Setsを確認するとdynamicmotionが追加されています。
『Dynamic Motion Path』をオンにすると、
必要な動きが自動的に生成されているのが確認できます。
正しく振り子モーションが設定されていない場合、Dynamic motion ウィンドウでResetボタンをおして、Dynamic motion を1から再設定してみてください。
これでボールが素早くバウンドする動きができました。フレーム範囲を1-50に変更しループ再生すると、何も調整せずに綺麗なバウンドの動きが再現されています。
非常に素早く設定できましたが、必要に応じて変更も可能です。
たとえば、20フレームでJimmyの手の位置を少し動かし、ラフなアニメーションで調整してみます。
ここでボールに当てるようにしてみましょう。
ボールを選択し、1フレームに戻り、リセットしておきます。
20フレームに移動し、ボールを頭ではなく手に移動させます。
これで、Jimmyが手でボールをバウンドさせる動きになります。ボールをさまざまな角度で空間内に動かしながら、適切な高さを予測してアニメーションを設定する場合、このような調整には通常時間がかかりますが、この方法を使えば素早く調整できます。
では、もう一度やってみましょう。現在、ボールのアニメーションがあまりよくありません。
先ほどと同様に、ボールにまずはhキーを押して重心を設定し、ヒットの開始と終了位置を投射運動に合わせて設定します。
Hキーを使用して、各フレームで開始・終了を設定します。
新しい動きを開始し、新たな位置を設定すると、新しいアークが表示されます。
同じ手順で、Hキーを押して設定を繰り返します。終了後確認すると、短時間でJimmyが手でボールをヒットする動きを作成できました。物理的な動きに沿ったアークも適切に反映されています。
ここでご紹介した昨日は、指定したフレームで正確にヒットさせる例です。非常に迅速に設定でき、手動で調整するよりも格段にスピーディです。
このアニメーションが気に入った場合、ベイキング機能を使用して確定させることもできます。ベイキングにはいくつかのオプションがあります。
ベイキングでは、すべてのフレームにキーを設定するか、2フレームごとや5フレームごとなど、フレーム間隔を指定することができます。
この場合は『Bake Essential Keys』でベイキングを行います。これにより、必要な動きを保つために必要な最小限のキーのみが設定されます。
ここでボールの動きを確認すると、タイミングが少し曖昧で、全体的に調整が必要な状態です。
Bake yes to New Layerを使用すると、新しいレイヤーにキーをベイキングすることが可能です。
Bake Keysボタンを押してキーをベイクします。
キーを確認すると、カーブがきれいになっているのがわかります。
これにより、適切な動きに必要なキーがすべて生成されました。新しいレイヤーも追加されています。
CキーからAnimationに戻り、
Selection Setsでdynamicmotionの表示オフにします。
再生して確認を行ってください。
もし変更が必要であれば、素早く調整できます。元の位置に固定されているわけではありません。
例えば、24フレームでもう少しボールの位置を高くしたい場合など、簡単に調整可能です。
ボールを選択して、移動するだけです。
また、アニメーションカーブを確認しながら変更を加えていくこともできます。
キーを選択し、移動してアニメーションを調整してください。
キーがワールドスペースで設定されているので、他に余分なものが生成されることはありません。元の動きから簡単に変更を加え、わずか数分でスムーズなモーションが作成できます。
次のチュートリアルではDynamic MotionのAdvancedオプションを使用して、Dynamic motion の位置や高さを調整し、元のアニメーションキーが新しいモーションに合わせて自動的に再タイミングされるように設定します。
Houdiniでアニメーションを作ろう パート10:Dynamic Motionでアニメーションを調整