在 3D 表面(如圆环面)上创建过程化图案时,Value Noise 会面临一个特定挑战:可见的接缝。与可以通过取坐标小数部分来简单平铺的 Hash Noise 不同,Value Noise 在相邻晶格点之间进行混合。为了实现无缝循环,必须计算噪声,使得一个平铺块边界上的晶格点与相邻平铺块的对侧完美匹配。这需要特定的逻辑,在将坐标传递到噪声函数之前对晶格坐标进行换算。

一个显示 Value Noise 纹理可见接缝的 3D 圆环模型
由于非无缝 Value Noise 图案导致的带有可见接缝的圆环。catlikecoding.com

这张图片展示了将 Value Noise 应用到圆环面等 3D 表面时出现的可见接缝挑战。

该实现包含一个 `lattice01` 函数,用于识别给定点的当前和下一个晶格坐标。为了确保无缝平铺,该逻辑会检查坐标是否超出标准的 0 到 1 范围。如果坐标为负数,它将向前偏移频率值;如果超过频率值,它将向后偏移。这确保了边界处的晶格块在平铺边缘保持一致。然而,此方法有特定限制:频率必须是整数,以确保晶格点与平铺边缘对齐,且仅保证在特定范围内(大约在 0–1 UV 范围外一单位)实现无缝平铺。

用于平铺的负晶格坐标偏移的视觉表示
将负坐标向前偏移频率值的逻辑,以确保无缝平铺。catlikecoding.com

此图演示了用于对齐边界晶格块的坐标偏移逻辑。

UV 空间中平铺范围限制的可视化
平铺逻辑保持可用的特定范围(大约在 0–1 UV 范围外一单位)。catlikecoding.com

这张图片显示了实现细节中所述的无缝平铺逻辑的空间约束。

平铺频率限制的可视化
要求使用整数频率以确保晶格点与平铺边缘对齐。catlikecoding.com

此图说明了为在几何体上保持无缝平铺所需的频率约束。

此外,该技术在动画和频率方面引入了限制。为了使交错动画保持无缝,用于噪声的频率必须是偶数;否则,匹配晶格点的偏移时间将不匹配。为了支持滑动动画且不破坏平铺,该实现将 UV 偏移限制为其小数部分。这确保了坐标保持在平铺逻辑可正常工作的有效范围内。通过将这些坐标换算技术与特定的频率要求相结合,开发者可以在圆环面等复杂几何体上创建连续、重复的过程化纹理,而不会出现明显的断裂。