工作需要,学习了一些3dmax相关的脚本,在这里整理一下
1.软件架构和类视图
2.语言选择
1) maxScrpit:3dmax 官方语言。
2) python:官方已经将maxScript的功能集合入了python当中
3) C++:sdk语言,效率更高,功能更广泛。但需要对max有更加深入的了解。
第一次学习当然从maxScript和python当中选择了。python支持性更广,其它的一些DCC软件也会使用python开发。maxScript api则对初次开发比较友好。语言相差不大,就没有考虑通用性更强的python。
3.语言相关
1) maxScript是从上往下编译的语言,因此需要注意编译顺序
2) 下标从1开始
3) maxScript也是一门面向对象的语言
4) 不区分大小写
5) 自动GC
个人觉得需要注意的大概这些吧
4.具体对象相关
MaxWrapper(所有object类型的基类型) : value(所有类型的根类型)
Modifier : MAXWrapper and SpacewarpModifier
Displace_Mesh : SpacewarpModifier
Node :MAXWrapper
MaxWrapper : category (类名), .classes Array, read-only,classId, superClassID, creatable, localizedName ,nonLocalizedName ,dllName(如果是插件生成的类), copy and addModifier and isValidObj and isDeleted and getClassName and disable/enableRefMsgs(所有对象都有的方法), refs,notifydependents(通知controller更新)
常用的材质,纹理贴图,声音等派生自此基类
Node : 常见属性name, transform, pivot, material, pos/scale/rot, dir(z), isSelected, target(node)
场景对象,可派生light,camera,GeometryClass,shape等
Modifier : 修改器,常用的网格,uv,动画等都派生自这个修改器基类
SpacewarpModifier, 特殊类型的修改器,分为两种:1是直接绑定到spaceWrap节点的修改器,2是空间对象修改器,会和其它修改器一样直接创建和应用到node上面
SpaceCameraMap,SpacePathDeform,SpaceSurfDeform等派生自这个基类
5.代码侦听器
maxScript可侦听到大部分执行的逻辑,并打印相关代码,对开发者来说降低了很大的难度
6.visualScript编辑器
自动生成ui相关适配代码
7.功能
1)可重写3dmax大部分功能
2)插件功能不可监听/修改
3)目前发现的是修改器内的变形器功能的修改也监听不到
8.插件
1) 3dmax本身有相当数量大的插件,可先查看市面上有无类似的插件
2) 插件基本都是闭源的(刚开始学习的时候美术同学跟我说所有的插件都是开源的。。)
3) max脚本的开发确实能极大的提升美术的工作效率!