MY BLOG DIRECTORY:
YivanLee:专题概述及目录INTRODUCTION:
对于天天使用C++的人来说,学习和使用Maya脚本我觉得完全就像砍瓜切菜一般容易,唯一的难点在于记各种API以及熟练度上。下面我将记录一些maya里的脚本代码,也方便我日后Ctrl+C/V,我觉得三个小时学会Maya python脚本编程完全足够了。
C++派系出身的人写python的时候需要注意以下几点:
(1)请忘记类型这个概念,python中一切皆对象
(2)‘=’不是赋值,而是绑定一个名字
FORWARD DECLARATION:
下面是文章内容目录:
- Maya scripting basic concepts
- Create a poly
- Move, Scale, Rotate
- Create instance
- Loop Create Instance
- Random position
- Hide Object
- Group Objects
- Reset pivot
- Select Objects
- Object Type
- Create Constraint
- Animation key operations
- Create a window UI
- Add UI Elements Into Window
- Add/Get/Set Attribute
- Reconstruct Name String
- Add Expression
- Create a file or read write it
- Get vertex array in mesh object mode
- Write Vertex Data into file
- Save the file to the specified location and call out the selection path window
- Save maya file
- Snap shot
- Loop search Children or parent
MAIN CONTENT:
【1】Maya scripting basic concepts
在开始Maya编程之前一定要知道的是Maya的设计思想就是节点式。
这个和Unity很类似,一个Transform下面装一个Shape,Transform节点里包含了物体的位置,缩放,旋转等信息。ShapeNode里包含了顶点,UV等模型形状信息。
Transform:
Shape:
而一个Cube就是一个表,拿场景中的盒子为例
【2】Create a poly
import maya.cmds as cmd
cubeList = cmd.ls('myCube')
if len(cubeList) > 0:
cmd.delete(cubeList)
pCube = cmd.polyCube(w = 10, h = 10, d = 10, name = 'myCube')
首先导入Maya的cmd然后从场景里找到是否存在一个叫myCube的Node列表。如果这个列表有长度,说明这个Cube已经创建了,需要先删除它然后重新创建。polyCube这个返回的是一个列表
创建求或者其它图形同理:
pCube = cmd.polyCube(w = 10, h = 10, d = 10, name = 'myCube')
pSphere = cmd.polySphere(sx = 10, sy = 10, r = 5, name = 'mySphere')
pCylinder = cmd.polyCylinder(sx = 10, sy = 15, sz = 5, r = 5, h = 10, name = 'myCylinder')
pPolyTorus = cmd.polyTorus(r = 10, sr = 1, sx = 20, sy = 4, name = 'myTorus')
ls方法可以拿到Maya场景里的Node,并且把它存到一个列表里返回。因为Maya中物体的名字是唯一的所以上述代码是通过名字来拿物Node的。还可以通过物体类型来拿场景中的某一类物体,还可以通过选择列表拿物体,这些后面有论述。
【3】Move, Scale, Rotate
import maya.cmds as cmd
pCube = cmd.polyCube(w = 10, h = 10, d = 10, name = 'myCube')
cmds.move(0, 10, 0, pCube)
cmds.scale(2, 2, 2, pCube)
cmds.rotate(45, 45, 0, pCube)
也可以使用xform来设置一个transform node的属性。
【4】Create instance
import maya.cmds as cmd
pCube = cmd.polyCube(w =