Houdini 19.5 Vellum

素早く動く布

On this page

概要

素早く動くオブジェクトは、それにつられて動く布にエネルギーを蓄積してしまう可能性があります。 これは、キャラクタ全体が素早く動いた時、または、ボディパーツが素早く動いた時に起こり得ます。 Velocity BlendとReference Frameの2つのメソッドを使用すれば、より望ましい結果を得ることができます。 腕振りといった素早く動くボディパーツには、通常ではVelocity Blendを使用します。 スーパーヒーローとそのマントといった素早く動くキャラクタ全体には、通常ではReference Frameを使用します。

Velocity Blend

Velocity Blendを制御するパラメータは、Vellum Attach to Geometryノードを始め、 Constraint TypeAttach to Geometry に設定されたVellum Constraintsノード上にあります。 この Velocity Blend パラメータによって、布が動きを予測できるようになり、突然の動きによる問題の発生を回避できるので役に立ちます。 Velocity Blendは、ジオメトリに取り付けられた拘束を受け取り、ターゲットのVelocityをブレンドします。

例えば、キャラクタがブレスレットを身に着けて腕を振っている場合、そのブレスレットは比較的同じ場所に留まるようにしたいことでしょう。 Velocity Blend を有効にすれば、拘束内のエネルギーの蓄積が多すぎることが原因でブレスレットが跳ね返るような動きになってしまう問題が解消されます。 Velocity Blendは、素早く動く腕の端に袖を追従させるのにも役に立ちます。 コリジョンがその袖を引き戻すのを待ってみると、大きな抵抗の効果になっていることがわかることでしょう。 腕が加速しているので、袖も強制的に加速化させることで、このような問題は解消します。

Note

Velocity Blendは、ローカルのVelocityを用意できるようにするために、ターゲットにv Pointアトリビュートが必要になります。 ジオメトリに何もVelocityが付いていないのであれば、Point Velocity SOPを使用すると良いでしょう。

Velocity Blendを使用することで、素早く動くキャラクタ上の衣服などの素早く動く布を抑えることもできます。 以下の動画では、右側のキャラクタにはVelocity Blendを有効にしています。 右側のキャラクタでは、左側のキャラクタとは違ってエネルギーが蓄積していないことが分かります。

Reference Frame

Vellum Reference Frameノードは、Vellumオブジェクト内のポイントを、アニメーションジオメトリで定義されたReference Frameに結び付けます。 これは、Velocity Blendに似ていますが、キャラクタの特定の部分ではなくて、全体的に動作します。

このメソッドは、素早く動いているキャラクタ、または、動き回っている他のオブジェクトの親であるキャラクタがある場合に、ワールドシーン基準ではなくてそのキャラクタを基準に布を動かしたい時に役立ちます。 例えば、スーパーヒーローのマントに風のフォースを適用したい時です。 フォースを実際のワールド空間とは異なる空間で動作させると同時にすべてのコリジョンは大きな空間で実行させることができます。

Reference FrameとVelocity Blendを同じシミュレーション内で一緒に使用することもできます。 例えば、キャラクタが素早く動くと同時に、そのキャラクタが腕を振り上げる場合です。 シミュレーションが発生する箇所でReference Frameを使ってスローダウンもしくはフレーム変更させてから、キャラクタが腕を振り上げた時に袖に対してVelocity Blendを使用することができます。

Vellumオブジェクトのポイント上には、そのポイントをReference Frameに追従させるかどうかを指定するためのアトリビュートがあります。 このノードは、そのReference Frameの変化に応じてVelocityと加速度を変更します。

あなたが時速100kmで移動していようが停止していようが、布は同じ振る舞いをします。 そのため、その加速度が原因で布が何かおかしな挙動をしてしまいます。 加速度コンポーネントは、 Velocity Compensation パラメータで制御します。 このパラメータは、Reference Frameの加速度を考慮して調整されるVelocity量を制御します。 例えば、アニメーションが止まった状態から急に非常に素早く上方に移動すると、布が破れてしまいます。 しかし、適切に Velocity Compensation を調整すれば、全体として上方に滑らかに動き始めます。

次に重要なコンポーネントは、風フォースです。 キャラクタまたはオブジェクトが時速100kmで移動する場合には、風フォースが重要になります。 風フォースが(0, 0, 0)に設定されていて、オブジェクトが時速100kmで前方に移動すると、その布が急に後方に引っ張られます。

Note

Vellum Solverの Wind パラメータは、デフォルトで(0, 0, 0)に設定されています。

急な動きを打ち消す風の計算方法の1つは、Vellum SolverWind パラメータに複雑なエクスプレッションを使用することです。 しかし、もっと簡単な方法は、Vellum Reference Frameノードの Drag Compensation パラメータを使用することです。 このパラメータは、Reference FrameのVelocityによってターゲットVelocityを調整するので、Vellum Solverの風だけでなく、あなたが追加したPOP WindフォースやPOP Dragフォースを含めてすべての風の速度を調整します。 0の値は、風のVelocityをそのまま維持し、1の値は、Reference FrameのVelocityを加算し、0.5の値は、Reference FrameのVelocityの半分を加算します。

Acceleration Threshold パラメータは、 Velocity Compensation を発動させるタイミングを決めます。 例えば、キャラクタが単に歩いている場合、Velocity Compensationを使用する必要がありません。 たいていの場合、非常に大きな加速度が発生した時のみにそれを考慮します。例えば、キャラクタが突然横に引っ張られた時です。 Acceleration Threshold は、Velocity Compensationを開始する加速度を制御するためにあります。

Tip

Reference FrameノードのSubstepsの数は、必ずVellum SolverのSubstepsの数と同じにしてください。 シミュレーションは同じレートで計算する必要があるので、これらのサブステップ数を合わせる必要があります。

Vellum

ソフトボディ

流体

拘束

コリジョン

上級