水の主な特性の 1 つはボリュームであり、厳密には指定したボリューム内の満たし方です。このような特性を nParticle で再現するには、個々のパーティクル間にある程度の空間が必要です。ただし、空間を空け過ぎると、もう 1 つの重要な特性である流動性を出せなくなります。したがって、液体半径のスケール(Liquid Radius Scale)アトリビュートは nParticle 間の空間を設定し、個々の nParticle が互いに押し合いながらくっつくような値に設定します。
液体半径のスケール(Liquid Radius Scale)を設定するには
nParticle がピッチャー内で積み重なり、かなり大きな容積を占めています。
液体シミュレーションを作成する場合、液体半径のスケールは、半径(Radius)や衝突の幅スケール(Collide Width Scale)といった他の nParticle アトリビュートの影響を受けることもあります。たとえば、液体半径のスケールは、nParticle オブジェクトの半径を使用して nParticle のオーバーラップの仕方を定義し、nParticle の半径の変更はすべて液体シミュレーションにおける nParticle のオーバーラップに反映されます。また、nucleus ソルバのサブステップ(Substeps)とコリジョン最大反復回数(Max Collision Iterations)を調整すると、液体半径のスケールの値で生成されるボリュームの量に影響することがあります。これらの設定を、サブステップを 10、コリジョン最大反復回数を 15 に変更し、液体シミュレーションがどのような影響を受けるかを観察してください。
このレッスンの次のセクションでは、nParticle の衝突の幅スケール(Collision Width Scale)と非圧縮性(Incompressibility)アトリビュートを調整して nParticle に流動性を追加します。
nParticle のピッチャーやグラスのパッシブ コリジョン オブジェクトとの相互作用を簡単に確認するには、ソルバ表示(Solver Display)をオンにして nParticle のコリジョン ボリュームを表示します。コリジョン ボリュームは、各 nParticle の半径からオフセットしたレンダリング不可能なサーフェスで、nucleus ソルバが nParticle オブジェクトのコリジョンと各パッシブ オブジェクトのコリジョンを計算するときに使用されます。
衝突の幅スケール(Collide Width Scale)を編集するには
通常の液体シミュレーションでは、衝突の幅スケールは nParticle オブジェクトの半径(Radius)の値の 3 分 1 に設定します。
水の nParticle が上下 2 層に分かれてピッチャーに入っています。下の層の nParticle は均一に水平に配置されていますが、上の層のパーティクル間にはたくさんの隙間があります。上の層の nParticle で液体の表面を表現しますが、パーティクル間の隙間によってサーフェスが不均一になり、液体の表面には見えません。
nParticle の非圧縮性(Incompressibility)の値を大きくして隣接するパーティクルによる圧縮を緩めます。これにより、nParticle が強制的にボリューム全体で均一に配分され、液体の水平な表面が作成されます。
このチュートリアルでは、液体シミュレーション アトリビュートは次の値にしておいてください。
レスト密度を 0.5 に設定してから次に 4.0 に設定してみてください。それぞれをシミュレーションを再生すると、この値が nParticle に対してどのように作用するかを観察できます。 粘度を 10 に設定してシミュレーションを再生し、nParticle がピッチャーからグラスに移動するのにどの程度時間がかかるかを観察します。チュートリアルを続ける前に、粘度とレスト密度がデフォルト値に設定されることを確認してください。
これらのアトリビュートの詳細については、『nDynamics』マニュアルの「 粘度(Viscosity)」と「 レスト密度(Rest Density)」を参照してください。