This explanation is currently available in Japanese.
ひとことで
空間に特徴点をばらまき、各点から「最も近い特徴点までの距離」を値にするノイズです。1996 年に Steven Worley が発表しました。結果はボロノイ図と同じ区画構造を持ち、細胞・石畳・ひび割れ・うろこ・水面のコースティクスなど、境界のある模様を作るのが得意です。
ゲームでの使いどころ
- 石畳・タイル・岩肌:2 番目と 1 番目の距離の差(F2−F1)は区画の境目で 0 になるので、目地のある床をテクスチャなしで作れます。
- 溶岩や乾いた大地のひび割れ:同じ F2−F1 を溝と発光に使うと、デモのような割れ目から光が漏れる地面になります。
- 生物的な模様:細胞、皮膚、うろこ、泡、ハチの巣状のシールド。
- 水面の揺らめく光:特徴点を時間で動かした F1 は、プールの底に映るコースティクスのような模様になります。
- 破壊表現:3D のウォーリー(ボロノイ)区画は、オブジェクトを破片に割るボロノイ破砕の基本です。
しくみ
空間を格子に分け、各セルに特徴点を 1 つずつ置きます(位置はセル座標のハッシュで決める)。点 の値を求めるには、自分のセルと周囲 8 セル(3D なら 26 セル)の特徴点との距離を調べ、小さい順に
を得ます。特徴点がセル内にしかないので、近傍 3×3 だけ調べれば最近傍が必ず見つかります。
| 値 | 見た目 | 用途 |
|---|---|---|
| 点の周りがくぼむ細胞状 | 泡、細胞、コースティクス | |
| 区画の境界で 0 の網目 | 石畳、ひび割れ、うろこ | |
| 最近傍の ID | 区画ごとに一様な色 | ステンドグラス、色の違う石 |
距離の測り方を変えると印象も変わります。ユークリッド距離なら丸い区画、マンハッタン距離なら角ばった結晶状、チェビシェフ距離なら四角いタイル状になります。
実装のポイント
- 特徴点のばらつき:ハッシュで得た位置を 0.5 付近に寄せると、規則的なタイルに近づきます。デモの「特徴点のばらつき」を 0 にすると正方形の格子になります。
- アニメーション:特徴点の位置に
sin(time + phase)を足すと、区画がうごめきます。移動量がセルからはみ出ない範囲なら 3×3 の探索で正しく求まります。 - 正確な境界線:F2−F1 は境界からの厳密な距離ではありません。均一な太さの目地が必要なら、Inigo Quilez の「Voronoi edges」のように 2 パス目で境界までの距離を求めます。
つまずきやすい点
- 探索範囲が足りない:特徴点を大きく動かしたり、セルあたり複数の点を置いたりすると、3×3 の外に最近傍が出て模様が欠けます。範囲を 5×5 に広げるか、移動量を制限します。
- コスト:2D で 9 点、3D で 27 点の距離計算が必要で、パーリンノイズより重くなります。静的な模様ならテクスチャに焼き込みます。
- F2 の不連続:F2 自体は区画の配置が変わる場所で折れ目を持ちます。法線を差分で求めると境目に影のアーティファクトが出ることがあります。
デモで試すこと
- 「使い方」を F1 → 石畳 → 溶岩のひび と切り替えてください。どれも同じ特徴点(水色の点)から計算しています。
- 「特徴点のばらつき」を下げていくと、自然な石畳が規則的なタイルに変わります。
- 「特徴点を動かす」をオンにすると、区画の境界が押し合いながら変形します。セル単位で計算しているので、動かしても全体の計算量は変わりません。