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.

Um das Model in die Mitte zu bekommen, benötigt man die Steuerung:
- Linke Maustaste: Rotieren
- Rad/Shift+Linke Maustaste: Zoom
- Strg+Linke Maustaste: Objekt bewegen
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:
Der Benutzer kann den Grad der Vereinfachung durch einige Parameter bestimmen:
- Target number of faces: gewünschte Anzahl der Faces nach QECD
- Quality threshold: Grad der Qualität, Zahl zwischen 0 und 1, wobei 0 bedeutet, dass alle Faces akzeptiert werden
- Preserve boundary of mesh: Mesh-Grenzen werden nicht verletzt
- Preserve normal: versucht herausspringende Faces zu vermeiden und die Orientierung der Oberfläche beizubehalten
- Optimal position of simplified vertices: jeder reduzierte Vertex wird so positioniert, dass der quadratische Fehler minimal ist. Dies kann bei flachen Bereichen schief gehen.
- Planar simplification: eine zusätzliche Vereinfachung, die die Qualität von flachen Teilen des Meshes erhöht.
- Post-simplification cleaning: nach der QECD wird der Mesh bereinigt
- Simplify only selected faces: hier werden nur markierte Faces vereinfacht
Man erreicht das Menü für die QECD unter „Filters“ -> „Quadric Edge Collapse Decimation“. So sieht das dann aus:
Wir nehmen nun folgende Einstellungen vor:
- Target number of faces: 194000 (gelb markiert)
- Quality Treshold: 0,5
- Häckchen setzen bei:
- Optimal poition of simplified vertices
- Planar simplification
- Post-simplification cleaning
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.
- die Auswahl und Markierung erfolgt durch die Rechte Maustaste
- "S" und Rechte Maustaste: Auswahl wird skaliert
- "R" und Rechte Maustaste: Auswahl wird gedreht
- mit durch "scrwalen" kann man in Blender zoomen
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.
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:
- Zunächst muss das Objekt markiert werden, damit wir folgende Anweisungen ausführen können
- In der unteren Leiste klicken wir nun den hier blau markierten „Editing“-Button, so kommen wir zu der unten zu sehenden Auswahl
- Im roten Feld können wir zwischen den (hier) 4 Materialien über die Links- und Rechtspfeile auswählen
Zu Beginn ist kein Material ausgewählt, wir wählen also eines über die Pfeiltasten aus
- Ist ein Material ausgewählt, soklicken wir auf den darunterliegenden Button: „Delete“ (grün), so lange, bis kein Material mehr vorhanden ist
- Dannach drücken wir einmal den Button „New“ (grün) und dannach den Button „Assign“ (grün); nun hat unser Objekt ein grauweißes Material, das alle Oberflächen des Objektes bedeckt
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:
- wir teilen das Fenster. Rechtsklick auf den hier rot gefärbten Bereich, "Split" wählen und das Fenster teilen.
- im ersten Fenster wählen wir nun "Edit Mode" (lila) im zweiten "UV-Mapping" (rot)
- im zweiten Fenster wählen wir nun "Image"->"New" (grün)
- b drücken und dann das ganze Model markieren, sodass die Punkte alle gelb sind
- u drücken und ganz unten "unwrap, smart projection" wählen.
- Mit Strg+F1 laden wir nun unsere Sandsteintextur: zunächst den Ordner suchen in dem die Datei enthalten ist -> „MeineTextur“.blend->Material->“Texturname“->Load Library
- in der grün markierten Leiste können wir nun unsere Sandsteintextur für das Objekt auswählen. In der ersten Leiste auf die Kugel (blau) klicken. Hier können wir nun das Sandsteinmaterial auswählen (gelb).
- Wir wählen nun zunächst die blauen Buttons an und wählen dann das Fenster Bake (rot)
- Dann wählen wir "Texture" (gelb) stellen darunter in Margin die Zahl etwas höher (etwa 4) und klicken "Bake" (rosa)
- neben dem Bild-Namen ist ein kleines gelbes Paket (hier nicht zu sehen), dieses wird aktiviert
Jetzt kommen wir zum eigenlichen UV-Mapping:
- wir wählen in den Materialien wieder unser graues Material, welches vorher erstellt wurde, aus
- Im Texture-Fenster erstellen wir über „Add New“ eine neue Textur. In dem Fenster erscheinen nun zwei neue Kategorien: Map Input und Map To
- in Map Input wählen wir den Button UV, bei MapTo: Col
- Nun wählen wir den Texture-Button (rot) und können hier für die Textur den Texture Type wählen: Image (gelb)
- Es öffnet sich ein neues Fenster und ganz rechts laden wir unsere Texture-Map ein (blau)(ganz links auf das Kreuz klicken, dann erscheinen die aktuellen UV-Maps zur Auswahl)
Jetzt muss die Datei nur noch exportiert werden und ist fertig für das Einladen in Irrlicht.
weiter