狠狠撸

狠狠撸Share a Scribd company logo
プロジェクト3B 中間発表
法政大学 情報科学部 ディジタルメディア学科
14K1020 髙尾航大
テーマ
SPH法のGPU実装
使用環境は Unity
SPH法とは?
? Smoothed Particle Hydrodynamics Method
? 連続体に関する方程式を粒子単位で近似し、ラグランジュ的に解く
手法の一種。
? 今回は流体の方程式に適用する。
ラグランジュ的?
オイラー(Euler)的とラグランジュ(Lagrange)的の違い
SPH法における物理量
? SPH法を用いてNavier-Stokes方程式を解いていく。
? SPH法における物理量の離散表現
? ? =
? ∈ ?
??
??
??
?(?? ? ?, ?)
物理量の勾配?ラプラシアン
?? ? =
? ∈ ?
??
??
??
??(?? ? ?, ?)
?2
? ? =
? ∈ ?
??
??
??
?2
?(?? ? ?, ?)
カーネル重み関数
? 粒子間の距離で重みを決定する。
?????6 ?, ? =
315
64??9
(?2
? ?2
)3
, 0 ≤ ? ≤ ?
0, ?????????
??????6 ?, ? = ?
945
32??9
(?2
? ?2
)2
?, 0 ≤ ? ≤ ?
0, ?????????
?2 ?????6 ?, ? = ?
945
32??9
3(?2
? ?2
)3
? 4?2
(?2
? ?2
), 0 ≤ ? ≤ ?
0, ?????????
物理量の例 - 密度ρ
? 物理量の式のρをφと入れ替えてみると…
? ? =
? ∈ ?
??
??
??
? ?? ? ?, ? =
? ∈ ?
?? ? ?? ? ?, ?
? 密度は周辺粒子の質量と距離にだけ依存することがわかる
Navier-Stokes方程式
? 流体の世界の運動方程式的なもの
? ? ? = 0
??
??
+ ? ? ? ? =
?
?
?2
? ?
1
?
?? + ????
質量保存則
運動量保存則
Navier-Stokes方程式をSPH風に(1)
粒子自体が液体であることから、粒子の重さが変化しない限り
質量保存性は考慮しなくて良い。(質量一定より常に保持される)
また、移流を表す ? ? ? ? も考慮しなくて良い。
(ラグランジュ的解法だから移流はそもそも起こらない)
Navier-Stokes方程式をSPH風に(2)
??
??
+ ? ? ? ? =
?
?
?2
? ?
1
?
?? + ????
??
??
=
?
?
?2
? ?
1
?
?? + ????
考慮しないものはさよなら
Navier-Stokes方程式をSPH風に(3)
??
??
=
?
?
?2
? ?
1
?
?? + ????
?
??
??
= ??2
? ? ?? + ?????
両辺 ? 倍
Navier-Stokes方程式をSPH風に(4)
?
??
??
= ??2
? ? ?? + ?????
??
? ?
?
= ??
?? = ??2
? ? ??? + ?? ????
粘性拡散項 圧力項 この際??は決め打ちで計算する
粘性拡散項の離散化
物理量離散化式ラプラシアンのφを?に置き換えるが、
??
????
= ??2
? = ?
?
??
?? ? ??
??
?2
?????(?? ? ??)
Symmetricではない為、少し工夫して変形
「iからjに与える力」と「jからiに与える力」が異なり、
圧力項の離散化
??
????
= ?? = ?
?
??
?? + ??
2??
???????(?? ? ??)
同様にSymmetricではない為、少し工夫して変形
粒子間の圧力の平均。
圧力?密度解法のソース
狈厂方程式解法のソース
GPU実装
? UnityComputeShaderを用いてSPH計算
C# Script
Struct
Compute Shader
(SPH)
Struct
Compute Buffer
Shader
Output
Dispatch
GPULoop
CPU
粒子のレンダリング
? ComputeShader出力されたバッファをもとに粒子を描画。
? GeometryShaderを用いて常に視点を向くビルボードを作成。
-> Sphereで出力しないことにより軽量化
Position(Buffer)
Billboard
GeometryShader
Weekly CG Challenge !
? Ray Marching
? Iridescent Shader
? Marching Cubes
? Newton Method
? Fitting Line Algorithm
? Tornado
レイマーチング法
レイトレーシングの一種。
他オブジェクトとの交差表現が得意
レイの先端と空間内のオブジェクトとの最短距離分レイを進める
オブジェクトは距離関数で定義
マーチングキューブ法
ボリュームデータの境界面表現手法。
空間を格子分割して格子の各頂点の値によって面を張る。
今後の予定
?SPH法の計算最適化
?MPM法の理解と雪のシミュレーションの実装
?SPH粒子のメッシュ衝突判定

More Related Content

Smoothed Particle Hydrodinamics