9月から水曜日は射影変換、木曜日は物理、金曜日は3Dと曜日によってテーマを決めて集中するようにした。月、火は数学と物理とは別テーマなので別ブログに書く。土日は平日のバッファ用としている。
このブログは、ものがある程度出来ないと書かないようにしているが、それだと記事が月に数記事しかならないので、もう少し気軽に書いていくスタンスにしていく。
木曜日なので物理をテーマとして、最近気になっているのが物理演算ライブラリです。
jsdo.itを見ていると、3Dや物理演算などのいろいろなライブラリを試して公開してくれる方がいます。
cx20 codes - jsdo.it - Share JavaScript, HTML5 and CSS
2D物理演算ライブラリで定番なのは「Box2D.js」ですが、Googleがオープンソースの2D物理エンジンLiquidFun 1.1をリリースしました。
LiquidFunは、拘束剛体シミュレーションを実行する物理エンジンのBox2Dをベースとして、それに粒子ベースの流体シミュレーションを加えたものだそうです。
このライブラリはC++で開発されており、Emscriptenを使用してLiquidFunをJavaScriptに変換しております。
Emscripten は、C/C++ から生成される LLVM ビットコードを入力にJavaScript に変換してくれるコンパイラです。参照:Emscripten の原理
変換されたJavaScriptは、最新のJavaScriptがサポートしている型付き配列を使っていたり、人間が理解するようには書かれていない(アセンブリに近い)こともあって速いわけです。今後はEmscriptenの技術に注目していくべきです。
[GDC 2013]Webブラウザで「Unreal Engine 3」がヌルヌル動く!? ゲームエンジンを5日でHTML5へ移植した驚きの技術とは
LiquidFunの次に紹介するのは、3D物理演算ライブラリ「Oimo.js」です。
Oimo.js は ActionScript 用 3D 物理演算ライブラリ「OimoPhysics」の JavaScript 版です。OimoPhysicsは、日本の方(EL-EMENT saharanさん)が作れらた国産の3D物理エンジンです。
ActionScript3.0用の3D物理エンジンを作ってみた
Three.jsやBabylon.jsといった3Dライブラリと組み合わせて使用できます。
JavaScript の 3D 物理演算ライブラリとして他にも下記あたりが有名なようです。