- 欢迎来到Minecraft插件百科!
- 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
- 因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289
Terra/进阶噪声方程:修订间差异
Qsefthuopq(留言 | 贡献) (创建页面,内容为“{{模板:TRBox}} 正如我们在噪声方程页面中所演示的那样,你可以用一个函数来决定群系的样貌。然而,你也可以定义多个在满…”) |
Qsefthuopq(留言 | 贡献) 小无编辑摘要 |
||
第22行: | 第22行: | ||
该函数可造出漂亮的空岛: | 该函数可造出漂亮的空岛: | ||
[[File: | [[File:Terra9.png]] | ||
这个方程不仅增加了2个函数作为输出,还增加了一个检查选取哪个函数的函数。让我们拆开讲解: | 这个方程不仅增加了2个函数作为输出,还增加了一个检查选取哪个函数的函数。让我们拆开讲解: | ||
第39行: | 第39行: | ||
这看起来有点复杂。让我们一步一步来:条件为<code>max(y-96, 0)</code>。将这个条件放到[https://www.desmos.com/calculator 图形计算器]中,我们会得到这样的图形: | 这看起来有点复杂。让我们一步一步来:条件为<code>max(y-96, 0)</code>。将这个条件放到[https://www.desmos.com/calculator 图形计算器]中,我们会得到这样的图形: | ||
[[File: | [[File:Terra10.png]] | ||
如图所示,低于等于96的Y值的结果都是0,高于96的结果为正数。 | 如图所示,低于等于96的Y值的结果都是0,高于96的结果为正数。 |
2020年11月18日 (三) 04:36的最新版本
正如我们在噪声方程页面中所演示的那样,你可以用一个函数来决定群系的样貌。然而,你也可以定义多个在满足特定条件时使用的函数,如在特定高度时使用。
简易的条件
这是个下界三角洲群系配置内的简易示例:
noise-equation: "if(y, abs(y-64)/128 + noise3(x*1.5, y*2, z*1.5)*3, 1)"
这个例子有一个“三元if”。它遵循的原则是如果A不是0,则执行B,否则执行C
。在群系配置中写成if(A, B, C)
。如果我们把噪声方程对应地翻译一下,我们就会得到这样的结果:
如果y不为0
则使用函数abs(y-64)/128+noise3(x*1.5,y*2,z*1.5)*3
,否则直接输出1
或反过来:如果y=0
则输出1
,否则使用函数abs(y-64)/128+noise3(x*1.5,y*2,z*1.5)*3
。
如前文所述,这个函数试图回答的唯一问题是,我们是否有固体方块或空气。正数输出返回方块,(比如1),负数输出返回空气。
所以在这种情况下,在高度为0的地方会有一层实心的方块,而在上面的各处都会有其他的东西,这取决于我们所给出的函数。这是一个比较简单的例子,因为它只包括一个固定的实心层(例如基岩)和另一个函数。
全力以赴吧
我们可以通过在不同的高度使用不同的函数来造出更加复杂的地形。如平原-天空群系所示:
noise-equation: "if(max(y-96, 0), -(if(max(y-150, 0), |y-150|, |y-150|/16)) - 0.25 + (noise2(x*3, z*3)*3), ((-((y / 63)^2)) + 1) + |(noise2(x, z) / 3) + 0.1|)"
该函数可造出漂亮的空岛:
这个方程不仅增加了2个函数作为输出,还增加了一个检查选取哪个函数的函数。让我们拆开讲解:
if max(y-96, 0) is not 0 then do -(if(max(y-150, 0), |y-150|, |y-150|/16)) - 0.25 + (noise2(x*3, z*3)*3) else do ((-((y / 63)^2)) + 1) + |(noise2(x, z) / 3) + 0.1|)
这看起来有点复杂。让我们一步一步来:条件为max(y-96, 0)
。将这个条件放到图形计算器中,我们会得到这样的图形:
如图所示,低于等于96的Y值的结果都是0,高于96的结果为正数。
第二个函数作用于空岛下方的陆地。先让我们关注第一个函数,因为它不仅定义了有一定高度的曲面,而且定义了空岛底部的构造。
这通过第二个参数里面的另一个嵌套条件函数来实现:-(if(max(y-150, 0), |y-150|, |y-150|/16)) - 0.25 + (noise2(x*3, z*3)*3)
。其功能相当于:
-(condition) - 0.25 + (noise2(x*3, z*3)*3)
条件为:
if max(y-150, 0) is not 0 then do |y-150| else do |y-150|/16
当我们将输出结果应用到上面的函数中时,我们会得到:
if max(y-150, 0) is not 0 then do -(|y-150|) - 0.25 + (noise2(x*3, z*3)*3) else do -(|y-150|/16) - 0.25 + (noise2(x*3, z*3)*3)
这个方程的功能就是让空岛底部显得尖锐(低于150),上方显得平坦(大于等于151)。
总结
方程的复杂程度只取决于你给世界在定义了几层。