【教程077】如何用MAXScript快速选择指定多边形
今天的教程还是教大家一些Max脚本的知识,据不完全统计,之前教过大家的MAXScript知识有:
创建对象——
如:sphere segments:24 radius:50
随机材质【教程035】——
如:$.material = meditMaterials[(random 1 3)]
如:b = sphere()
for i = 1 to 6 do copy b pos:[(i-1)*30, 0, 0]
随机移动、旋转和缩放的基本语句【教程071】——
如:move $ [x = (random -100 100), y, z]
for a in $ do rotate a (eulerangles (random -180 180) 0 0)
……
MAXScript的好处在于能够解决常规建模难以处理的问题,比如让一堆对象随机旋转任意角度,手动操作的话会累到手抽筋,而用max脚本也就一句话的事情。
在科研绘图中,“随机”是经常会遇到的字眼,各种random脚本的使用学习必不可少。但是今天我要教大家的是另一项功能,如何快速选择指定的多边形?
有人会问了,直接在多边形子层级用鼠标点击对应的多边形不就行了吗,我还费那个劲要输代码来实现,这不是脑子有病么!
那么,如果给你一个9×10的平面,让你快速选中下图红色区域的多边形,你是按着Ctrl键一个一个加选呢,还是用参数调节如着了魔一样的体积选择修改器呢?
如果换做MAXScript的话,以上这些操作不过是几行代码和按一次Shift+Enter运行的事情。
前提是,你得知道这些代码是什么意思。
其实,我不是一个专业的程序员,但谁说只有程序员才能写代码呢?只要你感兴趣,肯努力,肯花时间,哪怕是在街边卖莴苣的大婶,我也能教会你MAXScript。
对于我这种现学现卖的玩家,如果你怕我把你教坏了,以下内容就不必看了。如果你觉得确实能学到点儿东西,那这里的教程将是你的宝藏。
上面的十几行代码其实也就for循环语句是核心内容,前面的都是些准备工作,我们一行行来剖析(坐稳了,我要开车了):
1/
plane length:100 width:90 lengthsegs:10 widthsegs:9
意思是创建一个长度100,宽度90的平面,长度分段为10,宽度分段为9。下面是这一句单独运行的结果,没错的话你会得到Plane001。
2/
converttopoly $plane001
convert-to-poly,亦即将plane001转为可编辑多边形,MAXScript的方便之处在于你无需区分大小写,符号对了就能生效。注意这里plane001前面加了个$,我们说过$是选择的意思,因为在鼠标操作中我们也是先选中对象,再转为可编辑多边形的,这里是互相对应的。
3/
b = select $plane001
这句是选中平面对象,并将其命名为b。其实命不命名都没啥关系,这一步主要是选中这个对象。鼠标操作时我们会很自然地先选中对象然后操作,同样,在脚本编辑中,选择语句也是一个使用频率较高的句子,否则出了错都不知道什么原因。
以上3句运行完之后,会在脚本侦听器中返回如下结果,都是蓝色的说明没问题。
4/
sym = polyop.getnumfaces $
这一句的意思是得到选中对象的面数,即9*10 = 90。记住polyop.getnumfaces的表达方式就好。
5/
subobjectLevel = 4
选择多边形子层级,因为我们要设置多边形的id值,必须先切换到多边形子层级。在可编辑多边形中,多边形对应的是第4个层级。
现在返回结果如下:
6-13/
for i = 1 to sym do
(
if mod i 2 == 0 then
(
polyop.setfaceselection $ #{i}
polyop.setfacematid $ #{i} 2
)
)
重点来了!!这是一个for循环语句,之前有过很多次例子了。这里需要注意的有三处,一是余数的表达式mod i 2 == 0,表示当i除以2的余数为0,即i为偶数时;二是polyop.setfaceselection $ #{i}表示选择了第i个面;最后polyop.setfacematid $ #{i} 2表示将所选的第i个面的多边形id值设为2(因为默认的是1)。现在,我们已经将对应的多边形id值从1改成2了,一切就是发生的这么悄无声息。
14/
$.editablepoly.selectbymaterial 2
选择所有id值为2的面就可以了。
再比如,我们创建一个100×100的平面,长和宽分段各位50,每隔2个面选一个。只需将mod i 2 == 0改成mod i 3 == 0即可,运行得到如下结果。
如果在for循环中加一个多边形挤出随机高度的语句,将会得到高低起伏的柱状分布,如图所示。
总之呢,你要控制住自己,见好就收。学一点是一点,贪多嚼不烂。
今日教程到此结束,可能感兴趣的人不是很多。但教程是死的,人是活的,活学活用才是学习的目的啊。
更多教程欢迎查看往期教程,有问题可以在微信后台留言,或者加入我们的QQ学习交流群,1群将满,可加2群。(群号见下方图片)