噪声生成器
Minecraft使用了几种不同的噪声生成器(Noise generators),特别是那些利用梯度噪声来生成地形和其他特征的。
规格[编辑 | 编辑源代码]
噪声生成器可以由以下参数定义:
- Octaves: 这个噪声生成器不同副本的数量,每个从上一个按比例缩小2倍。此参数较小时会导致不自然的外观,较大时会导致更粗糙的地形外观(含有更多的空隙),会让人联想到自然的地形。
- Frequency:
[需要更多信息] - Factor: 处理后与噪声值相乘的值(空隙),同时使一组值或多或少的极端。
- Offset: 处理后添加到噪声的值,按照此值移动生成的一组值。
这些值在代码中的显示和计算方式不同。Vanilla简单地应用“比例”值(Frequency*(2^Octaves)),定义为每次采样(每四个方块)噪声生成器增加多少。
自定义[编辑 | 编辑源代码]
旧自定义世界(1.8-1.12)[编辑 | 编辑源代码]
你可以帮助我们加入信息。
自定义世界(1.16+)[编辑 | 编辑源代码]
你可以帮助我们加入信息。
噪声生成器的种类[编辑 | 编辑源代码]
在Java版中,噪声生成器仅使用64位种子的前48位来确定地层颜色。地层在Y轴上每64个方块重复一次,并且特定地层的高度可以在整个生物群系中变化多达4个方块。地层高度仅相对于X轴变化,与Z轴无关。
地形噪声生成器[编辑 | 编辑源代码]
这些用于定义生成的地形本身的形状。默认/硬编码设置表以及由此产生的值如下。请注意,并非所有这些都在原版中使用,而是由诸如CubicWorldGen(CurseForge·GitHub)之类的Mod使用。
基本地形噪声生成器(主世界) | |||||||||
---|---|---|---|---|---|---|---|---|---|
生成器 | 低噪声 | 高噪声 | 选择器噪声 | 深度噪声 | |||||
范围 | X | Y | Z | X | Y | Z | X | Z | |
Offset | 0 | 0.5 | 0 | ||||||
Factor | 1 | 12.75 | 1.024 | ||||||
Octaves | 16 | 8 | 16 | ||||||
Frequency | 0.00522... | 0.00261... | 0.00522... | 0.01671... | 0.00835... | 0.01671... | 0.00153... | ||
周期 | 191.51 | 383.02 | 191.51 | 59.85 | 119.69 | 59.85 | 655.36 | ||
每个方块的增加量 | 171.103 | 85.5515 | 171.103 | 2.138 | 1.069 | 2.138 | 50 | ||
每次采样的增加量 | 684.412 | 342.206 | 684.412 | 8.555 | 4.278 | 8.555 | 200 | ||
预期32位溢出距离 | 12,550,824 | 25,101,648 | 12,550,824 | 1,004,065,920 | 2,008,131,841 | 1,004,065,920 | 42,949,672 | ||
预期64位溢出距离 | ~53*10^15 | ~107*10^15 | ~53*10^15 | ~4*10^18 | ~8*10^18 | ~4*10^18 | ~184*10^15 |
低噪声[编辑 | 编辑源代码]
低噪声(Low noise)是用于定义地形特征的两个主要噪声生成器之一。这种使用Perlin噪声的噪声生成器实际上是用于高度图的。
高噪声[编辑 | 编辑源代码]
高噪声(High noise)实际上与低噪声相同,但仅在选择器噪声高于给定阈值时使用。
选择器噪声[编辑 | 编辑源代码]
选择器噪声(Selector noise)是用于地形生成的第三个重要噪声生成器,使用Perlin噪声,指示在给定位置使用低噪声或高噪声中的哪一个来生成地形:高于1使用高噪声,低于0使用低噪声,并且在高和低噪声生成器值0-1之间线性插值。
深度噪声[编辑 | 编辑源代码]
深度噪声(Depth noise)是一个非常微不足道的噪声生成器,使用Perlin噪声使地形总体上更加细致。它可能具有的可能值被严格限制在少许几个值上,也仅针对X轴和Z轴定义。
其他噪声生成器[编辑 | 编辑源代码]
这些噪声生成器用于其他维度地形特征的生成。
装饰性噪声生成器(主世界) | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
生成器 | 生物群系填充噪声 | 恶地噪声柱(风蚀恶地的岩柱) | 恶地黏土带偏移噪声 | 沼泽噪声 | 花分布噪声 | |||||||||
范围 | X | Z | X | Y | Z | X | Y | Z | X | Y | Z | X | Y | Z |
Offset | 3 | ? | ? | ? | ? | |||||||||
Factor | 2.333... | ? | ? | ? | ? | |||||||||
Octaves | 4 | ? | ? | ? | ? | |||||||||
Frequency | 0.00781... | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | |
时期 | 128 | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | |
每个方块的增加量 | 0.0625 | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | |
每次采样的增加量 | 0.25 | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | |
预期32位溢出距离 | 34,359,738,368 | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | |
预期64位溢出距离 | ~147*10^15 | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
生物群系填充噪声[编辑 | 编辑源代码]
生成之后,顶层方块(例如泥土、沙子等)将会被放置到一定的厚度以覆盖裸露的石头,从而替换裸石的高度图,其厚度由Vanilla的噪声生成器决定。
生物群系分布[编辑 | 编辑源代码]
海洋生物群系及其变种普遍使用Perlin噪声函数分布。
多噪声生物群系源(同样适用于下界生物群系
恶地黏土带偏移噪声[编辑 | 编辑源代码]
你可以帮助我们加入信息。
恶地岩柱噪声(噪声柱)[编辑 | 编辑源代码]
你可以帮助我们加入信息。
沼泽噪声[编辑 | 编辑源代码]
沼泽使用噪声生成器有两个目的:用于生成由水和草方块混合而成的沼泽区域,以及用于使用的两种不同草颜色的变化。
花分布噪声[编辑 | 编辑源代码]
花的分布,最典型的是繁花森林,但也可能在其他地方,是通过噪声函数控制的。自然产生的花与通过骨粉种植的花的位置不同,通过骨粉种植的花可能不依赖于种子
已移除的噪声生成器[编辑 | 编辑源代码]
这些在当前版本的游戏中已不再使用。
已移除的噪声生成器(主世界) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
生成器 | Infdev 20100327前的噪声 | 岛屿雕刻噪声 | 比例噪声 | 沙子噪声 | 沙砾噪声 | 树密度噪声 | ||||||
范围 | X | Z | X | Z | X | Z | X | Z | X | Z | X | Z |
Offset | ? | ? | ? | ? | ? | ? | ||||||
Factor | ? | ? | ? | ? | ? | ? | ||||||
Octaves | 16 |
16 |
16 |
4 |
4 |
? | ||||||
Frequency | 0.00195... | 0.00007... | 0.000009... | 0.00391... | 0.00391... | ? | ||||||
时期 | 512 | 14246.96 | 116924.175 | 256 | 256 | ? | ||||||
每个方块的增加量 | 64 | 2.3 | 0.28025 | 0.03125 | 0.03125 | ? | ||||||
每次采样的增加量 | 256 | 9.2 | 1.121 | 0.125 | 0.125 | ? | ||||||
预期32位溢出距离 | 33,554,432 | 933,688,542 | 7,662,742,722 | 68,719,476,736 | 68,719,476,736 | 8,589,934,592 | ||||||
预期64位溢出距离 | ~144*10^15 | ~4*10^15 | ~32*10^15 | ~295*10^15 | ~295*10^15 | ? |
Infdev 20100327之前的主要噪声生成器[编辑 | 编辑源代码]
你可以帮助我们加入信息。
浮岛雕刻噪声[编辑 | 编辑源代码]
在Indev期间,浮岛是通过使用额外的噪声生成器将空气注入现有地形而产生的。
比例噪声[编辑 | 编辑源代码]
一种噪声生成器,似乎只会影响丘陵地形,而几乎不会影响平原地形。它的影响现在由生物群系而不是噪声生成器来处理。
树密度噪声[编辑 | 编辑源代码]
Infdev中存在一个噪声生成器,它决定了主世界中树的密度。这很可能在Java版Alpha v1.2.0中随着生物群系的引入而被移除,尽管这尚未得到证实,因为类似的噪声生成器似乎也存在于1.12.2中。
沙子噪声[编辑 | 编辑源代码]
这种噪声生成器用于生成通常具有海滩特征的临海(或低洼)地区的表面方块。该噪声生成器将确定给定区域是否使用沙子作为表面方块。该生成器可能在Beta 1.8中被移除。
沙砾噪声[编辑 | 编辑源代码]
这实际上与沙子噪声相同并且在非常相似的情况下使用,其决定了沙砾将在海滩状区域产生的位置。
Beta 1.8以前的生物群系[编辑 | 编辑源代码]
你可以帮助我们加入信息。
溢出[编辑 | 编辑源代码]
一旦超过给定数据类型的限制,噪声生成器就会发生溢出,从而生成出乎预料的地形。其中最典型的是边境之地。
在当前的Java版中,如果不直接修改地形生成代码或通过自定义世界生成,溢出通常是不可见的。
-
低噪声溢出
-
高噪声溢出
-
选择器噪声溢出;请注意,对于选择相同噪声的区域,噪声模式如何继续超出溢出范围
-
深度噪声溢出; 注意倾斜(溢出的地方)和由它引起的垂直裂缝
-
生物群系填充噪声溢出
-
Infdev 20100327版本前的地形生成噪声溢出
-
浮岛雕刻噪声溢出
-
比例噪声溢出
-
沙子噪声溢出
-
沙砾噪声溢出