Domanda

Ho un problema con l'importazione del modello 3D dal file FBX.

Il modello sorgente contiene 575 oggetti + 1 fotocamera e ha questo aspetto: http:// habreffect .ru / files / 23d / 542fa7f67 / source_model.png

In XNA preparato con il modello di pipeline di contenuti contiene 82 mesh e 576 ossa. Quindi, quando disegno il mio modello, vedo solo una parte del modello di origine. Immagine dei risultati come la seguente: http://habreffect.ru/files/28a/6e61c0215/Result_view.png

Il mio codice di disegno:

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);

Come posso ottenere tutte le 575 mesh nella mia istanza Model in XNA?

Grazie!

UPD : Ho provato a importare il mio modello FBX in 3ds max, selezionare tutte le mesh e utilizzare "Esporta selezionati". Risultato Il file FBX è 11 volte più grande. Quindi lo aggiungo come contenuto al progetto XNA, il modello caricato contiene tutte le 575 mesh e viene renderizzato correttamente.

Sfortunatamente, questo metodo di conversione manuale non è adatto a me: ho bisogno di eseguire il rendering di vari modelli di fbx da repository modificabili.

Quindi, quali file FBX sono "buoni" per il processore di contenuti XNA (io uso XNA 4)?

È stato utile?

Soluzione

Quindi, su MSDN Ho scoperto che FbxImporter è progettato per funzionare con la versione 2006.11 del formato FBX.

Autodesk ha rilasciato di recente FBX Converter 2012.1 , che contiene altri strumenti, come FBX Eplorer, FBX Viewer.

FBX explorer può mostrare la struttura del file FBX e io confronto esportato da file 3D MAX e file FBX sorgente. Hanno un formato interno diverso. Ho provato a fare la seguente conversione: FBX - > Collada -> FBX, e il file FBX del risultato contiene simile a quello esportato dalla struttura dati MAX.

Quindi, aggiungo semplicemente il risultato FBX al contenuto della mia app XNA, ed è reso bene :)

Un altro modo per farlo funzionare è utilizzare Autodesk FBX SDK per leggere manualmente il modello e disegnarlo in XNA.

Conclusione :

  1. Il corretto funzionamento di XNA FbxImporter non dipende dalla versione (2006, 2011, ecc.) e dal formato (binario, ascii) del file FBX. La struttura dei dati FBX interna è molto più importante.
  2. Per rendere FBX "leggibile" per XNA Importer puoi usare la doppia conversione come FBX -> Collada -> FBX
  3. Puoi anche utilizzare FBX SDK per caricare manualmente i dati da FBX

Altri suggerimenti

Apri il modello 3d nell'ultimo 3dx max 2012 ed esportalo in formato .fbx.Questo .fbx viene caricato correttamente con il caricatore del modello xna.Durante l'esportazione puoi persino incorporare le risorse, quindi non devi aggiungere trame tramite XNA.

Stai utilizzando le istanze in 3DS MAX.Questo non è supportato direttamente da XNA. Devi disegnare tu stesso la mesh per ogni osso istanza. Idealmente dovresti invece usare le istanze DirectX per disegnare ogni mesh una volta per osso in una singola chiamata Draw (). Ma devi rotolare il tuo codice per farlo, convertendo le ossa in vertici di istanza. Per impostazione predefinita, XNA supporta solo le operazioni di base.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top