まず第一に、Model
実行時に a を作成または変更することはできません ( details )。実際、必要に応じて、独自の を実装することになっています。Model
開始するための最低限の機能です。
ただし、ビルド時にコンテンツ パイプラインを介して を作成できます。Model
または、より具体的には、を出力するカスタム コンテンツ インポーターを作成できますNodeContent
。次に、これをコンテンツ パイプラインを介してModelProcessor
(またはそれから派生した独自のクラス) に渡すことができますModelContent
。有効に変更することもできませんModelContent
。はシリアル化され、実行時にModelContent
としてロードされます。Model
出力先は、NodeContent
モデルを表すツリー構造です。実際にはMeshContent
とBoneContent
ノードで構成されます (これらは から派生したクラスですNodeContent
)。
正直なところ、そのツリーの正確な構造を追跡するのは少し難しいです (ドキュメントは非常に不足しています)。これは、あなたを正しい軌道に乗せるための質問と答えです。また、既知のモデルでビルトインを使用し、 XNA コンテンツ パイプライン デバッガー(独自のインポーターを実装するときに一般的に役立つツール) を使用してFbxImporter
その出力を検査することで、うまくいく場合もあります。
ボーン データは として保存されMatrix
ますBoneContent.Transform
。このマトリックスを作成するには、次のようなことを行う必要があると思います。
boneContent.Transform = Matrix.Transform(
Matrix.CreateTranslation(customBone.positionRel),
customBone.rotationRel);
実行時にボーン データを として保持したい場合はQuaternion
、独自の代替手段を実装する必要がありますModel
。