On this page |
RBDオブジェクトの活動化と非活動化 ¶
Drive Simulation タブのActivate ObjectsとDeactivate Objectsツールを使ってオブジェクトの 活動化 (シミュレーションされる)と 非活動化 (手動でキーフレームをアニメーション)の切り替えをキーフレームすることができます。これによって、ある範囲のフレームでシミュレーションオブジェクトを手動で制御して、他の範囲ではシミュレーションの制御下に戻すことができます。
これらのシェルフツールは、RBD Keyframe Activeノードを ダイナミクスシステムに追加します。このノードには、 Active パラメータがあり、オブジェクトがシミュレーションした位置と向きを使う(Active=1)のか、またはキーフレームで設定した位置と向きを使う(Active=0)のか制御することができます。
オブジェクトが非活動化(Active = 0)の時、RBD Keyframe Activeノードの Position と Rotation のパラメータをキーフレームすることで、手動でオブジェクトの移動と回転を設定します。これは、オブジェクトレベルのトランスフォームを 設定しているのではありません 。
Note
Active の値をキーフレームする時は、デフォルトの設定を使わないで、チャンネルのconstant
アニメーションカーブを使うことを知っておいてください。詳細は、アニメーションエディタの使い方を参照してください。
オブジェクトの位置をアニメーションとシミュレーションで切り替える ¶
-
オブジェクトレベルでオブジェクトをキーフレームします。
-
オブジェクトを選択して、 Rigid Bodies シェルフタブのRBD Objectを使って、それをシミュレーションオブジェクトにします。
-
ダイナミクスネットワークをダブルクリックして中に入ります。
-
RBD Objectノードを選択します。パラメータエディタで Create Active Object をオンにして、 Use Object Transform をオフにします。
-
RBD Objectの Position と Rotation パラメータを使って、シミュレーションのオブジェクトの位置を決めます。
-
RBD Objectの後にActive Valueノードを追加して、 Default Operation パラメータを“Set always”に設定します(これでHoudiniはフレーム毎にオブジェクトがアクティブかどうか再評価します)。
このノードの Active パラメータは、オブジェクトが アクティブ (シミュレーションで制御される)なのかそうではないのか制御します。
-
Active Valueノードの後にOBJ Position DOPを追加して、 Object Path パラメータをRBD Objectノードでインポートしたのと同じオブジェクトに設定します。 Default Operation を“Set always”に設定します(これでHoudiniはフレーム毎に位置を取得しに行きます)。
OBJ Positionはオブジェクトレベル(OBJ)からオブジェクトの位置を取得し、シミュレーションで計算された位置を上書きします。
-
次に、Active Valueの状態とOBJ Positionノードをお互いにリンクするパラメータ参照をセットアップします。
オブジェクトが アクティブ (つまり、シミュレーションされている)の時、Active Valueノードの Active パラメータは1にして、OBJ Positionノードの Activation パラメータは0にします(なぜならオブジェクトの動きをシミュレーションしたいので、キーフレームアニメーションは無効にします)。逆に、オブジェクトをキーフレームアニメーションで制御する時は、Active Valueノードの Active パラメータは0にして、OBJ Positionノードの Activation パラメータは1にします。
Active Valueノードの Active パラメータでクリックして Copy Parameter を選択してから、OBJ Positionノードの Activation パラメータでクリックして Paste Copied References を選択します。貼りつけられたエクスプレッションでch関数の頭に
!
(論理否)を追加します。この設定でよりOBJ Positionノードの Activation パラメータは常にActive Valueノードの Active パラメータの論理否になります。
-
以上の設定が終われば、Avtive Valueノードの Active パラメータの値をキーフレームすることによって、キーフレームによる位置とシミュレーションによる位置を切り替えることができます。
オブジェクトのキーフレームによる位置とシミュレーションによる位置をブレンドする ¶
Blend Solverは、複数のソルバでオブジェクトを動かして、その結果をブレンドします。
Copy Solverは、データを新しい名前でコピーします。KeyFrame
(OBJ Position DOPから)名前でポジションデータを持つことができます。このデータにはキーフレームによる位置が記録されています。KeyFrame
データは常に存在させることができますが、ある特定のフレームでPosition
データ(オブジェクトの位置を制御する)にコピーするだけです。
キーフレームアニメーションとシミュレーション間を滑らかにブレンドするためには、Blendソルバを使って、それらの結果をブレンドします。例えば、RBDソルバとPosition
データの上にKeyFrame
データをコピーするCopyソルバがそれです。
このセットアップのサンプルとSimpleBlend
サンプルファイルはBlend Solverのオンラインヘルプを参照してください。
ゴールをアニメーションする ¶
ハードまたはソフトの拘束の位置をキーフレームしてシミュレーションに対する手動コントロールを取得することができます。
ジオメトリ(SOP)レベルでパーツをキーフレームする ¶
-
Transformサーフェスノードを使ってオブジェクト内のジオメトリに移動・回転のキーフレームを設定することで、シミュレーションの動きにさらにアニメーションを加えることができます。
内側のジオメトリをキーフレームする間は、シミュレーションでオブジェクトが動かないようにオブジェクトを非活動化したものとこれを合わせることができます。
-
ジオメトリ(SOP)レベルで剛性の動きがあり、それをシミュレーションに渡したいのであれば、Trail SOPを使って、Point Velocityアトリビュートを計算して、ダイナミクスネットワークにRBD State DOPを追加して、その Inherit Velocity オプションをオンにして、渡すフレームでVelocityをセットアップします。
1つのオブジェクトでこれをすると理解出来ません。とはいえ、もし接着されたオブジェクトがあって、その一部が異なる速度で動く(キャプチャー/変形によって)場合に、これを使います。RBD Glue ObjectとRBD Fracture Object DOPには、これを簡単にする Inherit Velocity パラメータがあります。