在 3ds max 中如何使用脚本语言来工作
摘 要:本文主要介绍了 3ds max 中的脚本语言 MAX Script 的主要功能,并简单介绍了
脚本语言的编制及其 应用 技巧。 关键词:脚本语言、MAX Script、函数表达式 所谓脚本
语言,即在应用程序中由用户根据由应用程序以供的命令集,自己编写的程序段,用来简
化程序的操作过程或对应用程序进行扩展。像许多应用程序一样,3DSMax 也有自己专门
设计的脚本语言 MAXScript,它是像 3D Studio MAX 一样面向对象的,有许多对于 MAX 用
户界面中特征和结构,带动画关键帧的动画模式,并通过层次改变场景对象对应于 MAX
的对象层次。是可以调用大部分 c++函数的,和 MAYA 的 MEL 语言也有很多的相通之处
。对于三维软件的高级用户来说,掌握了较全面的技术后发现现有的软件已无法全力表现
出她们的思想,他们需要一种可以随时扩展软件工作能力的工具,可以自己开发程序外挂
来帮助工作已经是必需的要求了。MAXScript 程序给用户提供了更多的想象空间,也是高
级用户的必修课。 MAX Script 是 3ds max 中的插入脚本语言,它为用户提供了以下功能
: ·描述 3D Studio MAX 的全部用途,如造型、动画、材质、渲染等; ·将脚本集成在用户
应用面板卷展栏工作界面上,给脚本一个标准的 MAX 用户接口; ·使用插入的文件的 I/O
,建立用户输入/输出工具; ·写入可以访问全部场景状态的过程控制器; ·建立批处理工
具,例如批处理渲染脚本; ·通过 OLE Automation,与外部系统建立活动接口。 表达式
控制器和 MAXScript 的基本结构和 VB 类似,但由于 3DSMax 是图形程序,所以在
MAXScript 中有许多绘制图形的命令,这些命令类似于 AUTOCAD 中的 LISP 文件命令。这
样的命令不需要编辑,可直接在程序中运行,并可直接看到运行结果。 在 3ds max 的
MAXScript 这个菜单中有一个记录宏(Macro Recorder),选中这一项,在以后绘制图形时
,每一步的操作都会自动转化成脚本语言,打开同一菜单下的脚本记录(
MAXScript Listener),可以看到每一步操作的命令形式,通过这种 方法 可以初步了解
MAXScript 的基本格式,也可以通过复制命令简化编程步骤。下面以一个简单的实例加以
说明。 1、打开记录宏命令,打开脚本记录。 2、在任意窗口划一直线和一个球体。
3、为球体制定位置控制器为路径,选择直线作为运动路径。 4、打开动画记录按钮
,将时间调到 100 帧。 5、将球体在路径中位置调到 50(%Along Path),关闭动画记
录按钮。 下面是相应的脚本语言: transform:(matrix3 [1,0,0] [0,0,1] [
0,-1,0] [,-007,]
) isSelected:on Sphere radius: smooth:on segs:32 chop:0 slice:off sliceFrom:0
sliceTo:0 transform:(matrix3 [1,0,0] [0,0,1] [0,-1,0] [,-
006,]
) isSelected:on $Sphere01 $. = path () $. =
$Line01 tool animmode set animate on sliderTime = 100f select $Sphere01
4.$. = 50 max tool animmode set animate off 现欲使球体前
50 帧运动 1/4 路程,后 50 帧运动 3/4 路程。则根据上面记录编写程序如下(其中绘制
过程省略): max tool animmode set animate on ’开启动画记录
for t=1 to 100 by 1 do at time t ’设置动画范围从 1 到
100 ( $ = path () ’指定路径控制器
$ = $line01 ’选择路径 if t<50 then ’当在 50 帧以内时
( $ =t/2 ’路程为 0 到 25% ) if t>=50 then ’当在 50 帧
以后时 ( $ =t*75/50-50 ’路程为 25%到
100% ) ) max tool animmode set animate off ’关闭动画记录
这样就完成了一个简单的脚本语言的编制。可见通过这种 方法 编制脚本语言是一种简
便快捷的好方法。另外脚本语言中还有很多函数,可通过相关资料查询其用法,这里就不
再赘述了。 下面讲一点 MAXScript 在 应用 方面的技巧: 1、用 MAXScript 控制布尔运
算 先生成一子弹状物体起名 bullet,再生成一与其等直径圆柱和一个立方体,调整子弹
头部指向 x 轴负向,其轴心在子弹 x 轴最小值处,立方体和圆柱体轴心在 x 最大值处,对
齐立方体和圆柱体轴心,(注意在使用 MAXScript 时轴心的位置非常重要),关联复制立
方体和圆柱体,复制后的物体分别起名为 box、bar(圆柱体),将复制后的物体移开便于
观察,对原物体进行布尔运算,这是通过对复制后的物体进行控制即可控制布尔物体。下
面的程序通过控制圆柱体的高度来控制子弹在立方体上打孔的深度。(在此为简化程序未
考虑加减速 问题 ,有兴趣的读者可加以补充)
animate on for t=1 to 100 by 1 do at time t ( $=3000-10*t ’子弹匀速向 x
轴负向运动 if $-$>=0 then ( $=0 ’当子弹未接触到立方
体时洞深为 0 ) if $-$<0 then ( $ = $-
$ ’当子弹未接触到立方体时洞深 为子弹头距立方体右边的距离
if $>250 then ’圆柱体高度即洞深不超过立方 体厚度
( $=250 ) ) ) animate off 2、MAXScript 对灯光的控制 通过对灯光的三
种颜色分别控制可以模仿霓虹灯的效果,当然通过开关控制器就可以较简单的控制灯光,
但那样的控制方式比较单调,无法形成霓虹变幻莫测的效果,用 MAXScript 控制灯光产生
的效果几乎可以乱真,这里只提供一种思考不做详细介绍,希望广大爱好者们开动脑筋,
发挥想象创造出完美的场景。 3、MAXScript 对模型的变形控制 物体的变形动画是动
画的一种重要的形式,用 MAXScript 控制模型 Modify 面板中的各种变形修改命令,可以
产生多种真实的效果,如飞翔、摇摆、扇动、磨光等。 利用脚本可以帮助大家更好的
控制场景元素,生成意想不到的效果。到了这里我想大家一定对 MAXScript 有了简单的了
解,但作为一种脚本语言它还有很大的潜力等着我们去开发,希望 MAXScript 能成为你的
一种超强的辅助工具,使你在三维领域展翅翱翔