欢迎光临散文网 会员登陆 & 注册

【Minecraft】worldedit|deform&generate 利用floor函数实现“二次体素化”

2022-12-12 15:35 作者:MHols_  | 我要投稿

成品

//deform -c x=3*floor(x/3);z=3*floor(z/3);y=3*floor(y/3)
//generate -c 251 X=3*floor(x/3);Z=3*floor(z/3);y+60<40*perlin(1,x,1,z,0.03,1,1)
//generate -c 251 Y=2*floor(y/2);Y+60<40*perlin(1,x,1,z,0.03,1,1)

想必也注意到了 ,这里只是用了新的X,Y,Z替换了本来的x,y,z

X=a*floor(x/b);

Y=a*floor(y/b);

Z=a*floor(Z/b);

a和b为常数

首先解释下floor()的用法

https://worldedit.enginehub.org/en/latest/usage/other/expressions/

这个函数在我做砖块纹理时也用过

因为在使用世界坐标的情况下,如generate -c 或deform,每一格的坐标都是整数,如果直接用x=floor(x),是没有任何作用,因为本来x的步长就是整数1,floor也就不起到作用,(下图红色部分)所以就要在floor括号里的x除以一个数字b,如x=floor(x/3),此时x的步长就变成了3,每3格子长跳1(下图蓝色部分),这时又出现了一个问题,只跳1不行啊,为了和原曲线的走势或斜率一致,在floor前面乘以个系数a,跳的高度a最好与x所除的数字保持一致,即x=3*floor(x/3);就如下图演示的绿色部分。(如果不想按原图的趋势也可以用其他数)

https://www.desmos.com/calculator/xxseatfkwx?lang=zh-CN

这样子替换xyz,不仅可以用应用在generate生成形状上,也可以用deform对选区内已有的形状进行变换,如把刷出的地形变成阶梯状,或者什么形状

原图:

//terragen poly 251 50

只对y替换:

//deform -c y=3*floor(y/3)

只对x替换:

//deform -c x=3*floor(x/3)

同时对x,z替换:

//deform -c x=3*floor(x/3);z=3*floor(z/3)

也可以如成品的后两个直接用generate生成阶梯状的地形,至于噪声生成地形的用法,我这正在考虑是否要做一期详解。

还有什么问题或者想要什么效果可以留言


【Minecraft】worldedit|deform&generate 利用floor函数实现“二次体素化”的评论 (共 条)

分享到微博请遵守国家法律