欢迎来到Minecraft插件百科!
对百科编辑一脸懵逼?
帮助:快速入门
带您快速熟悉百科编辑!
因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289
查看“Terra/进阶噪声方程”的源代码
←
Terra/进阶噪声方程
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于这些用户组的用户执行:
用户
、
自动确认用户
、
巡查者
您可以查看和复制此页面的源代码。
{{模板:TRBox}} 正如我们在噪声方程页面中所演示的那样,你可以用一个函数来决定群系的样貌。然而,你也可以定义多个在满足特定条件时使用的函数,如在特定高度时使用。 = 简易的条件 = 这是个[https://github.com/PolyhedralDev/TerraDefaultConfig/blob/final-config/packs/nether/biomes/delta.yml#L1 下界三角洲群系配置]内的简易示例: <pre class="">noise-equation: "if(y, abs(y-64)/128 + noise3(x*1.5, y*2, z*1.5)*3, 1)"</pre> 这个例子有一个“三元if”。它遵循的原则是<code>如果A不是0,则执行B,否则执行C</code>。在群系配置中写成<code>if(A, B, C)</code>。如果我们把噪声方程对应地翻译一下,我们就会得到这样的结果: 如果<code>y不为0</code>则使用函数<code>abs(y-64)/128+noise3(x*1.5,y*2,z*1.5)*3</code>,否则直接输出<code>1</code>或反过来:如果<code>y=0</code>则输出<code>1</code>,否则使用函数<code>abs(y-64)/128+noise3(x*1.5,y*2,z*1.5)*3</code>。 如前文所述,这个函数试图回答的唯一问题是,我们是否有固体方块或空气。正数输出返回方块,(比如1),负数输出返回空气。 所以在这种情况下,在高度为0的地方会有一层实心的方块,而在上面的各处都会有其他的东西,这取决于我们所给出的函数。这是一个比较简单的例子,因为它只包括一个固定的实心层(例如基岩)和另一个函数。 = 全力以赴吧 = 我们可以通过在不同的高度使用不同的函数来造出更加复杂的地形。如[https://github.com/PolyhedralDev/Terra/blob/92cdcba9f37154e581225100a3cba283560e666e/src/main/resources/default-config/biomes/plains_sky.yml#L4 平原-天空群系]所示: <pre class="">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|)"</pre> 该函数可造出漂亮的空岛: [[File:Terra9.png]] 这个方程不仅增加了2个函数作为输出,还增加了一个检查选取哪个函数的函数。让我们拆开讲解: <pre class="">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|)</pre> 这看起来有点复杂。让我们一步一步来:条件为<code>max(y-96, 0)</code>。将这个条件放到[https://www.desmos.com/calculator 图形计算器]中,我们会得到这样的图形: [[File:Terra10.png]] 如图所示,低于等于96的Y值的结果都是0,高于96的结果为正数。 第二个函数作用于空岛下方的陆地。先让我们关注第一个函数,因为它不仅定义了有一定高度的曲面,而且定义了空岛底部的构造。 这通过第二个参数里面的另一个嵌套条件函数来实现:<code>-(if(max(y-150, 0), |y-150|, |y-150|/16)) - 0.25 + (noise2(x*3, z*3)*3)</code>。其功能相当于: <pre class="">-(condition) - 0.25 + (noise2(x*3, z*3)*3)</pre> 条件为: <pre class="">if max(y-150, 0) is not 0 then do |y-150| else do |y-150|/16</pre> 当我们将输出结果应用到上面的函数中时,我们会得到: <pre class="">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)</pre> 这个方程的功能就是让空岛底部显得尖锐(低于150),上方显得平坦(大于等于151)。 = 总结 = 方程的复杂程度只取决于你给世界在定义了几层。
本页使用的模板:
模板:TRBox
(
查看源代码
)
模板:·
(
查看源代码
)
返回
Terra/进阶噪声方程
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
编辑相关
百科公告
编辑帮助
互助客栈
贡献分数
测试沙盒
发布条目
插件分类
管理
安全
聊天
编程
经济
修正
娱乐
综合
信息
机械
角色
传送
网页
整地
创世
付费
其它
工具
链入页面
相关更改
特殊页面
页面信息
相关网站
MCMOD百科
Minecraft中文百科
Minecraft纪念论坛
Minecraft百度贴吧
虚无世界Wiki