具有自定义属性的 Maya 到 fbx
Posted
技术标签:
【中文标题】具有自定义属性的 Maya 到 fbx【英文标题】:maya to fbx with custom attributes 【发布时间】:2015-09-18 15:18:57 【问题描述】:我有一个 Maya 场景,其中每个网格在我使用 python 动态添加的形状节点上都有一个自定义属性列表。
import maya.cmds as cmds
import maya.mel as mm
#get mesh objects.
meshes = maya.cmds.ls(type="mesh")
for mesh in meshes:
cmds.select(mesh)
#check if attribute exists, if not, create.
if not mm.eval( 'attributeExists "test" "%s"' % mesh):
cmds.addAttr( shortName='tst', longName='test', dataType="string")
当我导出到 .fbx 并重新导入时,这些属性及其值都消失了。
如何在导出时保留所有这些值?
【问题讨论】:
【参考方案1】:很遗憾,你不能。来自maya docs:
您可以将 Maya 变换节点自定义属性导出到 FbxNode 的用户属性。但是,您不能将 Maya 形状节点自定义属性(例如网格节点)导出到 FbxGeometry。这是因为 FbxGeometry 当前不支持用户属性。
如果可能,您最好的选择可能是尝试将自定义属性放在非形状节点上,或者探索其他导出格式,例如 alembic 或您自己的自定义格式。
【讨论】:
另外,FBX 会截断长属性名称 - 我不确定字符限制是多少,但超过一定长度会变成乱码。 感谢您的回复。我试图在转换节点或定位器上获得相同的结果,但是: loc = cmds.spaceLocator( p=(0,0,0) ) if not mm.eval( 'attributeExists "shader" "%s "' % loc): cmds.addAttr(shortName='shd', longName='shader', dataType="string") cmds.setAttr( loc + '.shader', 'this', type="string" )一个错误:只能将列表(不是“str”)连接到列表# the string to list error 是因为 spaceLocator 同时返回了变换和形状:您只需要获取loc
的第一个组件以上是关于具有自定义属性的 Maya 到 fbx的主要内容,如果未能解决你的问题,请参考以下文章