
Rust と WebGL で作られたセルオートマトン・シミュレーション sandspeil は時間を吸われる面白さ!
とにかく面白くて止め時がわからない
今回ご紹介するのは、ちょっと変わった WebGL 事例です。
Rust から出力した WebAssembly と WebGL を使ったプロダクトで、セルオートマトンによって実現されたシミュレーションです。
かなり細かく素材が用意されていて、それらを上手に組み合わせると、思わぬ効果が現れたりもします。
とにかく時間を吸われるので、気をつけてください……
素材ごとの特徴の違いが面白い
今回の作品には、かなりシンプルなインタフェースしか用意されていませんが、しかし慣れてしまえばあまり困らないと思います。
画面の中心にあるキャンバス上で、シミュレーションが行われます。
画面の右側にあるボタン類からは、時間の再生を制御したり、ブラシのサイズを変えたりといった操作が行えます。
以下の画像は、まず土台を「Wall」で作ってから、「sand」や「water」をばらまいたところ。
ご覧の通り、しっかりと形状を認識して物理的な動きをするようになっています。
水の動きは、実際の水とはちょっと違いますが、しかし時間が経過すれば平坦になっていきます。
とにかく素材には様々なものが用意されていて、種を意味する「seed」は、砂の地面などに蒔いてやると植物が生えてきます。
また「ice」は水にくっつけると凍らせてしまう効果があるようで、このあたりの素材ごとの相互の干渉が、このシミュレーションの醍醐味とも言えるかもしれません。
そして爽快感が最も得られると思われるのが、炎系です。
素材の中には「oil」や「gas」なんかもあるので、大気中にガスを充満させ地面にオイルをばらまいておき、そこで「fire」を着火させると大変なカオスが誕生します(爆)
このとき、背景には流体シミュレーションの如く靄というか煙のようなものが発生するようになっていて、風を発生させた場合などにも、このような演出が行われます。
WebGL はこのあたりを中心にビジュアル面では活躍しているようです。
とにかく時間を吸われるというか、ずっと遊んでしまうような非常に面白いデモとなっています。
一見、風にも炎にも強そうな壁などの素材でも、長時間火に炙られ続けたりすると若干風化したりするみたいで、そのあたりも実にリアルです。
砂と植物、さらにはそれらを消化してしまう微生物の素材など、本当に様々なタイプの素材が用意されていて、とてもおもしろいシミュレーションになっています。
ぜひチェックしてみてください。