我正在尝试使用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" )
答案 0 :(得分:1)
好的,所以这个脚本假设.obj文件中只有只有一个网格。实际上,只重命名从导入返回的第一个网格。
要检索返回的节点,我使用了来自file命令的returnNewNodes flag。
然后我使用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)