レッスン 2: 液体シミュレーション(Liquid Simulation)アトリビュートを調整する
 
 
 

水の主な特性の 1 つはボリュームであり、厳密には指定したボリューム内の満たし方です。このような特性を nParticle で再現するには、個々のパーティクル間にある程度の空間が必要です。ただし、空間を空け過ぎると、もう 1 つの重要な特性である流動性を出せなくなります。したがって、液体半径のスケール(Liquid Radius Scale)アトリビュートは nParticle 間の空間を設定し、個々の nParticle が互いに押し合いながらくっつくような値に設定します。

レッスンのセットアップ

説明どおりにレッスンを進めるために、レッスンを開始する前に次の手順を実行します。

  1. Liquid_Simulation_2.mb という名前のシーン ファイルを開きます。

    このファイルは、Maya プロジェクトとして設定した GettingStarted ディレクトリ内にあります。

    Getting Started/nParticles/Liquid_Simulation_2.mb

    このシーンには、作成済みのテクスチャ マッピングされたモデルが含まれています。ここに用意されている机、ピッチャー、グラスはすべてポリゴン メッシュです。

液体のボリュームを調整する

液体半径のスケール(Liquid Radius Scale)を設定するには

  1. アイトライナ(Outliner)nParticle_Water を選択します。
  2. アトリビュート エディタ(Attribute Editor)で、nParticle_WaterShape タブをクリックします。
  3. 液体シミュレーション セクションで、液体シミュレーションの有効化(Enable Liquid Simulation)をオンにします。
  4. 液体半径のスケールを 2.0 に設定します。

  5. シミュレーションを再生します。

    nParticle がピッチャー内で積み重なり、かなり大きな容積を占めています。

  6. この液体シミュレーションでは、液体の nParticle がピッチャーの 3 分の 1 を満たすようにします。nucleus ソルバのサブステップ(Substeps)コリジョン最大反復回数(Max Collision Iterations)を調整して、液体半径のスケール値で生成されるボリュームを変更することもできます。サブステップコリジョン最大反復回数を調整するには、次の手順を実行します。
    • アトリビュート エディタ(Attribute Editor)で、nucleus1 タブを選択します。
    • ソルバ アトリビュート(Solver Attribute)設定で、サブステップ(Substeps)を 7 に設定します。
    • コリジョン最大反復回数(Max Collision Iterations)を 10 に設定します。

液体半径のスケールについて

液体シミュレーションを作成する場合、液体半径のスケールは、半径(Radius)衝突の幅スケール(Collide Width Scale)といった他の nParticle アトリビュートの影響を受けることもあります。たとえば、液体半径のスケールは、nParticle オブジェクトの半径を使用して nParticle のオーバーラップの仕方を定義し、nParticle の半径の変更はすべて液体シミュレーションにおける nParticle のオーバーラップに反映されます。また、nucleus ソルバのサブステップ(Substeps)コリジョン最大反復回数(Max Collision Iterations)を調整すると、液体半径のスケールの値で生成されるボリュームの量に影響することがあります。これらの設定を、サブステップを 10、コリジョン最大反復回数を 15 に変更し、液体シミュレーションがどのような影響を受けるかを観察してください。

このレッスンの次のセクションでは、nParticle の衝突の幅スケール(Collision Width Scale)非圧縮性(Incompressibility)アトリビュートを調整して nParticle に流動性を追加します。

nParticle に流動性を追加する

nParticle のピッチャーやグラスのパッシブ コリジョン オブジェクトとの相互作用を簡単に確認するには、ソルバ表示(Solver Display)をオンにして nParticle のコリジョン ボリュームを表示します。コリジョン ボリュームは、各 nParticle の半径からオフセットしたレンダリング不可能なサーフェスで、nucleus ソルバが nParticle オブジェクトのコリジョンと各パッシブ オブジェクトのコリジョンを計算するときに使用されます。

衝突の幅スケール(Collide Width Scale)を編集するには

  1. アウトライナ(Outliner)nParticle_Water を選択します。
  2. アトリビュート エディタ(Attribute Editor)で、nParticle_WaterShape タブをクリックします。
  3. コリジョン(Collisions)セクションで、ソルバ表示(Solver Display)プルダウン リストからコリジョンの厚み(Collision Thickness)を選択します。
  4. 衝突の幅スケール(Collide Width Scale)を 0.6 に設定します。

    通常の液体シミュレーションでは、衝突の幅スケールは nParticle オブジェクトの半径(Radius)の値の 3 分 1 に設定します。

  5. シミュレーションを再生し、フレーム 40 で停止します。

    水の nParticle が上下 2 層に分かれてピッチャーに入っています。下の層の nParticle は均一に水平に配置されていますが、上の層のパーティクル間にはたくさんの隙間があります。上の層の nParticle で液体の表面を表現しますが、パーティクル間の隙間によってサーフェスが不均一になり、液体の表面には見えません。

nParticle の非圧縮性(Incompressibility)の値を大きくして隣接するパーティクルによる圧縮を緩めます。これにより、nParticle が強制的にボリューム全体で均一に配分され、液体の水平な表面が作成されます。

非圧縮性を設定するには

  1. アウトライナ(Outliner)nParticle_Water を選択します。
  2. アトリビュート エディタ(Attribute Editor)で、nParticle_WaterShape タブをクリックします。
  3. 液体シミュレーション(Liquid Simulation)セクションで非圧縮性を 20 に設定します。

液体シミュレーション アトリビュートについて

このチュートリアルでは、液体シミュレーション アトリビュートは次の値にしておいてください。

レスト密度を 0.5 に設定してから次に 4.0 に設定してみてください。それぞれをシミュレーションを再生すると、この値が nParticle に対してどのように作用するかを観察できます。 粘度を 10 に設定してシミュレーションを再生し、nParticle がピッチャーからグラスに移動するのにどの程度時間がかかるかを観察します。チュートリアルを続ける前に、粘度レスト密度がデフォルト値に設定されることを確認してください。

これらのアトリビュートの詳細については、『nDynamics』マニュアルの「 粘度(Viscosity)」と「 レスト密度(Rest Density)」を参照してください。

レッスンを終えて

このレッスンでは、液体シミュレーション(Liquid Simulation)アトリビュートを調整して液体の nParticle のボリュームと流動性に関する特性を設定する方法を学習しました。