Maxscript基础常见语法

/* Maxscript基础常见语法
一、基础常见语法

前言:常用类型
integer:整数
float:浮点数(即允许带小数)
string:字符串,数值外要带有双括号,例如 "hello world"
boolean:真\假 值,也用来表示打开和关闭,可以使用 true,false,on,off
point2:二维坐标,两个数字之间用逗号分隔,外加方括号,例如 [10,20]
point3:三维坐标,三个数字之间用逗号分割,外加方括号,例如 [10,22,133]
color:颜色RGB数值,在圆括号以 color开头,加三组数值分别表示RGB值,以空格分隔,例如纯白色为 (color 255 255 255)
提示:注意一下各个变量的写法和格式
1.美圆符号 $
$ 的意思表示我们当前所选择的物体。
$还有另一个类似的用法:在它后面接物体的名称,比如输入 $Box01,就等于告诉MAXScript说我们要对名为Box01的物体进行操作。属性修改方法同样适用(比如 $box01.height)。
要查看查看所选物体的属性,用这样格式的命令“$.属性”,比如 $.radius 和 $.height 分别表示查看半径和高度。
只输入属性名称,那Listener只会告诉你该属性的数值。而如果想要修改它为一个新值,则使用 $.属性=数值 的格式,如$.length = 12.5。
提示:对于Listener中的命令,输入后最好用小键盘的回车,因为小回车会命令MAXScript立即执行该行代码,而大回车在某些情况下会等待输入更多条件语句。
2.“Show” 命令
show可以在MAXScript Listener中显示一个物体的属性名称列表。
显示形式:.属性名:数值类型
例如选择一个box之后输入 show $,就可以看到Listener返回了这样的信息:
.height : float
.length : float
.lengthsegs : integer
.width : float
.widthsegs : integer
.mapCoords : boolean
.heightsegs : integer
false
当一个物体的属性中还有次级属性的时候,我们也可以通过show命令来查看次级属性的清单.例如要查看一个box的材质,就可以输入 show $Box01.material,更深一级以此类推。
提示:并非物体的全部属性都会按show的命令显示出来,所有物体以及特定类型的物体所共有的属性如 name, material,和renderable等等,都不会在这里显示出来。同时,物体被附加的修改器、材质等等的属性也不会显示。
3."move," "rotate," "scale," 和 "in coordsys"(移动、旋转、缩放、坐标系)*/
move $Box01 [10,0,0]  --相对位移:将Box01沿X轴向移动10个单位。
$Box01.position = [10,0,0]  --绝对位移:将这个Box放在世界坐标的10,0,0位置上。
rotate $Box01 (eulerAngles 90 90 0) --相对旋转:将物体沿XY轴各旋转90度。
--使用的是eulerAngles旋转值输入法;即X旋转和Y旋转再加上个Z旋转。
scale $Box01 [.5,.5,.5]
--其中的.5就是0.5,在大多数电脑数字输入中,如果小数点前为0都可以省略,直接写点接小数。
--4."for"循环实现自动化
for i in selection do (i.wirecolor = color 0 128 0)
--for 某些变量 in 被操作物体清单 do 要做的事情
--selection:"当前所选物体集合";设置物体的属性为一个指定数值,在这里所做的是把物体的“网格色”(即默认无材质状态下的显示颜色)设置为绿色。
for i in $*Omni* do (i.multiplier = i.multiplier*0.5)
--上面的脚本会将名称中带有Omni字样的所有灯光亮度减半。
for i in selection do i.material = $Box01.material
-- 这一行则是将所选择的所有物体赋予和Box01相同的材质。
for i in geometry do (i.motionblur = #image; i.motionBlurOn = ture)
-- 这相当于将场景中全部的几何体打开运动模糊并将其模式设置为image方式。
-- 我们也可以在do 的后面将多个命令放在一起使用,只要在它们外面加上括号,命令之间用分号隔开就可以了
-- 5.“where”与“classOf”
-- 在一个for循环中,where 为我们提供了一个过滤开关,它可以在循环运行中的每一次操作之前对物体属性是否“合格”进行判断。如果判断为“是”,则进行指定的操作,否则就将该对象忽略掉。
for i in selection where (false) do 操作
-- false即“假”,因此忽略操作该物体,而当下列情况时:
for i in selection where (true) do 操作
-- 则对目标执行操作。
-- 一些需要自己实际实践的例子:
for i in $Box* where (i.height > 10) do i.height = 10
--↑找出名称以Box开头并且高度大于10的所有物体,将其高度设置为10
for i in $Box* where ((i.height > 9) and (i.height < 11)) do i.height = 10
--↑找出名称以Box开头并且高度在911之间的物体,将它们的高度设置为10
for i in geometry where (i.material == undefined) do i.isHidden = false
--↑将所有未赋予材质的几何体取消隐藏状态
for i in shapes where (i.baseobject.renderable == ture) do i.name = "RS_" + i.name
--↑将所有可渲染样条曲线的名称前加上“RS_”前缀(以便于按名称选择)
--样条曲线Spline物体的 renderable 属性要使用 object.baseobject.renderable 进行访问和修改。
classOf $Box01
--用来查询类别名。
--在使用classOf 修理我们的灯光脚本之前,还有一件事得注意。如果,我们的box被加上了一个修改器,比如Bend弯曲,那么:
--返回值就成了 Editable_mesh而不是Box了。因为默认情况下所查询到的是物体当前的状态,而不是它的原始类别(除非我们将修改器关闭)。如果需要忽略修改结果查询物体的原始类别,这样做:
classOf $Box01.baseobject
--此时(相当于查询物体所具有的baseobject属性)MAXScript就会着眼于修改堆栈的最底端的物体状态返回所需的值了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值