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

Difference between revisions of "Terra/噪声方程"

From Minecraft插件百科
Jump to: navigation, search
(创建页面,内容为“{{模板:TRBox}} = 群系噪声方程 = Terra地形生成的核心就是在所有群系配置内都可以找到的<code>noise-equation</code>键。 举个例子…”)
 
Line 19: Line 19:
  
 
<pre class="">noise-equation: &quot;(-y/64)+1&quot;</pre>
 
<pre class="">noise-equation: &quot;(-y/64)+1&quot;</pre>
这只是一个简单的线性方程,不涉及任何噪声。它给出的结果是很无聊——一个完全平坦的世界。 [[File:https://camo.githubusercontent.com/fd16faa7d65f4757e0001b4f3561e7b82a98200f9c47b364ff1549e2e01d1c4a/68747470733a2f2f692e696d6775722e636f6d2f64324c6d5648682e706e67|fig:]] 请注意,地面高度位于Y=64。因为当把一个小于64的值传入Y的方程中时,结果为正,从而导致Y=63及以下的所有方块都是实心方块。如果你把方程画成图,你可以清楚地看到这种关系:[[File:https://camo.githubusercontent.com/0569fcf0f763134c9926fe31dcb3d9baca01b67648193a99eafb67b5d66a0f3f/68747470733a2f2f692e696d6775722e636f6d2f585369466957762e706e67|fig:]]
+
这只是一个简单的线性方程,不涉及任何噪声。它给出的结果是很无聊——一个完全平坦的世界。 <br>
 +
[[File:terra1.pnd|fig:]]<br>
 +
请注意,地面高度位于Y=64。因为当把一个小于64的值传入Y的方程中时,结果为正,从而导致Y=63及以下的所有方块都是实心方块。如果你把方程画成图,你可以清楚地看到这种关系:<br>
 +
[[File:terra2.png|fig:]]
  
 
=== 这太无聊了。怎么才能造出真正的地形? ===
 
=== 这太无聊了。怎么才能造出真正的地形? ===
Line 25: Line 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:https://camo.githubusercontent.com/338d174ca5cf714f4dc19e285af80c82c1c75cfecc2e178335a5b99bed60734f/68747470733a2f2f692e696d6775722e636f6d2f697445656e694d2e706e67|fig:]]<br />
+
[[File:terra3.png|fig:]]<br />
 
这在地形生成时很有用,因为它可以给地形添加不同的变化。让我们从一个简单的二维单纯形高度图开始吧!
 
这在地形生成时很有用,因为它可以给地形添加不同的变化。让我们从一个简单的二维单纯形高度图开始吧!
  
 
<pre class="">noise-equation: &quot;(-y/64)+1 + noise2(x, z)&quot;</pre>
 
<pre class="">noise-equation: &quot;(-y/64)+1 + noise2(x, z)&quot;</pre>
 
这个方程将从X和Z坐标获取的二维单纯形噪声添加到我们之前定义的线性方程中。现在,我们的世界是这样的:<br />
 
这个方程将从X和Z坐标获取的二维单纯形噪声添加到我们之前定义的线性方程中。现在,我们的世界是这样的:<br />
[[File:https://camo.githubusercontent.com/2bda4f10acff2d1b08ae6326dc239282fed05592519233c607fabf40e8147a45/68747470733a2f2f692e696d6775722e636f6d2f506f50736c4d452e706e67|fig:]]
+
[[File:terra4.png|fig:]]
  
 
=== 等等,这里到底发生了什么? ===
 
=== 等等,这里到底发生了什么? ===
  
基本上,由于我们将单纯形噪声的结果(范围从-1.0到1.0,遵循[https://en.wikipedia.org/wiki/Normal_distribution 高斯分布])添加到原始方程中,我们“偏移”了地形的基本高度(Y=63),无视单纯形操作的结果。这让我们创造出了漂亮的山丘/山脉并赋予我们许多配置的可能性!
+
基本上,由于我们将单纯形噪声的结果(范围从-1.0到1.0,遵循[https://en.wikipedia.org/wiki/Normal_distribution 高斯分布])添加到原始方程中,我们“偏移”了地形的基本高度(Y=63)且无视单纯形操作的结果。这让我们创造出了漂亮的山丘/山脉并赋予我们许多配置的可能性!
  
 
=== 高山太多了。怎么创建平坦点的地形? ===
 
=== 高山太多了。怎么创建平坦点的地形? ===
Line 41: Line 44:
  
 
<pre class="">noise-equation: &quot;(-y/64)+1 + noise2(x, z)/2&quot;</pre>
 
<pre class="">noise-equation: &quot;(-y/64)+1 + noise2(x, z)/2&quot;</pre>
现在我们的地形看起来就会变成这样:[[File:https://camo.githubusercontent.com/eb199178edc232f80a52d9b6d8dcaf4511386362dd1b7170bf6734c01321e043/68747470733a2f2f692e696d6775722e636f6d2f4e6a464f706b502e706e67|fig:]]
+
现在我们的地形看起来就会变成这样:[[File:terra5.png|fig:]]
  
 
== 改良基础方程 ==
 
== 改良基础方程 ==
Line 48: Line 51:
  
 
<pre class="">noise-equation: &quot;-((y / 64)^2) + 1&quot;</pre>
 
<pre class="">noise-equation: &quot;-((y / 64)^2) + 1&quot;</pre>
[[File:https://camo.githubusercontent.com/58af788d616e25f098644d5cd6ed9b4d9eddaa7c5219fbb59722d17c88f1709a/68747470733a2f2f692e696d6775722e636f6d2f613357347648432e706e67|fig:]]上面的方程得出了与线性方程类似的结果,不过该方程在Y值较高时“下降”得更快。这是该方程生成的地形:
+
[[File:terra6.png|fig:]]上面的方程得出了与线性方程类似的结果,不过该方程在Y值较高时“下降”得更快。这是该方程生成的地形:
  
 
<pre class="">noise-equation: &quot;-((y / 64)^2) + 1 + noise2(x, z) / 2&quot;</pre>
 
<pre class="">noise-equation: &quot;-((y / 64)^2) + 1 + noise2(x, z) / 2&quot;</pre>
[[File:https://camo.githubusercontent.com/483b4671e491abff68eb013a2795a399ac0110509da724966d92608b80144b56/68747470733a2f2f692e696d6775722e636f6d2f6b396f476132752e706e67|thumb|none]]
+
 
 +
[[File:terra7.png]]
  
 
添加植被和树木后,我们就造出一个不错的平原地形了!
 
添加植被和树木后,我们就造出一个不错的平原地形了!
Line 92: Line 96:
 
         min: 58
 
         min: 58
 
         max: 72</pre>
 
         max: 72</pre>
[[File:https://camo.githubusercontent.com/74469f061d2c26bd0649276ed97f7b6625420da46cc9c0affc0b9f07514f09f6/68747470733a2f2f692e696d6775722e636f6d2f4d6c336c7855492e706e67|thumb|none]]
+
[[File:terra8.png]]
  
 
进阶信息请查看高级噪声等式页面。
 
进阶信息请查看高级噪声等式页面。

Revision as of 17:49, 17 November 2020

Template:模板:TRBox

群系噪声方程

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

举个例子:

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

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

这是啥?我不懂数学!

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

示例

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

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

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

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

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

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

Error creating thumbnail: Unable to save thumbnail to destination


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

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

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

Error creating thumbnail: Unable to save thumbnail to destination

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

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

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

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

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

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

Error creating thumbnail: Unable to save thumbnail to destination

改良基础方程

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

noise-equation: "-((y / 64)^2) + 1"
Error creating thumbnail: Unable to save thumbnail to destination

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

noise-equation: "-((y / 64)^2) + 1 + noise2(x, z) / 2"
Error creating thumbnail: Unable to save thumbnail to destination

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

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
Error creating thumbnail: Unable to save thumbnail to destination

进阶信息请查看高级噪声等式页面。