我有一个以FBX格式保存的3D角色模型。我想知道每个模型或关节的名称列表,以便我可以决定角色的这一部分是否与我相关。我没有使用Maya软件。我从第三方获得3D模型,我将在unity3D中使用该模型进行动画,但在Unity3d中导入模型之前,我想知道模型标签,如头发,头等等,所以有什么方法可以获得标签从FBX文件编程?感谢
答案 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")
显然,您必须编辑它以适合您的格式,但这将生成一个基本的文本文档,该文档应该为您提供足够的信息。