【Minecraft】worldedit|generate洋蔥頂進階及上色辦法|包含data/type、atan2、min
成品如下

之前在視頻里演示的不是很詳細,這次將其進行了改進



一
第一步就是先有個大致的輪廓,上個專欄也提過,視頻里也有演示,就先跳過這一步了


二
第二步就是在一邊加上sin或者cos(下面以sin為例,其實與cos的相位就差個pi/2),對原始形狀周期性地調(diào)整半徑的大小。
怎么加呢?這里先了解下atan2()這個函數(shù)

具體用法就是atan2(x,z)獲取該點對于x,z中心原點位置的極坐標角度,范圍是-pi~pi,一周是2pi

sin大家都熟悉,注意觀察其不同頻率在-pi~pi的形狀


那么如果用sin套上這個角度,sin(atan2(x,z)),以下用圓的半徑加上這一項演示

理解了嗎?下面進入實戰(zhàn)


//generate 35 G=sin(18*atan2(x,z));i=sqrt(x^2+z^2);k=0.9;a=6.5;b=0.9;m=0.6;i<k*a^(-b*(y+m)^2)+0.05*G
關鍵是最后的+0.05*G,其中G=sin(18*atan2(x,z)),調(diào)整前面的系數(shù)可以控制隆起程度

三
如果上面的懂了,下面你可以選擇進行旋轉(zhuǎn),或者已經(jīng)足夠了就可以跳到下一步的上色了
和上個專欄的旋風相似,只不過沒用到rotate(),而是在sin(18*atan2(x,z))括號里加個相位,在平面內(nèi)表現(xiàn)就是其圖像向左或向右移動,在sin(18*atan2(x,z))里就是旋轉(zhuǎn)了起來(為做交叉效果做準備)

這個相位一般取與y的值相關,sin(18*atan2(x,z)+10*(y+1)),和上個專欄的旋風思路一樣,每個y值對應的相位都不相同但是連續(xù)變化,就有從下到上的旋轉(zhuǎn)效果,旋轉(zhuǎn)的程度與前面的系數(shù)相關


//generate 35 G=sin(18*atan2(x,z)+10*(y+1));i=sqrt(x^2+z^2);k=0.9;a=6.5;b=0.9;m=0.6;i<k*a^(-b*(y+m)^2)+0.05*G

四
我們知道我的世界里的方塊有類型之分(type),每種類型不止一種方塊,同一類型有不同data(比如羊毛下的35:1,35:2...),上色要解決的問題就是在凸起和凹陷的部分用不同的方塊
worldedit給我們提供了data=()和type=()工具,括號內(nèi)返回的是數(shù)字

這里先以最簡單的來舉例講解,如果我們打出//generate 35 data=1 y>0,就會在y>0的位置,生成35類型下data=1的方塊,即35:1 橘色羊毛

好,下面我們想一下,sin有什么特點,如果我們把sin()>0的部分用一種方塊<0的用另一種方塊,是不是就分開了!我們再想一下,也不一定以0為分界線,也可以是-0.5、-0.8、0.5。
這里就出現(xiàn)了另一個問題,具體怎么實現(xiàn)呢?沒關系,worldedit也給準備了,如下

如果學過c語言的都知道,第一個是判斷條件,第二個是判斷為真執(zhí)行的語句,最后冒號后的是判斷為假執(zhí)行的語句。我們試一下data=sin(18*atan2(x,z)+10*(y+1))>-0.6?4:13


五
下面就是最后一步了,如果前面的已經(jīng)足夠了,可以忽略這一步
這一步做的是交叉效果,辦法也很簡單,就是再加一個反方向的旋轉(zhuǎn)sin,然后用min(,)結(jié)合起來

這個應該不難理解吧先拿一個直觀的例子

套用在上一步的表達式內(nèi)就是
//generate 35 G=min(sin(18*atan2(x,z)+20*(y+1)),sin(18*atan2(x,z)-20*(y+1)));data=(G>(-0.7))?4:13;i=sqrt(x^2+z^2);k=0.9;a=6.5;b=0.9;m=0.6;i<k*a^(-b*(y+m)^2)+0.02*G
調(diào)整下系數(shù)以獲得不同效果



好了!恭喜你看了下來,希望能夠啟發(fā)你做出更多的效果
