使用Transvoxel / Marching立方体和3D perlin噪声制作程序性地形

时间:2017-08-28 13:16:54

标签: c# unity3d terrain perlin-noise marching-cubes

我正在研究Transvoxel的实现,它工作正常,但我无法继续使用噪音。现在我使用perlin噪声生成2d高度图并使用高度图我设置单元格值,但我不知道如何为单元格生成值。实际上它们必须介于-127和128之间,并且它们必须平滑地增加和减少,但我无法生成这些值。

编辑:

我停止使用3d噪音,我正试图用二维噪音做点什么。现在,我可以对密度场进行三角测量,因为我使用行进立方体和transvoxel大约半年。但我唯一不知道的是,如果我生成一个2d高度图以具有山脉等地形特征,那么我不知道我必须使用哪些密度。我尝试只是简单地给所有东西固定-127和一切非固体127我也尝试在给定(x,z)处获得高度图值,然后只需将y添加到它:(x,0,z)= 42, (x,1,z)= 43,(x,2,z)= 44等...... 但是,这些变化会产生块状地形,如下图所示:

enter image description here

我该怎么做才能让它顺利?顶点位置是具有非整数值的浮点数,因此它不应该是问题。

1 个答案:

答案 0 :(得分:0)

Transvoxel是Marching Cubes的一个更复杂的实现,我建议你现在忘记Transvoxel,首先研究Marching Cubes。

总之,Marching立方体从0到1接收噪声,其中0表示没有地形,1表示地形。你只需要在你计划拥有地形的地方写1。例如,生成具有1个值的小地图,其中y <1。 3,在地图的所有X和Z位置。你应该得到平坦的地形。

试试吧! =)