ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】流体シュミレーションプログラムを作った

成果物


【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で実装しています。作り方は論文を見た方がわかりやすいのですが、簡単に説明すると、流体の速度、密度それぞれについて、要素の移動、拡散、追加を計算して、流体をシュミレーションするというプログラムです。

コードは、こんなにも短いものになっています。