3Ds Max基础(杂)

写在前面

阅读本文,你几乎不会有什么收获
主要是MaxScript语法基础、工具、Max的fx shader
换电脑了,10700F果然比6300HQ编译快亿点
UE4的Slate真难用,幸亏有DetailsView,不然做Plugin都tm裂开

一、基础语法

写的很粗,主要了解一下怎么写

1. 数据类型

1.1 操作符

<value> == <value>
<value> != <value>
<value> as <class> //将数据转换为特定类型

1.2 方法

打印:

print<value>
format<format_string>{
   <value>}[to:<stream>]

format "name:% pos:%"  obj.name obj.pos

判断

classOf<value>
superClassOf<value>

isKindOf<value><class>
issTructDef<value> //value是结构定义,返回true
isStruct<value> //是结构类的数据,返回true
isController<value> //是控制器,返回true

getHashValue<value><Integer oldHashValue> //如果是合法的数据类型,返回整型Hash,如果是非法,返回undefined

1.3 基本数据类型

  • Number
    • Float
    • Integer
  • String
  • Name (主要用于从函数参数传递中选中指定的一种)
  • Boolean (True、False 或 On、Off,操作符 单目not,双目and、or)
  • Color
    Color <r> <g> <b> [<a>]
    <point3> as Color
    
  • Point3
    Point3 <x> <y> <z>
    <color> as Point3
    
  • Point2
  • Quat (方向的压缩形式,提供了操作四元代数的方法)
    quat <x> <y> <z> <w>
    
  • AngleAxis (方向的表示方法,同上)
  • EulerAngles (方向的表示方法)
  • Matrix3 (4x3转换矩阵)
    matrix3<point3><point3><point3><point3>
    
  • Box2 (定义一个二维矩阵区域)
    	Box2 <x> <y> <w> <h>
    	```
    
  • BitArray (用于存储选择简捷)
  • Time
  • Interval (用于代表一个时间段)
    Interval <start.time> <end.time>
    
  • Bitmap (提供对位图的存取)
  • Stream (用来格式化和保存字符类数据)
    • FileStream (文件数据流,用来在MAXScript 里对文本文件进行 I/O 操作)
    • StringStream (用于操作很长的String值)
    • WindowStream (运行用向一个Script Editor窗口输出字符)

1.4 特殊数据类型

  • undefined (所有没有初始化的变量和数组成员都是这个类型)
  • OK (用于没有确定意义返回值的函数和表达式的返回值。。FReply?)
  • unsupplied (用来判断函数调用时,形参有没有被赋值)
    if var == unsupplied then
    	var = 0
    
  • DontCollect (用于For循环中表明那些值不被收集)

1.5 高级数据类型

  • Structure
    struct <struct_name>(<member> {
         ,<member>})
    
  • MaxKey (代表某个控制器的一个关键帧)
  • NoteTrack (用于在脚本插件里给MAXWrapper对象添加一些用户定制信息)
  • Collection (集合类数据,可以用来为集合内的元素调用一次函数)

1.6 集合类数据类型

  • Array
    #(<value>, <value>...)
    #()
    
  • PathName (用来指定对象的层级结构)
  • ObjectSet
  • SelectionSet (选择集,工具栏里 Name Selection Set)
  • SelectionSetArray
  • NodeChildrenArray (场景中节点的直接子对象们,用于遍历)
  • VertexSelection (Mesh的顶点选择集)
  • FaceSelection
  • EdgeSelection
  • MaxKeyArray (关键帧数组)
  • ModifierArray (修改器数组)
  • MaterialLibrary (材质库)
  • ArrayParameter (数组参数类)

淦哦,Max为啥不Array<Class>

2. 变量和表达式

2.1 变量赋值

<destination> = <expr>

Swap <destination1> <destination2>

2.2 变量的作用域

global a
local b

2.3 持续型全局变量

与场景一同储存,打开场景后就会恢复

persistent global a

2.4 MaxScript变量的特性

  • 类型自由
    x = "foo"
    x = 2
    
  • 变量内存空间分配
    heapSize += 2000000  // +2MB
    
  • 手动内存回收
    gc()
    

2.5 块表达式

最后一个表达式求值的结果作为表达式的返回值

Float a =
(
	b = 1 + 1	
)

2.6 关联表达式

关联表达式可以让用户在用户界面中一样创建动画和操作3ds max对象

  • animate (关键帧)
  • at level、in (找到场景中的节点对象)
  • at time (对应用户界面的时间滑标)
  • coordsys (对应工具栏Reference Coordinate System)
  • about (对应主工具栏 Rotate | Scale Transform Center)
  • undo (控制脚本里对场景的改变是否可以取消)

3. 程序控制流程

3.1 if

if <expr1> then <expr2> [else <expr3>]
if <expr1></
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值