首先 - 您不能在运行时创建或修改Model
(details)。如果事实上,如果你需要,你应该implement your own。 Model
仅仅是让你开始的最小功能。
但是,您可以通过内容管道在制作时处创建Model
。
或者,更具体地说,您可以创建一个输出NodeContent
的自定义内容导入程序。反过来,这可以通过内容管道传递给ModelProcessor
(或您自己的类从它派生),它将输出ModelContent
。你也不能有用地修改ModelContent
。 ModelContent
将被序列化,然后在运行时加载为Model
。
要输出的NodeContent
是表示您的模型的树结构。它实际上将由MeshContent
和BoneContent
节点组成(这些是从NodeContent
派生的类)。
说实话,该树的确切结构有点棘手追查(文档是非常缺乏)。 Here是一个问题和答案,应该让你在正确的轨道上。您也可以使用已知型号的内置FbxImporter
并使用XNA Content Pipeline Debugger(实现自己的导入器时通常会派上用场的工具)检查其输出。
骨数据被存储为一个BoneContent.Transform
Matrix
。为了创建这个矩阵,我相信你需要做这样的事情:
boneContent.Transform = Matrix.Transform(
Matrix.CreateTranslation(customBone.positionRel),
customBone.rotationRel);
如果你想保持你的骨骼数据作为Quaternion
在运行时,你将不得不落实Model
你自己的选择。