噪声生成器

来自Minecraft Wiki
跳转到导航 跳转到搜索
该条目的编辑正在进行中。 讨论

请帮助我们扩充或改进它。

Minecraft使用了几种不同的噪声生成器(Noise generators),特别是那些利用梯度噪声来生成地形和其他特征的。

规格[编辑 | 编辑源代码]

噪声生成器可以由以下参数定义:

  • Octaves: 这个噪声生成器不同副本的数量,每个从上一个按比例缩小2倍。此参数较小时会导致不自然的外观,较大时会导致更粗糙的地形外观(含有更多的空隙),会让人联想到自然的地形。
  • Frequency: [需要更多信息]
  • Factor: 处理后与噪声值相乘的值(空隙),同时使一组值或多或少的极端。
  • Offset: 处理后添加到噪声的值,按照此值移动生成的一组值。

这些值在代码中的显示和计算方式不同。Vanilla简单地应用“比例”值(Frequency*(2^Octaves)),定义为每次采样(每四个方块)噪声生成器增加多少。

自定义[编辑 | 编辑源代码]

本段落所述内容仅适用于Java版

旧自定义世界(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版中,如果不直接修改地形生成代码或通过自定义世界生成,溢出通常是不可见的。