• 欢迎来到Minecraft插件百科!
  • 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
  • 因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289

Terra/噪声方程

来自Minecraft插件百科
Qsefthuopq留言 | 贡献2020年11月17日 (二) 10:01的版本
跳转到导航 跳转到搜索

群系噪声方程

Terra地形生成的核心就是在所有群系配置内都可以找到的noise-equation键。

举个例子:

noise-equation: "((-(y / 62)^2) + 1) + ((noise2(x, z)+0.5) / 3)"  

这一页面会向你演示如何创建可生成你所需地形的等式。

这是啥?我不懂数学!

噪声方程的原理非常简单。该方程使用3个变量:xyz,并将其转换为输出。当Terra在生成区块基础时(基础生成是地形生成的第一阶段,这个阶段定义了地形的形状),当前的坐标会被代入到这个方程内。如果结果为正,则该位置为实体。如果结果为负数,则该位置为空气。

示例

让我们从一个非常简单的噪声方程开始:

noise-equation: "(-y/64)+1"

这只是一个简单的线性方程,不涉及任何噪声。它给出的结果是很无聊——一个完全平坦的世界。
文件:Terra1.pnd

请注意,地面高度位于Y=64。因为当把一个小于64的值传入Y的方程中时,结果为正,从而导致Y=63及以下的所有方块都是实心方块。如果你把方程画成图,你可以清楚地看到这种关系:

这太无聊了。怎么才能造出真正的地形?

加上噪声就行了!
Terra包含2种你可以用到方程里的自定义函数 :noise2(x, z)noise3(x, y, z).。这些函数的存在正如其名,给你的地形提供噪声。它们提供来自单纯形八度生成器的噪声,在Terra的世界配置中定义的世界种子、八度和频率。下面是一个单纯形噪声的例子。如你所见,噪声产生了一个梯度。

这在地形生成时很有用,因为它可以给地形添加不同的变化。让我们从一个简单的二维单纯形高度图开始吧!

noise-equation: "(-y/64)+1 + noise2(x, z)"

这个方程将从X和Z坐标获取的二维单纯形噪声添加到我们之前定义的线性方程中。现在,我们的世界是这样的:

等等,这里到底发生了什么?

基本上,由于我们将单纯形噪声的结果(范围从-1.0到1.0,遵循高斯分布)添加到原始方程中,我们“偏移”了地形的基本高度(Y=63)且无视单纯形操作的结果。这让我们创造出了漂亮的山丘/山脉并赋予我们许多配置的可能性!

高山太多了。怎么创建平坦点的地形?

只需用一个数除噪声值。以下示例等式将噪声除以2:

noise-equation: "(-y/64)+1 + noise2(x, z)/2"

现在我们的地形看起来就会变成这样:

改良基础方程

我发现在大多数情况下,线性基础方程得出的结果并不理想。对于我的创建大多数群系,我使用二次方程作为基础方程。具体来说,我使用的是:

noise-equation: "-((y / 64)^2) + 1"


上面的方程得出了与线性方程类似的结果,不过该方程在Y值较高时“下降”得更快。这是该方程生成的地形:

noise-equation: "-((y / 64)^2) + 1 + noise2(x, z) / 2"

添加植被和树木后,我们就造出一个不错的平原地形了!

noise-equation: "-((y / 64)^2) + 1 + noise2(x, z) / 2"
id: "PLAINS"

palette:
  - GRASSY: 255
vanilla: PLAINS

erodible: true

flora:
  chance: 60
  attempts: 1
  items:
    TALL_GRASS:
      weight: 160
      y:
        min: 62
        max: 84
    GRASS:
      weight: 100
      y:
        min: 62
        max: 84
    POPPY:
      weight: 8
      y:
        min: 62
        max: 84

trees:
  density: 20
  items:
    OAK:
      weight: 1
      y:
        min: 58
        max: 72

更多信息请查看进阶噪声等式页面。