現在、BBSに書き込みキーを設けています。「書き込みキー」欄に、「MYOMOTO」をカギカッコは抜いて、 半角、小文字で 打ち込んで書き込みをしてください。 このキーワードは時々変更されますが、その都度こちらにて報告します。
今回からGLSL物をひとりごちに貼れるようにちょっと工夫してみました。 ほとんどホームページ用のスクリプトのコピペですが、こっちにもGLSL物を簡単に貼れるようになったので 色々と楽しいことができそうです。
かつて、フラクタルブームが起こった1980年代においては、インターネットどころかパソコン自体もそんなに普及していなかったので、当時の僕は成書に頼らざるを得なかったのですが、数学的な能力の問題もありましたが解説が非常にわかりづらい本ばかりでして、中には「難解な数式を使わないで理解できる本」などという目を覆いたくなるような本や、これは著者自身もよく理解せずに本を書いているのではなかろうか……と疑いたくなった本もありました。現在では分かりやすく解説してくれているサイトが多くて本当に助かっています。
というわけでMandelbrot集合を下敷きにorbit trapとやらを使って描画してみました。1ピクセル当たり2048回の漸化式の計算を通しているため単なるWebページに張り付けるモノとしてはアホみたいに重いですから、まずは1fpsで動かしてみて、スクロールバーなどに特にひっかかりが無ければ60fpsで動かしてみてください。
使用しているトラップの種類としては点と直線だけですが画像を仕込むとNyancatなどが飛び回るような面白い表現も出来るようですね。桜の時期ですから桜の花びらでも飛ばしたかったなあ。でもプレビュー画像をGIMPで作り直すのも面倒なのでこのままでいいかな……
実は今までorbit trapという概念が良く分からなかったのですが、オービットをトラップする事である、と考えると良く分かりました。これではなんのこっちゃですからもう少し補足すると、Mandelbrot集合って
Z0 = 0, Zn+1 = Zn2 + C
という漸化式を通すじゃないですか?つまり、Z君が複素平面上をワープで旅するわけです。Z君はZ戦士なのでワープで旅するのが普通です。この旅の足跡をorbitと呼ぶわけです。
そして、trapというのは東京タワーみたいなランドマーク的なモノが複素平面上にあると思ってください。Z君はワープを繰り返して旅をしましたが、その毎回の足跡と東京タワーまでの距離をつぶさに見ることで「東京タワーに何キロの地点まで近づきましたよ」、とか、「平均で何キロの所をウロウロしましたよ」といった数値で表すことのできる情報がゲットできる訳です。別に東京タワーみたいに点で存在する物じゃなくても、東北新幹線みたいに線状のモノでもいいですし、山手線みたいに環状のモノでもいいのです。ともかくそうしたZ君の旅の傍らで存在するランドマークや、それを手がかりに数字をほじり出す事をtrapと呼ぶわけです。
数字がほじり出せればその数字をもとに適当に色を作ってピクセルに塗りたくればOKという寸法です。数字からどうやって色を作るのかというと、本当に適当なルールで作っていいです。どうやって作るの?ではなくてとりあえず自由に作るんですよ!貴方が見て良い絵になったと思ったらそれが正解です。僕がいうような事でもないですが、心地よい色使いですとかカッコいい表現ですとかそういうのを心掛けたい向きには美術館に足を運んだりするといいと思います。ショパンがバッハを愛好していたように、芸術家として大成した人々の多くは古典への敬意を欠かさなかったという事実を忘れてはなりません。油彩や彫刻を離れてコンピュータを使ったからと言っても受け手である人間の美意識には変わりが無い事は言うまでもないのです。
今回の例では、
以上の色を足しこむ(加算合成)、と、こんな感じでtrapを利用しているわけです。
ここまで書いてふと、Mandelbrot集合というのは「Z0 = 0, Zn+1 = Zn2 + C なる漸化式を通して無限大に発散しないようなCの集合」の事だったと思い出しました。orbit trapを用いて描かれているのはMandelbrot集合そのものではないので上の方ではMandelbrot集合を「下敷きに」という良く分からない書き方をしているのです。今、上の方に戻って書き直したのです。
さて、orbit trapの話は以上として、フラクタルの自己相似性(Mandelbrot集合は完全な自己相似では無いですが)のおかげでフィードバックエフェクトを掛けているようにも見えますが、そういったポストエフェクトの類は掛けてないです。追加のエフェクト無しで十分楽しめるのも面白い所です。
それにしても、こういうズームしまくる絵を作ると浮動小数演算の精度が悩みの種になりますね。計算上の工夫が必要になりますが今回はそこまではやっておりませんから、早々に精度の問題が出てしまいます。
なんだか散漫になってきたので今回はこのあたりで。次回以降もぼちぼちGLSL物を貼って、ある程度集まったらひとまとめにしたページとかも作ってみたいですね。
Hayase Taku(SANDMAN)