Projekt Micarpet Projektbericht - artecLab - Universität Bremen
Projekt Micarpet Projektbericht - artecLab - Universität Bremen
Projekt Micarpet Projektbericht - artecLab - Universität Bremen
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Projekt</strong> MiCarpet <strong>Projekt</strong>bericht<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Abbildung 12.5: Beispiel einer XML-Konfigurationsdatei für die Landschaftsschichten in der Szene<br />
In unserem Fall haben wir uns für die erste Möglichkeit - Schichtzuweisung über die Höhe - entschieden.<br />
Die Modellierer haben dabei ähnlich wie bei den Wasserebenen die Möglichkeit, über eine XML-Datei<br />
globale und szenenspezifische Vorgaben über die benutzten Texturschichten zu machen (siehe Abbildung<br />
12.5). Wir bieten sowohl die Zuweisung von Texturen wie auch Farben für die einzelnen Schichten<br />
(oder auch die Kombination von beidem). Eine Schicht ist jeweils über eine Anfangs- und End-Höhe<br />
bestimmt, in der sie aktiv ist: so muss nicht für jede Höhe jede Schicht dargestellt werden, sondern nur<br />
im entsprechenden Bereich, was die Geschwindigkeit der Darstellung erhöht.<br />
Natürlich fehlt nun noch ein Konzept für die Überblendung mehrerer Schichten, da ein abrupter Übergang<br />
sehr störend wirkt. Wir haben daher einen Algorithmus implementiert, der jeweils aufeinanderfolgende<br />
Schichten mit den Möglichkeiten normaler 3D-Hardwarekarten überblendet.<br />
Dabei benutzen wir sogenanntes Multipass-Rendering, d.h. das selbe Objekt wird mehrmals gerendert<br />
und die Ergebnisse jeweils mit den vorigen kombiniert. Die Rendering-APIs erlauben dabei üblicherweise<br />
Standard-Rechenoperationen wie Multiplikation, Addition und Subtraktion der Ergebnisse, was wir<br />
uns hier zunutze machen. So wird für jeden Punkt im Modell für jede Schicht ein Gewicht berechnet und<br />
die Schicht später beim Rendern mit diesem Gewicht dargestellt. Wichtig ist hier natürlich, daß die Summe<br />
aller Gewichte für den Punkt immer 1 ergibt, damit letzlich eine einheitliche Helligkeit vorhanden<br />
ist.<br />
Das realisieren wir mit Multipass-Rendering, indem wir das Gewicht als Alpha(Transparenz)-Wert des<br />
Punktes betrachten: wenn wir nun alle Texturen nacheinander mit dem entsprechenden Transparenzwert<br />
addieren, so ergibt sich schließlich genau das gewünschte Ergebnis einer gewichteten Kombination der<br />
Texturen. Wie sich dies auf die Renderläufe (Passes) verteilt, ist in Abbildung 12.6 zu sehen: In einem<br />
Pass wird jeweils der Texturwert mit dem Alphawert multipliziert und das Ergebnis auf das vorige Ergebnis<br />
(vor dem ersten Lauf: schwarzes Bild) addiert. Dies kann natürlich für beliebig viele Schichten<br />
geschehen, allerdings wird mit jeder Schicht die Geschwindigkeit geringer, weil für jede Schicht das Modell<br />
einmal komplett gerendert werden muss. Wie man sieht, ergibt sich als Ergebnis eine Art Shading-<br />
Baum für die Berechnung (insofern ähnlich zum allgemeinen Shading-Baum in [?]). Um auch noch ein<br />
allgemeines Zusammenblenden mit Farbwerten zu erlauben, kann (falls in der Konfiguration aktiviert)<br />
vor die Textur-Passes auch noch ein voriger Pass gesetzt werden, der das Terrain nur mit interpolierten<br />
Farben rendert.<br />
Die Alpha-Werte für jeden Punkt werden auch jeweils dynamisch berechnet: dazu wird für jede Schicht<br />
eine eindimensionale Alpha-Textur generiert, die jeweils als Blending-Wert für die entsprechende Höhe<br />
angibt. Jeder Punkt erhält dafür eine zusätzliche Texturkoordinate, die seiner Höhe entspricht, und mit<br />
der dann beim Rendern auf die Alpha-Textur zugegriffen wird. Wie schon oben erwähnt, ist es wichtig,<br />
daß zu jedem Punkt die Summe der Alphawerte exakt 1 ergibt. Dies realisieren wir, indem wir für<br />
jede Schicht den Mittelpunkt des Bereichs nehmen und mit steigender Abweichung des Höhenwertes<br />
6. Januar 2005 Seite 100