Maya开发环境¶
.mod bat & vbs 模块导入流程 自定义菜单导入 自定义工具架导入
https://www.youtube.com/watch?v=18bMHq43K3U&t=2489s
如何制定一个module
环境变量管理
.mod文件 扩展工具层级结构
我的文档/modules 我的文档/scripts 我的文档/plug-ins
DO-VFX.mod
+ DO-VFX any \\server\manager\centralizeTools\maya\env\2018
icons modules plug-ins scripts shelves Maya.env
.bat批处理
from pprint import pprint
import pymel.core as pm
pprint(dir(pm))
pprint(pm.language.Env.envVars.items())
分析资产 XGen Reference Texture Fur Proxy Cache Alembic Assembly Yeti Qualoth … 分析插件 Arnold Redshift 分析渲染层 分析渲染设置
用户界面 正则表达式 上下文管理器 文件操作 字符编码 读写配置文件 XMLGenerator json
如何来调试局部代码?
# optionVar设置首选项变量
import maya.cmds as cmds
cmds.optionVar(intValue=("defaultTriangles", 100))
cmds.optionVar(query="defaultTriangles")
# file文件操作
cmds.file(query=True, sceneName=True, shortName=True)
# getAttr & setAttr 属性读写操作
cmds.getAttr("defaultRenderGlobals.modifyExtension")
# listConnections & listRelatives 节点关联操作
cmds.listConnections("renderLayerManager.renderLayerId")
# 渲染层分析
def nzList(buf):
if buf == None:
return []
return buf
def nzAnalyzeMayaGetAttr(layer, attr):
attr = nzGetOverrideAttr(layer, attr)
print(attr)
return cmds.getAttr(attr, expandEnvironmentVariables = True)
def nzGetOverrideAttr(layer, attr):
if layer == cmds.editRenderLayerGlobals(query = True, currentRenderLayer = True):
return attr
layers = cmds.listConnections('renderLayerManager.renderLayerId[0]')
layers.insert(0, layer)
buf = cmds.listConnections(attr, source = False, plugs = True, connections = True)
for layer in layers:
print(layer)
print(buf)
for i in range(1, len(nzList(buf)), 2):
if re.search('^' + layer + r'\.adjustments\[\d+]\.plug$', buf[i]) != None:
# print ('w:' + str(buf[i]) + re.sub(r'\.plug$', '.value', buf[i]))
return re.sub(r'\.plug$', '.value', buf[i])
return attr
renderLayers = cmds.listConnections('renderLayerManager.renderLayerId')
print(renderLayers)
for layer in renderLayers:
renderer = nzAnalyzeMayaGetAttr(layer, 'defaultRenderGlobals.currentRenderer')
print(renderer)
# error日志提醒
mom.MGlobal.displayError("File not existed!")
cmds.error("File not existed!")
# codecs
import codecs
def readFileContent(filePath):
with codecs.open(filePath, "r", "utf-8") as f:
lines = [line.strip() for line in f if line]
return lines