

フラクタル炎は、 1992年にスコット・ドレイブスによって作成されたフラクタルの反復関数システムクラス[1]のメンバーです。 [2]ドレイブスのオープンソースコードは、後にAdobe After Effectsグラフィックソフトウェア[3]に移植され、 Apophysisフラクタル炎エディタに翻訳されました。[2]
フラクタルフレームは、通常の反復関数システムとは 3 つの点で異なります。
- アフィン変換に加えて非線形関数が反復されます。
- 線形またはバイナリの代わりにログ密度表示(トーンマッピングの形式)
- モノクロまたは密度ではなく、構造 (つまり、実行された再帰パス) によって色分けします。
トーン マッピングとカラーリングは、フラクタルの詳細を可能な限り多く表示するように設計されており、一般的に、より美的に美しい画像が得られます。
アルゴリズム
このアルゴリズムは、ヒストグラムを作成し、ヒストグラムをレンダリングするという 2 つのステップで構成されます。
ヒストグラムの作成

まず、ランダムに選択された点P = (Px,Py,Pc)から始めて、一連の関数を反復します。ここで、3 番目の座標は点の現在の色を示します。
- 炎の機能セット:
各反復において、 F jが選択される確率がp jである上記の関数の 1 つを選択します。次に、 F j を(Px,Py)に適用して、Pの次の反復を計算します。
それぞれの関数の形式は次のとおりです。
ここで、パラメータw kは変動 V kの重みと呼ばれます。Dravesは [4]ですべての:sが非負で合計が1になることを示唆していますが、Apophysisなどの実装ではその制限は課されません。
関数V kは定義済みの関数の集合である。いくつかの例[4]は以下の通りである。
- V 0 ( x , y ) = ( x , y ) (線形)
- V 1 ( x , y ) = (sin x ,sin y ) (正弦波)
- V 2 ( x , y ) = ( x , y )/( x 2 + y 2 ) (球面)
点の色Pcは、最後に適用された関数F jに関連付けられた色とブレンドされます。
- Pc := (Pc + (F j )色) / 2
各反復の後、 (Px,Py)に対応するポイントでヒストグラムを更新します。これは次のように行われます。
ヒストグラム[ x ][ y ][頻度] :=ヒストグラム[ x ][ y ][頻度] + 1ヒストグラム[ x ][ y ][色] := (ヒストグラム[ x ][ y ][色] + P . c ) / 2
したがって、画像の色は、画像のその部分に到達するために使用された関数を反映します。
画像のレンダリング
画像の品質を高めるには、スーパーサンプリングを使用してノイズを減らすことができます。これには、画像よりも大きなヒストグラムを作成し、各ピクセルが複数のデータ ポイントから取得できるようにすることが含まれます。たとえば、100×100 ピクセルの画像を描画するために、300×300 セルのヒストグラムを作成します。各ピクセルは、3×3 のヒストグラム バケットのグループを使用して値を計算します。
最終画像の 各ピクセル(x,y)に対して、次の計算を実行します。
頻度平均[ x ][ y ] :=ヒストグラム セルの頻度の平均( x 、y );色平均[ x ][ y ] :=ヒストグラム セルの色の平均( x 、y );
alpha [ x ][ y ] := log ( frequency_avg [ x ][ y ]) / log ( frequency_max ); //frequency_max はヒストグラム内のセルにヒットする反復の最大回数です。
final_pixel_color [ x ][ y ] := color_avg [ x ][ y ] * alpha [ x ][ y ] ^ ( 1 / gamma ); //gamma は 1 より大きい値です。
上記のアルゴリズムはガンマ補正を使用して色を明るく表示します。これは、たとえば Apophysis ソフトウェアに実装されています。
品質をさらに向上させるには、各カラー チャネルごとにガンマ補正を使用できますが、ログ関数が遅いため、計算量が非常に多くなります。
単純化されたアルゴリズムは、明るさを周波数に線形に依存させることです。
final_pixel_color [ x ][ y ] := color_avg [ x ][ y ] * frequency_avg [ x ][ y ] / frequency_max ;
しかし、これによりフラクタルの一部の細部が失われ、望ましくない結果となる。[4]
密度推定
炎のアルゴリズムはモンテカルロシミュレーションに似ており、炎の品質はシミュレーションの反復回数に直接比例します。この確率的サンプリングから生じるノイズは、画像をぼかすことで軽減でき、より短時間でより滑らかな結果を得ることができます。ただし、多くのサンプルを受け取り、ノイズがほとんどない画像の部分の解像度を低下させたくはありません。
この問題は、レンダリング時間を最小限に抑えながら画像品質を向上させる適応密度推定によって解決できます。FLAM3 は、Frank Suykens と Yves D. Willems が WSCG 2000 で発表した論文「プログレッシブ モンテ カルロ画像レンダリングの適応フィルタリング」で紹介されている方法を簡略化して使用します。その考え方は、利用可能なサンプル数に 反比例してフィルターの幅を変えるというものです。
その結果、サンプル数が少なくノイズが多い領域はぼやけて滑らかになりますが、サンプル数が多くノイズが少ない領域は影響を受けません。[5]
すべての Flame 実装が密度推定を使用するわけではありません。
参照
- Apophysis は、Microsoft Windows および Macintosh 用のオープン ソース フラクタル フレーム エディターです。
- Chaotica は、flam3、Apophysis、さらに一般化をサポートする商用フラクタル エディターです。
- Electric Sheep は、フラクタル炎の発明者によって作成された、分散コンピューティングを通じてフラクタル炎をレンダリングして表示するスクリーン セーバーです。
- フラクタル炎を生成できる、フリーソフトウェアのマルチ OS画像操作プログラム、GIMP 。
参考文献
- ^ ミッチェル・ホワイトロー (2004)。 『メタクリエーション:アートと人工生命』 MIT プレス。pp 155。
- ^ ab 「Apophysis ソフトウェアに関する情報」。2008 年 9 月 13 日時点のオリジナルよりアーカイブ。2008 年 3 月 11 日閲覧。
- ^ クリス・ゲーマン、スティーブ・ラインケ(2005年)。『 The Sharpest Point: Animation at the End of Cinema』YYZブックス、269ページ。
- ^ abc 「フラクタル フレイム アルゴリズム」(PDF)。 (22.5MB)
- ^ https://github.com/scottdraves/flam3/wiki/Density-Estimation を参照してください。
