什么是将Voronoi图与Perlin噪声结合用于纹理生成的“正确”方法?

问题描述 投票:1回答:2

我正在开展一个围绕程序性地形生成的项目。我当前有两个独立的部分,一个生成我的Voronoi图,另一个处理整个地形的生成。地形当前是以块的形式生成的,因为它太大而无法自行生成。由我的Voronoi算法生成的多边形的大小接近于一个单一的地形块。我希望为每个多边形生成一个单独的块,因为我希望Perlin Noise值可以确定生成的多边形。在目前的实施中,我的Terrain Chunks有一个正方形的形状,因此我不能真正地固定多边形。你会怎么做呢?

我最初试图将我的纹理变成多边形形状,但是单位的纹理具有宽度和高度,但是,这并没有完全解决。我还考虑将每个Terrain块分隔成一组具有相同属性的多边形,这些多边形将形成正方形,这破坏了使用Voronoi的整个目的。

我很乐意提供我的代码,但我不认为它在这种情况下具有部分价值。

作为注释:我的Voronoi实现返回一个多边形对象列表,其中包含相应的角点,边,质心等。

提前致谢 :)

c# unity3d terrain procedural-generation unity3d-terrain
2个回答
1
投票

大多数时候,当我在地形生成中看到Voronoi算法时,它们会在运行时应用于纹理。然后可以将其他类型的噪声添加/乘以/等到该纹理,以创建程序地形的高度图。

如果您已经有Voronoi算法生成几何体,一个选项是为您的地形制作一个着色器,在世界空间坐标中对Perlin噪声进行采样(这样您就不会遇到多边形网格上的任何平铺问题)。如果将噪声用作高度图,则细分可以提高网格分辨率。但是,如果您没有使用着色器,则可能会使用纹理方法更快地看到结果。如果你在C#中做另一半,那么在着色器中做一半的地形噪声就没那么有意义了。

由于这个主题可以变得非常广泛,我强烈推荐Sebastian Lague关于地形生成的视频。 https://www.youtube.com/watch?v=wbpMiKiSKm8&list=PLFt_AvWsXl0eBW2EiBtl_sxmDtSgZBxB3


0
投票

您为什么要将地形图块成多边形?如果我理解正确,你不希望你的地形图块是正方形,而是用voronoi算法生成的多边形。实际上没有人这样做。地形图块始终是基于虚拟网格和玩家位置创建和删除的正方形。

© www.soinside.com 2019 - 2024. All rights reserved.