トーラスのような3D表面にプロシージャルなパターンを作成する場合、Value Noiseには特有の課題があります。それは、目に見える継ぎ目(シーム)が現れることです。座標の小数部分を取るだけで簡単にタイリングできるHash Noiseとは異なり、Value Noiseは隣接する格子点の間を補間します。シームレスなラップを実現するには、あるタイルの境界にある格子点が、隣接するタイルの反対側の境界と完全に一致するようにノイズを計算する必要があります。これには、ノイズ関数に渡される前に格子座標をラッピングするための特定のロジックが必要です。

Value Noiseテクスチャに目に見える継ぎ目がある3Dトーラスモデル
シームレスではないValue Noiseパターンによって生じた継ぎ目のあるトーラス。catlikecoding.com

この画像は、トーラスのような3D表面にValue Noiseを適用する際の、目に見える継ぎ目という特有の課題を説明しています。

実装には、与えられた点に対して現在の格子座標と次の格子座標を特定する`lattice01`関数が含まれます。シームレスなタイリングを保証するために、このロジックは座標が標準的な0から1の範囲外にあるかどうかをチェックします。座標が負の場合は周波数分だけ前方にシフトさせ、周波数を超える場合は後方にシフトさせます。これにより、境界の格子ブロックがタイルの端を越えて一貫性を保つようになります。しかし、この方法には特定の制約があります。格子点がタイルの端と整列するように周波数は整数である必要があり、またタイリングがシームレスであることが保証されるのは特定の範囲内(おおよそ0–1のUV範囲の外側1ユニット程度)に限られます。

タイリングのための負の格子座標のシフトの視覚的表現
シームレスなタイリングを保証するために、負の座標を周波数分だけ前方にシフトさせるロジック。catlikecoding.com

この図は、境界の格子ブロックを整列させるために使用される座標シフトのロジックを示しています。

UV空間におけるタイリング範囲の制限の可視化
タイリングロジックが機能し続ける特定の範囲(おおよそ0–1のUV範囲の外側1ユニット)。catlikecoding.com

この画像は、実装の詳細で説明されているシームレスなタイリングロジックの空間的な制約を示しています。

タイリング周波数の制限の可視化
格子点がタイルの端と整列するように周波数を整数にする必要性。catlikecoding.com

この図は、ジオメトリ全体でシームレスなタイリングを維持するために必要な周波数の制約を説明しています。

さらに、この手法はアニメーションと周波数に関する制限を導入します。スタガード(千鳥状)アニメーションをシームレスに保つためには、ノイズに使用する周波数は偶数である必要があります。そうでない場合、一致する格子点のための時間オフセットが一致しなくなります。タイリングを壊すことなくスライディングアニメーションをサポートするために、この実装ではUVオフセットをその小数部分のみに制限しています。これにより、座標がタイリングロジックが機能する有効な範囲内に留まることが保証されます。これらの座標ラッピング技術と特定の周波数要件を組み合わせることで、開発者はトーラスのような複雑なジオメトリ上で、目に見える不連続性のない連続的な反復プロシージャルテクスチャを作成することができます。