Datenvorbereitung

Datenreduktion

Wir gehen davon aus, dass *.obj- und *.3ds- Daten zur Verfügung stehen. Bei den *.3ds-Dateien müssen wir keine Datenreduktion vornehmen, denn dieses Dateiformat lässt nur eine Speichermenge von 65535 Vertices zu. Dies entspricht ungefähr 130000 Faces. Damit lässt sich eine *3ds-Datei ohne Probleme in Irrlicht laden.
Anders ist es allerdings bei *.obj-Dateien. Diese können sehr viel mehr Datenpunkte aufnehmen. Somit müssen wir diese Dateien reduzieren, denn Irrlicht kann eine solch große Masse an Daten, wie sie bei 3D-Scannings produziert werden, nicht verarbeiten.
Dafür benutzen wir MeshLab, genauer gesagt benötigen wir nur die Funktion der "Quadric Edge Collapse Decimation".
Wir starten also MeshLab und laden das gewünschte Model ein. Zu Beginn kann es sein, dass das Model nicht in der Mitte des Bildschirms ist. Das muss man nicht ändern, es ist aber für die Bearbeitung schöner, das Model in der Mitte zu sehen.
StartVerkleinern.JPG
Um das Model in die Mitte zu bekommen, benötigt man die Steuerung: Die "Quadric Edge Collapse Decimation" ist eine Variante des bekannten edge collaps algorithm, basierend auf der quadratischen Fehler Metrik von Michael Garland und Paul Heckbert.
Kurz gesagt: Es werden viele kleine, (fast) co-planare Dreiecke in größere zusammengefasst:
eca.jpg
Der Benutzer kann den Grad der Vereinfachung durch einige Parameter bestimmen: Man erreicht das Menü für die QECD unter „Filters“ -> „Quadric Edge Collapse Decimation“. So sieht das dann aus:
QuadricEdgeCollapse.bmp
Wir nehmen nun folgende Einstellungen vor: Zum Schluss auf "Apply" drücken. Die Daten des Models sind nun rediziert und es kann von Irrlicht verarbeitet werden.

Bearbeitung in Blender

Da Irrlicht nur eine Material pro Objekt eine Textur zuweisen kann müssen zunächst die vielen Materialien, die die Tempel umhüllen vereinigt werden.
Sehr einfach geht dies mit Blender. Die Steuerung von Blender ist zunächst etwas gewöhnungsbedürftig, bei längerem Arbeiten damit erweist sie sich aber als durchaus sinnvoll.
Mehr Funtkionen werden wir für folgendes nicht benötigen.

Zunächst muss der Tempel in Blender eingeladen werden. Dies erfolgt über:
File->Import->gewünschtes Dateiformat auswählen->gewünschte Datei auswählen
Das abspeichern bzw exportieren funktioniert auf gleiche Weise:
File->Export->gewünschtes Dateiformat auswählen->gewünschte Datei/Dateinamen auswählen
Wichtig ist hier, dass man zum abspeichern wirklich exportieren muss, drückt man den normalen Speicherbutton, so wird das File im *.blend-Dateiformat abgespeichert, egal unter welchem Format man die Datei importiert hat.
Zusätzlich möchten wir hier anmerken, dass man durch die Export-Funtkion die Datei auch in jegliche andere Dateiformate umwandeln kann, dessen Export Blender unterstützt. Möglich ist hier zum Beispiel du Umwandlung in *.3ds oder *.x.
Für das Exportieren empfehlen wir die Zusatzinstallation des AddOns IrrBlend für Blender. Sie wandelt die Dateien in das Irrlichtspezifische *.irrmesh Format um. Dabei muss darauf geachtet werden, dass man die Texur mitabspeichert. Hierfür sollte man einmal kurz in die Bedienungsnaleitung des AddOns zu schauen, da dort alles sehr gut erklärt wird.
IrrBlend.JPG

Bereinigung

Zum Bereinigen des Modells geht man zunächst in den Edit-Mode. Dort wählen wir alles mit b + Maus aus, drücken w und wählt "Remove Doubles", sowie Strg+N und klickt mit der Maus auf "Recalculate Normals"

Textuierung

Als nächstes kommt die Textuierung, denn das Tempelmodel soll ja auch schön aussehen. Dafür haben wir eine Sandstein-Textur gewählt. Die Grundtextur stammt von einer Open Material Repository für Blender, auf Grund der Größe der Tempel haben wir das ganze aber verfeinert.
Wir werden nun ein UV-Mapping vornehmen. Dies ist nötig, denn normale Texturierung wird außerhalb des Blender-Programmes oft nicht richtig übernommen. UV-Mapping bedeutet:
UV-Mapping ist eine Möglichkeit, zweidimensionale Bildtexturen auf dreidimensionale Modelle zu projizieren. Es kann benutzt werden, um Texturen auf willkürliche und komplexe Formen wie menschliche Köpfe oder Tiere anzuwenden. Diese Texturen sind oft gemalte Bilder, die mit Programmen wie Gimp, Photoshop oder ähnlichem erstellt wurden. Man kann jedem Face eines Modells eine eigene Textur verpassen, oder aber eine Textur für alle Flächen benutzen. Dazwischen sind natürlich alle Mischformen möglich, z.B. eine Textur für jede Materialgruppe.
Eine UV-Map wird benutzt, um einem Polygon in einem Modell einen Teil eines Bildes zuzuweisen. Jede Vertex eines Polygons bekommt zweidimensionale Koordinaten zugewiesen, die bestimmen, welcher Teil des Bildes für das Polygon verwendet wird. Diese zweidimensionalen Koordinaten heißen UV-Vertices, oder kurz UVs (vgl. XYZ Koordinaten in 3D). Der Vorgang zum Erstellen der UV-Map heißt 'unwrap' (auseinanderfalten), da es einem Auseinanderfalten des Meshes auf eine zweidimensionale Fläche entspricht.
UV-Mapping ist auch sehr wichtig für Blenders Game Engine oder jedes andere Spiel. Es ist der de facto Standard um einem Modell Texturen zuzuweisen; fast jedes Modell, das man in Spielen findet, benutzt UV-Texturen.

Quelle und zum Weiterlesen: UV-Mapping in der Wiki-Dokumentation.


Materialien verbinden

Ist das Objekt eingeladen können wir die Materialen bearbeiten:
Material.JPG

Textuierung

Normalerweise werden für ein UV-Mapping Bilder oder ähnliches benutzt. Wir möchten aber die Sandstein-Textur nutzen. Dafür müssen wir vor dem eigentlichen Mapping eine Textur-Map erstellen:
StartSplitArea.JPG UVEditMode.JPG AuswahlSandstone.JPG bake.JPG
Jetzt kommen wir zum eigenlichen UV-Mapping: Texturenauswählen.JPG
Jetzt muss die Datei nur noch exportiert werden und ist fertig für das Einladen in Irrlicht.

weiter