This explanation is currently available in Japanese.
ひとことで
fBm の各層で、ノイズの値を絶対値にしてから足し合わせる手法です。ノイズが 0 を横切る場所が鋭い谷(折り目)になるため、滑らかな雲とは違う、筋の入った炎・ガス・大理石・雷雲のような模様が得られます。Ken Perlin の 1985 年の論文で、大理石や炎の表現として紹介されました。
ゲームでの使いどころ
- 炎・太陽・プラズマ:デモの太陽のように、明るい筋が走る高温の表面。
- もくもくした煙や積乱雲:丸いこぶが盛り上がる「ビロウ(billowy)」な形になります。
- エネルギーシールドや魔法のオーラ:スクロールさせると電流が走るような質感に。
- 大理石:
sin(x + turbulence(p) * k)で縞を乱すのが古典的な作り方です。
しくみ
通常の fBm が符号付きのノイズをそのまま足すのに対し、タービュランスは各層の絶対値を足します。
は 0 付近で V 字に折れ曲がるため、微分が不連続な線(折り目)が生まれます。各オクターブの折り目が重なり合うことで、太い筋から細い筋までが入り組んだ模様になります。値は常に 0 以上で、折り目の部分が最小値 0 になります。
- 値をそのまま明るさにすると、折り目が暗い筋になります(煙の割れ目)。
- にすると、折り目が明るい筋になります(炎や電流)。
この「0 を横切る線を強調する」という発想をさらに推し進め、尾根を鋭く尖らせたのがリッジノイズです。
実装のポイント
- ランプ(グラデーション)で色付け:値を直接 RGB にせず、黒→赤→橙→黄白のような 1 次元の色テーブルに通すと、一気に炎らしくなります。
- 層ごとに異なる速度で流す:細かい層ほど速く動かすと、大きな対流の上を細かな炎が走るような動きになります。
- HDR とブルーム:明るい筋に 1.0 を超える値を与えてブルームをかけると、発光体としての説得力が増します。
つまずきやすい点
- 折り目のエイリアス:絶対値の折り目は高周波成分を含むので、遠景や縮小表示でちらつきます。画面上のサイズに応じてオクターブを減らします。
- 法線がつぶれる:高さとして使うと折り目で法線が急変します。凹凸表現に使う場合は、折り目を少し丸める
sqrt(n*n + ε)のような近似が有効です。 - 平均値が上がる:絶対値を取ると平均が 0 から正の値にずれます。fBm と差し替える場合は明るさの基準を調整します。
デモで試すこと
- 「重ね方」を fBm とタービュランスで切り替え、太陽の表面を比べてください。タービュランスでは明るい筋が網目状に走ります。
- 手前のグラフの青線は第 1 オクターブの 、黄色は重ねた値です。タービュランスでは、青線が 0 を横切る位置に黄色の鋭い谷ができています。
- 「うねりの速さ」を上げると、層ごとに異なる速度で流れ、対流する恒星のような動きになります。