godot noise融合成地图的探究
一、是首先要理解,随机地图就是一个范围判断,然后生成对于的东西。
在shader中,color的输出为4个float,范围再0~1。他和传统的0~255区别不大。只是我们习惯了10进制,在脑海中对0~255是有一个概念了。
不过这个范围判断依赖直觉肯定会有很多麻烦的事情出现的。
用0~1是有很多好处的。
在noise下,在没有使用smooth之前,分布大概是个正太的样子。

smoothstep

把直线,弄着这样。
然后我们的概率分布,就会有所改变。

我们拿到这个概率图。
如果是(v+v)/2,

如果是v*v


如果是(v-v)/2


测试后,我选择 (v-v)/2这样的值保留原始数据,有有一种被step的感觉。
二、noise的算法
1、sample
三角形错位网络
生成的基底,会有斜线。


这个跟硬。根舍和生成一些特殊岩石地形。
2、perlin
perlin noise是方形网格

有直线和竖线的网络。
3、value


因为使用随机网格颜色,然后再smooth,这也的效果,非常容易形成长廊。
也可以有一些其他的操作

生成大量的L在地图里面。探后再用voro生成区块,那又是很多奇怪岩石地形。
4、voro
关于voro。
顶点所在的位置很重要啊

目前我们之用了第四了,还有很多优秀作品哦,是对他的顶点进行处理的,这个。
1、像毒液的液体
2、晓不得
3、树木
4、规律分布的网格
5、随机后的
6、集中的放射性地形
6.1如果使用了曼哈顿距离法

所以voro这东东,我还是推荐自己写。
三、对数据的处理
1、ridged


2、ping_pong

完全感觉不出两个的区别
就像反色了一下。
这里的主要的公式也很简单,因为0~1之间有个过度为0.5,我们之需要把0.5变为0

只需要 abs(value-0.5)*2.0就好了

holy shit,不对啊

吃瘪了。
直接抄了。

这尼玛,什么意思,先超过去




我懒得管那么多了,这里和木纹差不多。
尤其是增加了


虽然区别很大,实际上区别不大。
四、总结
1、我们在生成地形图的时候,主要是寻找轮廓,因为整个noise都用上了smooth step,平滑的从0~1,然后每一层可以对他们进行各种处理,然后叠加。所以我们要取0.2,会存在一条线。这条线,这与这条线一下和以上的数据如何操作,取决于你想要的比例。
2、我们在使用voro+sample noise生成矿石,这与的矿石轮廓不是圆滑的。
到了这里,想要深入研究可以自己看
blender和各种渲染引擎的procedural texture




我们必须承认,godot还早着呢,blender和其他渲染引擎是专业的。

unreal还更差得远

当然不能拿游戏引擎和专业的比。