<chapter>
    <title>Was bisher geschah...</title>
    <para>
        Die Notwendigkeit Geometrie-Daten auszutauschen gibt es schon länger.
        Dabei kann man zwei große Themen-gebiete differenzieren: Konstruktionsdaten die mittels
        CAD (Computer Aided Design) für Fertigung und Simulation erstellt wurden und Daten
        für Echtzeit-Systeme. Diese Kategorien unterscheiden sich nicht nur in der Anwendungsart 
        sondern auch in den Anforderungen. Während CAD-Systeme hohe Anforderungen an die Genauigkeit 
        stellen liegen diese bei Echtzeit-Anwendungen eher bei Kompaktheit und ständig wachsenden 
        Feature-wünschen von Anwendern und Entwicklern.
    </para>
    <section>
        <title>CAD</title>
        <para>Beispiele für Formate aus dem CAD-Bereich.</para>
        <para>Weitere Beschreibungen für CAD-Datenformate findet man
              zum Beispiel unter [2]
        </para>
        <section>
            <title>IGES</title>
            <para>
                 Der Initial Graphics Exchange Specification - kurz IGES - ist ein ANSI-kompatibles, nicht 
                 Hersteller-gebundenes Public Domain-Dateiformat, das als internationaler Standard zum 
                 Austausch von Produktdefinitionsdaten zwischen verschiedenen CAD/CAM-Systemen dient.
            </para>
            <para>
                 IGES wurde schon 1979 zum Datenaustausch zwischen CAD-Programmen und Vektor-basierten
                 Anwendungen spezifiziert. Wie die meisten gängigen CAD-Formate kann IGES Geometrie
                 auf verschieden Weisen speichern, von einfachen Linien und Kurven bis hin zu Freiformoberflächen
                 wie Bezier- und NURBS-Flächen und Volumenelementen, letztere allerdings erst in der
                 aktuellen 5.3 Version.
            </para>
            <para>
                IGES spezifiziert sowohl ein Text- als auch ein Binärformat welches deutlich weniger
                Speicherplatz/Bandbreite benötigt, dabei aber die bekannten Vorteile von Text-Formaten
                aufgibt.
            </para>
            <para>
                Aufgrund der relativ hohen Komplexität des Datenformats wird IGES fast ausschließlich
                von hochwertigen CAD-Applikationen genutzt. Trotzdem ist es ein wohldefiniertes und
                bewährtes Format.
            </para>
        </section>
        <section>
            <title>CATIA</title>
            <para>
                CATIA (Computer Aided Three-Dimensional Interactive Application) ist ein CAD/CAM Programm 
                der Firma Dessault Systemes aus Frankreich. Diese entstand aus dem französischen 
                Flugzeug-Hersteller Avions Marcel Dassault (heute Dassault Aviation) wo schon Anfang der
                siebziger Jahre mit der Entwicklung eines dreidimensionalen Grafikprogramms zur Unterstützung
                der Flugzeug-Ingenieure begonnen wurde. Diese Applikation hat sich seither neben I-Deas,
                Unigraphics und ProEngeneer als Quasi-Standard im Fahrzeugbau etabliert, auch aufgrund der
                Tatsache dass CATIA Schnittstellen definiert mittels derer Dritt-Anbieter relativ einfach
                Zusatz-Funktionalität implementieren können.
            </para>
            <para>
                CATIA verwendet verschiedene Dateiformate die allerdings - wie alle nicht standardisierten
                Formate - ständigen Änderungen mit neuen Versionen der Software unterliegen.
                Allerdings können gerade wegen dieser Flexibilität diese Datenformate alle Anforderungen
                der Nutzer erfüllen.
                .model oder .mdl Dateien sind das eigentliche Dateiformate von CATIA, zumindest bis einschließlich
                Version 4 der Anwendung. Seit Version 5 gibt es spezielle Formate zum Beispiel für Bauteile und -Gruppen.
                Daneben gibt es noch verschiedene sowohl Text als auch Binärexportformate.
            </para>
            <para>
                CATIA wurde hier als Vertreter der nicht-offenen Standards ausgewählt da es stark - aber keineswegs
                ausschließlich - in der Automobil-Industrie verwendet wird und dort oft für sämtliche
                Prozessen vom computergestützten Entwurf bis zur Fertigung und sogar bis in den Verkauf
                eingesetzt wird.
            </para>
        </section>
    </section>
    <section>
        <title>Echtzeit-Formate</title>
        <section>
            <title>3DS</title>
            <para>
                Die Firma Autodesk hat mit 3D Studio ein weit verbreitetes Programm zur Erstellung von
                dreidimensionalen Modellen geschaffen welches sich im Hobby- sowie im Semi-Professionellen bis
                Professionellen Anwendungsbereich als äußerst erfolgreich erwiesen hat.
            </para>
            <para>
                Das 3DS Format und seine Derivate sind zwar keine offenen en Datenaustausch-Formate, aber
                aufgrund der großen Popularität von 3DStudio hat es sich als de-facto Standard etabliert.
                Sie bieten ein äußerst breites Spektrum an Möglichkeiten und sind zumindest soweit offen
                als dass sich im Netz mehr als genug Anleitungen zum Einlesen dieser finden.
            </para>
            <para>
                Da 3D Studio aber zu der Gruppe der Modellierungs- und Animationssoftware gehört bietet dieses
                Format auch verschiedene Möglichkeiten Animationen zu speichern.
            </para>
            <para>
                Auch zu diesem Datenformat existiert ein Text-basiertes Pendant mit der Datei-Endung asc. Da 
                die Frequenz der Spezifiaktionsänderungen das .3ds Format aber eher moderat ist hat sich hier
                in der Praxis die Binär-Variante durchgesetzt.
            </para>
        </section>
        <section>
            <title>OBJ</title>
            <para>
                Alias (früher Alias|Wavefront) ist Hersteller der 3D Modellierungs- und Animationssoftware Maya 
                welche sich weitgehend als marktführend im High-End Bereich etabliert hat. Mit dem Text-basierten
                .obj Format welches offen spezifiziert ist hat Alias außerdem ein auch unter anderen Anwendern
                sehr beliebtes Format geschaffen.
            </para>
            <para>
                Das OBJ-Dateiformat unterstützt Linien, Polygone, Frei-Form-Kurven und -Oberflächen.
                Linien und Polygone werden mit Hilfe ihrer Punkte beschrieben, während Kurven und
                andere Oberflächen durch Kontrollpunkte und andere vom Typ der entsprechenden
                Kurve abhängigen Informationen beschrieben werden.
            </para>
            <para>
                Eine weitere Variante des .obj Datei-Formates ist das Binärformat .mod, von welchem es aber 
                so gut wie keine offene Dokumentation gibt und welches vom Leistungsumfang her mit .obj
                deckungsgleich sein sollte.
            </para>
        </section>
    </section>
    <section>
        <title>VRML</title>
        <para>
            Die Virtual Reality Modeling Language (VRML) ist ein Mitte der Neunziger Jahre vom Web3D-Konsortium 
            (damals noch VRML Architecture Group(VAG)) entwickelter Standard zur Speicherung und Darstellung von
            dreidimensionalen Strukturen. VRML wurde bewusst offen und mit dem Zweck der Darstellung zum Beispiel
            in Webbrowsern spezifiziert.
        </para>
        <para>
            VRML basiert auf einem Szenen-Graphen in welchem die Knoten Objekte und Eigenschaften der darzustellenden
            Welt repräsentieren, sie enthalten statische Eigenschaften wie Geometrie und Farbe. Gruppen-knoten bieten 
            die Möglichkeit Objekte zusammenzufassen, während Transformationsknoten dynamische Eigenschaften
            wie Translationen, Rotationen und Scheerungen beinhalten.
            Das Format bietet neben einfachen Geometrien und Materialien auch die Möglichkeit Verhaltensweisen
            zu definieren die zum Beispiel auf Annäherung der Kamera reagieren.
            Ein einfaches Beispiel:
            <programlisting role="VHDL"><![CDATA[
    #VRML V2.0 utf8
    Transform {
        children [
            Shape {
                appearance Appearance {
                    material Material {
                        diffuseColor 0.0 0.0 0.9
                    }
                }
                geometry Box {size 6.0 6.0 3.0}
            }
        ]
    }
    Transform {
        translation 10.0 0.0 0.0
        children [
            Shape {
                appearance Appearance {
                    material Material {
                        diffuseColor 0.6 0.1 0.1
                    }
                }
                geometry Sphere {radius 4}
            }
        ]
    }
            ]]></programlisting>
        </para>
        <para>
            Mit der Zeit traten aber auch Nachteile zu Tage: Die starke Struktur des Formates sorgt zusammen mit
            dem Text-Format dafür dass die Dateien sehr groß werden und - was deutlich unangenehmer ist - dass 
            der Inhalt der Datei erst dargestellt werden kann nachdem diese vollständig übertragen wurde.
            Auch merkt man dem VRML-Format das Alter an, so bietet es zum Beispiel nur unzureichende Möglichkeiten zur 
            Darstellung komplexer Flächen, außerdem kann es den Anforderungen im sich schnell entwickelnden
            Echtzeit-Bereich nicht genügen, da es keine Methoden bietet moderne Features wie Shader oder spezielle
            Texturen für zum Beispiel Bump- oder Normalmapping zu repräsentieren.
        </para>
    </section>
</chapter>
