メッシュを使用して Bifröst 液体をガイドする

変形平面または他の平らなメッシュを使用して、シミュレーションを 1 つまたは複数の特定の領域に制限しながら Bifröst 液体シミュレーションのサーフェスをガイドできます。これは、海に浮かぶボートのように、広大な水面をレンダリングしなければならないショットに便利です。水しぶきなどのシミュレートされたエフェクトがショットの一部でのみ必要となる場合も同様です。

ガイド付きシミュレーションの要素

A. ガイド メッシュ

ガイド メッシュは液体のサーフェスを定義します。頂点の位置のアニメーションによって、シミュレーションをガイドする速度入力が決まります。メッシュのデフォメーションをコントロールすることにより、サーフェスの波の動きを芸術的にすることができます。

ガイド メッシュに bifrostVelocity という名前のカラー セットがある場合、このカラー セットはアニメートされた頂点の位置ではなく、ガイド頂点入力として使用されます。特に、(キャッシュされたジオメトリがある場合のように)メッシュのトポロジが変更される場合は、メッシュに bifrostVelocity カラー セットが含まれている必要があります。なぜなら、頂点の位置から速度を計算するには、1 つのフレームの頂点とその次のフレームの頂点の間に対応関係がなければならないからです。シーンが Maya 内で 1 cm 、Bifröst 内で 1 m のスケールにモデリングされている場合、RGB カラー チャネルはワールド空間の XYZ 速度成分(m/s)に対応します。

最適な結果を得るには、速度に水平方向と垂直方向の両方の成分が必要です。さらに、ガイド メッシュの「波」を、自然の波の動きとそっくりに動かす必要があります。波が極端に速いか遅い、または大きすぎる場合、シミュレーションにアーティファクトが発生したり、他の予期しない結果が生じる可能性があります。

一般的なワークフローでは、メッシュを使用して液体サーフェスのシミュレートされていない領域をレンダリングしてから、シミュレートされたレンダリングとシミュレートされていないレンダリングを合成中にブレンドすることもできます。

メッシュをガイドとして使用する代わりに、低解像度のシミュレーションを高解像度のシミュレーションのガイドとして使用することができます。「低解像度のシミュレーションを使用して Bifröst 液体をガイドする」を参照してください。

B. 放出領域

放出領域は液体の放出量を定義します。この方法で放出を制限すると、メモリと計算時間を節約できます。

図に示すように独立したメッシュを使用して放出領域を定義する代わりに、コライダとして使用されている同じメッシュを使用して、これらの周りの放出領域の厚さを指定することができます。

放出領域にはアニメーションとデフォメーションを両方行うことができます。領域が移動するにつれて、今まで空白であった領域に新しいパーティクルがシードされ、領域外に飛び出たパーティクルは、設定可能な期間が経過すると消滅します。

この放出領域はガイド メッシュを超えて水平方向に広がらないようにする必要があります。

C. コライダ

液体はボートや岩などのコライダと相互作用して、水しぶき、航跡、船首がたてる波などのエフェクトを作成します。

メッシュを使用してシミュレーションをガイドするには

  1. 何も選択しないで、Bifrost > 液体を作成((Create) Liquid)を選択します。 これによりシーンに液体シミュレーションが追加されますが、エミッタが定義されていないため、パーティクルは存在しません。
  2. ガイド メッシュ、およびメインのシミュレーション コンテナ(bifrostLiquid など)またはシェイプ(liquid など)を選択してから、Bifrost > (追加) ガイド(Bifrost > (Add) Guide)を選択します。
    選択したメッシュは、メッシュ プロパティ(guideMeshProps など)を持つガイドとしてシミュレーションに接続されます。また、メイン ガイド プロパティ(bifrostGuideProperties など)で次のアトリビュートが自動的に有効になります。
    • ガイド付きシミュレーション(Guided Simulation)グループの有効化(Enable)
    • 入力(Input)サブグループのメッシュ(Mesh)
  3. コライダとして機能する 1 つまたは複数のメッシュ、およびメインのシミュレーション コンテナまたはシェイプを選択してから、Bifrost > (追加) コライダ(Bifrost > (Add) Collider)を選択します。詳細については、「Bifröst コライダを使用する」を参照してください。

    必要に応じて手順を繰り返して、コライダを追加します。

  4. 次のいずれかを実行します。
    • 1 つまたは複数のメッシュを作成して、放出領域のボリュームを定義します。メッシュがガイドの下に伸びていて、少なくともシミュレートする深度に達していること、およびガイドの上に水しぶきが上がるためのスペースがあることを確認してください。メッシュ、およびメインのシミュレーション コンテナまたはシェイプを選択してから、Bifrost > (追加) 放出領域(Bifrost > (Add) Emission Region)を選択します。メッシュを非表示にするか、レンダリング不能にします。
    • 1 つまたは複数のコライダ メッシュ、およびメインのシミュレーション コンテナまたはシェイプを選択してから、Bifrost > (追加) 放出領域(Bifrost > (Add) Emission Region)を選択します。emissionregionProps ノードの変換(Conversion)アトリビュートの厚み(Thickness)を正の値に設定して、メッシュ付近に帯状の放出領域を定義します(コライダ内ではパーティクルは放出されないため)。

    必要に応じて手順を繰り返して、放出領域を追加します。メッシュの各セットが、独立した放出領域プロパティを使用するシミュレーションに接続されます。既存のプロパティを使用して 1 つまたは複数のメッシュを接続するには、メッシュおよびプロパティ ノード(シミュレーション コンテナまたはシェイプではない)を選択してから、Bifrost > (追加) 放出領域(Bifrost > (Add) Emission Region)を選択します。

  5. 少なくとも 1 つの放出領域がある場合は、シミュレーションの先頭フレームにある放出領域内のガイド サーフェスの下に帯状の液体が表示され、必要に応じて設定を調整することができます。具体的には次のとおりです。
    • メイン ガイド プロパティの最小シミュレーション深度(Min Simulation Depth)は、ワールド空間内の液体の深度をコントロールします。モデリングしたシーンの状況やスケールに応じて調整が必要な場合があります。たとえば、ボートの航跡を作成するには、液体がハルの底部よりも下まで広がっていて、少なくとも予備的な空間があることが必要になります。長いボートや高速なボートでは、さらに大きな深度が必要になることがあります。
    • 深度のないサーフェスの水しぶきが必要な場合は、最小シミュレーション深度(Min Simulation Depth)を 0.0 に設定し、サーフェス レイヤ(Surface Layer)を使用してサーフェスの上面にある液体の薄い帯域の高さをコントロールできます。また、両方のアトリビュートにゼロ以外の値を使用して、ガイド メッシュの上および下に液体を広げることもできます。
    • ガイド メッシュ プロパティのガイドとブレンド(Blend with Guide)を使用して、放出領域の中心にあるシミュレートされた速度から、領域の境界にある入力ガイド速度へのブレンドをコントロールします。これはシミュレーションからガイド メッシュへのスムーズな遷移を実現するのに役立ちます。
    • 長いパーティクルが放出領域から離れた後の存続期間を秒数でコントロールするには、放出領域プロパティの放出(Emission)アトリビュートで消滅時間(Death Age)を設定します。
    • 一般的に最良の結果を得るには、すべてのパーティクル密度の設定が同じであることを確認します。これには、グローバル ガイド プロパティのパーティクルの再シード(Particle Reseed)グループ内のパーティクル密度(Particle Density)、および液体プロパティの放出(Emission)グループ内の内部パーティクル密度(Particle Density)サーフェス パーティクル密度(Surface Particle Density)が含まれます。

    詳細については、「Bifröst guideProperties アトリビュート」および「EmissionRegionProps アトリビュート」を参照してください。

  6. 必要に応じて、巻き戻して設定をさらに調整します(「Bifrost のガイド付きシミュレーションを調整する」を参照)。最初に低解像度を使用し(高いマスター ボクセル サイズ(Master Voxel Size))、それが正常に動作したら、解像度を上げます。