lxf to ldr konverter English Deutsch

Konverter -> Technik

Ja, hier gibts noch nicht so wirklich viel. Aber mit der Zeit werden wir versuchen diese Seite mit Hintergrund Informationen zu den beiden (später vielleicht auch mal drei) Datei Systemen und dem Konverter zu befüllen.

Zunächsteinmal ein paar Informationen darüber, warum uns der LDD-Export nicht ausgereicht hat (unsere Selling Points :-) ).

Allgemeines

Als ich (Rolf) mit der Arbeit an dem Konverter begonnen habe, kannte ich den LDD nur vom Hören (Lesen). Nachdem Ulf die Frage nach einem Konverter zwischen den beiden Dateiformaten erfragt hat, habe ich etwas im Internet recherchiert.

Dabei bin ich natürlich auf das Tutorial von Holly-Wood ( # LDraw to LDD conversion) und damit auch auf die ldraw.xml gestoßen. Mein erster Ansatz war es diese ldraw.xml einfach zu erweitern, was sich später auch als notwendig, aber nicht so einfach herausstellte. Auf alle Fälle war es nicht genug!

Durch einige Experimente und weitere Recherchen musste ich feststellen, dass der LDD nicht immer alle Teile konvertierte. Er lies auch Teile weg, die in der ldraw.xml hinterlegt waren. Dies ging sogar soweit, dass er ein Teil in einem Modell in gelb exportiert hat und das selbe Teil in dem selben Modell in weiß nicht. Den Grund dafür vermute ich in folgendem Satz begründet zu finden: "[…]I don't like having to use LDD as an intermediary when converting because it occasionally strips out parts that are not currently available." ( # Re: New Tutorial - LDD->LDraw and LDraw->LDD conversion). Scheinbar weiß der LDD welche Teile (in welcher Farbe) erwerbbar sind und welche nicht!

Von nun an stand die Entscheidung ein Tool zu schreiben, dem solche Dinge einfach egal sind. Im Laufe der Entwicklung haben sich auch noch einige andere Dinge herausgestellt, die man anders machen kann als der LDD es momentan macht. Und los gehts:

ldraw.xml

Leider ist auch unser Konverter von einer Mapping Datei abhängig, denn auch wir müssen wissen, wie ein Stein aus dem einen Universum in das andere verschoben und gedreht (manchmal auch umbenannt) werden muss. Um an dieser Stelle keine Redundanzen zu erzeugen, nutzen wir ebenfalls die ldraw.xml und sind somit von der Qualität und der Quantität ihrer Einträge abhängig.

Es gibt viele Teile, die noch nicht eingetragen wurden; es werden aber von Zeit zu Zeit immer mehr. Allerdings gibt es im LDD Teile, die für das LDraw Universum noch gar nicht erstellt wurden. Die uns bekannten könnt ihr euch auf unserer # Fehlende Teile Seite anschauen (und dann ja vielleicht auch erstellen ;-) ).

Auch gibt es Teile, die zwar schon für LDraw gezeichnet wurden, aber noch nicht als offizielles Teil anerkannt sind. Natürlich haben wir für die uns bekannten eine kleine Übersicht: # Parts Tracker.

Dies ist übrigends auch einer der zentralsten Punkte, warum ich den Konverter so gestaltet habe, wie ich ihn gestaltet habe: Wenn ich mit dem LDD exportiert habe, fehlten im LDraw Modell einige Seine. Ja, dass ist auch bei unserem Konverter so. Aber er kann mir sagen (anzeigen) welche Teile er nicht übernehmen konnte; und auch warum! Dazu schreibt er in dem Output Textfeld eine Art Logbuch, welches man auswerten kann.

Auf diese Weise kann ich schnell sehen, welche Teile fehlen und wenn es sie im LDraw Universum gibt, einen Eintreg für die ldraw.xml erstellen (Dies ist allerdings nicht immer so einfach). Ist ein neuer Eintrag in der ldraw.xml eingetragen, kann man, ohne den Konverter neustarten zu müssen, erneut konvertieren und das neue Teil ist von nun an bekannt.

Decorations / l2l.xml

Die lxfml Dateien enthalten wesentlich mehr Informationen als der Export des LDDs nutzt. Über den Aufbau der Dateien werde ich später nochmal eine schöne (?) Übersicht erstellen. Beim analysieren hat mir eine, ich glaube offizielle, Stellungnahme auf lugnet # LXF files - info and XML schema geholfen.

Zurück zu den ungenutzten Informationen: In den lxfml Dateien wird bei einigen Steinen ein <Decoration> Tag mit angegeben. Diese 'malen' auf die definierten Steine Bilder. So zum Beispiel bei den Gesichtern oder auch Oberkörpern. Der LDD exportiert diese Informationen nicht. Dafür fehlen ihm auch Informationen, die wir in eine erweiterte xml Datei hinterlegen, der l2l.xml.

Natürlich ist auch diese Datei bei weitem nicht vollständig. Findet der Konverter einen Decoration Eintrag, den er nicht kennt, so vermerkt er auch dieses in dem Output Logbuch und versucht den undekorierten Stein einzufügen.

ToDo: Hier soll noch ein Beispiel folgen!

lxf

Der LDD speichert seine Modelle in Dateien mit der Endung lxf ab. Dabei handelt es sich um einfache Zip-Archive, in denen neuerdings - oder auch zur Zeit - nur noch zwei Dateien enthalten sind:

  • IMAGE100.LXFML: Eine xml Datei, in der das Modell beschrieben wird.
  • IMAGE100.PNG: Ein Bild des fertigen Modells

lxfml

In diesem Teil sind nicht nur Informationen sondern auch einige Spekulationen enthalten. Ich bitte darum das folgende nicht als gegeben zu verstehen sonder auch zu berücksichtigen, dass ich mich irren kann oder Dinge falsch sehe/verstehe! ...

Die lxfml Datei ist wie in dem nächsten Bild visualisiert aufgebaut (entnommen aus der lxfmlschema.xsd):

LXFML Schema

Es folgt nun eine kleine Beschreibung der einzelnen Tags. Die grün hinterlegten verarbeiten wir, an den gelb hinterlegten arbeite ich gerade und die rot hinterlegten werden zur Zeit nicht ausgewertet.

<LXFML>

<Meta>

<Cameras>

<Camera>

<Scene>

<Model>

<Group>

<Part>

<Decoration>

<SubMaterial>

<Joint>

Joints sind eine echt coole Sache! Um die Modelle bauen und abbilden zu können sind sie meiner Ansicht nach völlig irrelevant aber um in den Modellen verbundene Teile drehen zu können sind sie höchst interessant. Ich bin mir zwar nicht sicher, warum der LDD sie mit abspeichert (er könnte sie auch Aufgrund seiner Stein Bibliothek on-the-fly berechnen), aber ich hoffe sie später einmal nutzen zu können, um für die exportierten Modelle auch gleich Dateien für das # LD4DStudio von Roland Melkert generieren zu können.

<GroupRef>

<BuildingIntroductions>

Wie viele von euch sicher wissen, kann der LDD auch Bauanleitungen mit abspeichern. Ursprünglich wollte ich diese mal mit exportieren (STEP); nachdem ich allerdings auf das Tutorial Hacking LDD hingewiesen wurde, bin ich mir gar nicht mehr so sicher, ob sich das lohnt. Ich werde das erstmal weiter nach hinten auf meine Liste schieben. Falls jemand Interesse daran hat, kann er uns aber gerne ansprechen.
So wie es aussieht kann der LDD mehrere Bauanleitungen für eine Scene enthalten. Dies ist mir aber noch nicht über den Weg gelaufen.

<BuildingIntroduction>

<Step>

<PartRef>

Bauanleitungen

www.digital-bricks.de ist eine Fan-Website. LEGO® ist ein eingetragenes Warenzeichen der LEGO Firmengruppe.