ストランドダイナミクスの作成

 
 
 

[Strand Dynamics]コンパウンドを使用すると、ベルレ インテグレーション手法を用いて、パーティクル ストランド ダイナミクス シミュレーションをセットアップし、制御できます。ストランドにダイナミクスを適用すると、衝突やその他のフォース、またパーティクル エミッタの速度や回転速度に対応できるようになります。ダイナミクスにより、さまざまなエフェクトだけでなく、ヘアのような動きをストランドに加えることができます。

以降のセクションで説明するように、ストランド ダイナミクスをセットアップするために使用する必要があるコンパウンドが複数あります。これらのコンパウンドは、ICE でダイナミクスを使用してヘアやヘアのようなエフェクトを作成するために有効な 1 つの方法にすぎません。これらのコンパウンド(およびネストしたコンパウンド)を足がかりとして、独自のヘア ソリューションを作成することもできます。

モデル(ヘアなし)提供: Greg Punchatz 氏

ヒント:[ICE]ツールバーから[パーティクル](Particles) [モデル ライブラリ](Model Library) [ストランド](Strands) [ダイナミック ヘア](Dynamic Hair)を選択して、ヘア ストランドとアニメートされた衝突オブジェクトを持つ球のモデルをロードします。見た目をよくするため、[Hair Shading]シェーダがストランドで使用されています。

ストランド ダイナミクスをセットアップする

ストランドにダイナミクスを作成するには、2 つの基本ステップがあります。

  • ガイド ストランドを放出し、1 つのポイント クラウド上にシミュレートされたダイナミクス フレームワークを作成します。「ガイド ストランドを放出する」を参照してください。

  • 同じエミッタ上の別のポイント クラウドにフィラー ストランドを放出します。「フィラー ストランドを放出する」を参照してください。フィラー ストランドはオプションですが、多くの状況で役立ちます。

ガイド ストランドとフィラー ストランドは、ヘア システムにおいてガイド ヘアとレンダ ヘアが果たす役割と、理論的に類似しています。ガイド ヘアはスタイリングに使用されますが、レンダ ヘアはガイド ヘアから生成されてガイド ヘア間で補間され、レンダリングに使用されます(「ヘアとファーの基礎」を参照)。

フィラー ストランドは、同じエミッタ上にある別のポイント クラウドで作成されたガイド ストランドの間で補間されます。これらのフィラー ストランドはメインの(ガイド)ストランドにコンストレイントされるため、そのシェイプと動きも引き継ぎます。

ストランド ダイナミクスの動きをテストし、ストランドのシェイプを作成している場合は、作業対象のガイド ストランドを少数だけ放出します。ストランドの表示とレンダリングの準備ができたら、ガイド ストランドの数を増やして、フィラー ストランドを追加します。ガイド ヘアと異なり、ユーザがレンダリングしないように選択しない限り、ガイド ストランドはレンダリングされます。

ガイド ストランドを放出する

  1. エミッタ オブジェクトを選択します。

  2. [ICE]ツールバーから[パーティクル](Particles) [作成](Create) [ストランド](Strands) [ダイナミック ストランド](Dynamic Strands)を選択します。

    これによってポイント クラウドが作成され、[Emit Strands]および[Strand Dynamics Framework](Emit Strands and Strand Dynamics Framework)コンパウンドを使用する以下のようなICEツリーが設定されます。

    [Get Particle Emit Location]および[Set Data]([PointPosition]属性が選択された状態)ノードが、ストランドのポイント位置をパーティクル放出の位置に設定します。パーティクル エミッタがアニメートされている場合、これによってパーティクル ストランドがエミッタにくっつくようになります。

  3. [Emit Strands(ストランドの放出)]プロパティ エディタで、ストランドのプロパティを設定できます。

    ストランドに使用されているデフォルトのパーティクル シェイプを変更するには、[Emit Strands]コンパウンドを開き、その中にある[Emit from Surface]コンパウンドを編集します。

  4. エミッタ オブジェクトのウェイト マップを作成し、ガイド ストランドの[Emit Strands]プロパティ エディタでこれを[Length]ウェイト マップとして定義できます。この動作は、ヘアにおけるカット マップの動作と同じです。ウェイト マップの値によって、ストランドの長さが決まります。ヘアが段階的に短くなるように、ウェイト マップのエッジをスムーズにしてみてください。

ストランド ダイナミクスにフォースを追加する

[ダイナミック ストランド]コマンドを選択すると、ICE ツリーの[Strand Dynamics Framework]コンパウンドに[Strand Gravity Force(ストランド重力フォース)]または[Strand Drag Force(ストランド ドラッグ フォース)]ノードが自動的に追加されます。[ICE]ツールバーから[パーティクル](Particles) [フォース](Force) [ストランド](Strands) [重力](Gravity)または[ドラッグ](Drag)を選択しても、同じ処理が行われます。あるいは、これらのノードを ICE ツリーに手作業で追加することもできます。

注:これらのコマンドは[Strand Dynamics Framework]コンパウンドでのみ有効です。

これらのコンパウンドはストランド ダイナミクス専用ですが、[Strand Dynamics Framework]コンパウンドに任意のフォースを追加することはできます。詳細については、Forces(フォース)を参照してください。

衝突オブジェクトを追加する

ストランド パーティクル放出を作成したら、衝突オブジェクトをシミュレーションに追加できます。

  1. 衝突オブジェクトとするサーフェイス オブジェクトを作成します。

    複数の衝突オブジェクトを使用する場合は、それらを含むグループを作成します。

  2. 衝突オブジェクトの追加先ストランド ポイント クラウドを選択します。

  3. [ICE]ツールバーから[パーティクル](Particles) [衝突](Collisions) [ストランド](Strands) [ジオメトリの追加](Add Geometry)を選択します。

  4. シミュレーションに追加する衝突オブジェクトまたはグループを選択します。

    オブジェクトを選択すると、衝突オブジェクトの[Get Data]ノードが[Strand Dynamics Framework]コンパウンドの[Geometry]ポートに接続されます。ここでは、モンスター(エミッタ)オブジェクトが追加されました。

    注:[ジオメトリの追加]コマンドは、[Strand Dynamics Framework]コンパウンドでのみ有効です。

フィラー ストランドを放出する

フィラー ストランドは、同じエミッタを使用するガイド ストランドの間で補間されます。フィラー ストランドはメインの(ガイド)ストランドにコンストレイントされるため、そのシェイプと動きも引き継ぎます。

フィラー ストランドには、コンストレインされたガイド ストランドと同じ数のセグメント([Num Segments])がなければなりません。この数が同じでない場合、その[StrandPosition]配列が一致せず、特にストランドのサイズが考慮されなくなります。

複数のポイント クラウドをフィラー ストランドとして作成でき、それぞれに異なるシェイプ、サイズ、カラー、シェーダ セットアップを設定することができます。たとえば、さまざまなタイプの動物の毛皮や、色つきのヘアの縞などを作成できます。

  1. フィラー ストランドに使用する別のポイント クラウドを作成します。

  2. シーンに応じて、このポイント クラウドのコンストラクション スタックのモデリング領域でシミュレートされていない ICE ツリーを作成するか、(シミュレーション領域で)シミュレート ICE ツリーを作成します。

    • エミッタ オブジェクトがデフォーメーションまたは変換によってアニメート[されていない](not)場合は、シミュレートされていない ICE ツリーを作成できます。

    • エミッタ オブジェクトがデフォーメーションまたは変換によってアニメートされている場合は、シミュレート ICE ツリーを作成する必要があります。これによってフィラー ストランドの位置が全フレームで更新され、そのコンストレインされたガイド ストランドに一致するようになります。

      フィラー ストランドにシミュレート ICE ツリーを使用することによって、シミュレーションが遅くなりすぎることはありません。いずれにせよ、フィラー ストランドのスタックは、ガイド ストランドがダイナミクスによって移動するたびに再評価される必要があるためです。

      [Emit Filler Strands(フィラー ストランドの放出)]コンパウンドを編集し、2 つに分割することによって、シミュレート ICE ツリーを最適化することもできます。ICE ツリーの実際のパーティクル放出ノードをモデリング領域に配置して再生とインタラクションをスピードアップし、ICE ツリーの[Constrain to Guide Hairs]コンパウンドをシミュレーション領域に配置します。

  3. [Emit Filler Strands(フィラー ストランドの放出)]コンパウンドを取得し、その出力を[ICETree]ノードのポートに接続します。

  4. エミッタ オブジェクトの[Get Data]ノードを追加し、[Emit Filler Strands]コンパウンドの[Emitter]ポートに接続します。エミッタ オブジェクトは、ガイド ストランドに使用したものと同じである必要があります。

  5. 先に作成したガイド ストランドに[Get Data]ノードを追加し、[Emit Filler Strands]コンパウンドの[Guide Strands]ポートに接続します。

    シミュレーションを再生すると、フィラー ストランドがガイド ストランドに従って動くことを確認してください。

  6. [Emit Filler Strands]コンパウンドのプロパティ エディタで、必要に応じてフィラー ストランドを定義します。[Num Segments(セグメント数)]値は、ガイド ストランドに設定したものと同じ値を使用するようにしてください。

    • ストランドに使用されているデフォルトのパーティクル シェイプを変更するには、[Emit Filler Strands]コンパウンドを開き、その中にある[Emit from Surface]コンパウンドの属性を変更します。多くの場合、フィラー ストランドとそのガイド ストランドを一致させます。

    • ガイド ストランドに使用したものと同じウェイト マップを使用するには、[Emit Filler Strand]コンパウンドを開いて編集します。このコンパウンド内で、[Filter by Weight Map]コンパウンドを[Emit from Surface]コンパウンドに接続します。続けて、[Filter by Weight Map]コンパウンドで使用するウェイト マップを指定します。

      また、別のウェイト マップを作成して、体の特定部分に異なる長さのヘアを生やすこともできます。たとえば、顔の周りに少量のうぶ毛、背骨に沿って長いたてがみのようなヘアなどを配置できます。

    • フィラー ストランドを体から遠く離しておくには、いくつかの設定を調整します。

      • フォースからのドラッグまたは重力の量を増やします。

      • [Strand Dynamics Framework]コンパウンドの[衝突オフセット]、[剛性]、[Num Iterations(繰り返し回数)]の値を大きくします。[Num Iterations(繰り返し回数)]を大きくする場合は、十分に注意してください。すぐに再生時間が増えてしまいます。