成果物
【Processing】格子ボルツマン法を使った流体シュミレーション
昔からやりたいと思っていた、流体シュミレーションのプログラムを書きました。レイリーテイラー不安定性に似た渦(マッシュルームのような形)、ケルビンヘルムホルツ不安定性(海の波のような形)を観察できて面白かったです。
今回は、Real Time Fluid Dynamics for Games という論文を翻訳して読んで、Coding Challenge #132:Fluid Simulation という動画を参考にしながら作成しました。
論文は2019年4月に消滅しているので、Way Back Machineで戻るか、転載サイトを探すしかないです。動画はこちらです。
Coding Challenge #132: Fluid Simulation
動画のコードをそのまま写すだけという選択肢もありましたが、あえて論文を見ながら独自に再構築していくことで、非常に多くの知識を得ることができました。この論文にはC言語のサンプルもあり、説明も丁寧で素晴らしい論文だと思いました。ぜひとも、読んでみてください。
作り方・コード
リアルタイムで表示するにはProcessingが一番だと思い、今回もProcessing Javaで実装しています。作り方は論文を見た方がわかりやすいのですが、簡単に説明すると、流体の速度、密度それぞれについて、要素の移動、拡散、追加を計算して、流体をシュミレーションするというプログラムです。
コードは、こんなにも短いものになっています。