如何从fbx文件中获取所有节点或多边形的名称?

时间:2017-01-19 05:23:13

标签: java unity3d maya fbx 3d-model

我有一个以FBX格式保存的3D角色模型。我想知道每个模型或关节的名称列表,以便我可以决定角色的这一部分是否与我相关。我没有使用Maya软件。我从第三方获得3D模型,我将在unity3D中使用该模型进行动画,但在Unity3d中导入模型之前,我想知道模型标签,如头发,头等等,所以有什么方法可以获得标签从FBX文件编程?感谢

1 个答案:

答案 0 :(得分:0)

关于FBX格式

" FBX"是一种由Autodesk创建的编译格式,即使FBX是专有文件格式,也可以被许多3D软件使用。因为它是经过编译的,所以最终会得到大量的" NULL"格式符号; I.E. -

€«±µÈ7L—C«‚›ìŸn»yàn´ZÌ'>ï¯Óp>¸z±ú‘uá#OFªƒû·Pð>U>j}jp[7)

因此,如果您不使用骨骼结构,最好导出为 DAE / Collada 格式或 OBJ 格式

关于Collada / DAE_FBX / DAE格式

此格式是开源的,过去通常用于视频游戏。该文件是基于 XML 的文件,应该易于在Java / JavaScript中操作。因此,该文件完全支持在您最喜爱的记事本程序/应用程序中打开文件...甚至是您喜欢的编程语言。

利用这种格式,您的几何体将列在儿童" geometry"下。

潜在解决方案(Maya中的Python)

如果你正在使用Maya并且可以在导出FBX文件之前注入一些代码...尝试在导出之前运行它(Python):

import maya.cmds as cmds

# Create the location and fileName
yourDesktopVar = "C:\\Users\\[Your user]\\Desktop\\"
saveFileName   = "Joints_Models_Groups.txt"
documentToSave = open((yourDesktopVar + saveFileName), "w")

# Setup arrays full of relative information

jointNames     = [jn for jn in cmds.ls(type = "joint")]
meshNames      = [cmds.listRelatives(mn, parent=1)[0] for mn in cmds.ls(type = "mesh")]

# ================================
# Writing Joints
# ================================

documentToSave.write("Joints\n\r")
documentToSave.write("--------------")

for eachJointName in jointNames:
    documentToSave.write(eachJointName + "\n\r")

# Create a blank space
documentToSave.write("\n\r\n\r)

# ================================
# Writing Meshes
# ================================
documentToSave.write("Meshes\n\r")
documentToSave.write("--------------")

for eachMeshName in meshNames:
    documentToSave.write(eachMeshName + "\n\r")

显然,您必须编辑它以适合您的格式,但这将生成一个基本的文本文档,该文档应该为您提供足够的信息。