通过XNA在Motion Builder中创建FBX模型

5

我想在XNA应用程序中创建一个通过Kinect传感器捕获的骨架fbx模型。目前我的做法是将Kinect坐标作为矩阵存储在数据库中,检索它们并逐帧绘制骨架。

当在XNA框架内运行应用程序时,是否可以使用Motion Builder创建fbx模型?

2个回答

2

我认为你不能在运行时制作fbx模型,你应该使用像Maya或其他建模软件构建带有关节的模型,然后将fbx导入到xna项目中,并在update函数中提供从kinect获取的坐标值来提供每个关节。


1
如果你只是想在捕获数据时回放它,那么你不需要通过FBX进行操作。
如果你想将其持久化为FBX文件,你可以从Autodesk获取FBX SDK,但它只以非托管的C++形式提供。你可以使用SDK将运行时数据转换为传统的骨骼并将其存储到磁盘中,但是通过C++ api完成这个过程会很麻烦,因为你需要自己处理所有非托管代码。
可以尝试通过获取SDK的python绑定并在IronPython中运行它们来解决这个问题(IronPython是一个dotnet语言,可以嵌入到你的Xna项目中)。然而,这需要大量的工作来实现文件格式的导入/导出。此外,我不确定python绑定是否能够在IronPython中正常工作。
然而,如果您只存储骨架数据,像OBJ这样的简单文件格式可能是更容易的选择。有一些OBJ导入器可用(例如,这里)。该格式足够简单,您应该也能自己做到。一旦您在磁盘上拥有OBJ,您可以使用Autodesk FBX转换器往返于FBX之间。但请注意,这仅适用于骨架(和网格,如果需要)- OBJ不支持动画。

在XNA Framework内运行应用程序时,是否可以使用Motion Builder创建fbx模型。

我不确定我完全理解这个问题。您可以从Motionbuilder创建FBX以供在XNA中使用。您可以从其他来源导入FBX(包括使用FBX SDK和Kinect代码制作的FBX),并将其导入到Motionbuilder中。当您说“在XNA内运行应用程序”时,您是指远程控制Motionbuilder,还是只是想能够保存MB可以读取的数据?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接