在Minecraft中实现Value Noise Terrain
本文最后更新于:2 个月前
视频版:
什么是Value Noise Terrain?
Value Noise , 即 值噪声 ,
主要思路是定义若干顶点且每个顶点含有一个随机值,这些顶点会根据自己的随机值对周围坐标产生影响,越靠近顶点则越容易受该顶点影响。当需求某个坐标的输出值是,需要将改坐标附近的各个顶点所造成的影响值进行叠加,从而得到一个总之并输出,
相较于 Perlin Noise 更为简易。
但缺点也是明显的,不够平滑,也无法做到像 Perlin Noise 那样的自如。
那么Value Noise Terrain , 即为 值噪声地形,
也就是通过值噪声来生成地形。
如何去做?
现在这里有一个n*n大小的格子,他有四个顶点 $P_1$, $P_2$, $P_3$, $P_4$,表示不同的值。
在格子内又有无数个点$N_n$
现在任取一个点$N_1$。而要做的便是让$N$所受$P_1$,$P_2$,$,P_3$,$P_4$不同影响下的一个平均值。
现在,先开始着手于“权重”,什么是权重?权重为各顶点对$N_1$的影响的程度。
那么权重要怎么计算呢?观察图片,我们可以看到$N_1$距离各个顶点有近有远,
所以可以尝试用坐标来当作权重。
将点$N_1$坐标列出来,就可以开始计算权重了。
按照这个思路在游戏内尝试,对于大多数人来说不满足,因为太有规律了,完全不自然
所以我们可以在计算权重之前先将要$N_1$的X轴和Z轴代入一个函数处理下,使最终的结果平滑,这里就用到一个二次函数了
注意m是一个常数,为格子边长。然后再把结果代入权重计算,结果就为这样
在Minecraft中实现Value Noise Terrain
https://www.htext.top/post/dbff3900.html