Ich habe versucht, mit dem FBX SDK (2011.3.1) FBX-Dateien zu laden und als Collada-Dateien zu speichern, um FBX-Dateien in Panda3D importieren zu können. Leider können die resultierenden Collada-Dateien aus mehreren Gründen nicht verwendet werden, darunter:
- Es gibt eine Maya-spezifische Extra-Technik
diffus
<diffuse>
<texture texture="Map__2-image" texcoord="CHANNEL0">
<extra>
<technique profile="MAYA">
<wrapU sid="wrapU0">TRUE</wrapU>
<wrapV sid="wrapV0">TRUE</wrapV>
<blend_mode>ADD</blend_mode>
</technique>
</extra>
</texture>
</diffuse>
Es weist einen Texcoord-Kanalnamen zu, auf den an keiner anderen Stelle in der Datei verwiesen wird (im vorherigen Codebeispiel verwendet keine Geometrie "CHANNEL0" ...).
Jedes Polygon wird zweimal exportiert, ein erstes Mal mit einem Grundmaterial (nur diffuse Farbe, Spiegelfarbe usw.) und ein zweites Mal mit einem strukturierten Material -> dies verdoppelt die Anzahl der Polygone jedes Modells ohne wertvollen Grund
Auf jeden Fall kann die resultierende Collada-Datei weder mit OpenCOLLADA noch mit "dae2egg" von Panda3D korrekt geöffnet werden.
Hat jemand Erfahrung damit, wie man es "repariert" und es für gängige und renommierte Collada-Importeure wie OpenCOLLADA verständlich macht?
Antworten:
Das AC # -Tool ist hier Ihr Freund - Sie können schnell etwas mit dem .NET System.Xml-Framework schreiben, das die Eingabedatei durchläuft, Teile erkennt, die Ihnen nicht gefallen, und sie aus dem Dokument entfernt (oder optimiert), bevor Sie es zurückschreiben nochmal raus. Eigentlich ist es das, was XSLT tut, aber in der Praxis war es immer einfacher, C # -Code zu schreiben, um die Transformation zu beschreiben, als die kryptische XSLT-Syntax zu finden, um dasselbe zu tun.
Was Sie tun müssen, ist sich die "schlechten" Fälle anzusehen und herauszufinden, was sie gemeinsam haben. Wenn zum Beispiel alle diffusen Techniken eine Textur haben, die texcoord = "CHANNEL0" verwendet, ist das leicht zu finden. Sie iterieren einfach alle Objekte und überprüfen für jedes Objekt alle seine Techniken auf das fehlerhafte Attribut. Wenn Sie es nicht finden, fügen Sie den Knoten einem Ausgabedokument hinzu und fahren Sie fort. Wenn Sie den Knoten nicht erkennen, fügen Sie ihn der Ausgabe hinzu und fahren Sie fort. Wenn Sie es finden, müssen Sie es nicht zum Ausgabedokument hinzufügen, da es dann effektiv gelöscht wird.
Das Erkennen doppelter Polygone ist jedoch etwas schwieriger, da Sie jedes Polygonpaar auf Äquivalenz analysieren müssen. Wäre viel einfacher, wenn Sie sich für eine Regel entscheiden könnten, z. B. "Ich interessiere mich nicht für flache farbige Polygone, sondern nur für strukturierte Polygone", dann können Sie einfach die entsprechenden Polygone verwerfen.
Es scheint mir jedoch sehr seltsam, dass Sie tatsächlich Duplikate herausholen. Das Duplizieren von Geometrie ist aus offensichtlichen Gründen ein großes Nein-Nein, daher bin ich überrascht, dass FBX dies tun würde. Ich habe Collada bisher nur mit Maya / Max verwendet und konnte daher nicht dafür bürgen, was FBX produziert. Aber ich würde fragen, sind Sie sich doppelt sicher, dass die FBX-Datei wirklich keine doppelte Geometrie enthält?
quelle
Suchen oder schreiben Sie einen anderen Exporter oder verwenden Sie (da Collada-Dateien nur XML sind) [XSLT] [1], um die unerwünschten Daten in eine allgemeinere Form umzuwandeln?
quelle