-
Ein derartiges Verfahren und eine
derartige Vorrichtung bezieht sich auf ein Verfahren und eine Vorrichtung
zur Erzeugung eines zweidimensionalen Abbildes von einer dreidimensionalen
Welt. Die Erfindung betrifft insbesondere das Erzeugen von Bildern mit
dem Verfahren der Strahlverfolgung, das in Fachkreisen umgangssprachlich
als "Ray Tracing" bezeichnet wird.
-
In der Computer-Technik werden dreidimensionale
Körper,
Bauteile, Geräte,
Häuser
oder gar Welten durch geometrische Beschreibungen spezifiziert.
Diese Beschreibungen enthalten neben der reinen Geometrie zumeist
auch Informationen über
die Materialien und Lichtquellen. Eine der häufigsten Anwendungen im Zusammenhang
mit geometrischen Beschreibungen ist das Erzeugen von einem zweidimensionalen
Abbild einer solchen dreidimensionalen Beschreibung. Hierbei kann
man sich die Problematik wie folgt verdeutlichen:
"Wenn man
in dieser virtuellen dreidimensionalen Welt eine virtuelle Kamera
platziert und diese ein Foto machen lässt, wie sieht dieses Foto
aus? "
-
Zur Lösung dieses Problems sind eine
Vielzahl von Verfahren bereits bekannt. Eines der bekanntesten ist
das Strahlverfolgungs Verfahren (engt. Ray Tracing). Dieses wurde
nach Kenntnis der Erfinder erstmals 1968 von Arthur Appel: "Some
Techniques for Shading Machine Renderings of Solids", Proceedings
of "AFIPS 1968 Spring Joint Computer Conference", Band 32, Seiten
37-45 vorgestellt und seit dem von einer Vielzahl von Wissenschaftlern weiterentwickelt.
-
Eine weitergehende Darstellung zu
dem Thema Ray Tracing kann beispielsweise in Andrew S. Glassner
(Editor): "An Introduction to Ray Tracing", Academic Press, ISBN
0-12-286160-4 gefunden werden. Weitere Erläuterungen finden sich in der Figurenbeschreibung
im Zusammenhang mit der 1.
-
Der vorliegenden Erfindung liegt
die Aufgabe zu Grunde, ein Verfahren sowie eine Vorrichtung zur Durchführung des
Verfahrens vorzuschlagen, mit dem die Erzeugung einer zweidimensionalen
Abbildung einer dreidimensionalen Welt vereinfacht werden soll.
Dabei sollen Ressourcen eines Computers effizienter genutzt werden
als dies bei bisher bekannten Verfahren der Fall war.
-
Zum Verständnis seien für den Zusammenhang
dieser Patentanmeldung folgende Definitionen erläutert.
-
Die geometrische Beschreibung einer
virtuellen dreidimensionalen Welt enthält mindestens folgende Bestandteile:
- – Ein
oder mehrere Objekte, deren Geometrie auf verschiedene Arten spezifiziert
sein kann
1. einfache geometrische Grundkörper, wie z.B. Dreiecke, Kugeln
oder Quader
2. durch mathematische Funktionen (z.B. Vereinigung
oder Schnittmenge) zusammengesetzte Grundkörper
3. durch mathematische
Funktionen beschriebene Körper,
z.B. Spline-Flächen
4.
durch einen Datensatz beschriebene Körper, z.B. Daten aus einem
Kernspin-Tomographen
- – Eine
Beschreibung der Materialeigenschaften der Objekte, wie z.B. "Objekt
ist blau", "Objekt ist aus Glas", "Objekt besitzt spiegelnde Oberfläche". Die
Beschreibung der Materialeigenschaften kann dabei auch durch numerische
Parameter oder durch definierte Berechnungsvorschriften erfolgen.
- – Eine
baumartige Datenstruktur, die dazu dient, Objekte der virtuellen
Welt nach ihrer räumlichen Lage
zu klassifizieren. Mit baumartigen Datenstrukturen werden hierbei
sowohl Baumstrukturen als auch gerichtete azyklische Graphen bezeichnet.
-
Komplexe Objekte können dabei
wiederum eine baumartige Datenstruktur besitzen, die das komplexe
Objekt räumlich
aufteilt oder beispielsweise in einfachere Teilobjekte räumlich oder
logisch unterteilt. Im Kontext dieser Patentanmeldung wird im Folgenden
nicht zwischen einfachen Grundobjekten und komplexen Objekten wie
beispielsweise zusammen gesetzten oder solchen mit baumartigen Strukturen
unterschieden. Beide Fälle
werden mit "Objekt" bezeichnet.
-
Zusätzlich zu oben beschriebenen
Eigenschaften können
Objekte auch eine Transformation besitzen. Diese Transformation
kann beispielsweise mit Hilfe einer Transformationsmatrix eine affine Transformation
des entsprechenden Objektes in der dreidimensionalen Welt beschreiben
und ändert
damit die Koordinaten des Objektes.
-
Unabhängig von diesen Transformationen kann
zu einem Objekt zusätzlich
auch eine Anweisungsfolge spezifiziert werden. Diese Anweisungsfolge
kann die Eigenschafen des Objektes verändern. Hierzu zählen die
geometrischen Eigenschaften (bei einer Kugel beispielsweise ihr
Radius) und die Materialeigenschaften (beispielsweise ihre Farbe).
-
Zudem kann auch die Beleuchtungssituation in
der virtuellen Welt spezifiziert werden.
-
Die baumartige Datenstruktur ist
aus folgenden Komponenten aufgebaut:
- – Baumknoten:
Jeder Knoten im Baum beschreibt die Lage einer achsenparallelen
Teilungsebene im dreidimensionalen Raum.
- – Baumblatt:
Jedes Btatt des Baums beschreibt den Inhalt eines Raumvolumens.
Das Raumvolumen kann dabei ein oder mehrere Objekte enthalten oder
auch leer sein.
- – Platzhalter:
Ein Platzhalter kann anstelle eines Baumknotens, Baumblatts oder
eines Objektes stehen. Ein Platzhalter besteht aus zwei Teilen: Einem
Stellvertreter, der ein Objekt enthält, und einem Ersatzobjekt.
Das Ersatzobjekt wird durch eine Folge von Anweisungen spezifiziert,
kann aber zusätzlich
auch noch Objekte und baumartige Strukturen sowie weitere Platzhalter
enthalten. Werden die Anweisungen ausgeführt, so können dabei neue Baumknoten,
Baumblätter,
Baumkanten, Objekte und Platzhalter entstehen, die nach vollständiger Ausführung der
Anweisungen den Stellvertreter ersetzen.
- – Baumkanten:
Diese Kanten stellen die Verbindungen zwischen den Komponenten dar.
-
Solche baumartigen Datenstrukturen
sind in der Computer-Technik bekannt, bestehen dort aber nur aus
Baumknoten, Baumblättern
und Baumkanten. Der vorliegenden Erfindung am nächsten sind dabei die KD Bäume, die
ihrerseits mit den BSP-Bäumen
verwandt sind. Insbesondere die Erweiterung um Platzhalter im Zusammenhang
mit dem Ray Tracing Verfahren wurde im Rahmen dieser Erfindung gemacht.
Ebenfalls Bestandteil der Erfindung ist die Zusammenstellung der
Definition von Objekten. Als Gesamtheit, die alle möglichen
Eigenschaften gleichartig unterstützt und vereint, ist diese
Definition neuartig.
-
Die Definitionen werden zum besseren
Verständnis
nochmals im Zusammenhang mit 3 erläutert.
-
Die oben genannte Aufgabe wird erfindungsgemäß nach Anspruch
1 gelöst,
wonach ein Ray Tracing Verfahren verwendet wird. Das Ray Tracing
Verfahren bedeutet, das bei dessen Durchführung mindestens ein Teil der
geometrischen Beschreibung der Welt mit Strahlen geschnitten wird,
wobei aus Schnittpunkten von Objekten der Welt mit den Strahlen
die zweidimensionale Abbildung zusammen gesetzt wird. Weiterhin
werden mehrere Strahlen zu einem Paket von diskreten Strahlen zusammen
gefasst. Dabei erfolgt dann eine Assoziation einer Datenstruktur
mit jedem Paket von diskreten Strahlen. Zu dieser Datenstruktur
wird eine zustandsmäßige Zuordnung
zu jedem Strahl gespeichert. Dieser Zustand gibt mindestens an,
ob der bezeichnete Strahl an der Operation, die zu diesem Zeitpunkt
auf das Paket angewendet wird, teilnimmt. Es erfolgt weiterhin die
Anwendung aller Arbeitsschritte des Verfahrens auf ein Paket von
mehreren diskreten Strahlen. Dabei wird in einem Arbeitsschritt,
der eine Operation auf einem Paket ausführt, diese Operation auf jedem Strahl
des Paketes ausgeführt,
falls sich aus der gespeicherten zustandsmäßigen Zuordnung des Strahl zu
der Datenstruktur ergibt, dass der betreffende Strahl an dieser
Operation teilnimmt. Die Gliederung des Ray-Tracing Verfahrens erfolgt dabei in
die folgenden Arbeitsschritte, die für ein Paket von Strahlen jeweils
nacheinander abgearbeitet werden:
- A Kamerastrahlerzeugung:
Erzeugung eines Pakets von Strahlen, die von der virtuellen Kamera ausgehend
mit der Geometrie der dreidimensionalen Welt geschnitten werden
sollen.
- B Baumtraversierung: Gemäß der räumlichen
Orientierung der Strahlen wird die Baumdatenstruktur für die Geometrie
der dreidimensionalen Welt durchlaufen, bis ein Baumblatt oder ein
Platzhalter erreicht wird. Hierzu werden Baumknoten und Platzhalter
aus einem Speicher gelesen und Berechnungen durchgeführt. Wird
ein Platzhalter erreicht, so wird die entsprechende Anweisungsfolge
des Ersatzobjektes ausgeführt.
Hierbei wird der Platzhalter durch ein Objekt ersetzt, das auch komplex
sein kann. Dabei stehen zwei Alternativen zur Verfügung: Entweder
wird zuerst die Anweisungsfolge vollständig ausgeführt und anschließend entsprechend
der neuen Struktur des Baums das Verfahren fortgesetzt oder die
Anweisungsfolge wird asynchron ausgeführt, wobei das Verfahren direkt
mit dem Stellvertreter des Platzhalters fortgesetzt word und bei vollständiger Abarbeitung
der Anweisungsfolge des Ersatzobjekts durch das Ergebnis dieser
Abarbeitung ersetzt wird.
- C Einlesen des Baumblatts: Aus einem Speicher werden alle Referenzen
der Objekte und Platzhalter, die sich in diesem Baumblatt befinden,
eingelesen. Wird dabei ein Platzhalter eingelesen, so wird die entsprechende
Anweisungsfolge ausgeführ.
- D Schneiden aller Objekte: Einlesen und Schneiden aller Objekte,
die in Arbeitsschritt C spezifiziert wurden, mit dem Paket von Strahlen.
Wurde zu einem Objekt eine Transformation spezifiziert, so wird
diese angewendet, bevor der Schnitt mit dem Objekt berechnet wird.
Wurde zu einem Objekt eine geometrieverändernde Anweisungsfolge spezifiziert,
so wird diese ausgeführt,
bevor der Schnitt mit dem Objekt berechnet wird. Falls ein zu schneidendes
Objekt ein komplexes Objekt mit eigener Baumstruktur ist, das traversiert
werden muss, dann wird dieses Objekt geschnitten, indem die Arbeitsschritte
B – F,
angepasst an das komplexe Objekt, ausgeführ werden.
- E Schnittauswertung: Auswerten, ob für das Paket von Strahlen gültige Schnittpunkte
vorliegen. Falls es noch Elemente des Baums gibt, die für einen
Strahlschnitt in Frage kommen, aber noch nicht untersucht wurden
und der vorangegangene Arbeitsschritt nicht in ausreichender Menge
gültige
Schnittpunkte ergeben hat, dann wird unter Einbeziehung der bisherigen
Ergebnisse bei Arbeitsschritt B erneut eingesetzt, ansonsten mit Schritt
F fortgefahren. Hierbei wird gegebenenfalls der Zustand des Pakets
geändert.
- F Bestimmung der Objekteigenschaften: Die Ergebnisse der vorangegangenen
Arbeitsschritte werden ausgewertet. Dabei können Daten von Objekten aus
einem Speicher gelesen werden, falls diese einen gültigen Schnittpunkt
mit einem der Strahlen haben. Die Ergebnisse der Berechnungen fließen in Schritt
G ein und bei entsprechenden Ergebnissen können Werte in einen Speicher
neu berechnet werden. Wurde zu einem der Objekte, die von einem
Strahl geschnitten wurden, eine materialverändernde Anweisungsfolge spezifiziert,
und sind die Materialeigenschaften dieses Objekts fiir den Arbeitsschritt
F oder G von Bedeutung, so wird diese Anweisungsfolge vor den Berechnungen
des Arbeitsschnitts F ausgeführt.
- G Folgestrahlerzeugung: Wird in Schritt F berechnet, dass ein
oder mehrere weitere Strahlen mit der Geometrie der dreidimensionalen
Welt geschnitten werden sollen, dann werden in diesem Schritt entsprechende
Pakete von Strahlen berechnet und das Verfahren setzt für diese
Strahlen bei Arbeitsschritt B erneut an. Ansonsten wird wieder bei
Schritt A eingesetzt, falls zur Ausbildung der zweidimensionalen
Abbildung noch weitere Kamerastrahlen erzeugt werden müssen.
-
Damit wird ein Verfahren zur Ausbildung
von einer zweidimensionalen Abbildung einer virtuellen dreidimensionalen
Welt beschrieben. Hierbei ist die dreidimensionale Welt nach obigen
Definitionen spezifiziert. Das Verfahren zeichnet sich durch eine
neuartige Technik zur Datenreduktion aus, ohne unnötige Berechnungen
zu bedingen. Bei dieser Technik werden einzelne Strahlen zu einem
Paket von Strahlen zusammengefasst, wie bereits in Ingo Wald, Carsten
Benthin, Markus Wagner, Philipp Slusallek: "Interactive Rendering
with Coherent Ray-Tracing", Computer Graphics Forum / Proceedings
of the EUROGRAPHICS 2001, Manchster, United Kingdom, September 3-7,
2001, http://graphics. cs. unisb.de/Publications/2001/InteractiveRenderingWithCoherentRayTracing.pdf
beschrieben.
-
Eine neuartige und erfinderische
Erweiterung gegenüber
dem in der genannten Veröffentlichung
beschriebenen Verfahren besteht durch die Assoziation einer Datenstruktur
mit jedem dieser Pakete. Diese Datenstruktur enthält dabei
den Zustand jedes Strahls eines Pakets. Weiterhin werden die einzelnen
Arbeitsschritte des Ray Tracing Verfahrens derart gegliedert, dass
sie die neue Technik optimal unterstützen und sich gleichzeitig
besonders eigenen, um gerätetechnisch
umgesetzt zu werden.
-
Zur Verdeutlichung sei auf die nachfolgenden
Ausführungen
im Zusammenhang mit 3 verwiesen,
in denen erläutert
wird, wie die Berechnung abläuft,
wenn die Strahlen R1 und R2 zu einem Paket zusammengefasst werden.
-
Bei der Abarbeitung des Verfahrens
bietet sich die Möglichkeit,
ein Paket genau einem Arbeitsschritt zuzuordnen, um damit einen
strukturierten Ablauf zu erreichen.
-
Ein Paket kann aber auch mehreren
Arbeitsschritten gleichzeitig zugeordnet sein, um dadurch eine bessere
Auslastung der Datenverarbeitungsanlage zu erreichen. Beispielsweise
könnte
die Bearbeitung von Strahlen, für
die bereits in Schritt E gültige
Schnittpunkte berechnet wurden, mit Schritt F fortfahren, während für die anderen
Strahlen die Berechnung mit Schritt B fortgeführt wird. Sobald dann alle Strahlen
des Pakets die Berechnungen in Schritt F ausgeführt haben, könnte das
Paket wieder geschlossen mit der Bearbeitung von Schritt G fortfahren.
-
Bei der Ausgestaltung des Verfahrens
nach Anspruch 2 werden die in Arbeitsschritt G erzeugten Strahlen
durch einen weiteren Arbeitsschritt in neue Pakete zusammengefasst.
Dabei werden alle neu erzeugten Strahlen gesammelt, sortiert zu
neuen Paketen von diskreten Strahlen zusammen gestellt.
-
Hierbei enthält ein neues Paket nicht unbedingt
nur Strahlen, die aufgrund von Berechnungsergebnissen genau eines
Vorgänger-Strahlenpaketes erzeugt
wurden, vielmehr kann der Arbeitschritt des Sammelns und Umsortierens
neu erzeugte Strahlen von mehreren Vorgänger-Strahlpaketen, die logisch zusammenhängen, zu
neuen Paketen kombinieren.
-
In Zusammenhang mit Anspruch 1, insbesondere
auch bei den Ausführungen
zu 3 wurde beschrieben,
wie sich der Effekt der Datenreduktion beim Traversieren von Paketen
auswirkt und dadurch auch eine Datenreduktion für die Schritte C (Einlesen des
Baumblatts), D (Schneiden aller Objekte) und E (Schnittauswertung)
zur Folge hat. Dieser Effekt tritt nicht auf, wenn die Pakete ungünstig aus
Strahlen zusammengestellt werden.
-
Besucht beispielsweise der Strahl
R1 die Baumkomponenten {N1, N2, V1} und der Strahl R2 die Baumkomponenten
{N3, V2}, so wird durch das Traversieren des Paketes keine Datenreduktion
gegenüber
einer Traversierung der einzelnen Strahlen erreicht.
-
Anspruch 2 beschreibt hier vorteilhaft
einen Arbeitsschritt, der das in Anspruch 1 beschriebene Verfahren
erweitert und neu erzeugte Strahlen derart zu Paketen zusammenfasst,
dass eine Datenreduktion bei der Traversierung der Pakete gegenüber der Traversierung
der einzelnen Strahlen erreicht wird.
-
Bei der Ausgestaltung des Verfahrens
nach Anspruch 3 wird ein Multi-Threading Verfahren eingesetzt, wobei
jeweils ein Paket von Strahlen als ein Thread betrachtet wird.
-
Das Multi-Threading Verfahren wird
innerhalb eines Arbeitsschritts eingesetzt, um Funktionseinheiten
sinnvolle Arbeiten verrichten zu lassen, während sie auf Ergebnisse von anderen
Funktionseinheiten warten. Hierbei hält jeder Arbeitsschritt einen
Vorrat von Paketen, den die Funktionseinheiten des Arbeitsschritts
abwechselnd abarbeiten.
-
In einigen Arbeitsschritten werden
Daten aus einem Speicher geladen. Üblicher Weise dauert das Laden
von Daten aus einem Speicher einige Zeiteinheiten. Da aber noch
auf die zu ladenden Daten gewartet werden muss bevor die Berechnungen
ausgeführt
werden können,
vergeht diese Wartezeit, ohne dass sinnvolle Berechnungen ausgeführt werden können. Wenn
einem Arbeitsschritt mehrere Pakete gleichzeitig zugeordnet sind,
dann könnte
der Ablauf einer Berechnung folgender Maßen aussehen:
Für Paket
1 wird berechnet, welches Datum aus dem Speicher geladen werden
soll. Danach wird für
Paket 1 das Datum aus dem Speicher geladen und zeitgleich für Paket
2 berechnet, welches Datum für
Paket 2 aus dem Speicher geladen werden soll. Wenn dann das Datum
aus dem Speicher für
Paket 1 geladen wurde, kann die Berechnung für Paket 1 ausgeführt werden.
Zeitgleich wird für
Paket 2 das entsprechende Datum aus dem Speicher geladen und für Paket
3 berechnet, welches Datum das Paket 3 aus dem Speicher laden möchte, u.s.w.
-
Vorteilhaft wird also im Zusammenhang
mit dem beschriebenen Verfahren ein Paket als ein Thread klassifiziert.
-
Gemäß Anspruch 4 ist das Verfahren
so ausgestaltet, dass die Menge der Daten der dreidimensionalen
Welt derart verwaltet wird, dass zu einem Zeitpunkt nur ein Teil
dieser Daten im Speicher gehalten wird.
-
Dabei werden vorteilhaft stets die
Daten ganzer Objekte bzw. ganzer Teilobjekte in den Speicher geladen,
bzw. aus dem Speicher entfernt, um Platz für neu benötigte (Teil-) Objekte zu schaffen.
Hierbei kann das Verfahren so ausgestaltet werden, dass hierfür ein eigenständiger Arbeitsschritt
realisiert wird, in dem protokolliert wird, auf welche (Teil-) Objekte
wann und wie oft zugegriffen wurde. Weiterhin können in diesem Arbeitsschritt
die gesammelten Informationen verwendet werden, um selbsttätig den Speicher
zu verwalten und bei Bedarf neue Teile der dreidimensionalen Welt
in den Speicher zu laden und zu entfernen.
-
Eine virtuelle Welt kann also aus
einer Vielzahl von Objekten bestehen. Dabei kann die Beschreibung
der virtuellen Welt so viele Daten umfassen, dass sie sehr viel
Speicher benötigt.
Beispielsweise in einer Datenverarbeitungsanlage befinden sich mehrere
Speicher unterschiedlicher Größe und Geschwindigkeit.
Da große
Speicher meist wesentlich langsamer sind als kleinere, aber die
Geschwindigkeit des Speichers für
die zum Abarbeiten des Verfahrens benötigte Zeitdauer eine wichtige
Rolle spielt, ist es wünschenswert,
alle für
das Verfahren wichtigen Daten in einem schnellen Speicher zu halten.
-
Mit dem Verfahren nach Anspruch 4
lässt sich
also ein Management der unterschiedlichen Speicher organisieren,
mit dein erreichbar wird, dass nach Möglichkeit immer alle aktuell
benötigten
Daten in einem schnellen Speicher vorgehalten werden. Dazu protokolliert
das Verfahren, welche Objekte oder Teilobjekte wann und wie oft
gelesen wurden und lädt
bei Bedarf neue (Teil-) Objekte aus einem langsamen Speicher in
den schnellen Speicher. Ist der schnelle Speicher voll, so kann
das Verfahren Anhand der Buchführung
nicht mehr benötigte
(Teil-) Objekte ausfindig machen und aus dem schnellen Speicher
löschen,
damit Platz für
die benötigten
Daten geschaffen wird. Wichtig ist hierbei auch, dass das Verfahren
aus einem der Ansprüche
1, 2 oder 3 nur lesend auf die Daten der virtuellen Welt zugreift und
damit nie der Fall auftreten kann, dass die Daten im schnellen Speicher
verändert
wurden und in den langsamen Speicher zurückgeschrieben werden müssen, bevor
sie gelöscht
werden können.
-
Es ist auch möglich, die Daten- und Speicherverwaltung
so zu organisieren, dass dabei stets Blöcke von Daten in den Speicher
geladen, bzw. aus dem Speicher entfernt werden, um Platz für neu benötigte Daten
zu schaffen. Auch hierbei kann ein eigenständiger Arbeitsschritt realisiert
werden, in dem protokolliert wird, auf welche Blöcke wann und wie oft zugegriffen
wurde. Weiterhin können
in diesem Arbeitsschritt die gesammelten Informationen verwendet
werden, um selbsttätig
den Speicher zu verwalten und bei Bedarf neue Teile der dreidimensionalen
Welt in den Speicher zu laden und zu entfernen.
-
Bei dieser Alternative besteht zu
der vorher im Zusammenhang mit Anspruch 4 erläuterten Variante der Unterschied
darin, dass nicht ganze Objekte oder Teilobjekte aus einem langsamen
Speicher gelesen oder im schnellen Speicher gelöscht werden, sondern dass die
Daten der virtuellen Welt in Blöcke unterteilt
werden und diese Blöcke
bei Bedarf in den schnellen Speicher gelesen oder aus ihm gelöscht werden.
Insbesondere kann durch diese Unterteilung ein Objekt in mehrere
Blöcke
gegliedert sein. Der Vorteil dabei ist, dass bei einer festen Größe der Blöcke immer
die gleiche Anzahl von Datenelementen aus einem Speicher gelesen
oder gelöscht
werden. Bei dem Verfahren aus Anspruch 4 kann die Anzahl der gelesenen
oder gelöschten
Datenelemente sehr stark mit dem jeweiligen Objekt schwanken.
-
Anspruch 5 betrifft eine Vorrichtung
zur Durchführung
eines der vorgenannten Verfahren, wobei die einzelnen Arbeitsschritte
durch eigenständige
Funktionsgruppen dargestellt sind.
-
Diese Funktionsgruppen bilden also
vorteilhaft geschlossene Einheiten, die so durch derartige Management-Funktionen
erweitert sind, dass weitere gleicharige Einheiten dem System hinzugefügt werden
können
und dadurch eine Steigerung der Leistung des Systems erreicht werden
kann.
-
Hierbei können die Funktionsgruppen zusätzlich mit
Funktionen zum Management ausgestattet werden, so dass mehrere gleichartige
Funktionsgruppen in einem Gerät
vereint werden können
und dainit die Leistungsfähigkeit
des Geräts
gesteigert werden kann. Um zu erreichen, dass durch die Hinzunahme
von gleichartigen Funktionsgruppen eine Steigerung der Leistungsfähigkeit
des Geräts
erzielt werden kann, müssen
die Funktionsgruppen in geeigneter Weise angeordnet werden, damit
die nötigen
Berechnungsschritte gleichmäßig auf
alle zur Verfügung
stehenden Einheiten verteilt werden.
-
Daneben können die Funktionsgruppen zusätzlich das
Pipelining Verfahren einsetzen, bei dem sich gleichzeitig mehrere
Pakete im Verfahren befinden. Beim Pipelining Verfahren werden nicht
einzelne Pakete nacheinander berechnet sondern es können sich
mehrere Pakete gleichzeitig im Verfahrensablauf und in unterschiedlichen
Arbeitsschritten befinden. Beispielsweise könnte Paket 1 in Arbeitsschritt
A erzeugt werden. Während
danach die Berechnungen für
Paket 1 in Arbeitsschritt B ausgeführt werden, könnte in
Schritt A das Paket 2 erzeugt werden. Ist die Berechnung von Paket
1 in Schritt B fertig, gelangt das Paket 1 in den Arbeitsschritt
C und das Paket 2 kann in Schritt B bearbeitet werden, während in
Schritt A das Paket 3 erzeugt wird, u. s. w.
-
Das Pipelining Verfahren kann auch
direkt in Verbindung mit dem Multi-Threading Verfahren eingesetzt
werden. Dabei erhält
dann jeder Arbeitsschritt eine Menge von Threads, die von ihm abwechselnd
bearbeitet werden. Nachdem die Bearbeitung eines Threads in einem
Arbeitsschritt abgeschlossen ist, wird dieser Thread an den nächsten Arbeitsschritt weiter
gegeben und dieser führt
dann diesen Thread zusammen mit denen nacheinander aus, die ihm
bereits zugeordnet sind. Beide Verfahren zusammen erlauben eine
sehr hohe Auslastung der Funktionseinheiten eines Gerätes.
-
Anspruch 6 betrifft eine Vorrichtung
zur Durchführung
eines der vorgenannten Verfahren, wobei die einzelnen Arbeitsschritte
folgender Maßen zu
Funktionsgruppen zusammen gefasst sind:
- – RGS: Umfasst
mehrere Funktionseinheiten für die
Arbeitsschritte A, F und G und erweitert diese um Einheiten zum
Management von Untereinheiten.
– Master: Koordiniert die Arbeit
der Slave-Funktionseinheiten.
– Slave: Enthält Einheiten
für die
Arbeitsschritte A, F und G.
– MemInt: Koordiniert den Zugriffvon
Slave-Einheinten auf externen Speicher.
- – RTC:
Umfasst mehrere Funktionseinheiten für die Arbeitsschritte B, C,
D und E.
– Traversal:
Funktionseinheit, die die Arbeitsschritte B und E umfasst.
– List:
Funktionseinheit für
den Arbeitsschritt C.
– Intersection:
Funktionseinheit für
den Arbeitsschritt D,
- – RTC-MI:
Koordiniert und regelt alle Zugriffe der RTC-Einheiten auf externe
Speichereinheiten.
– T-SR:
Koordiniert den Zugriff von Traversal-Einheiten auf den T-Cache.
– T-Cache:
Führt Buch über vorangegangene
Traversal-Zugriffe und versucht, neue Zugriffe zu vermeiden, in
dem es die vorangegangenen Ergebnisse wiederverwertet.
– L-SR:
Koordiniert den Zugriffvon List-Einheiten auf den L-Cache.
– L-Cache:
Analog zu T-Cache für
List-Zugriffe.
– I-SR:
Koordiniert den Zugriff von Intersection-Einheiten auf den I-Cache.
– I-Cache:
Analog zu T-Cache für
Intersection-Zugriffe.
– M-SR:
Koordiniert den Zugriff von Cache-Einheiten auf den externen Speicher.
– MemCtrl:
Leitet die Zugriffe an den dafür
zuständigen
externen Speicher weiter.
-
Die Funktionsgruppen sind in 7 dargestellt.
-
Dabei sind vorteilhaft die Funktionsgruppen Slave,
Traversal und Intersection so aufgebaut, dass sie mehrere Untereinheiten
enthalten, die gleichzeitig Berechnungen durchführen und dabei selbsttätig einen
Vorrat an Paketen halten, auf denen sie das Multi-Threading Verfahren
anwenden.
-
Die Funktionsgruppen sind derart
aufgebaut, dass durch Hinzunahme von weiteren gleichartigen Gruppen
die Leistungsfähigkeit
des Geräts
gesteigert werden kann. Es werden immer genausoviele Slave-Funktionseinheiten
wie RTC-Funktionsgruppen (die aus Traversal, List und Intersection
Funktionseinheiten bestehen) eingesetzt. Die Funktionseinheiten
T-SR, L-SR und I-SIZ
werden so aufgebaut, dass sie die Verbindungen zwischen allen RTC-Funktionsgruppen
und den Speichern herstellen können.
-
Die Funktionseinheit Master ist die
oberste Kontrollinstanz des Geräts.
Sie erhält
als Eingabe die Parameter für
die virtuelle Kamera (im Bild mit UI bezeichnet) und vergibt daraufhin
Beschreibungen von Paketen an einen oder mehrere Slave-Einheiten. Diese
führen
mit Hilfe dieser Beschreibungen die Kamerastrahlerzeugung durch
und schicken die berechneten Pakete an die assoziierte RTC-Einheit.
-
Die Slave-Einheit erhält als Antwort
(einige Zeit später)
die Daten der Strahl-Objekt Schnitte und führt dann die Berechnungen zu
den Arbeitsschritten F und G durch. Werden Folgestrahlen berechnet,
so werden diese wiederum an die assoziierte RTC-Einheit gesendet.
Die Slave-Einheiten müssen
bei ihren Berechnungen Daten aus einem Speicher lesen und ggf. auch
zurückschreiben.
Die Speicherzugriffe aller Slave-Einheiten werden von der MemInt-Einheit koordiniert,
die mit einem oder mehreren Speicherbausteinen (in der Skizze mit
RAM bezeichnet) verbunden ist.
-
Werden in Arbeitsschritt F Bildpunkte
oder Objektwerte berechnet, dann schreiben die Slave-Einheiten mit Hilfe
der MemInt-Einheit in einen speziellen Speicher (im Bild mit FB
bezeichnet), aus dein sie auch Daten wieder auslesen können. Dieser spezielle
Speicher könnte
zusätzlich
mit einer Funktionsgruppe verbunden werden, die an einen Monitor angeschlossen
ist, um die berechnete zweidimensionale Abbildung anzuzeigen.
-
Die RTC-Funktionsgruppe setzt die
Arbeitsschritte Baumtraversierung, Einlesen des Bauinblatts, Schneiden
aller Objekte und Schnittauswertung um. Möchte eine Einheit der RTC-Gruppe
ein Datum aus dem Speicher laden, so richtet sie eine entsprechende
Anfrage an die ihr zugeordnete Einheit, also an die T-SR, L-SR bzw.
die I-SR Einheit.
-
Alle Speicheranfragen von allen RTC-Gruppen
laufen bei den Einheiten T-Cache, L-Cache und I-Cache zusammen.
Diese Einheiten haben eine Datenstruktur, in der die Daten von vorangegangenen Speicheranfragen
vermerkt werden. Wird eine Anfrage gestellt, deren Antwort aus dem
Speicher bereits vermerkt ist, so wird diese Anfrage mit dem Datum aus
der Datenstruktur beantwortet. Hierbei ist es von Vorteil, dass
alle Anfragen nur Daten aus dem Speicher lesen möchten. Dadurch kann der Inhalt
der Datenstruktur einfach bei Bedarf verworfen werden, ohne dass
man ihn in den Speicher zurückschreiben muss.
Dies ist besonders dann interessant, wenn die Berechnung zu einem
neuen Bild beginnt und sich dabei Objekte verändert haben. In diesem Fall
wird ein Signal an die Einheiten T-Cache, L-Cache und I-Cache gesendet,
welche den Inhalt ihrer Datenstruktur verwerfen, so dass bei einer
neuen Anfrage auch das aktuelle Objekt aus dem Speicher gelesen wird.
Das in der Datenstruktur vermerkte (alte) Objekt fließt so nicht
fälschlicherweise
in die neuen Berechnungen ein.
-
Die Funktionseinheit M-SR leitet
alle Anfragen von T-Cache, L-Cache und I-Cache an die Einheit MemCtrl
weiter. MemCtrl ist die Funktionsgruppe die direkt an den oder die
Speicherbausteine (im Bild: RAM) angeschlossen ist. Dabei enthält die Funktionsgruppe
MemCtrl mehrere Mechanismen, um eventuelle Wartezeiten zu vermeiden,
die beim Zugriff auf die Speicherbausteine entstehen. Zu diesen Mechanismen
zählen:
Das Hashen von Adressen, um die Anfragen gleichmäßig auf alle Speicherbausteine
zu verteilen und das Umsortieren der Anfragen, so dass Wartezeiten,
durch den internen Aufbau von Speicherbausteinen verursacht, vermieden
werden.
-
Die hier beschriebene Gliederung
des Verfahrens in Gerätekomponenten
hat den Vorteil, dass keine Funktionsgruppe auf Daten zugreifen
muss, die in einer anderen Einheit gespeichert sind. Dadurch können die
Daten überwiegend
lokal gespeichert werden und es ist nicht nötig, größere Datenmengen zwischen den
Einheiten zu verschieben, wodurch die gerätetechnische Umsetzung stark
vereinfacht wird.
-
Anstatt die Funktionsgruppe zur Ausführung von
geometrieverändernden
Anweisungsfolgen in die Funktionsgruppe Intersection zu integrieren,
kann man sie auch zwischen die Einheit M-SR und T-Cache schalten.
Dies bietet den Vorteil, dass die Anweisungsfolgen eventuell weniger
oft ausgeführt
werden, da einige der Ergebnisse dieser Anwendungsfolgen in der
Datenstruktur der Einheit T-Cache vermerkt werden.
-
Eine sinnvolle Erweiterung iür die Funktionsgruppen
T-SR, L-SR, I-SR wäre
es, diese mit einem Mechanismus auszustatten, welcher gleichartige
Anfragen, die gleichzeitig von verschiedenen Einheiten gestellt
werden, zu einer Speicheranfrage zusammenfasst und die Antwort des
Speichers an alle Anfragesteller zurück sendet. Hierbei kann man
"gleichzeitig" auch als "innerhalb einer kurzen Zeitspanne" auffassen.
Dieser Mechanismus kann die Anzahl der Speicheranfragen weiter reduzieren.
-
Eine sinnvolle Erweiterung für die Funktionsgruppen
T-Cache, L-Cache und I-Cache wäre,
diese mit Listen auszustatten, worin alle Anfragen vermerkt werden,
die zwar bereits an den Speicher weitergeleitet wurden, deren Ergebnis
aber noch nicht bekannt ist. Wenn jetzt eine Anfrage gestellt wird,
die bereits in der Liste vermerkt ist, dann würde der Liste einfach ein weiterer
Vermerk hinzugefügt,
aber keine Anfrage an den Speicher gestellt. Wenn dann die Antwort
vom Speicher erfolgt, würde
das Datum entsprechend den Angaben aus der Liste als Antworten auf
alle Anfragen gemeldet. Diese Technik kann die Anzahl der Speicheranfragen
weiter reduzieren.
-
Eine Vorrichtung wie die oben beschriebenen
könnte
zusätzlich
mit einer Funktionsgruppe ausgestattet werden, die zu einer Menge
von Objekten selbsttätig
die baumartige Datenstruktur berechnet. Dadurch könnte das
Gerät beispielsweise
auf bewegte Objekte selbsttätig
reagieren.
-
Ein Ausführungsbeispiel der Erfindung
ist in der Zeichnung näher
dargestellt. Es zeigt dabei im einzelnen:
-
1:
ein Beispiel zur Verdeutlichung des Grundlagen des Ray Tracing Verfahrens,
-
2:
ein Beispiel zur Durchführung
des Ray Tracing Verfahrens,
-
3:
eine Darstellung zur Verdeutlichung der begrifflichen Definitionen,
-
4:
eine Darstellung zur Erläuterung
der Verwendung von Platzhaltern,
-
5:
ein Beispiel zur einer geometrieverändernden Anweisungsfolge,
-
6:
die Baumstruktur einer einfachen Welt, bestehend aus Vierecken,
Dreiecken und Kreisen und
-
7:
eine Darstellung von Funktionsgruppen in einer Vorrichtung.
-
Im Zusammenhang mit 1 soll nachfolgend das Ray Tracing Verfahren
erläutert
werden. Dies kann beispielsweise wie folgt zur Herstellung eines
zweidimensionalen Abbildes verwendet werden: Es wird ein mit Rechenkästchen unterteiltes
Papier vor die virtuelle Kamera gehalten und dann ein Strahl von
der Kamera durch jedes der Kästchen
geschickt. Falls ein Strahl ein Objekt trifft, wird das entsprechende
Rechenkästchen
mit der Farbe des Objektes gefärbt.
Wenn dies für
alle Rechenkästchen
erfolgt ist, enthält
das Blatt Papier eine zweidimensionale Abbildung von dem, was die
virtuelle Kamera sieht. Werden diese Rechenkästchen klein genug gemacht, verliert
das Abbild seinen blockartigen Charakter und wird zu einem hochauflösenden Bild.
Diese Unterteilung in Rechenkästchen
wird in ähnlicher
Weise bei Druckern und Monitoren eingesetzt, bei denen ein Bild
aus einzelnen Blöcken,
sogenannten Bildpunkten (engl. Pixel), zusammengesetzt wird. Im
mathematischen Sinne erfolgt das "Schicken eines Strahls in die
Welt" durch das Schneiden des Strahls mit allen oder einzelnen ausgewählten Objekten
dieser Welt. Hierbei liefert dann ein Schnitt eines Strahls mit einem
Objekt entweder einen Schnittpunkt auf der Oberfläche des
Objektes oder nicht.
-
2 zeigt
die Berechnungen für
einen Strahl R1, der von der virtuellen Kamera (CAM) in die virtuelle
Welt geschickt wird.
-
Der Strahl R1 schneidet das Objekt
01 (eine Kugel) im Punkt P1. Bei einer einfachen Variante des Ray
Tracing Verfahrens würde
beispielsweise nur nachgeschaut, welche Farbe das Objekt O1 im Punkt P1
besitzt und dann der entsprechende Bildpunkt in dieser Farbe eingefärbt.
-
Als mögliche Erweiterungen dieses
Verfahrens könnte
die Beleuchtungssituation an dem Punkt P1 untersucht werden. Hierfür würde dann
in einem einfachen Beispiel ein weiterer Strahl L1 von einer Lichtquelle
LS zu dem Punkt P1 geschickt werden. Falls der Strahl L1 kein Objekt
zwischen LS und P1 schneidet, so gibt es kein Objekt, weiches die
Lichtquelle vom Punkt P1 aus gesehen verdeckt, so dass das Licht
von LS am Punkt P1 ankommt und diesen beleuchtet. In einem anderen
Fall, bei einem Strahl L3 von der Lichtquelle LS zu Punkt P3, liegt
ein Objekt O4 derart im virtuellen Raum, so dass der Punkt P3 im
Schatten liegt.
-
Bei einer anderen möglichen
Erweiterung könnten
die Materialeigenschaften des geschnittenen Objekts näher in Betracht
gezogen werden. Unter der Annahme, Objekt O1 hätte eine spiegelnde Oberfläche, müsste zur
Bestimmung der Farbe des Objektes O1 im Punkt P1 überprüft werden,
welches Objekt sich in dem Punkt P1 spiegelt. Auch in diesem Fall
würde ein
weiterer Strahl R2, jetzt ausgehend von Punkt P1, in die virtuelle
Welt geschickt.
-
In unserem Beispiel der 2 schneidet R2 das Objekt
O2 im Punkt P2. Zur Bestimmung der Farbe in P2 wird der Strahl L2
berechnet. In diesem Beispiel ist das Objekt O2 eine Glasscheibe,
so dass zur Bestimmung der Farbe des Punktes P2 ermittelt werden
muss, welches Objekt durch die Glasscheibe O2 zu sehen ist. Hierzu
wird der Strahl R3 ausgehend vom Punkt P2 in die virtuelle Welt
geschickt. Als Schnittpunkt ergibt sich der Punkt P3 auf dem Objekt O3.
Auch für
P3 wird die Beleuchtungssituation berechnet, um dann dessen Farbe
zu bestimmen. Die Farbe für
den Bildpunkt, der zu Strahl R1 gehört, setzt sich dann aus den
gewichteten Farben an den Punkten P1, P2 und P3 zusammen.
-
In diesem Beispiel mussten zur Bestimmung der
Farbe eines einzigen Bildpunktes sechs Strahlen berechnet werden.
In der Regel haben hochauflösende
zweidimensionale Abbildungen einige Millionen Bildpunkte, entsprechend
höher ist
dabei der Berechnungsaufwand.
-
Als ein weiteres Problem bei der
Herstellung einer zweidimensionalen Abbildung von einer dreidimensionalen
virtuellen Welt stellt sich die Komplexität dieser Welt dar. In 2 besteht die Welt aus den Objekten
O1, O2, O3 und O4, sowie der Lichtquelle (LS) und der virtuellen
Kamera (CAM). Bei einer Betrachtung des Strahls R1 ist zu sehen,
dass der Strahl – wenn überhaupt – das Objekt
O1 schneidet. Für
einen Automaten ist es nicht offensichtlich, dass für einen
Schnitt nur Objekt O1 in Betracht kommt. Ein Verfahren für einen
Automaten müsste
demnach alle Objekte der virtuellen Welt mit dem Strahl R1 schneiden,
um herauszufinden, welches Objekt der Strahl R1 trifft. Besonders
wenn die virtuelle Welt aus einer großen Anzahl von Objekten besteht,
müssen sehr
viele Berechnungen zur Herstellung eines zweidimensionalen Abbildes
durchgeführt
werden. Zur Lösung
dieses Problems sind wiederum einige Verfahren bekannt, um die Menge
der zu schneidenden Objekte durch logische Entscheidungen einzuschränken.
-
3 zeigt
links ein Beispiel für
eine Datenstruktur entsprechend den Definitionen der Beschreibungseinleitung.
Um die Darstellung zu vereinfachen, wurde für das Beispiel eine zweidimensionale Welt
gewählt,
die man sich einfach als Draufsicht auf eine dreidimensionale Welt
vorstellen kann. Diese Welt ist in der Mitte von 3 zu sehen.
-
In diesem Beispiel bildet der Knoten
N1 die Wurzel des Baums. Die durch den Knoten N1 beschriebene Teilungsebene
(hier ebenfalls mit N1 bezeichnet) ist auch in der Draufsicht der
Welt erkennbar. Einfach ausgedrückt
teilt die durch N1 beschriebene Ebene die Welt in eine linke Hälfte, die
das Dreieck, die Kugel und den Platzhalter (P1) enthält, und eine
rechte Hälfte,
die einen Stern enthält.
Analog unterteilen N2 und N3 die Welt in weitere Hälften.
-
Rechts in 3 sind zwei Strahlen R1 und R2 dargestellt,
die ausgehend von der virtuellen Kamera mit der Welt geschnitten
werden sollen. Die Berechnung für
den Strahl R1 würde
für dieses
Beispiel wie folgt ablaufen:
Der Strahl R1 wird verglichen
mit der Teilungsebene N1. Dabei wird festgestellt, dass der Strahl
die Teilungsebene von links nach rechts überquert, also zuerst die linke
Hälfte
und danach die rechte Hälfte
der Welt untersuchen möchte.
Es wird gespeichert, dass die rechte Hälfte eventuell auch interessant
sein könnte,
allerdings wird mit der Auswertung in der linken Hälfte beginnend über die
Kante E1 dort die Berechnung mit dem Knoten N2 fort gesetzt. Hierbei wird
dann festgestellt, dass für
den Strahl nur die Hälfte
mit dem Blatt V1 interessant ist, welches zwei Objekte enthält: ein
Dreieck und einen Kreis. Jetzt wird der Strahl R1 mit diesen Objekten
geschnitten und dabei fest gestellt, dass der Strahl keines der
Objekte trifft. Deshalb wird entsprechend der obigen Speicherung
mit der vorgemerkten rechten Hälfte von
N1 fortgefahren. Über
die Kante E2 wird die Auswertung mit dem Knoten N3 fort gesetzt.
Der Strahl R1 möchte
zunächst
in die linke Hälfte,
und danach eventuell in die rechte Hälfte. In der linken Hälfte enthält das Blatt
V2 keine Objekte, so dass der Strahl mit keinem Objekt geschnitten
werden muss. Stattdessen erfolgt die weitere Auswertung mit der
vorgemerkten rechten Hälfte.
Hierin befindet sich das Blatt V3, welches einen Stern enthält. Der
Schnitt von R1 mit dem Stern liefert einen Schnittpunkt, womit die Berechnung
zu R1 beendet ist.
-
Die Berechnung für den Strahl R2 beginnt wiederum
mit dem Knoten N1. Dort wird entschieden, dass für den Strahl nur die rechte
Hälfte
interessant ist. In der rechten Hälfte befindet sich der Knoten
N3. Ein Vergleich zwischen R2 und der Ebene N3 ergibt, dass nur
die linke Hälfte
für den
Strahl interessant ist. Da diese Hälfte aber nur das leere Blatt
V2 enthält,
ist die Berechnung für
den Strahl R2 damit zu Ende, ohne dass der Strahl mit einem Objekt
geschnitten wurde.
-
Dies ist deshalb besonders interessant,
weil wir das richtige Ergebnis ("Der Strahl R2 schneidet kein Objekt
der virtuellen Welt.") berechnet haben, ohne auch nur einen Schnitt
zwischen dem Strahl und einem Objekt zu berechnen.
-
Die beschriebene Vorgehensweise,
bei der eine baumartige Datenstruktur durchlaufen wird, nennt man
auch Traversierung (engl. Traversal). Das Schneiden eines Objektes
mit einem Strahl wird im Englischen als Intersection bezeichnet.
-
Obiges Beispiel hat noch nicht die
Frage geklärt,
wie die Berechnung beim Erreichen eines Platzhalters fortgesetzt
wird, da dieser Fall nicht vorgekommen ist. Würde ein Strahl beim Knoten
N2 über die
Kante E4 zum Platzhalter P1 verzweigen, dann würden die zu P1 gehörenden Anweisungen
(die zu den Spezifikationen der virtuellen Welt gehören) ausgeführt werden.
In einem einfachen Beispiel könnten diese
Anweisungen ein Baumblatt erzeugen, welches ein Objekt enthält. Dieses
Baumblatt würde dann
den Platzhalter ersetzen und somit würden die Berechnungen für ein Baumblatt
wie üblich
fortgeführt
werden. Die Anweisungen des Platzhalters könnten aber auch dazu führen, dass
der Platzhalter durch eine komplexe Baumstruktur ersetzt wird, die wiederum
Blätter
mit Objekten und sogar neue Platzhalter enthalten kann.
-
Alternativ dazu soll nun erläutert werden,
wie nach der vorliegenden Erfindung die Berechnung abläuft unter
Beachtung der Zusammenfassung von Strahlen zu Paketen.
-
Im ersten Schritt wird der Baumknoten
N1 aus einem Speicher geladen und für alle Strahlen des Paketes
wird berechnet, ob – und
falls ja wie – die
Teilungsebene N1 überquert
wird. Hierbei wird festgestellt, dass Strahl R1 zuerst in die linke
und danach in die rechte Hälfte
der Welt möchte.
Strahl R2 hingegen möchte
nur in die rechte Hälfte.
Die Entscheidung für
das Paket aus diesem Arbeitsschritt sieht dann wie folgt aus: In
den Zuständen
der Strahlen wird markiert, dass Strahl R1 in beide Hälften möchte und
R2 nur in die rechte Hälfte.
Das Paket besucht daraufhin die linke Hälfte. Gemäß dem Zustand nimmt der Strahl
R2 an den Berechnungen nicht Teil, die zur linken Hälfte gehören. Diese
Berechnungen erfolgen analog zu oben beschriebenem Beispiel. Wenn
die Berechnungen zur linken Hälfte
beendet sind, wurde noch kein gültiger
Schnittpunkt für
die Strahlen R1 und R2 gefunden, deshalb setzt das Paket seine Berechnungen
mit der rechten Hälfte
fort. An diesen Berechnungen nehmen, gemäß den Zuständen, wiederum beide Strahlen
teil. Bei den Berechnungen zur Teilungsebene N3 wird festgestellt, dass
der Strahl R1 zunächst
in die Hälfte
mit dem Baumblatt V2 möchte
und danach in die Hälfte
mit Baumblatt V3. Der Strahl R2 möchte dagegen nur in das Baumblatt
V2. Dieses Ergebnis wird in den Zuständen vermerkt und die Berechnungen
werden mit Baumblatt V2 fortgesetzt. Da dieses Blatt leer ist, werden
keine Schnitte von Objekten mit Strahlen durchgeführt. Da
der Zustand von Strahl R2 angibt, dass er keine weitere Hälfte besuchen
möchte,
ist die Berechnung für
Strahl R2 abgeschlossen und der Zustand von R2 wird mit "Berechnungen
beendet" markiert. Die Berechnungen für das Paket werden mit V3 fortgesetzt.
An diesen Berechnungen nimmt dann nur noch R1 teil, der mit dem
Stern-Objekt geschnitten wird. Dieser Schnitt liefert einen gültigen Schnittpunkt
und auch der Zustand von R1 wird mit "Berechnungen beendet" markiert.
Damit sind alle Zustände der
Strahlen des Pakets mit "Berechnungen beendet" markiert, so dass
damit die Berechnungen für
das Paket beendet sind.
-
An diesem Beispiel wird auch der
Effekt der Datenreduktion deutlich. Werden die Berechnungen für einzelne
Strahlen angestellt, so muss für
jeden Strahl jeder der betrachteten Knoten aus dem Speicher geladen
werden. Werden allerdings ganze Pakete von Strahlen traversiert,
wird jeder von einem der Strahlen betrachtete Knoten für das ganze
Paket nur einmal aus dem Speicher geladen. In diesem Beispiel betrachtet
der Strahl R1 die Baumknoten und Baumblätter {N1, N2, V1, N3, V2, V3}
und der Strahl R2 die Baumknoten und Baumblätter {N1, N3, V2}. Werden die
Strahlen einzeln traversiert, so werden 9-mal Daten aus dein Speicher
geladen. Werden die Strahlen in einem Paket zusammengefasst, so
besucht das Paket nur die Baumknoten und Baumblätter {N1, N2, V1, N3, V2, V3}
und es werden nur 6-mal Daten aus dem Speicher geladen.
-
Die gegenüber dem aus vorbekannten Verfahren
neuartige Datenstruktur erfüllt
den Zweck der Vermeidung von unnötigen
Berechnungen. Ohne diese Datenstruktur würden in obigem Beispiel auch die
Objekte Dreieck und Kreis in dem Blatt V1 mit dem Strahl R2 geschnitten
werden, wei1 für
ein Paket keine Informationen darüber vorhanden wären, welcher
der Strahlen des Pakets an dem aktuellen Berechnungsschritt teilnehmen
möchte
und dadurch jeder Strahl an allen Berechnungen teilnehmen müsste. Zwar
führt dies
dadurch nicht zu Fehlern, weil solche unnötigen Schnitte keine gültigen Schnittpunkte
liefern, allerdings zu unnötigen
Berechnungsschritten.
-
Auch wenn bereits Beispiele für die einzelnen
Arbeitsschritte des Ray Tracing Verfahrens gegeben wurden, soll
an dieser Stelle noch einmal auf die einzelnen Schritte eingegangen
und dabei verdeutlicht werden, in wie weit diese Aufteilung neuartig ist
und welche Vorteile sie bietet.
-
- A Kamerastrahlerzeugung: Erzeugung eines Pakets
von Strahlen, die von der virtuellen Kamera ausgehend mit der Geometrie
der dreidimensionalen Welt geschnitten werden sollen. Beispielsweise
könnte
man einen rechteckigen Bereich von Kästchen auf dem Rechenblatt
vor der virtuellen Kamera in einer Gruppe vereinen und alle Strahlen,
die durch diese Rechenkästchen
gehen, in einem Paket zusammenfassen.
- B Baumtraversierung: Gemäß der räumlichen
Orientierung der Strahlen wird die Baumdatenstruktur für die Geometrie
der dreidimensionalen Welt durchlaufen, bis ein Baumblatt oder ein
Platzhalter erreicht wird. Hierzu werden Baumknoten und Platzhalter
aus einem Speicher gelesen und Berechnungen durchgeführt. Wird
ein Platzhalter erreicht, so wird die entsprechende Anweisungsfolge
des Ersatzobjekts ausgeführt.
Hierbei wird der Platzhalter durch ein Objekt ersetzt, das auch komplex
sein kann. Dabei stehen zwei Alternativen zur Verfügung: Entweder
wird zuerst die Anweisungsfolge vollständig ausgeführt und anschließend entsprechend
der neuen Struktur des Baums das Verfahren fort gesetzt oder die
Anweisungsfolge wird asynchron ausgeführt, wobei das Verfahren direkt
mit dem Stellvertreter des Platzhalters fortgesetzt wird und bei
vollständiger
Abarbeitung der Anweisungsfolge des Ersatzobjekts durch das Ergebnis
dieser Abarbeitung ersetzt wird.
Die Verwendung von Platzhaltern,
insbesondere die hier gezeigte Technik der Auswertung von Platzhaltern
bei Bedarf, ist neu im Bereich des Ray Tracings. Hierbei bietet
das Auswerten von Platzhaltern bei Bedarf die Möglichkeit, virtuelle Welten
mit Millionen von Objekten implizit durch Platzhalter zu spezifizieren
und dabei dennoch geringen Speicher- und Rechenaufwand zur Berechnung
des Bildes zu benötigen,
da nur die Teile der virtuellen Welt in die Berechnung eingehen, für die das
Verfahren herausgefunden hat, dass sie für die Berechnung des Bildes
relevant sind.
- C Einlesen des Baumblatts: In einem Baumblatt werden nicht die
Objekte und Platzhalter selbst, sondern Referenzen darauf gespeichert.
Ein Beispiel soll den Vorteil hiervon verdeutlichen:
In 6 ist eine einfache Welt
mit Vierecken, Kreisen und einem Dreieck dargestellt. Um die Menge
der nötigen
Strahl-Objekt Schnitte einzuschränken
soll auch hier eine Baumstruktur erzeugt werden. Es ist dabei offensichtlich,
dass man keine Unterteilungsebene, die die Welt in eine linke und
eine rechte Hälfte
teilt, bestimmen kann, die nicht auch ein Objekt in zwei Hälften teilt.
In diesem Beispiel teilt die Ebene die Welt in eine Hälfte mit
Vierecken und eine Hälfte
mit Kreisen und dabei auch das Dreieck in zwei Hälften. Auf der anderen Seite
wird hier aber auch deutlich, dass man diese Unterteilung vollziehen möchte: Ein
Strahl der nur die linke oder nur die rechte Hälfte der Welt traversieren
möchte
muss nur vier Objekte schneiden, wohingegen bei einer nicht unterteilten
Welt 7 Objekt-Strahl Schnitte berechnet werden müssten. Würden in Baumblättern die
Objekte selbst gespeicher werden, so müssten im linken Blatt alle
Vierecke und das Dreieck, und im rechten Blatt alle Kreise und das Dreieck
gespeichert werden. Man müsste
also das Dreieck zweimal abspeichern. Speichert man hingegen nur
die Referenzen zu Objekten in Baumblättern, so referenziert einfach
das linke und das rechte Baumblatt das Dreieck und die Daten des
Dreiecks werden nur einmal im Speicher abgelegt.
- Eine Erweiterung der Erfindung bestünde beispielsweise darin, zu
jedem Paket eine Liste von den Objekten zu führen, die bereits mit dem Paket geschnitten
wurden. Werden die Referenzen zu Objekten aus einem Baumblatt geladen,
so wird verglichen, ob das Objekt bereits geschnitten wurde und
falls ja, wird der Schnitt mit dem gleichen Objekt nicht noch einmal
ausgeführt.
Hierbei ist allerdings darauf zu achten, dass eventuell einige Strahlen,
die am aktuellen Objekt-Strahl Schnitt beteiligt sind bei dem Objekt-Strahl
Schnitt, der in die Liste eingetragen wurde, nicht beteiligt waren und
deshalb für
eben diese Strahlen der Schnitt jetzt dennoch ausgeführt werden
muss. Ein weiterer Vorteil dieser Referenzierung sei hier dargestellt:
Ein Objekt, beispielsweise ein Auto, wird spezifiziert und im Speicher
abgelegt. Dann werden zwei weitere Objekte definiert, die jeweils
als Kontainer funktionieren und Referenzen auf das Auto-Objekt und
zusätzlich
eine Transformationsmatrix und eine materialverändernde Anweisungsfolge besitzen.
Auf diese Weise ist es möglich,
in einer Welt zwei Autos des gleichen Typs, aber mit unterschiedlichen
Farben und an verschiedenen Positionen darzustellen, ohne dabei die
Daten des Autos mehrfach im Speicher ablegen zu müssen.
- D Schneiden aller Objekte: In Arbeitsschritt C wurde eine Menge
von Referenzen zu Objekten aus einem Baumblatt eingelesen. In diesem
Arbeitsschritt werden die Daten der referenzierten Objekte eingelesen
und die Strahlen des Pakets, die an der aktuellen Operation beteiligt
sind, werden mit diesen Objekten geschnitten.
- Falls eine Transformation zu einem der Objekte spezifiziert
wurde, so wird diese angewendet, bevor der Schnitt berechnet wird.
Falls es sich bei dem Objekt um ein einfaches Objekt ohne eigene Baumstruktur
handelt, so wird das Objekt transformier und der Schnitt berechnet.
Im anderen Fall werden die Strahlen transformiert und damit dem
relativen Koordinatensystem des Objektes angepasst, bevor mit Arbeitsschritt
B die Traversierung des Baums dieses Objektes beginnt. Wenn berechnet
wurde, ob und falls ja welche Schnittpunkte es zwischen den Strahlen
und dem Objekt gibt, dann werden die Ergebnisse und die Strahlen
wieder zurück
in das absolute Koordinatensystem der Welt transformiert.
- Falls eine geometrieverändernde
Anweisungsfolge zu einem Objekt spezifiziert wurde, so wird diese
ausgeführt,
bevor der Schnitt mit dem Objekt berechnet wird. Diese geometrieverändernde
Anweisungsfolge kann z.B. eingesetzt werden um Wasseroberflächen zu
modellieren. Hierbei würde man
ein Objekt spezifizieren, welches die Wasseroberfläche zu einem
bestimmten Zeitpunkt darstellt und dazu eine Anweisungsfolge spezifizieren,
welche z.B. gemäß der Uhrzeit
dieses Objekt verformt, um Wellenbewegungen darzustellen.
Eine
Baumstruktur, die ein Objekt mit geometrieverändernder Anweisungsfolge enthält, sollte
die möglichen
Auswirkungen dieser Anweisungsfolge beachten, da es sonst zu Darstellungsfehlern kommen
kann. Ein Beispiel ist in 5 dargestellt.
Hier wurde zu einem Dreieck eine geometrieverändernde Anweisungsfolge spezifiziert,
die den Eckpunkt P gemäß der Uhrzeit
in die Punkte P' und P'' verschiebt. Die Baumstruktur sollte nun derart
beschaffen sein, dass das Objekt in allen Baumblättern referenziert ist, in
denen es maximal sein kann. Hier sollte also im linken Baumblatt das
Dreieck und im rechten Baumblatt die Kugel, das Rechteck und das
Dreieck referenziert sein. Würde
ein Strahl R nur init der rechten Hälfte geschnitten werden und
das Dreieck dort nicht referenziert, so würde für diesen Strahl zu gegebener Uhrzeit
ein falscher Schnittpunkt berechnet, nämlich der mit dem Rechteck
anstelle von dem mit dem Dreieck.
Die Verwendung der Transformationsmatrizen wurde
in Ingo Wald, Garsten Benthin and Philipp Slusallek: "A Simple and
Practical Method for Interactive Ray Tracing of Dynamic Scenes"
", Technical Report 2002-04, submitted for publication, http: //graphics.cs.uni-sb.de/Publications/TR/2002/Dyn/DynamicRayTracing.pdf
bereits vorgeschlagen. Der Einsatz von geometrieverändernden
Anweisungsfolgen ist neu im Zusammenhang mit dem hier vorgestellten
Ray Tracing Verfahren.
- E Schnittauswertung: In diesem Arbeitsschritt wird ausgewertet,
ob für
das Paket von Strahlen gültige
Schnittpunkte vorliegen. Beispielsweise kann im voran gegangenen
Arbeitsschritt D ein Strahl mit mehreren Objekten geschnitten worden sein
und diese Schnitte können
auch mehrere Schnittpunkte zum Ergebnis haben. Ein gültiger Schnittpunkt
wäre hierbei
der Schnittpunkt, der dem Ursprung des Strahls am nächsten liegt. Falls
es noch Elemente des Baums gibt, die für einen Strahlschnitt in Frage
kommen, aber noch nicht untersucht wurden und der vorangegangene Arbeitsschritt
nicht in ausreichender Menge gültige
Schnittpunkte ergeben hat, dann wird unter Einbeziehung der bisherigen
Ergebnisse bei Arbeitsschritt B erneut eingesetzt, ansonsten wird mit
Schritt F fortgefahren.
- F Bestimmung der Objekteigenschaften: Die Ergebnisse der vorangegangenen
Arbeitsschritte werden ausgewertet. Insbesondere können hierbei
die Materialeigenschaften der Objekte, für die ein gültiger Schnittpunkt mit einem
der Strahlen berechnet wurde, untersucht werden. Dabei kann beispielsweise
festgestellt werden, dass ein Objekt eine spiegelnde Oberfläche besitzt
und deshalb zur Bestimmung der Farbe am Schnittpunkt ein Folgestrahl
berechnet werden muss. Ebenso könnte,
falls das Objekt beispielsweise ein Globus unserer Erde ist, auch
eine Landkarte eingelesen und berechnet werden, welches Land oder
Meer der Strahl geschnitten hat, um dann daraus die Farbe am Schnittpunkt
zu bestimmen.
Falls eine materialverändernde Anweisungsfolge zu
dem geschnittenen Objekt spezifiziert wurde, dann wird diese ausgeführt. Hierbei
kann die materialverändernde
Anweisungsfolge auch dazu eingesetzt werden, um aus einem farblosen
Objekt beispielsweise ein marmoriertes Objekt zu machen. Insbesondere
kann dabei das Muster des Marmorsteins durch die zu dein Objekt
spezifizierte Anweisungsfolge berechnet werden, so dass das Muster
nur implizit durch eine mathematische Formel angegeben wird und
auch nur dann berechnet wird, falls ein Strahl das Objekt trifft.
Falls
eine geometrieverändernde
Anweisungsfolge zu dem geschnittenen Objekt Spezifiziert wurde,
die auch eine Auswirkung auf diesen Arbeitsschritt hat, dann wird
diese ebenfalls ausgeführt.
- G Folgestrahlerzeugung: Wird in Schritt F berechnet, dass ein
oder mehrere weitere Strahlen mit der Geometrie der dreidimensionalen
Welt geschnitten werden sollen, dann werden in diesem Schritt entsprechende
Pakete von Strahlen berechnet und das Verfahren setzt bei Arbeitsschritt B
erneut an. Ansonsten wird wieder bei Schritt A eingesetzt, falls
zur Ausbildung des zweidimensionalen Bildes noch weitere Kamerastrahlen
erzeugt werden müssen.
-
Ein weiteres Beispiel für die Verwendung
von Platzhaltern ist in 4 dargestellt.
Hier sind von links nach rechts in zeitlichem Ablauf die Welt mit
dazugehöriger
Baumstruktur zu sehen, wie sie bei der Ausführung von Platzhalter P1 bzw.
P2 erweitert oder verändert
wird.
-
Ein Beispiel für die Verwendung von Platzhaltern
sei im folgenden erläutert:
Die virtuelle Welt umfasst die Gebäude A und B. Für das erste
zu erzeugende Bild befindet sich die Kamera in Gebäude A, und
das Gebäude
B kann von der Kamera nicht gesehen werden. Also ist es ausreichend,
das Gebäude
B nur durch einen einfachen Platzhalter zu spezifizieren. Verlässt die
virtuelle Kamera Gebäude A
und nähert
sich Gebäude
B, so wird bei dem ersten Strahl, der bei der Traversierung auf
den Platzhalter für
Gebäude
B stößt, die
Anweisungsfolge für
Platzhalter B ausgeführt.
Diese Anweisungsfolge könnte nun
spezifizieren, dass Gebäude
B von einem Speichermedium geladen und gegen den Platzhalter für Gebäude B ausgetauscht
werden soll.
-
Wird die Aufteilung der virtuellen
Welt in mehrere Platzhalter günstig
gewählt,
so kann die Datenmenge, die bei der Erzeugung des Bildes untersucht
werden muss, stark eingeschränkt
werden.
-
Umgekehrt lässt sich auch durch das Ersetzen
von Teilbäumen
und Objekten durch Platzhalter ein sehr mächtiger Mechanismus zur Datenreduktion realisieren.