在你眼中3dsMax也许只是个绘图软件,但在小编看来,这是一款很好用的数字图像化软件。只要我愿意,它可以化身Excel,化身Origin,甚至实现MATLAB的作图功能。这一切只因为她——MAXScript(max脚本语言)。

脚本编辑给了像我这类软件使用者极大的创作空间。颜色有RGB值,反射折射比有菲涅尔公式,全局光照还有蒙特卡洛算法,这个世界归根到底是可以数字化的,凭什么就非得按照一款软件自身设定的逻辑来描绘我脑海中的图像?

所以,请丢掉3dsMax绘图太随意,数理性不强的刻板偏见,今天的教程就教大家一波新操作:用max绘制一个标准的正弦波。

在3dsMax中,你可以轻轻松松画出一个圆、一段弧,甚至一条螺旋线,但函数图像千千万,如果要你画抛物线、双曲线呢?作为一个资深软件玩家,如果回答说不会,是不是有点尴尬?

那么,化解尴尬的第一步,我们先得知道Maxscript是怎么创建样条线的。

新建脚本,输入下列语句:

b=splineshape()

addnewsplineb

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

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

shapeb

运行之后,你会在视图中看到生成了一条线段,端点分别是(0,0,0)和(10,0,0)。这就是以上代码的含义,先生成一个样条线图形,然后给这个图形设置端点,最后连线。

 1.png

有了这个基础,创建正弦曲线就再简单不过了,y=sinx嘛,谁不知道?所以只要加一个for循环,正弦曲线就有了。

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条小线段组成的,创建成功后可以附加到一起,选择任一段,点击附加多个,全选其他线段后附加。一条正弦曲线就画完了。

3.png

除了正弦曲线外,可能有些同学还要画一些箭头表示波的强度,方法还是一样,只要把for循环中两个顶点坐标改成如下所示就好了:

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

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

运行后得到的图形如下,如果觉得太密,可以把n值设小一点。

 4.png

比如n=12,开启样条线渲染可见,径向厚度设为0.03时,运行如下语句:

 5.png

这里的箭头是用圆锥体创建的,一句完整的创建脚本为:

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

这些参数就是在创建圆锥体时会用到的参数,唯一要注意的就是坐标应随着x增大呈正弦曲线变化。

运行得到结果如下,π和2π处的两个圆锥箭头是多余的,可以删除。

 6.png

y方向的振幅乘以一个倍数系数就可以自由调节:

7.png 

另一个垂直方向的波则可以通过改变for循环中的坐标值,或者整体旋转90度来得到:

 8.png

至此,一个电磁波的三维空间示意图就画完了。有了正弦函数的绘制基础,其他函数还不是手到擒来?大家拿其他方程去尝试吧。

本期教程到此结束,感谢大家的观看。