LAB
研究室
デモプログラム
【流体力学シミュレーション】 -Fluid dynamics (SPH-Method) –
流体力学とは連続体力学で流体(液体や気体)の変形や応力を扱う分野です。
水専門では「水力学」というそうです。
以下のスクリーンショットはヘキサドライブお手製の
流体シミュレーションの画像です
↓
描画に少々特殊なことをしていますのでShaderModel3.0で記述しています。
そのため、GeForce6x00シリーズ以降かRadeonX1x00シリーズ以降などのSM3.0対応グラフィック環境で実行してください。
【動作確認済環境】
CPU Intel Core2Duo 6300
CPU Intel Core2Quad 6600
GeForce6800
GeForce7300LE
GeForce8600GTS
GeForce8800
球体をリアルタイムレイトレーシングで描画生成しています。
ポリゴンで球を作るよりも丸くてツルツルです。
水しぶき・白波が立つ場所はすこし粒子が明るく光るように表示しています。
今回実装反映したのは「密度」「圧力」「粘性」のみです。
まだ入れていない要素は「表面張力」「分子間拘束」です。
そのため、軽い重圧で体積が大幅に変化してしまい、やや圧縮気体に近い動きをしてしまっています。
急作りですのでまだまだ改良の余地があります。
この現象は粒子数を増やしたときにあらわれています。
デモで比べてみてください。
【実行ファイル】
HexaFluid.zip (1.8MB)
■操作方法■
‘1’,’2′,’3′,’4′,’5’ 配置初期化(粒子数が変化します)
‘Z’ 初期化リセット
‘X’ 「密度」を表示 ON/OFF
‘C’ 「速度」を表示 ON/OFF
‘SPACE’ 「球体配置」ON/OFF
‘A’ 「球体半透明」ON/OFF
‘S’ 水槽を揺さぶる OFF/弱/強
‘↑’, ‘↓’ カメラ上下
‘←’, ‘→’ カメラ左右移動
‘PageUp’, ‘PageDown’ カメラ 接近/後退
参考書籍は
『粒子法シミュレーション―物理ベースCG入門』
ISBNコード 978-4-563-01574-9 (4-563-01574-1)
粒子法の流体力学や粒子法に着目した剛体シミュレーションの紹介など流体力学の書籍のなかでも比較的読みやすい内容です。
著者は流体・粒子法の第一人者でもあり、さきほど紹介したライブラリオクターブエンジンの開発にも携わる東京大学の越塚 誠一氏です。
この本のお陰で今ここにプログラムを公開することができました。
CFD(Computational Fluid Dynamics)
日本語では「数値流体力学」と言います。
そのなかでもSPH法と呼ばれる手法で今回は実装しました。
今回のシミュレーションで特に参考にしたのは上記の本の44ページ目の前後に載っている力積や圧力ソルバ・密度ソルバ・粘性ソルバの計算式です。
このページ前後が一番重要かも?
今回は時間積分・座標更新に前回のVelret法ではなくLeap-Frog法(蛙跳び法)を採用しています。
Leapfrog integration (Wikipedia(英語))
http://en.wikipedia.org/wiki/Leapfrog_integration
精度はverlet法に近いです。
CATEGORY
- 製品事例 (7)
- デモプログラム (18)
- プログラムTIPS (41)
- C言語 (5)
- C++ (6)
- C++cording (4)
- Ruby (8)
- VisualStudioの使い方 (3)
- 最適化Tips (5)
- ゲーム開発テクニック (2)
- その他 (7)