P05 新建cube 选择cube 不选择cube 删除cube
MEL 命令:
select -cl ; // 取消选择
select -r pCube1 ; // 选择某个名字的物体
select -r pCube1 ;
doDelete; //删除这个物体
python:
from maya import cmds
cmds.polyCube(w=15,h=15,d=15) //新建长宽高多少的物体
cmds.select(clear=True) //取消选择
from maya import cmds
cmds.select(‘pCube1’,replace = True) //选择场景里某个名字的物体
cmds.delete() //进行一个删除的操作
物体移动旋转缩放操作
cmds.move()
cmds.rotate()
cmds.scale()
某个group里的所有物体进行centerPivot操作
cmds.xfrom(instanceGroupName,centerPivot=True)
P06 查找文档
右键下拉菜单 的 quick help 和 documentation
P07 变量
//////
P08 使用变量
from maya import cmds
cube = cmds.polyCube()
circle = cmds.circle()
cmds.parent(cube[0],circle[0]) // 放到父节点中
P09 节点
cube = cmds.polyCube()
// 转换节点 实际节点
//[“pCube1”,”polyCube1”]
转换(transfrom node)节点 负责将物体在场景里进行旋转移动缩放的变换
实际(constructor node)节点 创建节点 node的深度高度宽度 以及分支

windows/Node editor 进入节点编辑器
P10 P2 P3
使用P2
P11 For Loop
from maya import cmds
objectList = [cmds.polyCube,cmds.polyCone,cmds.polySphere]
for obj in objectList:
# print(“The object name is”,obj)
obj()
P12 While Loop
///////
P13 if else
P14
===============================
from maya import cmds
print(cmds.getAttr(‘pSphere1.translate’)) // 获得某个物体的某个属性
print(cmds.setAttr(‘pSphere1.translateX’,15)) //设置某个物体的某个属性
===============================
// 随机生成5个cube的位置
from maya import cmds
import random
numObjects = 5
mode = ‘Cube’
for n in range(numObjects):
if mode == ‘Cube’:
obj = cmds.polyCube()
elif mode == ‘Sphere’:
obj = cmds.polySphere()
elif mode == ‘Cone’:
obj = cmds.polyCone()
else:
cmds.error(“I dont know what to create”)
cmds.setAttr(obj[0]+’.translateX’,random.randint(0,20))
cmds.setAttr(obj[0]+’.translateY’,random.randint(0,20))
cmds.setAttr(obj[0]+’.translateZ’,random.randint(0,20))
P15 Functions
from maya import cmds
import random
numObjects = 5
mode = ‘Cube’
def createObject(mode,numObjects):
objList = []
for n in range(numObjects):
if mode == ‘Cube’:
obj = cmds.polyCube()
elif mode == ‘Sphere’:
obj = cmds.polySphere()
elif mode == ‘Cone’:
obj = cmds.polyCone()
else:
cmds.error(“I dont know what to create”)
objList.append(obj[0])
return objList
print(createObject(‘Cube’,3))
def randomize(objList,minValue = 0,maxValue = 50):
for obj in objList:
cmds.setAttr(obj+’.tx’,random.randint(minValue,maxValue))
cmds.setAttr(obj+’.ty’,random.randint(minValue,maxValue))
cmds.setAttr(obj+’.tz’,random.randint(minValue,maxValue))
objList = createObject(‘Cube’,5)
randomize(objList)
P16 选择
from maya import cmds
import random
numObjects = 5
mode = ‘Cube’
def createObject(mode,numObjects):
objList = []
for n in range(numObjects):
if mode == ‘Cube’:
obj = cmds.polyCube()
elif mode == ‘Sphere’:
obj = cmds.polySphere()
elif mode == ‘Cone’:
obj = cmds.polyCone()
else:
cmds.error(“I dont know what to create”)
objList.append(obj[0])
return objList
print(createObject(‘Cube’,3))
def randomize(objList,minValue = 0,maxValue = 50):
if objList == None:
objList = cmds.ls(selection=True) // 列出当前我们所选择场景里的物体
for obj in objList:
cmds.setAttr(obj+’.tx’,random.randint(minValue,maxValue))
cmds.setAttr(obj+’.ty’,random.randint(minValue,maxValue))
cmds.setAttr(obj+’.tz’,random.randint(minValue,maxValue))
objList = createObject(‘Cube’,5)
randomize(objList)
P17 String


使用%s可以避免这种错误
花括号:


P18 范围

P19 Share
import randomrizer
reload(randomrizer)
help function : 三重引号括住的内容
号来进行注解
P20 New editor

p23 user interface code - Windows
import importlib
importlib.reload(module)

不能有同样名字的window
defshowWindow():
name = "RandomizerWindow"<br /> ifcmds.window(name,query=True,exists=True): //删除已有打开的UI<br /> cmds.deleteUI(name)<br /> cmds.window(name)<br /> cmds.showWindow()
import importlib
import randomrizer
importlib.reload(randomrizer)
randomrizer.showWindow()
P24 添加界面元素


defshowWindow():
name = "RandomizerWindow"<br /> ifcmds.window(name,query=True,exists=True):<br /> cmds.deleteUI(name)<br /> cmds.window(name)<br /> cmds.showWindow()<br /> column1 = cmds.columnLayout()<br /> cmds.frameLayout(label="choose an object type") //如图一整个的frame layout<br /> <br /> cmds.columnLayout() //一行一行layout<br /> cmds.radioCollection("objectCreationTypeForit")<br /> cmds.radioButton(label="Sphere")<br /> cmds.radioButton(label="Cube",select=True)<br /> cmds.radioButton(label="Cone") //摁纽选择<br /> <br /> cmds.intField("numObjects",value=3) //输入整形数字<br /> cmds.setParent(column1) //回到父节点<br />#===another grid=====#<br /> frame = cmds.frameLayout("Choose your max ranges")<br /> cmds.gridLayout(numberOfColumns=2,cellWidth=200)<br /> foraxisin'xyz':<br /> cmds.text(label='%s axis' % axis)<br /> cmds.floatField('%s AxisField' % axis ,value=random.uniform(0,10))<br /> cmds.setParent(frame) //回到父节点<br /> cmds.rowLayout(numberOfColumns=2) //一列一列的layout<br /> cmds.radioCollection("randomMode")<br /> cmds.radioButton(label='Absolute',select=True)<br /> cmds.radioButton(label='Relative')<br /> cmds.setParent(column1)<br /> cmds.rowLayout(numberOfColumns=2)<br /> cmds.button(label='Create')<br /> cmds.button(label='Randomize')


P25 添加命令

对create button添加click事件,*args 代表传参到这里面,但可以不用管


P26


继承:


init方法在你调用class的时候自动创建
super function 重写类的时候 调用父类方法

P28 lining tool 设计骨架

P30 更好看的UI


加载图片
P33 支持其他顶点类型
API 2

API3 animation


,第一行还有个selectKey=True ,设置线性运动轨迹
API4 UI 制作



如何对齐
playbackOptions :start time of the animation

空白sperator


Button:

如何连上播放动画
import functools

改一下成partial

注意 textfield的时候是要设置text=True
要调用这个函数
再applycallback里加上这个
d
调用
API5
实现的功能:

储存locators
获得每个selection object里的translate attribute
第0个才是object的transfrom值
设置它为原先的之中
center pivot整一个group locator

新建一个attribute
