文章内容
在3dmax中,有连线控制器,表达式控制器,脚本控制器等三类常用的表达型控制器. 三类表达型控制器功能都十分强大,都是根据一些基本数据,通过表达型计算来给出相应的数值.但使用时稍有一些区别.
根据工作中的使用体验,总结整理如下表:
使用体验 | 连线控制器 | 表达式控制器 | 脚本控制器 |
---|---|---|---|
多个参数 | × | √(只能是标量,向量) | √(可以是标量,向量,对象,节点) |
变量储存和内嵌函数 | × | × | √ |
标量运算 | √ | √ | √ |
矢量运算 | √ | √ | √ |
基本数学函数 | √ | √ | √ |
判断运算符 | √(if then else) | √(特殊语法if()和vif()) | √(if then else) |
大小写敏感 | √ | √ | × |
总结 | 适合单参数简单计算,效率非常高 | 适合多参数简单计算,效率很高 | 适合多参数复杂计算,会降低一些视口帧率 具有maxscript完整功能,理论上可以实现无限的效果,甚至部分max病毒就是以脏化此控制器实现的. |
如上表,几个控制器效率不同,功能丰富性也不同,一般可以这样排序:
依据性能和效率 连线控制器>表达式控制器>脚本控制器 (一般也尽量以左侧这样的优先度来选用控制器)
依据功能丰富性 脚本控制器>表达式控制器>连线控制器
工作中,连线控制器和表达式控制器其实就足够解决大多数绑定问题,尤其是配合限制控制后,9成的绑定问题几乎都可以使用连线控制器和表达式控制器来解决.
注意
一般在使用脚本指定控制器变量时可以使用 #name 的格式传递名称,但是实测这样的写法有时会导致首字母变成大写,导致在表达式控制器等大小写敏感的控制器中引发异常,所以使用 “name” 来传递字符串会更好.
参考文档
https://knowledge.autodesk.com/support/3ds-max/learn-explore/caas/CloudHelp/cloudhelp/2018/ENU/3DSMax-Basics/files/GUID-B8CBF0C7-B901-4A87-8D20-778BBE12BEA6-htm.html
https://knowledge.autodesk.com/support/3ds-max/learn-explore/caas/CloudHelp/cloudhelp/2018/ENU/3DSMax-Animation/files/GUID-FC1E10C2-2057-4E83-B54A-E5E9FF2694C6-htm.html