ブラックホールによる重力レンズを再現する一風変わった WebGL 実装! black-hole.js
チュートリアルがブログで公開中!
今回ご紹介するのは、GLSL を利用して高速に処理することで実現した、ブラックホールの重力レンズを再現する WebGL 実装です。
作者の方のブログでは、そのチュートリアルや実装に至るまでの苦労話などが掲載されていて非常に興味深い内容になっています。
あまり派手さはありませんが、とても面白い内容ですのでご紹介しようと思います。
厳密に解く重力レンズの仕組み
Github でのソースコードの公開、そして実装秘話と black-hole.js のチュートリアルなど、貴重なソースの多い今回のデモ。
ページには実際に WebGL で動作するデモが埋め込まれており、どのような見た目になるのかはリアルタイムにチェックできるようになっています。
マウスカーソルの位置を検知して、その部分に重力レンズを再現した歪みを発生させる仕組みです。
最初これを見た時は、それっぽく見せているだけなのかなと一見して思ったのですが、このページをよくよく読んでみると、かなり厳密に計算して歪みを起こしているようですね。
数式や図解も添えられており、WebGL 実装としてだけでなく、科学や物理という意味でも興味深い内容になっています。ここまで詳しく解説しているブログ記事は珍しいので、とても参考になります。
さらに興味深いのが、このページ内に書かれている実装秘話的なお話。
作者の方はどうやら、最初は WebGL を利用せずに実装を試みたりもしたようです。最終的に GLSL を利用して実装が完了するまでの一連の流れは、全編英語ですが読んでみる価値はあるのではないでしょうか。私は英語けして得意じゃないんですけどね……
black-hole.js は、これを利用してド派手なデモが作れるとか、そういう種類のものではありません。しかしその実装背景も含めて、非常に面白いなと感じました。
興味のある方は、ぜひチェックしてみてください。