1.噪声
噪声是游戏编程的常见技术,广泛应用于地形生成,图形学等多方面。
2.为什么需要噪声
噪声其实就是为了把一些随机变量引入到程序中,在我们写程序时,也经常会使用random()生成随机值,但是它的问题是生成随机值太随机了得到的值往往总是参差不齐,如下图使用随机值作为像素点的黑白图
而使用噪声,我们得到的值随机但是看起来却是平缓的,这种图看起来也更自然舒服(对比图中左侧为基础噪声,右侧是fbm:分型布朗姆运动 后的效果)
3.噪声的特性
3.1随机性
噪声的基础就是随机
3.2哈希性
在《我的世界》中,由于世界是无限大的,他以chunk区块(16*16*255格子)为单位,之家在玩家附近的区块。也就是说当玩家在移动时,它会卸载远离的区块,加载靠近的区块。
一个问题是当玩家离开一个区块,进入第二个区块,然后再回到第一个区块时,他看到的应该是保持一致的,所以这时我们输入相同的值应该要返回固定的值。
因此可哈希是噪声的一个重要性质。
3.3平滑性
对于一个随机生成的地形来说,如果简单的使用随机和哈希组合,那么容易得到下图(以一维地图为例,x轴为位置,y轴为地形)
由图可见,由于随机的杂乱无章,地形非常的参差不齐,这可不是一个自然的地形。
我们期望的地形应该如下,不仅随机切要平滑才显得自然