Question

J'ai un problème avec l'importation du modèle 3D à partir du fichier FBX.

Le modèle source contient 575 objets + 1 appareil photo et ressemble à ceci: http://habreffect.ru/files/23d/542fa7f67/source_model.png

Dans XNA préparé avec le modèle de pipeline de contenu contient 82 mailles et 576 os. Donc, lorsque je dessine mon modèle, je ne vois qu'une partie du modèle source. Image de résultat comme le suivant:http://habreffect.ru/files/28a/6e61c0215/result_view.png

Mon code de dessin:

GraphicsDevice.Clear(Color.CornflowerBlue);

Matrix[] transforms = new Matrix[_model.Bones.Count];
_model.CopyAbsoluteBoneTransformsTo(transforms);

foreach (var mesh in _model.Meshes)
{
    foreach (BasicEffect effect in mesh.Effects)
    {
        effect.LightingEnabled = true;
        effect.EnableDefaultLighting();
        effect.World = transforms[mesh.ParentBone.Index] * _world;
        effect.View = _view;
        effect.Projection = _proj;
    }
    mesh.Draw();
}
base.Draw(gameTime);

Comment puis-je obtenir les 575 maillages dans mon instance de modèle dans XNA?

Merci!

Mettre à jour: J'ai essayé d'importer mon modèle FBX sur 3DS max, de sélectionner tous les maillages et d'utiliser "Exporter sélectionné". Le fichier fbx résultat est 11x plus grand. Ensuite, je l'ajoute en tant que contenu au projet XNA, le modèle chargé contient les 575 maillages, et il est rendu correctement.

Malheureusement, cette méthode de conversion manuelle ne me convient pas - j'ai besoin de rendre variés de modèles FBX à partir du référentiel mutable.

Alors, quel fichier fbx est "bon" pour le processeur de contenu XNA (j'utilise XNA 4)?

Était-ce utile?

La solution

Bientôt MSDN J'ai trouvé que Fbxim Porter conçoit pour fonctionner avec la version 2006.11 du format FBX.

Récemment libéré Autodesk Convertisseur FBX 2012.1, qui contient d'autres outils, comme FBX Eplorer, FBX Viewer.

FBX Explorer peut afficher la structure du fichier FBX, et je me compare à l'exportation du fichier max 3D et du fichier FBX source. Ils ont un format interne différent. J'ai essayé de faire la conversion suivante: fbx -> collada -> fbx, et le fichier fbx résultat contient similaire à l'exportation de la structure des données max.

Donc, j'ajoute simplement le résultat FBX au contenu de mon application XNA, et il est bien rendu :)

Une autre façon de le faire fonctionner est d'utiliser le modèle SDK Autodesk FBX pour lire manuellement le modèle et le dessiner dans XNA.

Conclusion:

  1. XNA FBIXPORTER Le travail correct ne dépend pas de la version (2006, 2011, etc.) et Form (binaire, ASCII) du fichier FBX. Structure interne des données FBX beaucoup plus importante.
  2. Pour rendre FBX "lisible" pour XNA Importer, vous pouvez utiliser une double conversion comme FBX -> Collada -> FBX
  3. Vous pouvez également utiliser le SDK FBX pour charger manuellement les données de FBX

Autres conseils

Ouvrez le modèle 3D dans le dernier 3DX Max 2012 et exportez-le dans .fbx format. Cette .fbx est chargé correctement avec le chargeur de modèle XNA. Lors de l'exportation, vous pouvez même intégrer les ressources, vous n'avez donc pas à y ajouter de textures via XNA.

Vous utilisez l'instances en 3DS max. Ce n'est pas pris en charge directement par XNA. Vous devez dessiner vous-même le maillage pour chaque os d'instance. Idéalement, vous utiliseriez plutôt DirectX Instançage pour dessiner chaque maillage une fois par os dans un seul appel de dessin (). Mais vous devez lancer votre propre code pour ce faire, en convertissant les os en sommets d'instance. Par défaut, XNA prend en charge uniquement les opérations les plus élémentaires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top