从零开始
1 | from maya import cmds |
maya创建了一个物体,但是其实在这里maya脚本并没有获取到这个创建的物体
1 | cmds.polyCube() |
本身是一个命令command,其实返回了这个物体作为一个list
1 | cube = cmds.polyCube() |
在之前的==过期教程==我们了解到,一个属于Transform Node,一个属于Shape Node
实际上pCube1是这个立方体的名字,在大纲可以看到,而polyCube1是创建这个立方体的Maya Node的名字
1 | cubeShape = cube[0]#这样就把pCube1取出来了 |
1 | cmds.setAttr("pCube1.tx",lock = True)#锁定立方体的TranslateX属性 |
这样子物体的立方体被锁定了,但是父物体的circle还是正常的,依然会带动子物体变化
1 | cmds.select(circleShape) |
MayaAPI
cmds
- MEL
- 可交互性
- 会在窗口中打印命令
- 只能用于脚本
- 只能在maya中使用
- MEL
OpenMaya
- C++ / C#(only for windows)
- 不可交互
- 需要编译
- 可以在maya外使用
- 只能用于插件
- 性能更优
- C++ / C#(only for windows)
Python
- 两种API均可以使用
- 可以用于插件或脚本
- 可以在maya外使用
- 性能不如C++/C#
- 简单,有社区
Maya-python API
- cmds
- 原本是为MEL设计的
- 语法风格不太python化
- 性能不错
- 过于繁杂
- 物体通过name来处理
- OpenMaya
- 两种版本
- version1 built for C++
- version 2 built for python
- 原本是为C++设计
- 语法风格不太python化
- 非常繁杂
- 更难使用
- 高性能
- 直接处理物体
- 两种版本
- PyMEL
- warps both cmds and OpenMaya
- 语法更符合python
- 不太稳定
- 直接处理物体
Nodes in maya
maya主要影响物体属性,属性通过名称获得
1 | polyCube1.input |
在api中,attributes被称作plugs,可以给plug赋值
也可以和其他plug进行连接