原文作者:edward


在maya里什么是read only节点

通常创建一个新的maya 文件所自带的节点都是read only node,或者称为defualt node

这些节点不能修改命名,不能删除,甚至某些属性也不能更改

而在项目中有时会出现文件中的默认节点被非法修改(正常情况下是无法修改的)

例如: 默认 persp摄像机名字不正确

      默认 renderLayer 名字不正确

      等等

这类情况出现时 无论是手动想去修改该类节点或是直接用maya命令去修改都会出现以下报错


但放任不管又会影响一些项目流程工具的使用。

以下介绍2种方法修改这类节点的命名:

1,直接存为ma文件,在ma文件中直接修改


2,使用mayaAPI进行强制命名更改

通常maya的 cmd有很多规则限制,例如不能将位移节点P给形状节点,不能修改只读节点等等

但MAYA API 是更底层的,没有这些限制,所以可以无视这些规则进行修改

以下是maya python api代码,用与修改defualtRenderLayer的命名:


import maya.OpenMaya as om

import maya.cmds as cmds

#edo_renameDefualtRenderLayerName()

def edo_renameDefualtRenderLayerName(newname='defaultRenderLayer'):

   drl=cmds.listConnections('renderLayerManager.rlmi[0]',s=0,d=1)[0]

   if not drl=='defaultRenderLayer':

       try:

           cmds.delete('defaultRenderLayer')

       except:

           print 'defaultRenderLayer is not found!'

   cmds.select(drl,r=1)

   msl=om.MSelectionList()

   mg=om.MGlobal()

   mg.getActiveSelectionList(msl)

   msl.length()

   mobj=om.MObject()

   msl.getDependNode(0,mobj)

   mfndn=om.MFnDependencyNode(mobj)

   mfndn.setName(newname)

edo_renameDefualtRenderLayerName()

,Maya技巧,Maya安装