获取对象命令ls:
- 返回场景中所有的节点列表:
import maya.cmds as cmds
cmds.ls()
精确到选择的物体:
import maya.cmds as cmds
cmds.ls(selection = True)
精确到类型:
import maya.cmds as cmds
cmds.ls(type = "类型", long = True)
# type 是指的精确到保存类型是什么
# long 是指的保存是以长名(路径名)
名字中带有某某字符的:
import maya.cmds as mc
mc.ls(“*_cn_*”)
#可以用* 和 ?当作占位符,*是可以表示多个字母,?是代表一个字母
ls的参数
文件操作
file() 命令
mc.file(new = True) #新建场景,可能出现创建失败
mc.file(new = True,force/f = True)#强制创建场景(建议提前保存,否则会出现前面的东西全部删除)
mc.file(rename = "文件的地址")
mc.file(save = True,type = "mayaAscii") #保存文件
mc.file("文件的地址",o = True,f = True) #强制打开文件
mc.file(q = True,sn =True,shn = True) #sn 场景名字 shn 文件名 获取文件的场景名
mc.file("导出文件路径",exportSelected = True,typ = "mayaAscii") #导出选择的物体
mc.file("导出文件路径",exportAll = True,typ = "mayaAscii")# 导出所有
mc.file("导入文件路径",i/import = True,ns = True) #i是导入 ns是返回文件的来源
mc.file(q = True,r = True) #获取导入的节点
mc.file("导入的路径",q= True,r=True) #获取从导入路径的导入节点
cmds.internalVar(userAppDir=True) #获取当前文件夹的目录
重命名命令rename():
mc.rename(oldName,newName) #返回类型:返回节点新名称
查询层级关系:
listRelatives()命令 返回物体的父类或子类
-
listRelatives("Mery_grp", parent = True) #parent属性是获得Mery_grp的父物体
-
listRelatives("Mery_grp", chidren = True) #chidren属性是获得他的子物体
-
listRelative("Mery_grp", allDescendents = True, fullPath = True) # allDescendents 是获得他此节点下所有的后代,包括子代 孙代 fullPath是指的是此节点自身从根节点开始的完整路径
-
listRelatives参数表:
修改层级关系 :
parent()命令 设定父级子级关系
cmds.parent("子物体","父物体")
cmds,parent("子物体",World=True) #解除父子层级关系
parent参数表:
给物体打组:
group 命令
cmds.group(mc.ls(sl = True ),name = "组名") #把选中的物品打组,并命名
group命名参数
如何获取和更换物体的变换信息:
move 移动:
mc.move(x,y,z,"物体名字", r = True) # r是相对移动,相对于当前位置移动
mc.move(x,y,z,"物体名字", a = True) # a是绝对移动,坐标相对于世界坐标移动
rotate 旋转 :
x y z 是相对x,y,z的度数
mc.rotate(x,y,z,"物体名字", r = True) # r是相对旋转,相对于当前位置旋转
mc.rotate(x,y,z,"物体名字", a = True) # a是绝对旋转,坐标相对于世界坐标旋转
scale 缩放:
mc.scale(1,1,1,"物体名称",r = True) # r是相对缩放
mc.scale(1,1,1,"物体名称",a = True) # a是相对缩放
xform() 命令 获取物体的属性 :
_ts = mc.xform("物体的名字1",q = True,t = True)
#q是获取某个属性,t是获得transform属性 返回世界物体坐标
mc.xform("物体的名字2",t = _ts) #将物体1的移动属性赋给物体2,即控制2移动时,可以同步控制1
#若是旋转,可以将t 换成ro
#若是想要两个物体完全重合,则需要加上属性ws = True(世界坐标开启,默认为个体坐标(objectSpace))
节点创建:
各种创建:
mc.polySphere() #创建一个球,属性 r:半径 sx:x轴上的细分 sy:y轴上的细分
mc.circle() #创建一个圆环,属性 s:细分数 nr:指向那个方向(nr是一个向量值,即为(0,1,0)等 )
mc.curve() #创建曲线, 属性 d:曲线的曲率 p 是曲线经过的点
mc.joint() #创建骨骼, 属性 p: 骨骼坐标
createNode 创建节点
mc.createNode("类型") # 创建节点,属性:类型,可以创建任意节点
createNode 参数
获取节点的类型和属性
nodeType()命令 返回节点类型
mc.nodeType(节点) # 返回节点的类型
listAttr()命令 返回节点属性
mc.listAttr("物体名字") #返回所有属性
mc.listAttr("物体名字",k = True) #返回可以k帧的属性
mc.listAttr("物体名字",l= True) #返回可以锁定的属性
mc.listAttr("物体名字",ud= True) #返回可以自定义的属性
getAttr()和setAttr()命令 查询和修改属性
mc.getAttr("属性")
mc.setAttr("属性",数值) #修改属性 对于字符串属性,需要加上type = “string” 属性
属性的连接和断开
connectAttr() 命令 // disconnectAttr() 命令 连接节点//断开链接
cmds.connectAttr("pCube1.ry","pSphere1.ry")
#如果无法链接,可能是两个物体中被链接过,可以使用 f = True 去强制链接
cmds.disconnectAttr("pCube1.ry","pSphere1.ry")
获取链接
istConnections()命令
mc.listConnections("节点名称",s=True,d = False) #获取这个节点的上游节点,不获取下游
#(参数)s 上游 d 下游 p 连接属性 t 节点类型
mc.listConnections("节点名称",s=True,d = False,p = True,t = "mesh")
#默认上游下游都获取
connectionInfo()命令
mc.connectInfo("节点名称.节点属性",sfd = True) #获取输入他的属性 sfd 上游 dfs 下游
# isSource 判断是否是源头 isDestination 判断是否是被链接的
创建约束
点约束 pointConstraint() 可以实现约束,也可以查询约束
mc.pointConstraint("约束对象","被约束的对象",mo = True, name = " ball_cons ")
#mo 保持偏移
mc.pointConstraint("查询对象",q = True, n =True) #返回约束节点的名字
mc.pointConstraint("查询对象",q = True, tl =True) #返回约束他的物体
mc.pointConstraint("查询对象",q = True, wal =True) #返回权重比例
旋转约束 orientConstraint()
mc.orientConstraint("约束对象","被约束的对象",mo = True, name = " ball_cons ")
#mo 保持偏移
mc.orientConstraint("查询对象",q = True, n =True) #返回约束节点的名字
mc.orientConstraint("查询对象",q = True, tl =True) #返回约束他的物体
mc.orientConstraint("查询对象",q = True, wal =True) #返回权重比例
父子约束 parentConstraint() 同时约束物体位移和旋转
mc.parentConstraint('被约束的',"约束的")
设置关键帧
setKeyframe()命令
mc.setKeyframe("物体名字") #设置所有属性关键帧
#at = [] 设置属性
#tx ty tz 移动
#rx ry rz 旋转
#sx sy xz 缩放
#t r s 全部,不分x,y,z
#v 可以调节属性的大小
#time 控制帧数
keyframe()命令 查询/编辑
mc.keyframe("物体名称",q = True, tc = True) #tc = timeChange
#查询帧的改变,返回帧的列表
mc.keyframe("物体名称",q = True, vc = True)
#查询每一帧上有那些数值
#at = ry 查旋转在y轴的属性变化
frame_tc = mc.keyframe("名字",at = "ry",q = True,tc = True) #获取所有的帧数
mc.keyframe("名字",
at = "ry", #编辑的属性
e = True,#编辑模式
time = (min(frame_tc),max(frame_tc)),#帧的范围
tc = 5, #变化
r = True)#相对的
#将这动画往后移动5帧