Frage

Ich habe ein Problem beim Importieren eines 3D-Modells aus einer FBX-Datei.

Das Quellmodell enthält 575 Objekte + 1 Kamera und sieht folgendermaßen aus: http:// habreffect .ru / files / 23d / 542fa7f67 / source_model.png

In XNA, das mit Content-Pipeline erstellt wurde, enthält das Modell 82 Netze und 576 Bones. Wenn ich mein Modell zeichne, sehe ich nur einen Teil des Quellmodells. Ergebnisbild wie folgt: http://habreffect.ru/files/28a/6e61c0215/Result_view.png

Mein Zeichnungscode:

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

Wie kann ich alle 575 Netze in meiner Modellinstanz in XNA abrufen?

Danke!

UPD : Ich habe versucht, mein FBX-Modell in 3ds max zu importieren, alle Netze auszuwählen und "Export ausgewählt" zu verwenden. Ergebnis FBX-Datei ist 11x größer. Dann füge ich es als Inhalt zum XNA-Projekt hinzu, das geladene Modell enthält alle 575 Netze und es wird korrekt gerendert.

Leider passt diese manuelle Konvertierungsmethode nicht zu mir - ich muss verschiedene fbx-Modelle aus dem veränderlichen Repository rendern.

Welche FBX-Dateien sind für den XNA-Inhaltsprozessor "gut" (ich verwende XNA 4)?

War es hilfreich?

Lösung

Also auf MSDN Ich habe festgestellt, dass FbxImporter für die Version 2006.11 des FBX-Formats entwickelt wurde.

Vor kurzem hat Autodesk FBX Converter 2012.1 veröffentlicht enthält andere Tools wie FBX Eplorer, FBX Viewer.

Der FBX-Explorer kann die Struktur der FBX-Datei anzeigen, und ich vergleiche den Export aus einer 3D-MAX-Datei mit der FBX-Quelldatei. Sie haben unterschiedliche interne Formate. Ich habe versucht, folgende Konvertierung vorzunehmen: FBX - > Collada -> FBX, und die Ergebnis-FBX-Datei enthält ähnlich wie aus der MAX-Datenstruktur exportiert.

Also füge ich einfach das Ergebnis FBX zum Inhalt meiner XNA-App hinzu und es wird gut gerendert :)

Eine andere Möglichkeit, es zum Laufen zu bringen, besteht darin, das Modell mit dem Autodesk FBX SDK manuell zu lesen und in XNA zu zeichnen.

Schlussfolgerung :

  1. Die korrekte Arbeit von XNA FbxImporter hängt nicht von der Version (2006, 2011 usw.) und der Form (binär, ascii) der FBX-Datei ab. Interne FBX-Datenstruktur viel wichtiger.
  2. Um FBX für XNA Importer "lesbar" zu machen, können Sie eine doppelte Konvertierung wie FBX -> Collada -> FBX verwenden
  3. Sie können das FBX SDK auch zum manuellen Laden von Daten aus FBX verwenden

Andere Tipps

Öffnen Sie das 3D-Modell im neuesten 3dx max 2012 und exportieren Sie es im .fbx-Format.Dieser .fbx wird ordnungsgemäß mit dem xna model loader geladen.Während des Exports können Sie die Ressourcen sogar einbetten, sodass Sie keine Texturen über XNA hinzufügen müssen.

Sie verwenden die Instanzierung in 3DS MAX.Dies wird von XNA nicht direkt unterstützt. Sie müssen das Netz für jeden Instanzknochen selbst zeichnen. Idealerweise verwenden Sie stattdessen die DirectX-Instanz, um jedes Netz einmal pro Bone in einem einzelnen Draw () -Aufruf zu zeichnen. Dazu müssen Sie jedoch Ihren eigenen Code rollen, indem Sie die Bones in Instanzscheitelpunkte konvertieren. Standardmäßig unterstützt XNA nur die grundlegendsten Vorgänge.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top