mandelbulbやmandelboxをご存知でしょうか?これらのフラクタルはDistance Estimation という手法を用いて描画されることが多いです。この手法を用いることで、複雑なフラクタル形状を高速で綺麗に描画することができます。
最近この手法を勉強していました。クライン群に関しては以下の二つのようなものを描画することができます。といっても僕がこれらのDistance Estimationのアルゴリズムを考案したわけではないので、まだまだなのですが…これらに関してはそのうち文章にまとめたいと思います。
3D kissing-Schottky orbit spheres
kissing-Schottky limit set
さて、これらを理解するために、ネット上には多くのテキストが存在しますが、僕個人がこの順番だったら楽だったろうなぁというものをまとめておきます。僕もまだなんとなく理解できた、程度ですし、色々な文章を何度も読み返す必要はあると思います。
(独学とは再帰なり)
素数夜曲 by 吉田 武
日々精進あるのみですね。
GLSL、レイマーチングについて学ぶ
wgld.org | GLSL |
glslの基本とレイマーチングの基本が学べます。
http://www.demoscene.jp/?p=811
Distance functionについての項目でレイマーチングについてとてもわかりやすい図が載っているので一度目を通すべきです。
フラクタルの描画について学ぶ
Distance Estimated 3D Fractals (Part I) | Syntopia
Syntopiaでは8回にわたってDistance estimationを用いたフラクタル描画に関しての連載があります。非常に参考になるのですが、ところどころ展開が急で面食らうと思います。とりあえずpart1~3を読むのが良いと思います。
レイマーチング等の基本とカラーリングの話、そしてKaleidoscopic IFSについての解説があります。Kaleidoscopic IFSはある面での反転等を行うことによって構築するフラクタル図形です。
distance estimationについて
distance estimation
平面において、ある数式で表される図形から、ある点までの距離を測るにはどうすれば良いのか解説しています。
の関係式が重要です。
distance rendering for fractals
リンク先が変わったようです↓
distance to fractals
マンデルブロ集合をdistance estimationを用いた方法で描画する解説です。
mandelbulb
ここまで来たらSyntopiaのpart4から読んでいくと良いと思います。僕は唐突にヤコビアンがでてきてびっくりしましたが、を求めるためだと考えればなんとなく納得できます。ここら辺は色々なやり方や、論文があるため、一筋縄ではいかないと思います。あまり深入りしない方が良いのではないでしょうか…
Distance Estimated 3D Fractals (IV): The Holy Grail | Syntopia
Syntopiaでも紹介されていますが、そのほかは以下の二つ辺りを読むのがよいかと。mandelbulbまでがなんとなくわかれば残りのSyntopiaの他のパートも比較的楽に読めます。
mandelbulb
Mandelbulb: The Unravelling of the Real 3D Mandelbrot Fractal
その他
What is a Mandelbox - Mandelbox
mandelboxを考案した人のページ。一部表示されていない動画はこれです
2d Mandelbox fold from Tom Lowe on Vimeo
GLSL Sandbox Gallery Shadertoy BETA
これらのサイトで組んでみたり、shadertoyで既存のコードを検索し、値をいじることで理解が深まる場合もあります。
Fragmentarium
Syntopiaの方がつくったGLSLベースのレイトレーサで、シェーダのコードを含むexampleが豊富です。漁ってみればものすごく参考になるのではないでしょうか