Upload
kodai-takao
View
265
Download
0
Embed Size (px)
Citation preview
プロジェクト 3B 中間発表法政大学 情報科学部 ディジタルメディア学科
14K1020 髙尾航大
テーマ
SPH 法の GPU 実装
使用環境は Unity
SPH 法とは?
• Smoothed Particle Hydrodynamics Method
• 連続体に関する方程式を粒子単位で近似し、ラグランジュ的に解く手法の一種。
• 今回は流体の方程式に適用する。
ラグランジュ的?
オイラー (Euler) 的とラグランジュ (Lagrange) 的の違い
SPH 法における物理量
• SPH 法を用いて Navier-Stokes 方程式を解いていく。
• SPH 法における物理量の離散表現
𝜙 (𝕩 )=∑𝑗∈𝑁
𝑚 𝑗𝜙 𝑗
𝜌 𝑗𝑊 (𝕩 𝑗−𝕩 , h)
物理量の勾配・ラプラシアン
𝛻𝜙 (𝕩 )=∑𝑗∈𝑁
𝑚 𝑗𝜙 𝑗
𝜌 𝑗𝛻𝑊 (𝕩 𝑗−𝕩 ,h)
𝛻2𝜙 (𝕩 )=∑𝑗∈𝑁
𝑚 𝑗𝜙 𝑗
𝜌 𝑗𝛻2𝑊 (𝕩 𝑗−𝕩 , h)
カーネル重み関数
• 粒子間の距離で重みを決定する。
𝑊 𝑝𝑜𝑙𝑦 6 (𝑟 ,h )= 31564𝜋 h9 {(h
2−𝑟 2)3 ,0≤𝑟 ≤h0 , h𝑜𝑡 𝑒𝑟𝑤𝑖𝑠𝑒
𝛻𝑊𝑝𝑜𝑙𝑦 6 (𝑟 , h )=− 94532𝜋 h9 {(h
2−𝑟2)2𝑟 ,0≤𝑟 ≤h0 , h𝑜𝑡 𝑒𝑟𝑤𝑖𝑠𝑒
𝛻2𝑊𝑝𝑜𝑙𝑦 6 (𝑟 , h )=− 94532𝜋 h9 {3(h
2−𝑟2)3−4𝑟 2(h2−𝑟 2) ,0≤𝑟 ≤h0 , h𝑜𝑡 𝑒𝑟𝑤𝑖𝑠𝑒
物理量の例 - 密度 ρ• 物理量の式の ρ を φ と入れ替えてみると…
𝜌 (𝕩 )=∑𝑗∈𝑁
𝑚 𝑗𝜌 𝑗
𝜌 𝑗𝑊 (𝕩 𝑗− 𝕩 , h )=¿ ∑
𝑗 ∈𝑁𝑚 𝑗𝑊 (𝕩 𝑗−𝕩 , h )¿
• 密度は周辺粒子の質量と距離にだけ依存することがわかる
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 ではない為、少し工夫して変形
粒子間の圧力の平均。
圧力・密度解法のソース
NS 方程式解法のソース
GPU 実装
• UnityComputeShader を用いて SPH 計算
C# Script
Struct
Compute Shader (SPH)
Struct
Compute Buffer
Shader
Output
Dispatch
GPU LoopCP U
粒子のレンダリング
• 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 粒子のメッシュ衝突判定