ゲーム用リアルタイム流体力学をJavaScript&Canvasに移植してみた
最近ネタに走ってばかりいたので、プログラマらしいことをしようと思って、Joe Stam氏がGDC2003で発表した
Real-Time Fluid Dynamics for Gamesの、CとOpenGLで書かれたデモを移植してみました。
- まずこちらのN=8で具合を見てください。
- いけそうであればN=16を試してみてください。煙に見えますか? マウスクリックの反応も悪いので、クリックはぐ〜っと長めに。
- N=64です。死ぬほど重いので覚悟してください。かなり煙っぽく見えます。
C&OpenGLのコードをJavaScript&Canvasに移植するのはとても簡単でした。構文がそっくりです。
ただ、OpenGLのGL_QUADSのグラデーションをうまく表現できませんでした。本物はもっときれいです(そしてとても高速です)。
今のところCanvas要素の能力は、90年代前半のPCか、スーパーファミコン並でしょうか。
流体シミュレーションには、大別して、格子法とパーティクル法があるそうです。今回のは格子法です。
この解説を読んだのがきっかけでした。
Cowboy Programming » Practical Fluid Mechanics