*SPHのレイトレーシング可視化 [#p4c2ab31]

[[ParaView:http://www.paraview.org/]]を使用して、SPH(Smoothed Particle Hydrodynamics)の結果である点群を、レイトレーシング・レンダリング(OSPRay)で写実的に可視化できます。

ここでは、ダムブレークのSPHの結果をサンプルにして、レイトレーシングの可視化を行います。

※このダムブレークのシミュレーションは、[[SPlisHSPlasH:https://github.com/InteractiveComputerGraphics/SPlisHSPlasH]]のサンプルです。計算手順は、[[SPH法の可視化:https://www.rccm.co.jp/icem/rccm_fluid/posts/sph_visualization/]]をご覧ください。

** サンプルのダウンロード [#j676187e]

ダムブレークのSPHの結果を下記からダウントードし、適当な場所に解凍してください。

[[DamBreakModel.zip:https://www.dropbox.com/s/01wolgdurom7k89/DamBreakModel.zip?dl=0]]

** SPH結果の読み込みとPoint Gaussian表示 [#sa543682]

ParaViewを起動し、"Open"アイコンから、"Open File"窓で、データを解凍したフォルダに移動します。

ファイル名に連番の付いた時系列データは、"ファイル名_..vtk"のように表示され、これを読み込むと時系列データとして読み込まれます。

ここでは、

  ParticleData_Fluid_..vtk

を選択します。

  
#ref(Open_File.png,center,nowrap,70%,SPH点群の読み込み);

  

"Apply"ボタンを押し、色付けを"velocity"、表現を"Point Gaussian"として、

 |Gaussian Radius| 0.02|

に設定し、さらに時間を進めると、以下のように表示されます。

  
#ref(point_gaussian.png,center,nowrap,70%,SPH点群のPointGaussian);
  

** SPH Volume Interpolation [#d9922f95]

SPHの結果は、点群なので、一度、ボリューム(3次元の画像データ)に補間します。これには、SPH Volume Interpolatorフィルターを使用します。

  Filters > Point Interpolation > SPH Volume Interpolator

をクリックします。

"Array Selections"以下を次のように設定します。

- Density Array: density
- Mass Array: None
- Cutoff Array: None
- Spatial Step: 0.04

  

#ref(array_selections_settings.png,center,nowrap,80%,array_selections_settings);

また、"Volume Parameters"で、解析領域を囲むバウンディングボックスとその解像度を、以下のように指定します(解析領域の座標はあらかじめ調べておく必要があります)。

- Show Box: チェック外す
- Origin: -2, 0, -0.75
- Scale: 4, 3, 1.5

"Apply"ボタンを押し、表現を"Volume"にすると以下のように、ボリュームレンダリングで表示されます。

#ref(SPH_Volume_interpolator.png,center,nowrap,70%,SPH_Volume_interpolator);

** 等値ボリューム [#paadd4e1]

レイトレーシングで描画するためには、さらに、水面を表現する面形状を抽出する必要があります。このためには、等値ボリュームを抽出する"Iso Volume"フィルターを使用します。

  Filters > Alphabetical > Iso Volume

をクリックし、

- Input Scalars: Shepard Summation
- Minimum: 0.1

と設定してから、"Apply"すると、以下のように表示されます。

 

#ref(Iso_volume.png,center,nowrap,70%,Iso_volume);

** レイトレーシング・レンダリング [#y5cdf4db]

レイトレーシングに必要な、水面形状が取り出せたので、次は、レイトレーシングの設定をします。

"Pipeline Browser"で"IsoVolume1"を選択状態にし、"Ray Tracing"を以下のよう設定します。

- Material: water

#ref(material_water.png,center,nowrap,70%,material_water);

また、"Ray Traced Rendering"で"Enable Ray Tracing"にチェックを入れ、

- Back End: OSPRay pathtracer
- Samples Per Pixel: 5
- Denoise: チェック入れる

とすると、下図のように描画されます。なお、ビューアの背景色が黒などの暗い色の場合よく見えないかもしれません。
とすると、下図のように描画されます。なお、ビューアの背景色が黒などの暗い色の場合は、よく見えないかもしれません。

#ref(OSPRay.png,center,nowrap,70%,OSPRay);

  
動画にすると以下のようになります。

#ref(ray_tracing.gif,center,nowrap,80%,動画);

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS