- 欢迎来到Minecraft插件百科!
- 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
- 因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289
Terra/噪声方程:修订间差异
Qsefthuopq(留言 | 贡献) 小无编辑摘要 |
Qsefthuopq(留言 | 贡献) 小无编辑摘要 |
||
第20行: | 第20行: | ||
<pre class="">noise-equation: "(-y/64)+1"</pre> | <pre class="">noise-equation: "(-y/64)+1"</pre> | ||
这只是一个简单的线性方程,不涉及任何噪声。它给出的结果是很无聊——一个完全平坦的世界。 <br> | 这只是一个简单的线性方程,不涉及任何噪声。它给出的结果是很无聊——一个完全平坦的世界。 <br> | ||
[[File:terra1. | [[File:terra1.png|650px]]<br> | ||
请注意,地面高度位于Y=64。因为当把一个小于64的值传入Y的方程中时,结果为正,从而导致Y=63及以下的所有方块都是实心方块。如果你把方程画成图,你可以清楚地看到这种关系:<br> | 请注意,地面高度位于Y=64。因为当把一个小于64的值传入Y的方程中时,结果为正,从而导致Y=63及以下的所有方块都是实心方块。如果你把方程画成图,你可以清楚地看到这种关系:<br> | ||
[[File:terra2.png| | [[File:terra2.png|700px]] | ||
=== 这太无聊了。怎么才能造出真正的地形? === | === 这太无聊了。怎么才能造出真正的地形? === | ||
第28行: | 第28行: | ||
加上噪声就行了!<br /> | 加上噪声就行了!<br /> | ||
Terra包含2种你可以用到方程里的自定义函数 :<code>noise2(x, z)</code>和<code>noise3(x, y, z)</code>.。这些函数的存在正如其名,给你的地形提供噪声。它们提供来自[https://en.wikipedia.org/wiki/Simplex_noise 单纯形]八度生成器的噪声,在Terra的世界配置中定义的世界种子、八度和频率。下面是一个单纯形噪声的例子。如你所见,噪声产生了一个梯度。<br /> | Terra包含2种你可以用到方程里的自定义函数 :<code>noise2(x, z)</code>和<code>noise3(x, y, z)</code>.。这些函数的存在正如其名,给你的地形提供噪声。它们提供来自[https://en.wikipedia.org/wiki/Simplex_noise 单纯形]八度生成器的噪声,在Terra的世界配置中定义的世界种子、八度和频率。下面是一个单纯形噪声的例子。如你所见,噪声产生了一个梯度。<br /> | ||
[[File:terra3.png| | [[File:terra3.png|700px]]<br /> | ||
这在地形生成时很有用,因为它可以给地形添加不同的变化。让我们从一个简单的二维单纯形高度图开始吧! | 这在地形生成时很有用,因为它可以给地形添加不同的变化。让我们从一个简单的二维单纯形高度图开始吧! | ||
<pre class="">noise-equation: "(-y/64)+1 + noise2(x, z)"</pre> | <pre class="">noise-equation: "(-y/64)+1 + noise2(x, z)"</pre> | ||
这个方程将从X和Z坐标获取的二维单纯形噪声添加到我们之前定义的线性方程中。现在,我们的世界是这样的:<br /> | 这个方程将从X和Z坐标获取的二维单纯形噪声添加到我们之前定义的线性方程中。现在,我们的世界是这样的:<br /> | ||
[[File:terra4.png| | [[File:terra4.png|700px]] | ||
=== 等等,这里到底发生了什么? === | === 等等,这里到底发生了什么? === | ||
第54行: | 第54行: | ||
<pre class="">noise-equation: "-((y / 64)^2) + 1"</pre> | <pre class="">noise-equation: "-((y / 64)^2) + 1"</pre> | ||
[[File:terra6.png| | [[File:terra6.png|700px]]<br> | ||
上面的方程得出了与线性方程类似的结果,不过该方程在Y值较高时“下降”得更快。这是该方程生成的地形: | 上面的方程得出了与线性方程类似的结果,不过该方程在Y值较高时“下降”得更快。这是该方程生成的地形: | ||
<pre class="">noise-equation: "-((y / 64)^2) + 1 + noise2(x, z) / 2"</pre> | <pre class="">noise-equation: "-((y / 64)^2) + 1 + noise2(x, z) / 2"</pre> | ||
[[File:terra7.png| | [[File:terra7.png|700px]] | ||
添加植被和树木后,我们就造出一个不错的平原地形了! | 添加植被和树木后,我们就造出一个不错的平原地形了! |
2020年11月17日 (二) 10:03的最新版本
群系噪声方程
Terra地形生成的核心就是在所有群系配置内都可以找到的noise-equation
键。
举个例子:
noise-equation: "((-(y / 62)^2) + 1) + ((noise2(x, z)+0.5) / 3)"
这一页面会向你演示如何创建可生成你所需地形的等式。
这是啥?我不懂数学!
噪声方程的原理非常简单。该方程使用3个变量:x
、y
和z
,并将其转换为输出。当Terra在生成区块基础时(基础生成是地形生成的第一阶段,这个阶段定义了地形的形状),当前的坐标会被代入到这个方程内。如果结果为正,则该位置为实体。如果结果为负数,则该位置为空气。
示例
让我们从一个非常简单的噪声方程开始:
noise-equation: "(-y/64)+1"
这只是一个简单的线性方程,不涉及任何噪声。它给出的结果是很无聊——一个完全平坦的世界。
请注意,地面高度位于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
更多信息请查看进阶噪声等式页面。