具有自定义属性的 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的主要内容,如果未能解决你的问题,请参考以下文章

Unity - 自定义导出和导入 FBX 数据

具有依赖属性绑定到 DockPanel.Dock 附加属性的 WPF 自定义控件不起作用

如何将具有自定义属性的组件移动到 QML 中的单独文件

Android - 具有自定义属性的自定义 UI

Maya 2015-自定义货架按钮缺少图标

将 JSON 包反序列化为具有自定义属性名称的类