On this page |
Particle Fluids タブのWhitewaterシェルフツールは、ベースとなるFLIP流体シミュレーションに基づいてSpray(飛沫)、Foam(泡沫)、Churn(泡立ち)を作成します。 このツールは、Whitewaterシミュレーションのソースとソルバをセットアップします。 Whitewaterは、流体の加速度、曲率、渦度などの基準に基づいて、ソースのFLIPから作成されます。 Whitewaterは、Spray(飛沫)、Foam(泡沫)、Bubble(泡)のような副次的効果を使って流体アニメーションのルックを引き立てます。
フォース ¶
Whiterwaterパーティクルのダイナミクスは、いくつかの仕組みによって制御されています。
-
Gravity(重力) による加速度がすべてのパーティクルに均一に適用されます。
-
デフォルトの設定では、 Buoyancy(浮力) は Gravity(重力) の反対方向にパーティクルを押し上げ、泡の表面形成の役割をします。
-
パーティクルは、大元の液体の流れのVelocityフィールドの影響を受けて移流します。
-
サーフェス上の特別なRepellant(撥水)ポイントは、近隣のWhitewaterパーティクルを押し離してFoam(泡沫)構造を離散させて、細胞パターンを生成します。
-
液体の表面張力と粘着性によって、Foam(泡沫)がその表面から離れないように“付着”させることができます。このような効果は、Depthコントロールを有効にすることで、シミュレーションすることができます。
-
Densityコントロールは、Whitewaterの分散を局所的に維持する役割をし、パーティクルが非常に密接して凝集しないようにすることができます。さらに、この仕組みによって、Whitewaterが分散し合った結果として凝集するようになります。
Whitewater Solverは、深度別にこれらのフォースを細かく制御することができます。 例えば、表面における密度は厳密に制御したいけれども、浮遊しているWhitewaterは容易に分散するようにそんなに制御しないようにしたいことがあります。 このような効果は、Densityコントロールの強度を減衰させることで表現することができます。
Whitewaterの寿命 ¶
ソルバは、新しいWhitewaterパーティクルの発生を制御し、Whitewater Sourceノードで作成したEmission(放出)ボリュームを使って、その放出量を決定します。 Limit Emission を有効にすると、現在のWhitewaterパーティクルの放出量も考慮して、過度な放出を回避します。
同様にパーティクルの老朽化処理と死亡処理もソルバで制御します。シミュレーションが進むと、Whitewaterは普段どおりに年を取ります。 しかし、パーティクルの寿命が規定されているわけではありません。 代わりに、死亡の確率がパーティクル毎に現在の状況を考慮しつつ動的に計算されます。パーティクルの死亡確率の決定は、以下の要因で考慮されています:
-
age - 古いパーティクルほど死亡しやすいです。
-
depth - Depthを可変させれば、Whitewaterの死亡確率も Aging Rates の値に応じて変わります。
-
density - Erosion(侵食)が有効な時、近隣パーティクルのWhitewater密度も考慮して死亡確率を上げます。
上級ユーザなら、deathchance
Pointアトリビュートにアクセスすることで、パーティクルの寿命をもっと細かく制御することができます。
Note
Lifespan といった他の要因は無視されます。 Lifespan はWhitewaterパーティクルの統計的平均寿命を意味します。
Repellants(撥水) ¶
Whitewater Objectには、Whitewaterパーティクルだけでなく、このシステムの撥水ポイントを保持したRepellants
ジオメトリを格納することもできます。
この撥水ポイントは、近隣のWhitewaterに対して撥水フォースを適用し、そのWhitewater構造を離散させて、より大きな細胞パターンを形成するような“剥げた”パッチを生成します。これらのフォースの計算と適用だけでなく、さらにソルバは、Foam(泡沫)パターンが液体に追従できるように撥水を移流させて、密集した領域からパーティクルを除去し、疎らな領域内にパーティクルをばら撒き直すことによって、Whitewaterが分散するように試みます。撥水ポイントを発生させた時、それらのポイントはjustborn
という名前のグループに格納されます。
以下の色々なPointアトリビュートは、主にRepellants(撥水)がWhitewaterや他のRepellants(撥水)に影響を与える方法を制御します。
action
RepellantがWhitewaterパーティクルを押し離している現在の力を制御します。
つまり、Repellantの強度(magnitude
)の乗数として動作します。
magnitude
Repellantの強度を格納します。action
が一時的な乗数であるのに対して、このアトリビュートは、永久(または長い期間)のプロパティを意味しています。
noise
Repellantの形状を制御します。0の値は完全な円で、1の値が最も“ノイズ”がのっています。
phase
同じnoise
アトリビュートのRepellantsを、このphase
の値に応じてさらに異なる形状にすることができます。
pulse
phase
アトリビュートの変化レートを格納します。phase
アトリビュートが変われば、Repellantの形状も変わります。
0の値は、その形状が静的であることを意味するのに対して、値が0から離れるほど、そのRepellantは次々と形状を進化させます。
radius
Repellantのサイズを制御します。
デフォルトでは、Repellantsは年を取らず、寿命がありません。しかし、Whitewater Solverの Life Range を有効にすると、Repellantsは発生時に寿命がランダムになり(この値はlife
Pointアトリビュートに格納されます)、さらにage
アトリビュート(これは、Repellant誕生からの経過時間です)も格納されます。この場合、age
がlife
を超えると、Repellantsが死亡します。
メモ ¶
-
Repellantプロパティの値は、Whitewater Objectノードの該当する設定を有効にすることで可視化することができます。
-
Repellantsには
crampedness
アトリビュートなるものもあります。この値は、Repellantsの密集度です。このアトリビュートは、ばら撒きをし直すことを目的にソルバで使用されています。crampedness
値の範囲は0-1です。 -
Density Threshold が無効である限り、RepellantsはWhitewaterの影響を受けません。つまり、一時的にWhitewaterの放出を無効にすることで、シミュレーション全体の進化レベルを検査することが可能です。
Whitewaterで波の水槽をアニメーションする方法 ¶
このチュートリアルでは、ビューポートとフリップブックで良い感じの波を表示する方法を説明しています。これは、波の動き方や白波が生成される箇所を確認するのに役に立ちます。
-
Dを押して、Display Optionsウィンドウを開きます。
-
Geometry タブの Display Sprites チェックボックスをオフにします。
-
Oceans シェルフタブのWave TankをクリックしてEnterを押します。
-
wavetank
ノードで、 Particle Separation の値を0.10
または0.07
に下げます。これによって、波の水槽の見た目が良くなります。 -
OBJレベルに戻り、 Oceans シェルフタブのWhitewaterツールをクリックします。プロンプトに従ってタンクを選択して、既存のネットワークにWhitewaterを追加します。
-
Whitewater Solverの Limits タブの Closed Boundaries を無効にすることで、パーティクルがシミュレーション境界で跳ね返らないようにすることができます。
Note
このパラメータは流体オブジェクトにリンクされています。まず最初に⌃ Ctrl + ⇧ Shift + でそのチャンネルを削除して、このパラメータを無効にしてください。
-
Whitewater Solverの Foam タブで、Repellantsの Feature Size Range を
0.1-0.2
に変更します。これによって、生成される細胞状のFoam(泡沫)パターン内により小さな特徴が生成されます。Note
Whitewater Objectの Repellants を有効にすることで、細胞パターンを生成するRepellantパーティクルの可視化が良くなります。
-
シーンを再生して、液体とWhitewaterのシミュレーションを実行します。