【1】了解Max Script
这是Max内置的脚本语言,可以很方便用来完成一些程序化或者快速完成一些机械性的操作,比如导入一千个模型,并且按照项目的特定规定,分类分大小分种类导入到不同文件夹下,人来完成这件事情将是非常无聊乏味和低效的。所以使用脚本来批量完成会更有价值。
【2】开始搭建一个我们的编程环境
我习惯了c++的高亮和自动补全,如果叫我用max自带的那个editor来做我会觉得十分痛苦。所以我们需要一个比较好的开发环境
首先下载最新版的max2017 然后再下载微软的VsCode,安装一下语法高亮插件,配置好这两个东西之后就可以开始啦。
首
【3】从一个小例子创建一个物体开始
首先我们需要创建一个max脚本文件然后把它保存在一个方便找的地方比如桌面。创建的话就单击max左上角的script选项栏然后点击newscript就可以啦,然后用VSCode打开,然后开始编写。
先从创建我们的第一个box开始
效果如下所示
下面来一行一行解释代码的意思
第一行:声明一个mybox的变量 然后创建一个 box对象,它的长宽高分别是20 然后把这个创建好的box对象赋值给变量mybox
第二行:修改这个box的名字为BlueBox
第三行:将box的颜色改为蓝色
第四行:将box的位置设置为 x=0 y=10 z=10
第五行:设置box的缩放为xyz 1.5倍
第六行 给box加上一个修改器,twist,设置修改器twist的angle为30
至此我们就已经学会了如何新建一个脚本 然后创建一个几何图形,然后对它进行纺射变换,给集合体加修改器。
再来做几个例子:
【4】复杂点的程序化思想创建物体,流控制
用循环创建一组box吧
for语句的书写格式和c++有点差别,do为循环体。注意作用域。
尝试一些其他的循环语句
这个是一个while do循环体,也有do while循环。两个的区别就是先执行一次再判断和先判断再执行。
再复杂一点,在循环中加一个if判断
可以看到我在y=300的位置创建了一个box,但是这与y=300的球重叠了,我们再用else语句限制一下
总体逻辑还是非常简单的稍微学过编程的很容易理解。主要还是熟悉一下maxscript的语法。
【5】函数
把逻辑封装在函数里面可以方便调用,我们把上一个例子的逻辑封装一下。一个函数的格式和函数的调用方法从下面的代码能一下子看出来了吧。函数声明除了使用function关键字外,还可以用fn
ydistance:500是函数的参数。:500是初始化这个参数给个默认值。
我们在调用函数的时候可以覆盖那个初始值,如果调用的时候不给新值覆盖则会用默认值。
下面是我覆盖了函数默认参数的效果。覆盖写法和调用如下
使用fn声明函数
【6】完成一个简单的插件
打开3dmax->Scripting->visual maxscriptEditor
这是一个可视化max脚本UI编辑器。我们在面板里创建一个button然后点击这个按钮的events
点击eventhandlers
会弹出一个脚本编辑器面板,这回对这个button进行绑定。然后关闭editeventhandler,然后保存。用vscode打开我们保存的这个ms文件你会看到如下代码
效果如下
至此我们已经上手编写max脚本了。后面两天再深入提高!