この例では、波と海岸線の液体シミュレーションを作成することにより、Bifröst の基本的なコンセプトについて説明します。次の方法を示します。
- Bifröst 液体およびエミッタ オブジェクトを作成する
- コライダとしてポリゴン オブジェクトを追加する
- Bifröst 液体およびエミッタ アトリビュートを編集します。
- シミュレーションの解像度と精度を調整する
- Bifröst メッシュを生成してレンダーする
開始する前に
開始する前に、次のことを行います。
- ビューポートで、レンダラ > ビューポート 2.0(Renderer > Viewport 2.0)が選択されていることを確認します。
- 設定 > タイム スライダ(Settings > Time Slider)プリファレンスで、再生スピード(Playback speed)がすべてのフレームを再生(Play every frame)に設定されていることを確認します。
- Bifrost > Bifrost オプション(Bifrost > Bifrost Options)を選択し、次のことを行います。
- 終了フレームを 300 ~ 400 の間に設定します。
これらのビデオのキャプションを使用できます。キャプションを有効または無効にするには、ビデオ プレイヤーの右下にある CC ボタンをクリックします。3 言語のキャプションを利用できます。
シミュレーションを作成する
波と海岸のシミュレーションを作成するには、シーンで次のポリゴン オブジェクトを使用します。
- shorelineCollision: 液体の内容を保持します。
- waterEmission: シミュレーションの液体エミッタ オブジェクトとして機能します。
- wavePaddle: Bifrost 液体の波のモーションを生成します。
- boulderCollideMesh: 液体パーティクルと衝突します。
注: 波と海岸線の液体シミュレーションの完成例を見るには、次の手順を実行してシーンに Bifröst サンプル ファイルを読み込みます。
- Bifrost > Bifrost サンプルを取得(Bifrost > Get Bifrost Example)を選択します。
- バイザー(Visor)ウィンドウで、Bifrost プリセット(Bifrost Preset)タブをクリックします。
- wavePaddleShoreline.ma を クリックし、表示されるメニューから読み込み(Import)を選択します。
シミュレーションを作成するには
- 液体を放出するメッシュ オブジェクトを選択し、Bifrost > 液体を作成(Bifrost > Create Liquid)を選択します。
この例では、waterEmission メッシュを選択します。
- これにより、シーンに次の 3 つのオブジェクトが追加されます。
この例では、液体は shorelineCollision メッシュに含まれているため、衝突オブジェクトである必要があります。
- bifrostLiquid とメッシュを選択し、Bifrost > コライダの追加(Bifrost > Add Collider)を選択します。
- シミュレーションをプレビューします。
タイム スライダ上の緑色と黄色のフレームに注目してください。これらのフレームは、スクラッチ キャッシュのステータスを示します。シミュレーションを再生すると、対応するフレームの計算がキューイングされ、黄色で表示されます。フレームが計算されてキャッシュで使用可能になると、それらは緑で表示され、それらを使用してすばやく再生またはスクラブすることができます。
また、放出されたパーティクルが衝突メッシュの下部サーフェスに沿って流れ、シーンから出て行くことにも注目してください。これらは期待どおりにメッシュのボリュームに蓄積されません。
既定では、Bifröst はコライダをソリッド オブジェクトとしてボクセル化するため、次のような薄いまたは開いたシェイプを使用したときにパーティクルが通り抜けることができる穴になる場合があります。Bifröst によるコライダのボクセル化方法を変更するには、その Collision アトリビュートを編集する必要があります。
- shorelineCollision メッシュを選択し、アトリビュート エディタ(Attribute Editor)でそのシェイプ ノード タブをクリックします。
- 次に、Bifrost セクションにスクロールし、衝突(Collision)セクションを展開します。
- 変換(Conversion)で、次のように設定します。
- 厚み(Thickness)を 2.0 にします。
- モード(Mode)をシェル(Shell)に設定します。
- アウトライナ(Outliner)で、bifrostLiquid を選択してシミュレーションを再生します。
パーティクルが shorelineCollision メッシュにたまるようになりました。シェル(Shell)モードで、メッシュ サーフェスの周囲のボリュームが設定された厚み(Thickness)値にボクセル化されます。2.0 の値は、パーティクルの通り抜けを防止するのに十分な厚みです。
波のモーションを生成する
shorelineCollision オブジェクトに放出されたパーティクルが集まりましたが、パーティクルはほとんど動いていません。シンプルな重力、アクセラレータ、または移動するコライダなどのさまざまな方法でモーションを生成することができます。この例では、アニメートされたメッシュ wavePaddle が衝突オブジェクトとしてシミュレーションに追加されています。この往復運動により液体に波が生成されます。
- bifrostLiquid と wavePaddle メッシュを選択し、Bifrost > コライダの追加(Bifrost > Add Collider)を選択します。
- シミュレーションをプレビューします。
アニメートされたメッシュが液体と相互作用し、波のようなモーションをベースン全体に生成します。
- 大きな岩オブジェクトをコライダとして追加することができます。
放出アトリビュートを変更する
エミッタを作成すると、既定では連続放出(Continuous Emission)がオンになっています。
エミッタを川や水の出ている蛇口などのソースとして使用する場合や、ホースのノズルから出る液体などの噴出する液体が必要な場合は、連続放出(Continuous Emission)をオンのままにします。
プールを満たす場合や一滴を放出する場合は、連続放出(Continuous Emission)をオフにします。液体パーティクルがシミュレーションの最初のフレームでのみ放出されます。「Bifrost エミッタを扱う」を参照してください。
この例では、連続放出(Continuous Emission)をオフにします。
- waterEmission メッシュ オブジェクトを選択します。
- シェイプ ノードのアトリビュート エディタ(Attribute Editor)で、Bifrost セクションまでスクロールします。
- 液体放出(Liquid Emission)を展開し、連続放出(Continuous Emission)をオフにします。
- シミュレーションをプレビューします。
一部のパーティクルが海岸線のメッシュから際限なく流れ出ていることに注目してください。Maya はこれらのパーティクルもシミュレーションの計算に含め続けるため、Maya がボクセル化する必要のある領域は非常に大きくなります。これにより、シミュレーションのパフォーマンスが低下します。
シーンに Killplane を追加すると、これらのパーティクルをシミュレーションから除去することができます。
- bifrostLiquid を選択します。
- Bifrost > Killplane の追加(Bifrost > Add Killplane)を選択します。
bifrostKillplane オブジェクトがワールド座標に作成され、自動的に選択されます。
- shorelineCollision オブジェクトの下の位置に bifrostKillplane オブジェクトを移動します。
- シミュレーションをプレビューします。
外れて落ちたパーティクルは、シミュレーションから除去されます。
診断カラーを表示する
診断または他の目的のためにビューポート内でカラー ランプとして特定のチャネルを表示できます。このセクションでは、パーティクルの速度値を使用してカラー チャネルのリマップ(Color Channel Remap)ランプを設定します。
カラー ランプを設定する前に、そのサーフェス上のパーティクルの密度を増やして液体にディテールを追加します。
- bifrostLiquid を選択し、bifrostLiquidContainer のアトリビュート エディタ(Attribute Editor)で、放出(Emission)セクションにスクロールして展開してから、パーティクル配分(Particle Distribution)を展開します。
- サーフェス パーティクル密度(Surface Particle Density)を 3 に設定します。
この値を大きくすると、ボリューム全体のパーティクル数を増やすことなく、ディテールの必要な液体のサーフェス上のパーティクル数を増やすことができます。
- アトリビュート エディタ(Attribute Editor)で、bifrostShape タブをクリックします。
- パーティクル表示(Particle Display)セクションで、カラー チャネル(Color Channel)が速度(Velocity)に設定されていることを確認します。
- シミュレーションを再生またはスクラブします。
パーティクルのほとんどは青色であり、速度が現在のカラー チャネルの最大値(Color Channel Max)の値である 20 よりも小さいことを意味しています。パーティクル速度の範囲を表示するには、より高い速度のパーティクルが白で表示されるようにこの値をリセットします。
- 値ランプの右コントロールを左のほぼ 0 までドラッグします。
選択した位置(Selected Position)の値が 0.2 で良い結果が生成されます。
この値を 1.0 に満たない値として使用してカラー最大チャネル(Color Max Channel)を設定することができます(例: 0.2 x 20.0 = 4.0)。
- カラー最大チャネル(Color Max Channel)を 4.0 に設定します。
- 値ランプの右コントロールを元の設定にリセットします。選択した位置(Selected Position)が 1、選択した値(Selected Value)が 1.0 です。
- シミュレーションをプレビューします。
ヒント: シェイプのスライスをプレビューするために、Bifrost コントロール(Bifrost Controls)の下の Clipping アトリビュートを使用することができます。
シミュレーションの解像度と精度を上げる
低解像度バージョンのシミュレーションに満足したら、解像度と精度を高くしてディテールを強化します。このセクションでは、マスター ボクセル サイズ(Master Voxel Size)と転送ステップの順応性(Transport Step Adaptivity)を増やします。
- bifrostLiquid を選択し、bifrostLiquidContainer アトリビュート エディタ(Attribute Editor)でマスター ボクセル サイズ(Master Voxel Size)を 0.2 に設定します
より小さい値を使用するとディテールが細かくなりますが、計算が遅くなります。
- 放出(Emission)セクションにスクロールします。
- 転送ステップの順応性(Transport Step Adaptivity)を 0.95 に設定します。
この値を大きくすると、シミュレーションの速度は遅くなりますが、より正確な結果が得られます。具体的には、値を大きくするとボリュームの損失、パーティクルの密集、自然爆発、コライダを通した漏れなどの転送エラーによる問題を減らすことができます。
- シミュレーションをプレビューします。
重力の影響を小さくすることで、特に陸地と水との境界の浅い領域で、液体のモーションを大きくすることができます。
- 流体ソルバのアトリビュート(Liquid Solver Attributes)で、Gravity Magnitude を 8.0 に設定します
- シミュレーションをプレビューします。
重力を小さくするとパーティクルの流れが速くなり、より大きな波が作成されます。
Bifröst ユーザ キャッシュを生成する
シミュレーションが完了したら、メッシュ処理とレンダリングのために再計算する必要がないようにユーザ キャッシュを生成することができます。
- を選択し、バックグラウンド処理を有効化(Enable Background Processing)とスクラッチ キャッシングを有効化(Enable Scratch Caching)をオフにします。
これにより、不要な計算とメモリ要件が減ります。
- bifrostLiquid または bifrost オブジェクトを選択します。
- を選択します。
- シミュレーションの開始フレームで始まるキャッシュ タイム レンジ(Cache time range)を選択します。この例では、タイム スライダ(Time Slider)を選択します。
- 作成(Create)または適用(Apply)をクリックします。
完了すると、bifrostLiquidContainer ノードの Caching アトリビュートがキャッシュ ファイルから読み込まれるように自動的に設定されます。
シェーダ アトリビュートを調整する
bifrostLiquidMaterial シェーダは液体から生成したメッシュをレンダーすることや、液体ボクセルの等値面を直接レンダーすることができます。この例では、シェーダ アトリビュートを調整するときにテスト レンダーのボクセルを使用します。
- を選択し、使用するレンダラ(Render Using)が mental ray に設定されていることを確認します。
- シミュレーションの最後に移動し、現在のフレームをレンダーします。
液体がほぼ完全に透明であることが分かります。スぺキュラ ハイライトを除き、泡やその他の興味深いディテールはありません。
- アトリビュート エディタで bifrostLiquidMaterial 設定を確認します。泡リマップ(Foam Remap)は既に有効になっていますが、入力最小値(Input Min)および入力最大値(Input Max)設定がこのシーンには高すぎる可能性があります。
- 泡はシーンの渦度値に強く影響を受けるため、bifrostShape ノードのパーティクル表示(Particle Display) カラー チャネル(Color Channel)を渦度(vorticity)に設定します。
一部のパーティクルが白くなっていますが、これは渦度が設定されたカラー チャネルの最大値(Color Channel Max)以上であることを意味します。
- カラー チャネルの最大値(Color Channel Max)を 100 に設定します。少数のパーティクルの渦度が非常に高いことに注目してください。
- 値ランプの右側のコントロールを左側にドラッグし、0 近くにします。ほとんどのパーティクルは青いままで、渦度が非常に低いことが示されています。
カラー ランプのリマップ(Color Ramp Remap)設定の調整を続ける場合は、シーン内の値の範囲と分布について詳しく把握することができます。
- bifrostLiquidMaterial Foam Remap アトリビュートで、入力最小値(Input Min)を 2、入力最大値(Input Max)を 5 に設定します。
- 現在のフレームを再度レンダーします。
これで、泡の効果を確認することができます。同じ方法を使用して、シェーダのその他のランプを調整できます。
メッシュとレンダー
最終出力では、Bifrost Meshing アトリビュートは液体のサーフェスに対して追加のコントロールを提供するため、ボクセルの等値面の代わりにメッシュをレンダーします。
- メッシュに加えて bifrost オブジェクトがレンダリングされないようにするには、bifrost オブジェクトを非表示にします。
- bifrostShape アトリビュートで、Bifrost メッシュ(Bifrost Meshing)セクションの有効化(Enable)をアクティブにします。
水との境目の上部付近にいくつかのブロッブがある場合がありますが、これらはコライダの下であり、レンダー時には表示されません。
- メッシュをより詳細にするには、解像度係数(Resolution Factor)を 2 に増やします。
- を選択します。
- オプション(Options)タブで、移動(Translation)グループの頂点カラーを書き出し(Export Vertex Colors)をアクティブにします。これにより、mental ray がボクセルからサンプリングする代わりに、速度と渦度用のメッシュのカラー セットを使用するようになります。
- 機能(Features)タブで、モーション ブラー(Motion Blur)をフル(Full)に設定します。
- シーンをレンダーします。