首先 - 您不能Model
在运行时创建或修改 a (详细信息)。事实上,如果你需要,你应该实现你自己的. Model
只是让您入门的最低限度的功能。
但是,您可以Model
通过内容管道在构建时创建一个。
或者,更具体地说,您可以创建一个自定义内容导入器来输出NodeContent
. 反过来,这可以通过内容管道传递给ModelProcessor
(或您自己的派生类),它将输出ModelContent
. 您也无法进行有用的修改ModelContent
。将ModelContent
被序列化,然后Model
在运行时作为 a 加载。
NodeContent
to 输出是代表您的模型的树结构。它实际上由MeshContent
和BoneContent
节点组成(这些是派生自 的类NodeContent
)。
老实说,该树的确切结构很难追踪(文档非常缺乏)。这是一个应该让您走上正轨的问题和答案。FbxImporter
您还可以通过使用带有已知模型的内置函数并使用XNA Content Pipeline Debugger(在实现您自己的导入程序时通常会派上用场的工具)检查其输出来获得好运。
骨骼数据存储为Matrix
in BoneContent.Transform
。要创建此矩阵,我相信您需要执行以下操作:
boneContent.Transform = Matrix.Transform(
Matrix.CreateTranslation(customBone.positionRel),
customBone.rotationRel);
如果您想Quaternion
在运行时将骨骼数据保留为 a,则必须实现自己的替代Model
.