maya中常用的命令及标记


常用命令

这三个绝对是最常用的命令了

  • help
  • dir
  • print
  • ls
    • assemblies 列出大纲顶层节点
    • fl 逐个列出
    • recursive ls命令上提供了recurse标志,以递归遍历所有子名称空间。pm.ls('*ue*', recursive=1) recursive遍历所有名称空间 或者 pm.ls(::*ue*)

然后下面是我整理的一些常用命令

这部分是cmds与pymel都可直接调用的

  • xform 获取信息
  • joint 骨骼
  • skinCluster 蒙皮
  • blendShape 融合变形
  • ployEvaluate 查询多边形计数
  • listAttr 列出属性
  • getAttr 获得属性
  • setAttr 设置属性
  • hyperShade 查询物体材质
  • hyperShade 获取物体材质
  • expression 创建表达式
    • s 表达式的字符串
    • ae 永远执行
    • o 目标物体
    • uc 数据转换

duplicateCurve 复制
inputConnections(ic)
复制输入节点
smartTransform(st)
记录上次变换,并重复复制(快捷键shift+D)
returnRootsOnly(rr)
仅返回新层次结构的根节点。此标志仅控制返回的内容,不会更改Duplicate的行为。
renameChildren(rc)
重命名子物体,使名称唯一
(po)
仅复制选中节点,忽略子物体
transformsOnly(to)
仅复制transform节点

duplicateCurve 复制面上的曲线
constructionHistory(ch)
保留创建历史
local(l)
复制曲线作为曲面的子物体
maxValue(max)
曲线跨度最大值
minValue(min)
曲线跨度最小值

根据物体类型筛选 (filterExpand)

expand(ex)
如果这是真的,则每个项目都是单个实体。默认为true
fullPath(fph)
如果这是真的并且选择项是DAG对象,则返回其完整选择路径,而当此值为false时仅返回对象的名称。默认值为false
selectionMask(sm)
指定选择掩码
symActive(sma)
如果启用了对称,则仅返回对象的活动对称侧的组件。如果对称性未激活,则此标志无效。
spnHegative (smn)
如果启用对称,则仅返回对象相对于当前对称平面的负面上的组件。如果对称性未激活,则此标志无效。
synPositive (smp)
如果启用了对称,则仅返回对象正面相对于当前对称平面的组件。如果对称性未激活,则此标志无效
synSeam(sms)
如果启用了对称性,则仅返回相对于当前对称平面位于对象两侧的组件。如果对称性未激活,则此标志无效。

  • 根据选定的组件(或命令行中指定的组件),命令会过滤和/或扩展给定选项的列表。返回包含所有匹配选择项的字符串数组。筛选索引如下:

Object Type | Mask | Object Type | Mask |
—|—|—|—|—
Handle | 0 | Nurbs Curves | 9
Nurbs Surfaces | 10 | Nurbs Curves On Surface | 11
Polygon | 12 | Locator XYZ | 22|Orientation Locator | 23
Locator UV | 24 | Control Vertices (CVs) | 28
Edit Points | 30 | Polygon Vertices | 31
Polygon Edges | 32 | Polygon Face | 34
Polygon UVs | 35 | Subdivision Mesh Points | 36
Subdivision Mesh Edges | 37 | Subdivision Mesh Faces | 38
Curve Parameter Points | 39 | Curve Knot | 40
Surface Parameter Points | 41 | Surface Knot | 42
Surface Range | 43 | Trim Surface Edge | 44
Surface Isoparms | 45 | Lattice Point | 46
Particles | 47 | Scale Pivots | 49
Rotate Pivots | 50 | Select Handles | 51
Subdivision Surface | 68 | Polygon Vertex Face | 70
NURBS Surface Face | 72 | Subdivision Mesh UVs | 73


这部分是maya自带的mel脚本,需要通过pymel.core.mel调用

针对具体需求的简短代码

判断面材质

shadeFace = cmds.listConnections(obj)
if shadeFace > 1print('存在分面材质')

常用标记

  • q 查询模式
  • e 编辑模式
  • ws\worldSpace 世界坐标
  • os\objectSpace 物体坐标
  • s\shape 形节点
  • tr\transform 转换节点
  • t\
  • ro\
  • s\
  • allPath 全路径

UI相关

以下标记为maya自身提供的ui功能常用标记,既然学了python建议直接上手pyqt,稍微了解一下就好

  • bgc rgb颜色
  • w 宽度
  • h 高度
  • c 点击执行(按钮用)
  • bc 点击执行(组合按钮用)
  • dc 滑动条滑动过程中重复执行
  • cc/changeComband 改变执行
  • vis 可见性
  • ex 是否存在
  • t 标题
  • l 标签
  • cw 指定列的长度
  • i/image 图片
  • en 可编辑
  • ann 注释
  • fpn 完整路径
  • dgc 中键按下执行
def callbackName( dragControl, x, y, modifiers ):
 数组中的第一个字符串描述用户可设置的消息类型。应用程序定义的拖动源控件可能会忽略回调。					modifiers 允许测试键修饰符CTRL和SHIFT。可能的值为0 **无修饰符,1 ** SHIFT,2 ** CTRL,3 ** CTRL + SHIFT。
  • dpc 鼠标拖拽执行
def pythonDropTest(dragControl,dropControl,messages,x,y,dragType):
#def接收从拖动源传输的字符串数组。messages数组中的第一个字符串描述了用户定义的消息类型。
#应用程序定义的丢弃站点的控件可能会忽略回调。type的值可以是1 ** Move,2 ** Copy,3 ** Link。

获取模型蒙皮节点(点线面无效) pm.mel.findRelatedSkinCluster('skinObj')

获取mel的全局变量: pm.language.melGlobals['gMainWindow']

后台启动maya的方法

方法一

import subprocess
MAYA_PATH = r'C:\Program Files\Autodesk\Maya2018\bin\mayapy.exe'.replace('\\','/') # mayapy路径  后台启动这个程序不需要调用UI
CMD_PATH = r'E:\MayaScripts\test.py' # 脚本路径
argv_str = '' #  test.py需要的参数
subprocess.call(r'{} {} {}'.format(MAYA_PATH, CMD_PATH, argv_str))

方法二

import maya.standalone
maya.standalone.initialize() #启动 maya

加载插件

官方给的mel脚本,Py调用.需要pm.mel

搜索并执行mel脚本 source

创建包裹 doWrapArgList"7"{"1","0","1","2","0","1","1","0"}

maya菜单栏增加命令

# maya主窗口:  
MainMayaWindow=pm.language.melGlobals['gMainWindow']
# 菜单栏增加菜单
customMenu=pm.menu(u'newMenu',parent=MainMayaWindow)
# 添加下拉命令
pm.menuItem(label=u"个人菜单",command='pass',parent=customMenu)

选择同一个相连接的上的所有点 pm.mel.polyConvertToShell()

面选择点: cmds.ConvertSelectionToVertices()

列出最近打开文件: pm.optionVar(q='RecentFilesList')


评论
  目录