使用 python 在 Maya 中导入和重命名多个对象

importing and renaming multiple objects in maya with python

我正在尝试使用 python 在 Maya 中导入多个对象文件,并将文件名用作 Maya 中的对象名称。我已经设法导入了对象,但我只能将文件名用作命名空间而不是对象名。

import maya.cmds as cmds

def import_multiple_object_files():
    files_to_import = cmds.fileDialog2(fileFilter =  '*.obj', dialogStyle = 2, caption = 'import multiple object files', fileMode = 4)
    for file_to_import in files_to_import:
        names_list  = file_to_import.split('/')
        object_name = names_list[-1].replace('.obj', '') 
        cmds.file('%s' % file_to_import, i = True, type = "OBJ", namespace = object_name, mergeNamespacesOnClash = False, ignoreVersion = True, options = "mo=0",  loadReferenceDepth  = "all"  )

好的,所以此脚本假定您的 .obj 文件中 只有一个网格。事实上,只有从您的导入返回的第一个网格被重命名。

为了检索返回的节点,我使用了 returnNewNodes flag from file 命令。

然后我用rename command将导入的节点重命名为你的文件名

我还删除了命名空间和 mergeNamespacesOnClash 标志。

注意:我今天有点懒,这里没有任何.obj文件,所以我没有测试这段代码。如果你想加载一个包含多个网格的obj文件,给我评论,我会编辑我的答案。

import maya.cmds as cmds

def import_multiple_object_files():
    files_to_import = cmds.fileDialog2(fileFilter =  '*.obj', dialogStyle = 2, caption = 'import multiple object files', fileMode = 4)
    for file_to_import in files_to_import:
        names_list  = file_to_import.split('/')
        object_name = names_list[-1].replace('.obj', '') 
        returnedNodes = cmds.file('%s' % file_to_import, i = True, type = "OBJ", rnn=True, ignoreVersion = True, options = "mo=0",  loadReferenceDepth  = "all"  )
        cmds.rename( returnedNodes[0], object_name)