在你眼中3dsMax也許只是個(gè)繪圖軟件,但在小編看來,這是一款很好用的數(shù)字圖像化軟件。只要我愿意,它可以化身Excel,化身Origin,甚至實(shí)現(xiàn)MATLAB的作圖功能。這一切只因?yàn)樗?mdash;—MAXScript(max腳本語言)。

腳本編輯給了像我這類軟件使用者極大的創(chuàng)作空間。顏色有RGB值,反射折射比有菲涅爾公式,全局光照還有蒙特卡洛算法,這個(gè)世界歸根到底是可以數(shù)字化的,憑什么就非得按照一款軟件自身設(shè)定的邏輯來描繪我腦海中的圖像?

所以,請(qǐng)丟掉3dsMax繪圖太隨意,數(shù)理性不強(qiáng)的刻板偏見,今天的教程就教大家一波新操作:用max繪制一個(gè)標(biāo)準(zhǔn)的正弦波。

在3dsMax中,你可以輕輕松松畫出一個(gè)圓、一段弧,甚至一條螺旋線,但函數(shù)圖像千千萬,如果要你畫拋物線、雙曲線呢?作為一個(gè)資深軟件玩家,如果回答說不會(huì),是不是有點(diǎn)尷尬?

那么,化解尷尬的第一步,我們先得知道Maxscript是怎么創(chuàng)建樣條線的。

新建腳本,輸入下列語句:

b=splineshape()

addnewsplineb

addknotb1#corner#line[0,0,0]

addknotb1#corner#line[10,0,0]

shapeb

運(yùn)行之后,你會(huì)在視圖中看到生成了一條線段,端點(diǎn)分別是(0,0,0)和(10,0,0)。這就是以上代碼的含義,先生成一個(gè)樣條線圖形,然后給這個(gè)圖形設(shè)置端點(diǎn),最后連線。

 1.png

有了這個(gè)基礎(chǔ),創(chuàng)建正弦曲線就再簡(jiǎn)單不過了,y=sinx嘛,誰不知道?所以只要加一個(gè)for循環(huán),正弦曲線就有了。

n=120

fori=1tondo

(

b=splineshape()

addnewsplineb

addknotb1#corner#line[2*pi*(i-1)/n,sin(360*(i-1)/n),0]

addknotb1#corner#line[2*pi*i/n,sin(360*i/n),0]

shapeb

b.wirecolor=red

)

得到的曲線如圖所示

 2.png

這條正弦曲線是由n條小線段組成的,創(chuàng)建成功后可以附加到一起,選擇任一段,點(diǎn)擊附加多個(gè),全選其他線段后附加。一條正弦曲線就畫完了。

3.png

除了正弦曲線外,可能有些同學(xué)還要畫一些箭頭表示波的強(qiáng)度,方法還是一樣,只要把for循環(huán)中兩個(gè)頂點(diǎn)坐標(biāo)改成如下所示就好了:

addknotb1#corner#line[2*pi*i/n,0,0]

addknotb1#corner#line[2*pi*i/n,sin(360*i/n),0]

運(yùn)行后得到的圖形如下,如果覺得太密,可以把n值設(shè)小一點(diǎn)。

 4.png

比如n=12,開啟樣條線渲染可見,徑向厚度設(shè)為0.03時(shí),運(yùn)行如下語句:

 5.png

這里的箭頭是用圓錐體創(chuàng)建的,一句完整的創(chuàng)建腳本為:

c=Conesmooth:onheightsegs:1capsegs:1sides:24height:0.18radius1:0.065radius2:0.01mapcoords:onpos:[2*pi*i/n,sin(360*i/n)-0.18,0]wirecolor:blue

這些參數(shù)就是在創(chuàng)建圓錐體時(shí)會(huì)用到的參數(shù),唯一要注意的就是坐標(biāo)應(yīng)隨著x增大呈正弦曲線變化。

運(yùn)行得到結(jié)果如下,π和2π處的兩個(gè)圓錐箭頭是多余的,可以刪除。

 6.png

y方向的振幅乘以一個(gè)倍數(shù)系數(shù)就可以自由調(diào)節(jié):

7.png 

另一個(gè)垂直方向的波則可以通過改變for循環(huán)中的坐標(biāo)值,或者整體旋轉(zhuǎn)90度來得到:

 8.png

至此,一個(gè)電磁波的三維空間示意圖就畫完了。有了正弦函數(shù)的繪制基礎(chǔ),其他函數(shù)還不是手到擒來?大家拿其他方程去嘗試吧。

本期教程到此結(jié)束,感謝大家的觀看。