Sprachen

MoCaRT++

Thema: 
MoCaRT++ - ein objektorientiertes Programmsystem für Monte-Carlo-Bildsynthese
Zeitraum: 
SS 1995, WS 1995/96
Umfang: 
jeweils 8 SWS
Veranstalter: 
Materialien: 

Die Aufgabenbeschreibung als gzipped PostScript (20 KB).

Eine Beschreibung des fertigen Programmsystems sowie einige Ergebnisbilder sind abrufbar.

Es gibt einen Forschungsbericht der Universität Dortmund der im Umfeld dieser Projektgruppe entstanden ist.

Thematik: 

Fotorealistische Bilderzeugung

Die fotorealistische Bilderzeugung ist ein Teilgebiet der Computergrafik. Sie hat es sich zum Ziel gesetzt, möglichst realistisch wirkende Bilder von im Rechner modellierten Szenen zu erzeugen. Anwendung findet sie hauptsächlich in den Bereichen Design, Unterhaltung, Architektur und Beleuchtungsplanung. Wesentlich für die Qualität der erzeugten Bilder ist die korrekte Simulation der Beleuchtung. Das Grundproblem bei der Beleuchtungssimulation ist die Lösung der Frage, wieviel Licht ein bestimmter Punkt auf einer Fläche in eine bestimmte Richtung abstrahlt. Dazu muß die Stärke des aus allen Richtungen einfallenden Lichtes bestimmt, mit einem von Ein- und Ausfallsrichtung abhängigen Reflexionskoeffizienten multipliziert und aufsummiert werden. Mathematisch gesehen ist dies die Lösung eines Integrals über die Hemisphäre des Punktes (Rendering Equation [Kaj86]). Da eine exakte mathematische Lösung dieses Problems am Rechenaufwand scheitert, werden für die Rendering Equation vereinfachte Modelle eingesetzt, die z. B. vereinfachte Annäherungen der Reflexionsfunktion einsetzen oder nur bestimmte Einfallsrichtungen des Lichts zur Berechnung heranziehen. Beginnend mit lokalen Beleuchtungsmodellen, die nur die relative Lage von Fläche und Lichtquelle berücksichtigen und damit weder Schatten noch Reflexion kennen, ging die Entwicklung zu Verfahren, die immer mehr Mechanismen des Lichttransports modellieren. Weit verbreitet sind heute Strahlverfolgungsverfahren [Gla89] (Ray Tracing), die Spiegelung und Brechung gut wiedergeben, aber keine diffuse Interreflexion enthalten, oder Strahlungsverfahren [CW93] (Radiosity), die aber auf rein diffuse Reflexion beschränkt sind.

Monte-Carlo-Bildsynthese

Für die Lösung von Integralgleichungen wie der Rendering Equation gibt es stochastisch arbeitende Verfahren, die sogenannten Monte Carlo-Verfahren. Bei der Bildsynthese zeigt sich, daß sich dies letztendlich nur in einer anderen Strategie zur Auswahl der Strahlen, die zu verfolgen sind, vom klassischen Strahlverfolgungsverfahren unterscheidet. Das klassische Strahlverfolgungsverfahren basiert auf einer vereinfachenden Spezialisierung der Rendering Equation, indem die Einfallsrichtungen von Licht auf die spiegelnde Reflexion und Brechung sowie die Richtungen, in denen Lichtquellen liegen, reduziert werden. Mit dieser Einschränkung lassen sich effektvolle Bilder generieren, es ist aber immer deutlich erkennbar, daß ein vom Computer generiertes Bild vorliegt.

Prinzipiell unterscheidet sich Monte-Carlo-Strahlverfolgung von der klassischen dadurch, daß bei der Auswertung der Rendering Equation stochastische, aber nach statistischen Kriterien ausgewählte Richtungen berücksichtigt werden. Damit lassen sich Effekte wie diffuse Interreflexion oder Brechung des von Lichtquellen abgestrahlten Lichts simulieren, die im klassischen Ray Tracing fehlen.

Da Strahlverfolgungsverfahren generell und Monte-Carlo-Strahlverfolgung ganz besonders rechenaufwendig sind, ist es für ein praktikables Bildsynthesesystem wünschenswert, bei der Szenenspezifikation und der Berechnung an den jeweils gewünschten optischen Effekt angepaßte vereinfachte Modelle anzugeben. Die Qualität des jeweiligen Modells entscheidet, welche Beleuchtungseffekte simuliert werden. Es handelt sich hierbei unter anderem um die Darstellung der Lichtquellen (Punkt/Fläche, räumliche Verteilung der Abstrahlung), Reflexionsfunktion oder Wahl der berücksichtigten Einfallsrichtungen der Rendering Equation (z.B. nur die der klassischen Strahlverfolgung). Ein derartiges System muß über eine Software-Architektur verfügen, die flexibel bezüglich dieser Modellierungsalternativen ist. Verschiedene Lösungsvarianten sollen austauschbar sein, neue sollen hinzugefügt werden können.

Das Programmsystem RadaRT++

Am Lehrstuhl VII existiert bereits ein Programmsystem namens RadaRT++, das die Grundfunktionalität eines klassischen Ray Tracing-Programms realisiert. Als Grundkörper sind bis jetzt Ebenen, Kugeln und Polygone (mit Aussparungen) verfügbar. Dieses Basissystem ist bereits eingesetzt worden, um neue Verfahren zur Integration natürlicher Objekte (z. B. Bäume) in computergenerierte Bilder und Einsatz realer Beleuchtungsquellen zu entwickeln.

RadaRT++ ist objektorientiert entworfen [Mey88]. Diese Entwurfstechnik hat sich dabei bewährt. So werden abstrakte Klassen verwendet, um die Schnittstellen zu verschiedenen, zur Laufzeit eventuell nebeneinander eingesetzten Implementierungen zu definieren. Dies sind z. B. Lichtquellen, Grundkörper oder Materialien. Jede reale Implementierung wird als vererbte Unterklasse implementiert. Die Kapselung in die jeweiligen Klassen unterstützt das Einfügen neuer Komponenten. Die Integration eines neuen Grundkörpers erfordert z. B. nur das Erstellen einer neuen, von der abstrakten Oberklasse abgeleiteten Klasse. Die Gliederung des Gesamtsystems in einzelne Klassen erleichtert natürlich auch die Zusammenarbeit mehrerer Personen und den Test der einzelnen Komponenten.

Das Programmsystem MoCaRT++

Von der Projektgruppe soll in Anlehnung an RadaRT++ ein neues Programmsystem MoCaRT++ entworfen und implementiert werden. Dabei soll das Verfahren des Monte-Carlo-Raytracing in Anlehung an die klassische Strahlverfolgung und RadaRT++ analysiert und in geeignete Klassenhierarchien umgesetzt werden. Dabei sind die oben genannten Anforderungen wie zukünftige änderungen und Erweiterungen zu berücksichtigen. Für das Design wird die von Rumbaugh et. al. [RBP+91] entwickelte OMT-Methode mit Einsatz des Werkzeuges StP/OMT verwendet. Die Implementierung erfolgt in der Programmiersprache C++ [Str91].

Literatur:

[CW93] Michael F. Cohen and John R. Wallace. Radiosity and Realistic Image Synthesis. Academic Press, Boston, 1993
[Gla89] Andrew S. Glassner, editor. An Introduction to Ray Tracing. Academic Press, London, 1989.
[Kaj86] James T. Kajiya. The rendering equation. In David C. Evans and Russell~J. Athay, editors, Computer Graphics (SIGGRAPH '86 Proceedings), volume 20, pages 143--150, August 1986.
[Mey88] Bertrand Meyer. Object-oriented Software Construction. International Series in Computer Science. Prentice Hall, 1988.
[RBP+91] J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, and W. Lorensen. Object-Oriented Modelling and Design. Prentice Hall, 1991.
[Str91] Bjarne Stroustrup. The C++ Programming Language. Addison-Wesley, second edition, 1991.