DE69812732T2 - Verfahren und Gerät zur schnellen Wiedergabe von durch Computer erzeugten Bildern von komplexen Strukturen - Google Patents
Verfahren und Gerät zur schnellen Wiedergabe von durch Computer erzeugten Bildern von komplexen StrukturenInfo
- Publication number
- DE69812732T2 DE69812732T2 DE69812732T DE69812732T DE69812732T2 DE 69812732 T2 DE69812732 T2 DE 69812732T2 DE 69812732 T DE69812732 T DE 69812732T DE 69812732 T DE69812732 T DE 69812732T DE 69812732 T2 DE69812732 T2 DE 69812732T2
- Authority
- DE
- Germany
- Prior art keywords
- objects
- visible
- ray
- box
- rendering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 70
- 238000009877 rendering Methods 0.000 claims description 73
- 238000005266 casting Methods 0.000 claims description 59
- 238000012545 processing Methods 0.000 claims description 17
- 230000000007 visual effect Effects 0.000 claims 1
- 238000005192 partition Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 11
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000012800 visualization Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 241000549095 Paxistima myrsinites Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Description
- Diese Erfindung bezieht sich im Allgemeinen auf ein Verfahren und eine Einrichtung für die Computerbildmodellierung einer komplizierten Struktur, und mehr im Besonderen auf ein Verfahren und eine Einrichtung zur schnellen Bildaufbereitung bzw. zum schnellen Rendern von computererzeugten Bildern von einer komplizierten Struktur auf einem Satz von Displays.
- Interaktive computererzeugte Displays bzw. Darstellungen sorgen für die Visualisierung von realistisch aussehenden dreidimensionalen Modellen. Solche Modelle sind unter der Kontrolle bzw. Steuerung des Benutzers brauchbar, sowohl für die Gestaltungsbewertung als auch für das Training und für virtuelle Umgebungen, wie sie z. B. in mechanischen rechnergestützten Gestaltungssystemen gefunden werden können. Solche Computervisualisierungssysteme liefern Bilder von einer dreidimensionalen, komplizierten Struktur auf dem Schirm einer Computerarbeitsstation, wie sie von einem Blickpunkt eines simulierten Beobachters gesehen werden, unter interaktiver Kontrolle bzw. Steuerung durch den Benutzer. Wenn die computererzeugte Darstellung glatt und schnell genug bildaufbereitet bzw. gerendert werden kann, wird dem Benutzer eine Illusion einer Echtzeitexploration von einer virtuellen Umgebung unter simulierter Beobachterbewegung durch die Struktur geliefert.
- Eine spezielle Anwendung für ein interaktives, computererzeugtes Visualisierungssystem von einer komplizierten Struktur findet sich in der Modellierung einer hoch komplizierten Struktur, wie z. B. eines Flugzeugs. Ein System, welches dem Benutzer eine interaktive Bewegung überall in der Struktur erlaubt, kann in zahlreichen Aspekten, die in Beziehung zu dem schließlichen Erfolg des Produkts stehen, helfen. Zum Beispiel kann ein interaktives Display bzw. eine interaktive Darstellung einer komplizierten Flugzeugstruktur Störungs- und Passungsprobleme identifizieren, die Fähigkeit liefern, Bereiche des Produkts zu "sehen", die normalerweise in einer physischen Attrappe verborgen sind, Gestaltungsführungen von Kanälen und Verdrahtung durch gedrängte bzw. volle Bereiche ermöglichen, die Arbeit von integrierten Produktteams durch Zurverfügungstellen eines "lebenden" Modells erleichtern und die Durchlauf Zeit und die Kosten der Produktion von Illustrationen und Trainingsmedien reduzieren. Da auf Computergraphik basierende Systeme voll entwickelt sind, sind es auch die Datenbanken für dreidimensionale Modelle, zu deren Sichtwiedergabe ihre Verfahren bestimmt sind. Weil die Realweltstruktur bei weitem mehr Kompliziertheit enthält, als vernünftigerweise auf Computerspeichermedien gespeichert werden kann, hat die Kompliziertheit der entwickelten Modelle herkömmlich die Kapazität der Hardware überstiegen, die dazu erforderlich ist, sie darzustellen. Um mit diesem Problem fertig zu werden, sind verschiedene Verfahren zum Reduzieren der Kompliziertheit der Modelle entwickelt worden, während versucht wurde, nur geringe Änderungen an der von dem Auge wahrgenommenen Kompliziertheit zu bewirken. Diese Verfahren können in zwei Kategorien unterteilt werden: Aussondern und Detailauslassung.
- Aussondern ist die Praxis, dass man Objekte nicht darstellt, die von einer gegenwärtigen Sichtposition her unsichtbar sind. Solche Objekte werden als von der Szene "ausgesondert" betrachtet. Objekte können ausgesondert werden, entweder dadurch, dass sie durch ein anderes Objekt verborgen sind oder dass sie außerhalb des gegenwärtigen Sichtkegelstumpfs sind. Während das Aussondern bezüglich des Sichtkegelstumpfs oft unkompliziert ist, kann das Aussondern von ein- bzw. ausge schlossenen Objekten schwierig sein, obwohl Algorithmen zum Lösen dieses Problems ausgedacht worden sind. Der Schlüssel zum Aussondern besteht darin, ein schnelles Verfahren des Bestimmens der Sichtbarkeit von allen Objekte in einer Szene zu haben.
- Die Detailauslassung ist die Praxis des Darstellens eines Objekts mit einem variierenden Detailniveau in Abhängigkeit von der Wichtigkeit des Objekts für die wahrgenommene Kompliziertheit der Szene. Diese wahrgenommene Wichtigkeit ist herkömmlich durch die Größe des Objekts in den Schirmbildelementen (Pixeln) gemessen worden. Der Schlüssel für die Verwendung der Detailauslassung besteht darin, mehrere Detailniveaus für alle komplizierten Objekte in der Szene verfügbar zu haben.
- Obwohl beide der oben beschriebenen Techniken die Geschwindigkeit des Prozesses des Bildrenderns bzw. der Bildaufbereitung erhöhen, rendert keiner der Prozesse leistungsfähig komplizierte Modelle, die Millionen an Polygonen enthalten, mit akzeptablen Echtzeit-Einzel-bildraten, wie z. B. 15-30 Einzelbilder pro Sekunde. Zum Beispiel geschieht das Aussondern nicht schnell genug, um Schritt mit dem Zeichnen einer Szene jede 30stel Sekunde zu halten. Die Detailauslassung andererseits ist am brauchbarsten beim Fassen bzw. Festhalten der Kompliziertheit von Mustern oder Texturen in Objekten, insbesondere von zweidimensionalen Strukturen oder Merkmalen. Jedoch sind Texturen und Muster bei weitem weniger brauchbar bei technischen bzw. konstruktiven Visualisierungen, weil die Objekte von unterschiedlichen Sichtpunkten aus unterschiedlich aussehen, während eine Textur das Aussehen eines Objekts von nur einem Blickpunkt aus korrekt erfasst.
- Was benötigt wird, sind ein Verfahren und eine Einrichtung, die fähig sind, eine ausgedehnte bzw. riesige Menge von Ob jekten mit einer Geschwindigkeit zu verarbeiten, die schnell genug ist, um mit dem Zeichnen einer Szene mit einer Echtzeitfrequenz Schritt zu halten. Das Verfahren und die Einrichtung sollten davon absehen, Objekte zu verarbeiten, die außerhalb der Grenzen des Displays bzw. der Darstellung fallen oder die vollständig durch ein anderes Objekt versperrt sind. Jedoch sollte das Verarbeiten der Objekte vom Zeichnen der angemessenen Objekte entkoppelt sein, so dass die Geschwindigkeit, mit welcher die Objekte gezeichnet werden, nicht zu der Geschwindigkeit verlangsamt wird, mit welcher die Objekte verarbeitet werden. Wie im Folgenden beschrieben ist, stellt die vorliegende Erfindung ein Verfahren und eine Einrichtung zur Verfügung, welche diese Kriterien erfüllen, und sie löst andere Nachteile des Standes der Technik.
- Gemäß der vorliegenden Erfindung werden ein Verfahren und eine Einrichtung zum schnellen Rendern bzw. zur schnellen Bildaufbereitung eines graphischen Bilds von einer komplizierten Struktur zur Verfügung gestellt, worin die komplizierte Struktur durch eine Mehrzahl von Objekten repräsentiert wird. Spezieller wird eine Strahlwerfroutine implementiert, die eine Mehrzahl von Strahlen von einer gegebenen Blick- bzw. Sichtkoordinate aus wirft, und für jeden geworfenen Strahl das durch den geworfenen Strahl geschnittene Objekt, welches der gegebenen Blick- bzw. Sichtkoordinate am nächsten ist, zu einem Satz von sichtbaren Objekten hinzufügt. Eine Objektrender- bzw. -bildaufbereitungsroutine wird implementiert, welche jedes Objekt in dem Satz von sichtbaren Objekten auf einem Display gemäß einer gegenwärtigen Blick- bzw. Sichtkoordinate rendert bzw. bildaufbereitet, wenn Objekte zu dem Satz von sichtbaren Objekten durch die Strahlwerfroutine hinzugefügt werden.
- Gemäß weiteren Aspekten der Erfindung wird eine Mehrzahl von Strahlwerfroutinen parallel implementiert, derart, dass jede Strahlwerfroutine gleichzeitig Objekte zu dem Satz von sichtbaren Objekten hinzufügt. Außerdem wird, um einen Stereoanblick zu erreichen, eine Mehrzahl von diskreten Objektrender- bzw. -bildaubereitungsroutinen parallel implementiert, derart, dass jede Objektrender- bzw. -bildaufbereitungsroutine jedes Objekt in dem Satz von sichtbaren Objekten auf einem Display in Übereinstimmung mit der gegenwärtigen Blick- bzw. Sichtkoordinate rendert bzw. bildaufbereitet, während jede Strahlwerfroutine Objekte zu dem Satz von sichtbaren Objekten hinzufügt.
- Gemäß noch weiteren Aspekten der Erfindung wird die Mehrzahl von Objekten, welche die komplizierte Struktur repräsentieren, zu einer Objekthierarchie organisiert. Die Objekthierarchie umfasst ein Wurzelvolumen, das die komplizierte Struktur eingrenzt. Untervolumina, die jedes aus der Mehrzahl der Objekte eingrenzen, und geschrumpfte Untervolumina, die Teile von jedem Objekt eingrenzen. Um zu bestimmen, welche Objekte durch den Strahl geschnitten worden sind, durchsucht bzw. prüft die Strahlwerfroutine die Objekthierarchie, um geschrumpfte Untervolumina, welche durch den Strahl geschnitten worden sind, zu lokalisieren. Demgemäß bestimmt die Strahlwerfroutine für jedes geschrumpfte Untervolumen, das durch den Strahl geschnitten worden ist, welches geschrumpfte Untervolumen den kleinsten Abstand zu der gegebenen Blick- bzw. Sichtkoordinate hat, und speichert dann das dem geschrumpften Untervolumen zugeordnete Objekt bzw. das mit dem geschrumpften Untervolumen verbundene Objekt in dem Satz von sichtbaren Objekten.
- Wie aus dem vorstehenden Abriss leicht erkannt werden kann, stellt die Erfindung ein Verfahren und eine Einrichtung zum schnellen Rendern bzw. zur schnellen Bildaufbereitung von graphischen Bildern von komplizierten Strukturen zur Verfügung. Die Erfindung rendert bzw. bildaufbereitet nur jene Objekte, die von der gegenwärtigen Blick- bzw. Sichtkoordinate her sichtbar sind. Außerdem ist der Prozess des Hinzufügens von sichtbaren Objekten zu dem Satz von sichtbaren Objekten von dem Prozess des Renderns bzw. der Bildaufbereitung der sichtbaren Objekte entkoppelt, so dass die Geschwidigkeit, mit welcher die Objekte gerendert. bzw. bildaufbereitet werden, nicht auf die Geschwindigkeit verlangsamt wird, mit welcher die Objekte verarbeitet werden.
- Die vorstehenden Aspekte und viele der begleitenden Vorteile dieser Erfindung werden leichter erkannt, wenn dieselbe besser durch Bezugnahme auf die folgende detaillierte Beschreibung verstanden wird, wenn diese in Verbindung mit den beigefügten Zeichnungen genommen wird, worin:
- Fig. 1 eine Blockdiagrammdarstellung des Bildrender- bzw. -aufbereitungssystems der vorliegenden Erfindung ist;
- Fig. 2 eine zweidimensionale Querschnittsansicht einer Flugzeugstruktur ist, von welcher das in Fig. 1 gezeigte Bildrender- bzw. -aufbereitungssystem ein graphisches Computerbild erzeugen kann;
- Fig. 3 ein Blockdiagramm von den mehreren Komponenten eines Computers ist, der durch das in Fig. 1 gezeigte Bildrender- bzw. -aufbereitungssystem verwendet wird, um graphische Bilder zu rendern bzw. bildaufzubereiten;
- Fig. 4 ein Blockdiagramm der mehreren Komponenten eines Computers ist, welcher durch das in Fig. 1 gezeigte Bildrender- bzw. -aufbereitungssystem dazu benutzt wird, die Bestandteile oder "Objekte" einer komplizierten Struktur zu einer Hierar chie von räumlich ausgeglichenen Kästen zu verarbeiten, welche dazu benutzt werden, die Objekte der komplizierten Struktur zu repräsentieren;
- Fig. 5 ein Ablaufdiagramm ist, das die Logik veranschaulicht, welche dazu benutzt wird, die Objekte der komplizierten Strukturen zu der Hierarchie von räumlich ausgeglichenen Kästen zu verarbeiten;
- Fig. 6 (Stand der Technik) ein Diagramm von einer Hierarchie von räumlich ausgeglichenen begrenzenden Kästen ist, die dazu benutzt werden, die Objekte der komplizierten Struktur zu repräsentieren;
- Fig. 7A-7G die in Fig. 2 gezeigte komplizierte Struktur veranschaulichen, welche in Objekte aufgebrochen ist, die durch räumlich ausgeglichene begrenzende Kästen begrenzt sind, und Teile der Objekte, welche durch räumlich ausgeglichene Schrumpf-Krümm- bzw. Schrumpf-Verwerfungs-Kästen begrenzt sind;
- Fig. 8 ein Diagramm einer Unterhierarchie von Schrumpf- Krümm- bzw. Schrumpf-Verwerfungs-Kästen ist, die weiter die Oberfläche eines Objekts definieren, dessen Wurzel ein Blatt bzw. eine Lamelle der in Fig. 6 gezeigten Hierarchie ist;
- Fig. 9 ein Ablaufdiagramm ist, das die Logik veranschaulicht, welche dazu benutzt wird, um eine Unterhierarchie von Schrumpfumhüllungskästen für jedes Objekt der komplizierten Struktur aufzubauen;
- Fig. 10A-10B Ablaufdiagramme sind, welche die Logik veranschaulichen, die dazu benutzt wird, die Schrumpf Umhüllungskästen auf dem niedrigsten Niveau der Schrumpfumhüllungs-Unterhierarchie, die in Fig. 8 gezeigt ist, zu erzeugen;
- Fig. 11 ein Ablaufdiagramm ist, welches die Logik veranschaulicht, die dazu benutzt wird, um die Schrumpfumhüllungskästen auf den übrigen Niveaus der Schrumpfumhüllungs-Unterhierarchie zu erzeugen, die in Fig. 8 gezeigt ist;
- Fig. 12A-12B Ablaufdiagramme sind, welche die Logik veranschaulichen, die dazu benutzt wird, um Schrumpfumhüllungskästen zu der Schrumpfumhüllungs-Unterhierarchie hinzuzufügen, die in Fig. 8 gezeigt ist;
- Fig. 13 ein Ablaufdiagramm ist, welches die Logik veranschaulicht, die dazu benutzt wird, um Strahlen von einem speziellen Blick- bzw. Gesichtspunkt aus nach den Objekten zu zu werfen, welche die komplizierte Struktur umfassen, um zu bestimmen, welche Objekte für den Beobachter sichtbar sind;
- Fig. 14A-14B Ablaufdiagramme sind, welche die Logik veranschaulichen, die dazu benutzt wird, zu bestimmen, welches Objekt, das durch einen Strahl geschnitten wird, dem Ursprung jenes Strahl am nächsten ist;
- Fig. 15 ein Ablaufdiagramm ist, das die Logik veranschaulicht, die dazu benutzt wird, um den Abstand zwischen dem Ursprung eines Strahls und einem speziellen Objekt zu bestimmen; und
- Fig. 16 ein Ablaufdiagramm ist, das die Logik veranschaulicht, die dazu benutzt wird, um sichtbare Objekte auf einem Display zu zeichnen.
- Fig. 1 veranschaulicht ein Bildaufbereitungs- bzw. -rendersystem 20, das dazu benutzt wird, um schnell dreidimensionale, graphische Modelle von komplizierten Strukturen auf einem Satz von Displays 36 zu rendern bzw. bildaufzubereiten. Ein spezielles Beispiel von der Art einer komplizierten Struktur, für welche das Bildrendersystem 20 der vorliegenden Erfindung besonders geschickt beim Erzeugen eines Computermodells ist, ist in Fig. 2 gezeigt. Die Szene 52 ist eine Querschnittsansicht einer Flugzeugstruktur. Die Szene 52 kann in ihre Bestandteile oder "Objekte" aufgebrochen werden, wie z. B. den Rumpf 52, jeden Sitz 58 und das Deck 56. Es wird durch jene von üblicher Kenntnis auf dem Fachgebiet erkannt werden, dass die Szene 52 zur Erleichterung der Darstellung nur in zwei Dimensionen abgebildet ist, aber dass die folgende Diskussion in gleicher Weise auf eine dreidimensionale Darstellung der Flugzeugstruktur anwendbar ist. Die Szene 52 kann in digitalem Format, wie z. B. in einer Datenbank 22 von rohen, dreidimensionalen Objekten existieren, welche durch irgendeines der gut bekannten CAD/CAM-Programme erzeugt werden kann. In der bevorzugten Ausführungsform der vorliegenden Erfindung wurde die Datenbank durch ein CAD/CAM-Programm erzeugt, das als CATIA bekannt ist, welches unter der Lizenz von Dessault erhältlich ist.
- Gemäß der vorliegenden Erfindung bricht das Bildrendersystem 20 die Szene 52 in Objekte auf und rendert die Objekte auf einem Paar von Displays 36, und zwar ein Display für jedes Auge eines Benutzers, um einen Stereoanblick zu erreichen. Durch Beschränken der zu rendernden Objekte auf nur jene Objekte, die von einem gewissen Blickpunkt her sichtbar sind, und durch Rendern der Objekte auf einem Display unabhängig vom Bestimmen, welche Objekte sichtbar sind, erhöht die vorliegende Erfindung signifikant die Geschwindigkeit, mit der die Flugzeugstruktur, die in der Szene 52 abgebildet ist, oder irgendeine andere komplizierte Struktur dargestellt wird. Tatsächlich kann das Bildrendersystem 20 ein Echtzeitrendern von komplizierten dreidimensionalen Strukturen errei chen, d. h. angenähert zwanzig bis dreißig Einzelbilder pro Sekunde.
- Es sei auf Fig. 1 zurückgekommen, wonach das Bildrendersystem 20 der vorliegenden Erfindung dreidimensionale graphische Bilder von komplizierten Strukturen schnell unter Verwendung von drei Hauptprozessen rendert bzw. bildaufbereitet: einem Objekthierarchieaufbauprozess 24, einem Strahlwerfprozess 28 und einem Objektrenderprozess 34. Der Objekthierarchieaufbauprozess 24 verarbeitet die Datenbank 22 von rohen, dreidimensionalen Objekten zu einer Objekthierarchie, welche die in der Szene 52 dargestellte Flugzeugstruktur repräsentiert, und speichert die Objekthierarchie in einer Datenbank 26. Der Strahlwerfprozess 28 bestimmt den Satz von Objekten, die von aufeinanderfolgenden Beobachterblickpunkten her sichtbar sind und speichert den Satz von sichtbaren Objekten in einer Datenbank 30. Schließlich liest der Objektrenderprozess 34 Objekte aus dem sichtbaren Objektsatz, der in der Datenbank 30 gespeichert ist, und zeichnet die sichtbaren Objekte von der Perspektive des gegenwärtigen Blickpunkts des Beobachters her auf einem Display 36. Wenn sich der gegenwärtige Blickpunkt des Beobachters ändert, werden die sichtbaren Objekte durch den Objektrenderprozess 34 entsprechend erneut gezeichnet.
- In der bevorzugten Ausführungsform der vorliegenden Erfindung sind fünf Strahlwerfprozesse 28 parallel implementiert, während zwei Objektrenderprozesse 34 parallel implementiert sind. Jedoch sind die Strahlwerfprozesse 28 von den Objektrenderprozessen 34 entkoppelt und laufen asynchron von den Objektrenderprozessen 34, so dass es den Strahlwerfprozessen 28 nicht ermöglicht wird, die Geschwindigkeit des Objektrenderns zu verlangsamen. Infolgedessen liest, während jeder der Strahlwerfprozesse 28 die in der Datenbank 26 gespeicherte Objekthierarchie verarbeitet und sichtbare Objekte zu dem Satz von sichtbaren Objekten, die in der Datenbank 30 gespeichert sind, hinzufügt, jeder der Objektrenderprozesse 34 gleichzeitig sichtbare Objekte aus dem Satz von sichtbaren Objekten aus, die in der Datenbank 30 gespeichert sind, und rendert dieselben auf den Displays 36.
- In einer Ausführungsform der vorliegenden Erfindung werden die Strahlwerfprozesse 28 und die Bildrenderprozesse 34 mittels eines Computers 33 großen Maßstabs ausgeführt, dessen Komponenten in Fig. 3 gezeigt sind. Jeder der fünf Strahlwerfprozesse 28 läuft auf einem separaten Strahlwerfprozessor 128, während die beiden Bildrenderprozesse 34 je auf einem separaten Renderprozessor 134 laufen. Außerdem ist ein Blick- bzw. Sichtkoordinatenprozessor 132 vorgesehen, um die Blick- bzw. Sichtkoordinaten des Beobachters zu verarbeiten, die in der Blick- bzw. Sichtkoordinatendatenbank 32 gespeichert sind. Die Strahlwerfprozessoren 128, die Renderprozessoren 134 und der Blick- bzw. Sichtkoordinatenprozessor 132 sind durch einen Bus 136 mit einem Nur-Lese-Speicher (ROM) 140 und einem Direktzugriffsspeicher (RAM) 142 verbunden. Die Prozessoren sprechen auf Programminstruktionen an, die in dem ROM 140 und temporär in dem RAM 142 gespeichert sind. Die Prozessoren sind außerdem an eine Permanentspeichereinrichtung 138 angekoppelt, wie z. B. ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein Bandlaufwerk, ein optisches Laufwerk oder eine Kombination hiervon. Die Permanentspeichereinrichtung speichert den Programmkode und die Daten, die für das Werfen von Strahlen, das Verarbeiten der Blick- bzw. Sichtkoordinaten und das Rendern der Objekte notwendig sind. Außerdem enthält die Permanentspeichereinrichtung 138 die Datenbank 26, welche die Objekthierarchie speichert, sowie die Datenbank 30, welche den Satz von sichtbaren Objekten speichert, und die Datenbank 32, welche die Blick- bzw. Sichtkoordinaten speichert. Die Permanentspeichereinrichtung 138, das RAM 142 und das ROM 140 werden zu Zwecken der vorliegenden Erfindung als "gemeinsam genutzter Speicher" bezeichnet, weil sie die Datenbank 30 von sichtbaren Objekten speichern, in welche die Strahlwerfprozessoren 128 sichtbare Objekte schreiben und aus welchen die Renderprozessoren 134 asynchron sichtbare Objekte lesen. Es wird durch jene von üblicher Kenntnis auf dem Fachgebiet erkannt werden, dass der Computer, der für das Rendern von Objekten benutzt wird, viel mehr Komponenten enthalten kann als jene, die in Fig. 3 gezeigt sind. Solche Komponenten werden nicht beschrieben, weil sie konventionell sind, und eine Beschreibung derselben für ein Verständnis der vorliegenden Erfindung nicht notwendig ist.
- Bevor die Strahlwerfprozesse 28 und die Objektrenderprozesse 34 durch den Computer 33 ausgeführt werden können, müssen die rohen, dreidimensionalen Objekte 34, die in der Datenbank 22 gespeichert sind, zu einer Objekthierarchie verarbeitet werden, welche die Szene 52 repräsentiert. In der bevorzugten Ausführungsform der vorliegenden Erfindung werden die rohen, dreidimensionalen Objekte mittels eines Computers 34, dessen Komponenten in Fig. 4 gezeigt sind, verarbeitet und in der Objekthierarchiedatenbank 26 gespeichert. Der Prozess 24 zum Aufbauen der Objekthierarchie wird durch eine zentrale Verarbeitungseinheit (CPU) 68 ausgeführt. Die CPU ist mittels eines Busses 76 an einen Nur-Lese-Speicher (ROM) 74 und einen Direktzugriffsspeicher (RAM) 72 angekoppelt. Die CPU spricht auf Programminstruktionen an, die in dem ROM 74 und temporär in dem RAM 72 gespeichert sind. Die CPU ist außerdem an eine Permanentspeichereinrichtung 70 angekoppelt, wie z. B. ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein Bandlaufwerk, ein optisches Laufwerk oder eine Kombination hiervon. Die Permanentspeichereinrichtung 70 speichert den Programmkode und die Daten, die für das Aufbauen der Objekthierarchie notwendig sind. Außerdem enthält die Permanentspeichereinrichtung 138 die Datenbank 22 von rohen dreidimensionalen Objekten und die Datenbank 26, welche die Objekthierarchie spei chert, die durch die CPU 68 aufgebaut wird. Es wird durch jene mit üblicher Kenntnis auf dem Fachgebiet erkannt werden, dass der Computer 31 viel mehr Komponenten enthalten kann als jene, die in Fig. 4 gezeigt sind. Solche Komponenten werden nicht beschrieben, weil sie konventionell sind, und eine Beschreibung derselben nicht notwendig für ein Verständnis der vorliegenden Erfindung ist. Jene von üblicher Erfahrung auf dem Fachgebiet werden außerdem erkennen, dass in anderen Ausführungsformen der vorliegenden Erfindung die Objekte durch den Computer 33, der die Strahlwerfprozesse 28 und die Objektrenderprozesse 34 ausführt, zu der Objekthierarchie verarbeitet werden können.
- Die Fig. 5 stellt die durch die CPU 68 des Computers 31 implementierte Logik zum Aufbauen der Objekthierarchie dar. Aus der folgenden Diskussion wird erkannt werden, dass die Objekthierarchie in zwei Hauptschritten aufgebaut wird. Zuerst wird eine Begrenzungskastenhierarchie erzeugt, deren Blätter jedes individuelle Objekt der Szene begrenzen. Als nächstes wird eine Unterhierarchie, für welche jedes Blatt der Begrenzungskastenhierarchie als die Wurzel dient, für jedes Objekt erzeugt, was weiter das Objekt definiert.
- In dieser Hinsicht beginnt die Logik in Fig. 5 in einem Block 150 und geht zu einem Block 152 weiter, wo ein Unterprogramm zum Aufbauen der Begrenzungskastenhierarchie initiiert wird. Dieses Unterprogramm verarbeitet die rohen, dreidimensionalen Objekte der Szene 52, die in der Datenbasis 26 zu finden sind, zu einer Hierarchie von Begrenzungskästen oder -volumina, aus einem Wurzelkasten, der alle Objekte in der Szene begrenzt, zu Unterkästen, die individuelle Objekte oder Teile hiervon begrenzen. Wie in der allgemein zugeeigneten US-Patentanmeldung Serial No. 08/329 356, angemeldet am 26. Oktober 1994, mit dem Titel "METHOD FOR CREATING SPATIAL- LY BALANCED BOUNDING VOLUME HIERARCHIES FOR USE IN A COMPUTER GENERATED DISPLAY OF A COMPLEX STRUCTURE", an Eric L. Brechner beschrieben ist, umgibt das Begrenzungskastenhierarchie- Unterprogramm alle und jedes Objekt in einer Szene mit einem dreidimensionalen Kasten, der mit dem Koordinatensystem der Szene abgefluchtet ist. Die achsenabgefluchteten Kästen liefern eine sehr kompakte und effiziente Datenstruktur zum Approximieren des Volumens eines Objekts. Auf jedem Niveau in der Begrenzungskastenhierarchie umschließt ein Elternbegrenzungskasten alle seine Kinderbegrenzungskästen. Eine Begrenzungskastenhierarchie 38, welche die Szene 52 repräsentiert, ist in Fig. 6 (Stand der Technik) veranschaulicht. Die Begrenzungskastenhierarchie 38 hat eine Wurzel 40. Die Wurzel 40 ist ein dreidimensionaler Kasten, welcher alle von den Objekten in der Szene 52 umgibt, d. h. den Rumpf 54, die Sitze 58 und das Deck 56. Die Wurzel 40 enthält eine Anzahl von Kindern 42, wobei jedes Kind einen dreidimensionalen Kasten umfasst, der einen Untersatz von den Objekten in der Szene 52 umgibt. Jedes der Kinder 42 kann außerdem eine Anzahl von Kindern haben. Jedes dieser "Enkelkinder" der Wurzel 40 kann auch eine Anzahl von Kindern haben, und so weiter. Wenn jedoch ein Kind keine Kinder mehr hat, dann wird dieses Kind als ein "Blatt" bezeichnet. In der Begrenzungskastenhierarchie 38, die in Fig. 6 veranschaulicht ist, hat jedes der Kinder 42 seine eigenen Kinder 44. Da die Kinder 44 keine eigenen Kinder haben, werden sie als Blätter 44 bezeichnet. Jedes Blatt 44 umfasst einen dreidimensionalen Kasten, der individuelle Objekte in der Szene umgibt, wie z. B. einen Sitz 58 oder das Deck 56.
- Die Begrenzungskastenhierarchie 38 wird durch das Bildrendersystem 20 dazu benutzt, zu bestimmen, welche Objekte in einer Szene für den Beobachter von dem gegenwärtigen Blickpunkt des Beobachters her sichtbar sind. Wie unten mehr im Detail beschrieben werden wird, wirft jeder der Strahlwerfprozesse 28, die durch das Bildrendersystem 20 implementiert sind, eine Anzahl von Strahlen von dem gegenwärtigen Blickpunkt des Beobachters in den Modellraum. Um zu bestimmen, welche Objekte für den Beobachter sichtbar sind, ist es zunächst notwendig, zu bestimmen, welche von dem gegenwärtigen Blickpunkt aus geworfenen Strahlen welche Objekte schneiden. Dieses wird durch Überprüfen von jedem Strahl gegen die Wurzel 40 der Objekthierarchie bewerkstelligt. Wenn der Strahl die Wurzel 40 schneidet, dann ist es wahrscheinlich, dass der Strahl ein oder mehrere Objekte schneidet, die niedriger in der Hierarchie sind, d. h. dass der Strahl eines oder mehrere Kinder, Enkelkinder oder etc. der Wurzel schneidet. Infolgedessen wird der Strahl gegen die Kinder, Enkelkinder etc. der Wurzel überprüft, bis ein Blatt 44 erreicht wird. Wenn der Strahl ein Blatt 44 schneidet, dann ist ein Objekt identifiziert worden, das der geworfene Strahl potenziell schneidet. Demgemäß ist ein Objekt identifiziert worden, das für den Beobachter sichtbar sein kann. Um zu bestätigen, dass der Strahl das Objekt schneidet und dass das Objekt sichtbar ist, muss eine weitere Analyse ausgeführt werden, wie unten mehr im Einzelnen diskutiert werden wird. Jedoch werden jene von üblicher Kenntnis auf dem Fachgebiet erkennen, dass durch Organisieren der Objekte zu einer solchen Hierarchie und durch Suchen bzw. Prüfen der Hierarchie in der oben beschriebenen Art und Weise in Frage kommende Objekte mit signifikanten Einsparungen in der Berechnung identifiziert werden.
- Ein Beispiel, welches veranschaulicht, warum ein solches zusätzliches Testen notwendig ist, ist in den Fig. 7A-7B gezeigt. Die Fig. 7A veranschaulicht den Rumpf 54 der Flugzeugstruktur, der in Hälften geteilt ist, wobei die linke Hälfte von einem Begrenzungskasten 60 umgeben ist, und die rechte Hälfte von einem Begrenzungskasten 61 umgeben ist. Aus der obigen Diskussion wird erkannt werden, dass der Begrenzungskasten 60 und der Begrenzungskasten 61 je ein Blatt 44 der Begrenzungskastenhierarchie 38 bilden, die in Fig. 6 veranschaulicht ist. Die Fig. 7B veranschaulicht die Schwierigkeit bei der Benutzung von Begrenzungskästen, um zu bestimmen, ob ein Strahl, der sich von dem gegenwärtigen Blickpunkt des Benutzers aus erstreckt, ein spezielles Objekt schneidet. Spezieller veranschaulicht die Fig. 7B Begrenzungskästen 60 und 61, welche die beiden Hälften des Rumpfs 54 enthalten, sowie einen Begrenzungskasten 59, der einen Sitz 58 umgibt, und einen Strahl 55, der von einem Blickpunkt innerhalb des Rumpfs 54 ausgeht. Wenn sich der Strahl von dem gegenwärtigen Blickpunkt aus erstreckt, trifft der Strahl zuerst den Begrenzungskasten 60, der die linke Hälfte des Rumpfs 54 enthält. Jedoch ist die linke Hälfte des Rumpfs 54 hinter dem gegenwärtigen Blickpunkt, d. h. hinter dem Beobachter und demgemäß nicht zu sehen. Der Strahl 55 trifft dann auf den Begrenzungskasten 61 der rechten Hälfte des Rumpfs 54. Jedoch ist das erste Objekt, das für den Beobachter entlang diesem Strahl sichtbar sein sollte, der Sitz 58, der durch den Begrenzungskasten 59 umgeben ist, nicht jedoch die rechte Hälfte des Rumpfs 54. Der Strahl wird nur den Begrenzungskasten 59 des Sitzes 58 schneiden, nachdem er den Begrenzungskasten 60 der linken Hälfte des Rumpfs 54 und den Begrenzungskasten 61 der rechten Hälfte des Rumpfs 54 geschnitten hat.
- Da der Begrenzungskasten eines Objekts nicht allein dazu benutzt werden kann, zu bestimmen, ob ein Strahl jenes Objekt schneidet oder nicht, ist eine weitere Analyse von jenem Objekt notwendig. Wie unten beschrieben wird, wird jedes Begrenzungskastenblatt 44 in einer Anzahl von gleichförmigen dreidimensionalen Unterteilungen unterteilt, wobei irgendwelche Unterteilungen verworfen bzw. ausrangiert werden, die keinen Teil des Objekts enthalten, und die übrigen Unterteilungen werden geschrumpft, so dass sie die Oberfläche des Objekts so eng wie möglich begrenzen. Jede dieser geschrumpften Unterteilungen wird als ein "Schrumpfumhüllungskasten" be zeichnet. Die Schrumpfumhüllungskästen, welche die Oberfläche des Objekts umgrenzen, definieren weiter das Objekt und bilden eine Unterhierarchie, für welche das Blatt 44 für jenes Objekt die Wurzel ist, in der ursprünglichen Begrenzungskastenhierarchie 38. Demgemäß geht die Logik in Fig. 5 von der Routine zum Erstellen der Begrenzungskastenhierarchie im Block 152 zu einer Subroutine zum Erstellen der Schrumpfumhüllungskastenhierarchien für jedes Objekt in einem Block 154 weiter.
- Die Fig. 7C-7G veranschaulichen, wie ein Objekt in Schrumpfumhüllungskästen unterteilt wird. Die Fig. 7C zeigt den Begrenzungskasten 60 für die linke Hälfte des Rumpfs 54, geteilt in vier gleichförmige Unterteilungen 62a-62d. Es wird jedoch erkannt werden, dass, wenn die linke Hälfte des Rumpfs 54 in dreidimensionaler Form dargestellt wäre, der Begrenzungskasten 60 in acht gleichförmige Unterteilungen unterteilt werden würde. Wie unten mehr im Einzelnen beschrieben werden wird, besteht das Ergebnis des Schrumpfens der vier gleichförmigen Unterteilungen 62a-62d darin, dass vier Schrumpfumhüllungskästen 62a'-62d' gebildet werden, wie in Fig. 7D gezeigt ist, von denen jeder die linke Hälfte des Rumpfobjekts 54 so eng wie möglich umgrenzt. Jedoch ist es möglich, Schrumpfumhüllungskästen zu erhalten, welche die Oberfläche der linken Hälfte des Rumpfs 54 sogar enger approximieren.
- Die Fig. 7E zeigt Begrenzungskästen 60, die in sechzehn gleich bemessene Unterteilungen 64a-64p unterteilt sind. Jedoch enthalten die Unterteilungen 64f-64h und 64j-64l keinen Teil von der linken Hälfte des Rumpfs 54. Wie unten mehr im Einzelnen beschrieben werden wird, werden nur jene Unterteilungen, die einen Teil der Oberfläche des Objekts enthalten, aufrecht erhalten und zu der Schrumpfumhüllungskastenunterhierarchie für das Objekt hinzugefügt. Die leeren Untertei lungen 64f-64h und 64j-64l werden nicht zu der Schrumpfumhüllungsunterhierarchie für das Objekt hinzugefügt. Das Ergebnis der Schrumpfung der übrigen Unterteilungen 64a-64e, 64i und 64m-64p und des Verwerfens der Unterteilungen 64f-64h und 64j-64l ist in Fig. 7F gezeigt. Die Unterteilungen 64a-64e, 64i und 64m-64p werden geschrumpft, um Schrumpfumhüllungskästen 64a'-64e', 64i' und 64m'-64p' zu bilden, welche die Krümmung des Rumpfs eng approximieren.
- Die resultierende Schrumpfumhüllungskastenunterhierarchie 46 für die linke Hälfte des Rumpfs 54 ist in Fig. 8 veranschaulicht. Der Begrenzungskasten 60 (d. h. ein Blatt 44 der Begrenzungskastenhierarchie 38) für die linke Hälfte des Rumpfobjekts 54 hat vier Kinder 62a'-64d'. Der Schrumpfumhüllungskasten 62a' hat drei Kinder 64a', 64b' und 64e'; der Schrumpfumhüllungskasten 62b' hat zwei Kinder 64e' und 64d'; der Schrumpfumhüllungskasten 62c' hat drei Kinder 64i', 64m' und 64n'; und der Schrumpfumhüllungskasten 62d' hat zwei Kinder 64o' und 64p'. Das Ergebnis ist eine Umhüllungskastenunterhierarchie 46, welche die Oberfläche der linken Hälfte des Rumpfs 54 eng approximiert. Jene von üblicher Kenntnis auf dem Fachgebiet werden erkennen, dass die Tatsache, wie genau die Oberfläche des Objekts approximiert wird, davon abhängt, wie viele Male der Begrenzungskasten eines Objekts unterteilt wird. Jedoch wird die Schrumpfumhüllungskastenunterhierarchie 46 umso komplizierter, je mehr Unterteilungen erfolgen. Daher wird in der bevorzugten Ausführungsform der vorliegenden Erfindung eine feste Tiefe für die Unterteilung des Begrenzungskastens 44 eines Objekts von drei Niveaus tief gewählt.
- Die Fig. 7G veranschaulicht das endgültige Ergebnis der Benutzung von Schrumpfumhüllungskästen zum Umgrenzen der Szene 52. Da der gesamte Rumpf 54 nun durch Schrumpfumhüllungskästen umgrenzt ist, schneidet der Strahl 55, der von dem gegenwärtigen Blickpunkt ausgeht, den Begrenzungskasten 59 des Sitzes 58 anstatt den Begrenzungskasten 60 oder 61 von einer der beiden Hälften des Rumpfs. Demgemäß wird der Sitz 58 zu dem Satz von sichtbaren Objekten hinzugefügt und durch den Objektrenderprozess 34 gezeichnet, wie unten mehr im Detail beschrieben werden wird.
- Die zum Erstellen der Schrumpfumhüllungskastenunterhierarchien 46 für jedes Objekt benutzte Logik ist spezieller in Fig. 9 veranschaulicht. Die Logik beginnt in einem Block 158 und geht zu einem Block 160 weiter, wo ein erstes Objekt in der Begrenzungskastenhierarchie 38, die in Fig. 6 gezeigt ist, erhalten wird. Es wird erkannt werden, dass das Objekt ein Blatt 44 der Hierarchie 38 ist. In einem Block 162 wird eine Variable n gleich einer vorbestimmten Tiefe für die Unterhierarchie 46 eingestellt, für welche das Objekt die Wurzel sein wird. In der bevorzugten Ausführungsform der vorliegenden Erfindung wird jede Schrumpfumhüllungskastenunterhierarchie drei Niveaus tief sein (wobei die Wurzel nicht gezählt wird), worin das Niveau n = 0 die Wurzel der Unterhierarchie ist, und das Niveau n = 3 das tiefste Niveau der Unterhierarchie ist. Wie oben bemerkt, kann die Tiefe der Schrumpfumhüllungskastenunterhierarchie in Abhängigkeit von dem Detailniveau, das in dem endgültig gerenderten Bild gewünscht wird, erhöht oder vermindert werden.
- Die Schrumpfumhüllungskastenunterhierarchie 46 für jedes Objekt wird dadurch erstellt, dass zunächst Speicher für die gleichförmigen Unterteilungen, in welche der Begrenzungskasten des Objekts unterteilt wird, im Speicher zugewiesen wird, dass die Unterteilungen geschrumpft werden, um Schrumpfumhüllungskästen zu bilden, und dass dann die Schrumpfumhüllungskästen, welche einen Teil des Objekts enthalten, zu der Schrumpfurahüllungskastenunterhierarchie 46 für das Objekt hinzugefügt werden. In dieser Hinsicht geht die Logik vom Block 162 zu einem Block 164 weiter, wo der Begren zungskasten des Objekts in 23n gleichförmige Unterteilungen unterteilt wird, die im Speicher in einer eindimensionalen Gruppierung, welche 23n Einträge hat, gespeichert werden.
- In einem Block 166 wird die Große von jeder Unterteilung bei der Tiefe n initialisiert. Spezieller wird die Basis der Unterteilung, d. h. das Minimum der x,y,z-Koordinaten, die irgendeine Ecke der Unterteilung bilden, auf die kleinste Basis initialisiert, die für eine Unterteilung bei jener besonderen Tiefe zulässig ist; und das Ausmaß der Unterteilung, d. h. die größte von den x,y,z-Koordinaten, die irgendeine Ecke der Unterteilung bilden, wird auf das größte Ausmaß initialisiert, welches für eine Unterteilung bei jener speziellen Tiefe zulässig ist. Im Block 167 werden die Dimensionen der Schrumpfumhüllungskästen, die aus den Unterteilungen mit der Tiefe n erzeugt werden, initialisiert. Spezieller wird die Basis von jedem Schrumpfumhüllungskasten, der bei der Tiefe n erzeugt werden soll, gleich dem Ausmaß der Unterteilung bei jener Tiefe gesetzt, während das Ausmaß von jedem Schrumpfumhüllungskasten gleich der Basis der Unterteilung gesetzt wird. Durch Invertieren der Dimensionen von jedem Schrumpfumhüllungskasten in dieser Art und Weise wird sichergestellt, dass die Dimensionen von jedem endgültig erzeugten Schrumpfumhüllungskasten von der angemessenen Größe sein werden.
- Sobald die Dimensionen von jeder Unterteilung bei der Tiefe n initialisiert sind, bestimmt die Logik in einem Entscheidungsblock 168, ob n = 0. Wenn nicht, sind die Unterteilungen auf jedem Niveau der Unterhierarchie 46 noch nicht initialisiert worden. Daher geht die Logik zu einem Block 170 weiter, wo der Wert n dekrementiert wird, so dass die Unterteilungen auf dem nächst niedrigen Niveau der Unterhierarchie 46 initialisiert werden können. Die Blöcke 164 bis 170 werden dann wiederholt, bis der Speicher bzw. der Speicherplatz im Speicher zugeordnet worden ist und die Basis und das Ausmaß für jede mögliche Unterteilung initialisiert worden sind. Da n bis zu einer vorbestimmten Tiefe von drei der bevorzugten Ausführungsformen der Erfindung initialisiert wird, wird Speicher für 584 Unterteilungen (wobei die Wurzel nicht gezählt wird) in dem dreidimensionalen Fall (acht Kinder mit 64 Enkelkindern mit 512 Urenkelkindern) zugeordnet. Es wird jedoch erkannt werden, dass die vorliegende Erfindung auch dazu benutzt werden kann, zweidimensionale graphische Bilder zu rendern. In jenem Fall wird Speicher für 276 Unterteilungen (vier Kinder mit 16 Enkelkindern und 256 Urenkelkindern) zugewiesen.
- Sobald die Initialisierung der Unterteilungen und die Zuweisung im Speicher für die Unterteilungen vollständig ist, geht die Logik vom Entscheidungsblock 168 zu einem Block 172 weiter, wo die Schrumpf Umhüllung der Unterteilungen auf dem tiefsten Niveau der Schrumpfumhüllungsunterhierarchie 46 für das gegebene Objekt stattfindet. Aus der vorstehenden Beschreibung wird erkannt werden, dass "Schrumpfumhüllungs"- Unterteilungen bedeuten, dass jede vorinitialisierte Unterteilung auf dem gegebenen Niveau zu einer Größe geschrumpft wird, welche die Oberfläche des in der Unterteilung enthaltenen Objekts am besten approximiert.
- Die Logik für die Schrumpfumhüllung des Objekts auf dem tiefsten Nivea ist mehr im Detail in den Fig. 10A und 10B gezeigt. Die Logik beginnt in Fig. 10A in einem Block 184 und geht zu einem Block 186 weiter, wo die erste vorinitialisierte Unterteilung auf dem tiefsten Niveau der Unterhierarchie von der Gruppierung im Speicher erhalten wird, der für Unterteilungen auf dem tiefsten Niveau zugeordnet ist. Um diese oder irgendeine andere Unterteilung auf die Größe zu schrumpfen, welche den innerhalb der Unterteilung zu findenden Teil des Objekts am besten approximiert, ist es notwendig, zu bestimmen, wie das Objekt die Unterteilung schneidet.
- Jene von üblicher Kenntnis auf dem Fachgebiet der Computergraphik werden erkennen, dass Objekte oft durch ein Gitter von zweidimensionalen Dreiecken repräsentiert oder modelliert werden. Demgemäß kann die Überschneidung eines Objekts mit einer Unterteilung aus der Überschneidung der Unterteilung mit den Dreiecken des Gitters, welches die Oberfläche des Objekts repräsentiert, bestimmt werden. In der bevorzugten Ausführungsform der vorliegenden Erfindung wird das Dreiecksgitter für jedes Objekt während der Erzeugung des Begrenzungskastens für das Objekt durch Methoden berechnet, die auf dem Fachgebiet der Computergraphik gut bekannt und weiterhin beschrieben sind in Scroeder, W. J., Zarge, J. A., Lorenson, W. E., Decimination of Triangle Meshes, COMPUTER GRAPHICS (SIGGRAPH '93 Proceedings), 26(2): 65-70, Juli 1992 und Hoppe, H., DeRose T., Duchamp, T., McDonald, J., Stuetzle, W., Mesh Optimization, COMPUTER GRAPHICS (SIGGRAPH '93 Proceedings), Annual Conference Series, 247-254, August 1993.
- Demgemäß wird, sobald die erste Unterteilung auf dem tiefsten Niveau der Unterhierarchie erhalten worden ist, das erste Dreieck des Gitters, welches dazu benutzt wird, das Objekt zu repräsentieren, aus dem Speicher in einem Block 188 erhalten. Das Dreieck wird durch seinen eigenen zweidimensionalen Kasten begrenzt, wobei die Basis und das Ausmaß desselben in einem Block 190 berechnet werden. In einem Entscheidungsblock 192 bestimmt die Logik, ob der Kasten, in den das Dreieck passt, die gegebene Unterteilung schneidet. Wenn nicht, geht die Logik zu einem Entscheidungsblock 212 in Fig. 10B weiter, wo sie bestimmt, ob das letzte Dreieck des Gitters, welches dazu benutzt wird, das Objekt zu repräsentieren, verarbeitet worden ist. Wenn nicht, geht die Logik zu einem Block 213 weiter, wo das nächste Dreieck des zum Repräsentieren des Objekts benutzten Gitters erhalten wird. Die Logik kehrt dann zum Block 190 zurück, und die Basis und das Ausmaß des Ka stens, in den das nächste Dreieck passt, wird berechnet. Der Kasten 190 und 192 werden demgemäß für jedes Dreieck des zum Repräsentieren des Objekts verwendeten Gitters wiederholt.
- Wenn das Ergebnis des Entscheidungsblocks 192 positiv ist und der Kasten, welcher das gegebene Dreieck umgrenzt, die gegebene Unterteilung schneidet, geht die Logik zu den Blöcken 194-198 weiter, so dass die Dimensionen der Überschneidung zwischen dem gegebenen Dreieck und der Unterteilung berechnet werden können. Es wird erkannt werden, dass irgendein gegebenes Dreieck eine Unterteilung auf drei Weisen schneidet: (1) die Fläche des Dreiecks schneidet die gegebene Unterteilung; (2) die Liniensegmente bzw. -abschnitte, welche die Grenzen des Dreiecks bilden, schneiden die gegebene Unterteilung; und (3) die Scheitel bzw. Spitzen des Dreiecks schneiden die gegebene Unterteilung. In jedem dieser Fälle definiert die Überschneidung des Dreiecks und der Unterteilung einen Satz von Punkten, der durch ihren eigenen Kasten umgrenzt werden kann. Wie unten mehr im Detail beschrieben werden wird, werden die Dimensionen der Kästen, welche die Überschneidung des Dreiecks und der Unterteilung umgrenzen, zum Schrumpfumhüllen der Unterteilung benutzt.
- In einem Block 194 werden die Basis und das Ausmaß eines Kastens, der die Überschneidung zwischen der Fläche des gegebenen Dreiecks und der Unterteilung umgrenzt, berechnet. In einem Block 196 werden die Basis und das Ausmaß eines Kastens, der die Überschneidung zwischen den Grenzen des Dreiecks und der Unterteilung umgrenzt, berechnet. In einem Block 198 werden die Basis und das Ausmaß eines Kastens, der die Überschneidung zwischen den Scheiteln bzw. Spitzen des Dreiecks und dem Unterteilungsvolumen umgrenzt, berechnet. Jene von üblicher Kenntnis auf dem Fachgebiet werden erkennen, dass die Basis und das Ausmaß in jedem dieser Fälle unter Verwendung von Differenzialgleichungen berechnet wird, die auf dem Fachgebiet gut bekannt sind, und demgemäß wird das hier nicht speziell angegeben.
- In Fig. 10B geht die Logik zu einer Reihe von Blöcken weiter, welche die gegebenen Unterteilungen unter Benutzung der in den Blöcken 194-198 berechneten Information schrumpf umhüllen. Spezieller geht die Logik zu einer Reihe von Blöcken 200-210 weiter, in denen die Basis und das Ausmaß der Unterteilung erneut berechnet werden, so dass demgemäß die Basis und das Ausmaß des von der Unterteilung erzeugten Schrumpfumhüllungskastens gebildet werden. Demgemäß werden die erneut berechnete Basis und das erneut berechnete Ausmaß von jeder Unterteilung in den Blöcken 200-210 als die Basis und das Ausmaß des von der Unterteilung erzeugten Schrumpfumhüllungskastens bezeichnet. Folglich wird im Block 200 die Schrumpfumhüllungskastenbasis gleich dem Maximum der Basis der gegenwärtigen Unterteilung, verglichen mit dem Minimum des gegenwärtigen Werts für die Basis des Schrumpfumhüllungskastens und die Basis des Kastens, welcher die Überschneidung des Bereichs bzw. der Fläche des Dreiecks und der Unterteilung umgrenzt, gesetzt. Mit anderen Worten, die neue Basis des Schrumpfumhüllungskastens wird entweder zu der Basis der Unterteilung oder der kleineren aus der gegenwärtigen Schrumpfumhüllungskastenbasis und der Basis des überschnittenen Kastens bzw. der Überschneidungskastenbasis festgesetzt. Da die Basis der Unterteilung im Block 166 der Fig. 9 so initialisiert wird, dass sie die kleinste zulässige Basis ist, stellt die Berechnung im Block 200 sicher, dass die Basis des Schrumpfumhüllungskastens niemals kleiner als die Basis der Unterteilung wird. Umgekehrt ist die obere Grenze für die Basis des von der Unterteilung erzeugten Schrumpfumhüllungskastens die kleinere aus der gegenwärtigen Basis des Schrumpfumhüllungskastens und der Basis des Kastens, der die Überschneidung umgrenzt.
- Eine ähnliche bzw. gleichartige Berechnung wird in einem Block. 202 für das Ausmaß des von der gegenwärtigen Unterteilung erzeugten Schrumpfumhüllungskastens ausgeführt. Speziell wird das neue Schrumpfumhüllungskastenausmaß gleich dem Minimum des Ausmaßes der Unterteilung verglichen mit dem Maximum des gegenwärtigen Werts für das Ausmaß des Schrumpfumhüllungskastens und das Ausmaß des Kastens, welcher die Überschneidung des Bereichs bzw. der Fläche des Dreiecks und der Unterteilung umgrenzt, festgesetzt. Da das Ausmaß der Unterteilung im Block 166 der Fig. 9 dahingehend initialisiert wird, dass es das größte zulässige Ausmaß ist, stellt die Berechnung im Block 202 sicher, dass das Ausmaß des Schrumpfumhüllungskastens niemals größer als das Ausmaß der Unterteilung wird. Umgekehrt ist die untere Grenze für das neue Ausmaß des Schrumpfumhüllungskastens das größere aus dem gegenwärtigen Ausmaß des Schrumpfumhüllungskastens und dem Ausmaß des Kastens, der die Überschneidung umgrenzt.
- Die Basis und das Ausmaß für den Schrumpfumhüllungskasten, der von den Unterteilungen erzeugt wird, werden in den Blöcken 204-210 weiter verfeinert. In den Blöcken 204-210 werden die Basis und das Ausmaß wiederholt erneut berechnet, wie oben mit Bezug auf die Blöcke 200 und 202 beschrieben ist, ausgenommen, dass die Basis und das Ausmaß des Kastens, welcher die Überschneidung der Grenzen des Dreiecks mit der Unterteilung umgrenzt, und des Kastens, welcher die Überschneidung der Scheitel bzw. Spitzen des Dreiecks und der Unterteilung umgrenzt, verwendet werden. Demgemäß sind zu dem Zeitpunkt, in dem die Logik den Block 210 verlässt und zu einem Entscheidungsblock 212 weitergeht, eine Basis und ein Ausmaß für einen Schrumpfumhüllungskasten berechnet worden, der die Oberfläche des Objekts, welche bzw. welches in denselben fällt, am besten approximiert.
- Nachdem die Basis und das Ausmaß des Schrumpfumhüllungskastens berechnet sind, geht die Logik zum Entscheidungsblock 212 weiter, wo sie bestimmt, ob das letzte Dreieck des Objekts verarbeitet worden ist. Wenn nicht, geht die Logik zum Block 213 weiter, wo das nächste Dreieck in dem Gitter, welches das Objekt repräsentiert, erhalten wird. Die Logik kehrt dann zum Block 190 in Fig. 10A zurück, und die Basis und das Ausmaß für den Kasten, der das nächste Dreieck umgrenzt, werden berechnet. Die Blöcke 190 bis 213 werden dann für jedes Dreieck des Objekts wiederholt. Infolgedessen wird, wenn das letzte Dreieck in dem das Objekt repräsentierenden Gitter schließlich erreicht ist, die Logik von dem Entscheidungsblock 212 zu einem Entscheidungsblock 214 weitergehen. Es wird erkannt werden, dass zu dem Zeitpunkt, in dem jedes Dreieck verarbeitet worden ist, der Schrumpfumhüllungskasten, welcher aus der gegebenen Unterteilung erzeugt werden soll, verfeinert werden wird, um die bestmögliche Approximation für die Oberfläche des in dem Schrumpfumhüllungskasten enthaltenen Objekts zu liefern.
- Im Entscheidungsblock 214 bestimmt die Logik, ob die letzte Unterteilung auf dem tiefsten Niveau der Unterhierarchie 46 verarbeitet worden ist. Wenn nicht, wird die nächste Unterteilung auf dem tiefsten Niveau der Schrumpfumhüllungsunterhierarchie 46 in einem Block 216 erhalten. Die Logik kehrt dann zum Block 188 zurück, und die Blöcke 188 bis 216 werden für jede Unterteilung auf dem tiefsten Niveau der Schrumpfumhüllungskastenunterhierarchie 46 wiederholt. Infolgedessen wird jede Unterteilung auf dem tiefsten Niveau der Unterhierarchie 46 bis zu der besten Approximation der Oberfläche des in dem Kasten enthaltenen Objekts durch Vergleichen von jeder Unterteilung mit jedem Dreieck in dem Dreiecksgitter "schrumpfumhüllt". Wenn die letzte Unterteilung auf dem tief sten Niveau der Unterhierarchie 46 verarbeitet wird, endet die Logik in einem Block 218.
- Es sei zur Fig. 9 zurückgekehrt, wonach die Logik, nachdem die Unterteilungen auf dem tiefsten Niveau der Unterhierarchie im Block 172 schrumpfumhüllt worden sind, zu einem Block 174 weitergeht, wo die Unterteilungen auf den übrigen Niveaus der Unterhierarchie 46 schrumpfumhüllt werden. Die Logik für die Schrumpf Umhüllung der Unterteilungen auf den übrigen Niveaus der Unterhierarchie ist mehr im Einzelnen in Fig. 11 veranschaulicht. Die Logik beginnt in einem Block 220 und geht zu einem Block 222 weiter, wo n wiederum gleich der vorbestimmten Tiefe für die Unterhierarchie gesetzt wird, d. h., n = 3. In einem Block 224 wird die erste Unterteilung auf dem nächsttiefsten Niveau, d. h. mit der Tiefe n - 1, erhalten und als ein Elternteil gespeichert. In einem Block 226 werden die Kinder von dem gegebenen Elternteil erhalten. Wie oben beschrieben ist, werden die Unterteilungen auf jedem Niveau der Unterhierarchie 46 in einem Speicher als eine eindimensionale Gruppierung gespeichert, die 23n Einträge hat. Daher sind die Kinder von der ersten Unterteilung auf der Tiefe n - 1 die ersten acht Unterteilungen (nun Schrumpfumhüllungskästen, die gemäß der in den Fig. 10A und 10B gezeigten Logik erzeugt sind) in der entsprechenden Gruppierung, welche die Schrumpfumhüllungskästen auf der Tiefe n speichert. Die Kinder der nächsten Unterteilung auf der Tiefe n - 1 sind die nächsten acht Unterteilungen (nun Schrumpfumhüllungskästen) bei der Tiefe n und so weiter.
- In einem Block 228 wird das erste Kind des Elternteils (d. h. der erste von den acht Schrumpfumhüllungskästen, die im Block 226 erhalten werden) erhalten. Im Block 230 wird die Basis der Elternunterteilung erneut berechnet, oder, mit andere Worten, die Basis des Schrumpfumhüllungskastens, der von dem Elternteil erzeugt worden ist, wird als das Minimum der Basis von dem Elternteil und der Basis von dem Kind berechnet. Im Block 232 wird das Ausmaß des Elternteils erneut berechnet. Spezieller wird das Ausmaß des von dem Elternteil erzeugten Schrumpfumhüllungskastens gleich dem Maximum des Ausmaßes von dem Elternteil und des Ausmaßes von dem Kind gesetzt.
- Sobald die Basis und das Ausmaß des von dem Eiterteil erzeugten Schrumpfumhüllungskastens berechnet worden sind, geht die Logik zu einem Entscheidungsblock 234 weiter, wo sie bestimmt, ob das letzte Kind von der Elternunterteilung verarbeit worden ist. Wenn nicht, geht die Logik zu einem Block 236 weiter, und das nächste Kind von der Elternunterteilung (d. h. das nächste der acht Kinder bei der Tiefe n) wird erhalten. Die Blöcke 230-236 werden dann für jedes Kind der gegebenen Elternunterteilung wiederholt. Infolgedessen werden die Basis und das Ausmaß des von der Elternunterteilung erzeugten Schrumpfumhüllungskastens weiter verfeinert, bis der Schrumpfumhüllungskasten die Oberfläche des in jenem Kasten enthaltenen Objekts am besten approximiert. Mit anderen Worten, ein Schrumpfumhüllungskasten wird berechnet, welcher die kleinste Basis und das größte Ausmaß von irgendeinem seiner Kinder hat.
- Nachdem das letzte Kind der gegebenen Unterteilung verarbeitet worden ist, geht die Logik von dem Entscheidungsblock 234 zu einem Entscheidungsblock 238 weiter, wo sie bestimmt, ob die letzte Unterteilung auf der Tiefe n - 1 verarbeitet worden ist. Wenn nicht, geht die Logik zu einem Block 240 weiter, und die nächste Unterteilung bei der Tiefe n - 1 wird erhalten. Die Blöcke 230 bis 236 werden dann für jede Unterteilung auf der Tiefe n - 1 wiederholt. Daher wird für jede Unterteilung auf der gegebenen Tiefe eine Basis und ein Ausmaß für einen neuen Schrumpfumhüllungskasten unter Benutzung der Basis und des Ausmaßes von jedem Kind der Unterteilung berechnet. Sobald die letzte Unterteilung bei der Tiefe n - 1 verarbeitet worden ist, geht die Logik von dem Entscheidungsblock 238 weiter zu einem Entscheidungsblock 242, wo sie bestimmt, ob die Unterteilungen auf jedem Niveau der Schrumpfumhüllungskastenunterhierarchie 46 verarbeitet worden sind, d. h., ob n = 0. Wenn nicht, geht die Logik weiter zu einem Block 244, wo der Wert für n dekrementiert wird. Die Logik kehrt dann zum Block 224 zurück, wo die erste Unterteilung auf dem nächsttiefsten Niveau erhalten wird. Die Blöcke 224-242 werden dann für das nächsttiefste Niveau in der Unterhierarchie wiederholt, bis alle von den vorbestimmten Niveaus der Unterhierarchie verarbeitet worden sind und die Basis und das Ausmaß der Schrumpfumhüllungskästen auf allen den Niveaus bestimmt worden sind. In diesem Zeitpunkt wird n gleich Null, die Logik wird vom Entscheidungsblock 242 weitergehen und in einem Block 246 enden.
- Es sei zur Fig. 9 zurückgekehrt, wonach, sobald die Unterteilungen auf den übrigen Niveaus der Schrumpfumhüllungskastenunterhierarchie 46 im Block 174 schrumpfumhüllt worden sind, die Logik zu einem Block 176 weitergeht. Im Block 176 werden die Schrumpfumhüllungskästen zu der Begrenzungskastenhierarchie 38 als eine Unterhierarchie 46 hinzugefügt, deren Wurzel das Begrenzungskastenblatt 44 für das Objekt ist. Die Logik für das Hinzufügen der Schrumpfumhüllungskästen zu der Begrenzungskastenhierarchie 38 ist mehr im Einzelnen in den Fig. 12A und 12B veranschaulicht.
- Die Logik beginnt in Fig. 12A in einem Block 250 und geht zu einem Block 252 weiter, worin n noch einmal gleich der vorbestimmten Tiefe der Schrumpfumhüllungskastenunterhierarchie 46 für das Objekt gesetzt wird. In einem Block 254 wird der erste Schrumpfumhüllungskästen vom auf dem dem niedrigsten Niveau in der Unterhierarchie 46 nächsten Niveau, d. h. n - 1, erhalten und wird im Speicher als ein Elternteil gespeichert. In einem Block 256 werden die Kinder des Elternschrumpfumhül lungskastens erhalten. Wie oben beschrieben, sind die Kinder von dem ersten Elternschrumpfumhüllungskasten die ersten acht Schrumpfumhüllungskästen bei der Tiefe n. Im Block 258 wird das erste von jenen Kindern, die im n-Block 256 erhalten worden sind, erhalten. Die Logik geht dann zu einem Block 260 weiter, wo sie bestimmt, ob das Kind geschrumpft ist. Es wird erkannt werden, dass diese Bestimmung ausgeführt wird durch Vergleichen der Basis und des Ausmaßes des Kindschrumpfumhüllungskastens mit der Basis und dem Ausmaß der ursprünglichen Unterteilung, von der her der Schrumpfumhüllungskasten erzeugt wurde. Wenn der Kindschrumpfumhüllungskasten geschrumpft ist, kann es notwendig sein, das Kind, seine Geschwister und den Elternteil zu der Schrumpfumhüllungsunterhierarchie 46 oder dem Objekt, das zu der Begrenzungskastenhierarchie 38 hinzugefügt werden wird, hinzuzufügen. Infolgedessen geht die Logik vom Entscheidungsblock 260 zu einem Entscheidungsblock 266, wo sie bestimmt, ob das Kind bereits zu der Ünterhierarchie 46 hinzugefügt worden ist.
- Wenn andererseits das Kind nicht geschrumpft ist, mag es nicht notwendig sein, das Kind oder irgendwelche von seinen Geschwistern zu der Schrumpfumhüllungskastenunterhierarchie 46 hinzuzufügen. In diesem Fall geht die Logik vom Entscheidungsblock 260 weiter zu einem Entscheidungsblock 262, wo sie bestimmt, ob das letzte Kind von dem Elternteil verarbeitet worden ist. Wenn das Ergebnis negativ ist, wird das nächste Kind von dem Elternteil in einen Block 264 erhalten. Die Logik kehrt dann zum Entscheidungsblock 260 zurück, wo es einmal bestimmt wird, ob das nächste Kind geschrumpft ist. Es wird erkannt werden, dass die Blöcke 260-264 wiederholt werden, bis ein Kind gefunden worden ist, das von seiner ursprünglichen Große her geschrumpft ist oder bis das letzte Kind des Elternschrumpfumhüllungskastens verarbeitet worden ist. Wenn das letztere zutrifft, ist keines der Kinder des Elternschrumpfumhüllungskastens geschrumpft, daher ist es nicht notwendig, die Kindern von dem Elternteil zu der Schrumpfumhüllungskastenunterhierarchie 46 hinzuzufügen. Demgemäß geht die Logik vom Entscheidungsblock 262 direkt zu einem Entscheidungsblock 280 in Fig. 12B weiter. In dem Entscheidungsblock 280 bestimmt die Logik, ob der letzte Schrumpfumhüllungskasten bei der Tiefe n - 1 der Unterhierarchie 46 verarbeitet worden ist. Wenn das Ergebnis negativ ist, geht die Logik zu einem Block 281 weiter, wo der nächste Schrumpfumhüllungskasten bei der Tiefe n - 1 erhalten und im Speicher als ein Elternschrumpfumhüllungskasten gespeichert wird. Die Logik kehrt dann zum Block 256 zurück, wo die Kinder des Elternschrumpfumhüllungskastens erhalten werden.
- Es sei zum Entscheidungsblock 260 zurückgekehrt, wonach, wenn eines der Kinder des Elternschrumpfumhüllungskastens geschrumpft ist, die Logik stattdessen zu einem Entscheidungsblock 266 weitergehen wird, wo sie bestimmt, ob das Kind bereits zu der Schrumpfumhüllungskastenunterhierarchie 46 hinzugefügt worden ist. Wenn nicht, ist es notwendig zu bestimmen, ob das Kind von irgendeinem oder seinen Geschwistern zu der Schrumpfumhüllungsunterhierarchie 46 für das Objekt hinzugefügt werden muss. Es wird nicht notwendig sein, das Kind oder dessen Geschwister hinzuzufügen, wenn der Elternteil die Oberfläche des von ihm enthaltenen Objekts genügend approximiert. Wenn das der Elternteil jedoch nicht tut, wird es notwendig sein, sowohl den Elternteil als auch dessen Kinder zu der Schrumpfumhüllungsunterhierarchie 46 für das Objekt hinzuzufügen.
- In dieser Hinsicht geht die Logik von dem Entscheidungsblock 266 zu einem Entscheidungsblock 268 weiter, wo sie bestimmt, ob der Elternschrumpfumhüllungskasten zweidimensional ist. Wenn das so ist, sind alle von den Kindern des Elternschrumpfumhüllungskastens notwendigerweise ebenso zweidimensionale Schrumpfumhüllungskästen. Weiter kann der gesamte Be reich des zweidimensionalen Elternkastens approximiert werden als die Summe der Bereiche bzw. Flächen von jedem zweidimensionalen Kind des Elternschrumpfumhüllungskastens. Der gesamte Bereich des Elternschrumpfumhüllungskastens wird demgemäß in einer solchen Art und Weise im Block 274 berechnet. In einem Entscheidungsblock 276 bestimmt die Logik, ob der approximierte Gesamtbereich, der im Block 274 berechnet worden ist, geteilt durch den aktuellen Bereich des Elternschrumpfumhüllungskastens, der unter Verwendung seiner Basis und seines Ausmaßes berechnet worden ist, weniger als ein vorbestimmtes Verhältnis ist. In der bevorzugten Ausführungsform der vorliegenden Erfindung wird ein vorbestimmtes Verhältnis von 0,8 oder 80% verwendet. Jedoch werden jene von üblicher Kenntnis auf dem Fachgebiet erkennen, das ein kleineres oder größeres vorbestimmtes Verhältnis in Abhängigkeit davon benutzt werden kann, wie eng eine Approximation der Oberfläche des Objekts gewünscht wird. Wenn das so ist, ist der Elternschrumpfumhüllungskasten eine genügende Approximation von der Oberfläche des Objekts, das in denselben fällt, und es ist nicht notwendig, die Kindern von dem Elternschrumpfumhüllungskasten zu der Unterhierarchie 46 hinzuzufügen. Demgemäß geht die Logik vom Entscheidungsblock 276 zum Entscheidungsblock 280 weiter, wo die Logik bestimmt, ob der letzte Schrumpfumhüllungskasten bei der Tiefe n - 1 verarbeitet worden ist. Wenn das Ergebnis des Entscheidungsblock 280 negativ ist, wird der nächste Schrumpfumhüllungskasten bei jener Tiefe n - 1 im Block 281 erhalten. Es muss bemerkt werden, dass es, obwohl der Elternschrumpfumhüllungskasten im Block 276 dahingehend bestimmt werden kann, dass er die Oberfläche des von ihm enthaltenen Objekts genügend approximiert, nicht notwendig ist, den Elternteil sofort zu der Schrumpfumhüllungsunterhierarchie 46 hinzuzufügen. Vielmehr wird der Elternteil zu der Schrumpfumhüllungsunterhierarchie 46 für das Objekt als das Kind von einem anderen Schrumpfumhüllungskasten hin zugefügt, der die Oberfläche des von ihm enthaltenen Objekts nicht genügend approximiert. Weiter wird erkannt werden, dass, wenn der Elternschrumpfumhüllungskasten ein Null-Volumen hat, d. h. der Elternschrumpfumhüllungskasten das Objekt nicht schneidet, weder der Elternschrumpfumhüllungskasten noch die Kinder von dem Elternschrumpfumhüllungskasten zu der Schrumpfumhüllungskastenunterhierarchie 46 hinzugefügt wird bzw. werden.
- Es sei zum Entscheidungsblock 276 zurückgekehrt, wonach, wenn das Ergebnis positiv ist, der Elternschrumpfumhüllungskasten von genügender Größe ist. Daher geht die Logik vom Block 276 zu einem Block 278 in Fig. 12B weiter. Im Block 278 werden der Elternschrumpfumhüllungskasten und alle von seinen Kindern, die einen Nicht-Null-Bereich bzw. eine Nicht-Null-Fläche oder ein Nicht-Null-Volumen haben, zu der Schrumpfumhüllungsunterhierarchie 46 für das Objekt hinzugefügt. Es wird erkannt werden, dass während der ersten Iteration des Blocks 178 eine Unterhierarchie 46 im Speicher erzeugt werden wird, wobei der Elternschrumpfumhüllungskasten als die Wurzel hinzugefügt wird und die Kinder der Elternschrumpfumhüllungshierarchie als Blätter hinzugefügt werden. Nach nachfolgenden Iterationen des Blocks 278 werden zusätzliche Schrumpfumhüllungskästen zu der Unterhierarchie 46 als Geschwister zu dem anfänglichen Elternteil oder vielleicht Großeltern oder Urgroßeltern hinzugefügt werden. Jedoch ist die Hinzufügung von Kindern zu einer Hierarchiestruktur jenen von üblicher Kenntnis auf dem Fachgebiet gut bekannt, und wird demgemäß hier nicht in irgendwelchen größeren Einzelheiten diskutiert werden.
- Sobald der Elternteil und seine Kinder, die einen Nicht-Null- Bereich bzw. eine Nicht-Null-Fläche oder ein Nicht-Null-Volumen haben, zu der Schrumpfumhüllungskastenunterhierarchie 46 für das Objekt im Block 278 hinzugefügt sind, geht die Logik zum Entscheidungsblock 280 weiter, wo sie bestimmt, ob der letzte Schrumpfumhüllungskasten bei der Tiefe n - 1 verarbeitet worden ist. Wie oben beschrieben, wird, wenn das Ergebnis des Entscheidungsblock 280 negativ ist, der nächste Schrumpfumhüllungskasten bei der Tiefe n - 1 erhalten und im Speicher als ein Elternteil im Block 281 gespeichert. Die Blöcke 256-281 würden dann für jeden Schrumpfumhüllungskasten bei der Tiefe n - 1 von der Unterhierarchie wiederholt. Mit anderen Worten, die Blöcke 256-258 werden für jeden Schrumpfumhüllungskasten wiederholt, der in der zugewiesenen Gruppierung im Speicher, entsprechend der Tiefe n - 1, gespeichert worden ist.
- Wenn das Ergebnis des Entscheidungsblocks 280 positiv ist, dann ist der letzte Schrumpfumhüllungskasten bei der Tiefe n - 1 verarbeitet worden, und es ist notwendig, sich um ein Niveau in der Schrumpfumhüllungskastenunterhierarchie 46 aufwärts zu bewegen. Demgemäß geht die Logik zu einem Block 282 weiter, wo sie bestimmt, ob das höchste Niveau in der Unterhierarchie 46 verarbeitet worden ist, d. h., ob n = 0. Wenn das Ergebnis negativ ist, wird der Wert für n in einem Block 284 dekrementiert, und die Logik kehrt zum Block 254 zurück. Die Blöcke 254-284 werden dann für jedes Niveau der Unterhierarchie 46 wiederholt, d. h., die Blöcke 254-284 werden für die Schrumpfumhüllungskästen wiederholt, die in jeder in dem Speicher zugewiesenen Gruppierung gespeichert sind. Die Schrumpfumhüllungskästen auf dem höchsten Niveau der Unterhierarchie 46, d. h. n = 0, sind verarbeitet worden, die Logik geht schließlich zu einem Block 286 weiter, und die für jene Schrumpfumhüllungskästen erzeugte Unterhierarchie wird zu der Begrenzungskastenhierarchie 38 hinzugefügt, deren Begrenzungskasten für das Objekt die Wurzel der Schrumpfumhüllungskastenunterhierarchie ist. Die Logik endet dann im Block 288.
- Es sei zur Fig. 9 zurückgekehrt, wonach, sobald die in den Blöcken 172 und 174 erzeugten Schrumpfumhüllungskästen zu ei ner Schrumpfumhüllungsunterhierarchie 46 für das Objekt hinzugefügt worden sind und die Schrumpfumhüllungsunterhierarchie 46 zu der Begrenzungskastenhierarchie 38 im Block 176 hinzugefügt worden ist, die Logik zu einem Entscheidungsblock 178 weitergeht, wo die Logik bestimmt, ob das letzte Objekt in der Begrenzungskastenhierarchie 38 verarbeitet worden ist. Wenn nicht, wird das nächste Objekt in der Begrenzungskastenhierarchie 38 in einem Block 180 erhalten, und die Blöcke 162-180 werden wiederholt, bis eine Unterhierarchie 46 für das letzte Objekt der Begrenzungskastenhierarchie 38 zu der Begrenzungskastenhierarchie hinzugefügt worden ist. Wenn das stattfindet, so wird erkannt werden, dass die gesamte Objekthierarchie vollendet worden ist, und die Logik geht vom Entscheidungsblock 178 zu einem Block 182 weiter, wo die Logik endet.
- Es sei zur Fig. 1 zurückgekehrt, wonach, sobald die Objekthierarchie, welche die Begrenzungskastenhierarchie 38 und jede der Schrumpfumhüllungsunterhierarchien 46 umfasst, im Block 24 erstellt und in der Datenbank 26 gespeichert worden ist, das Strahlwerfen beginnen kann. Wie in Fig. 1 gezeigt ist, wird der Strahlwerfprozess 28 parallel mittels fünf unterschiedlichen Strahlwerfprozessoren 128 durchgeführt. Der mittels jedes der Strahlwerfprozessoren 128 durchgeführte Strahlwerfprozess 28 ist in Fig. 13 veranschaulicht. Wie unten mehr im Detail beschrieben werden wird, lokalisiert der Strahlwerfprozess 28 jene Objekte in der Szene 52, die für einen Beobachter von einem speziellen Blickpunkt aus sichtbar sind. Jedoch bewerkstelligt der Strahlwerfprozess der vorliegenden Erfindung dieses nicht dadurch, dass er zunächst annimmt, dass alle Objekte innerhalb des Betrachtungsspektrums des Beobachters sichtbar sind und dann jene Objekte aus der Szene aussondert, die versperrt bzw. ausgeschlossen sind, wie das durch den Stand der Technik gelehrt wird. Vielmehr nimmt der Strahlwerfprozess der vorliegenden Erfindung zunächst an, dass keines der Objekte aus der Szene für den Beobachter sichtbar ist, und fügt dann jene Objekte zu der Szene hinzu, die dem gegenwärtigen Blickpunkt längs einem geworfenen Strahl am nächsten sind, weil die nächstliegenden Objekte notwendigerweise sichtbar sein müssen. Demgemäß kann der Strahlwerfprozess der vorliegenden Erfindung als ein "Nichtaussonderungs"-Prozess anstatt ein "Aussonderungs"-Prozess bezeichnet werden.
- Die Strahlwerflogik beginnt in Fig. 13 in einem Block 300 und geht zu einem Block 302 weiter, wo eine vorbestimmte Anzahl von zu werfenden Strahlen ausgewählt wird. In der bevorzugten Ausführungsform der vorliegenden Erfindung werden angenähert eintausend Strahlen geworfen. Jedoch werden jene von üblicher Kenntnis auf dem Fachgebiet erkennen, dass die Anzahl der Strahlen, die geworfen werden sollen, in Abhängigkeit von dem gewünschten Detailniveau in dem resultierenden Bild erhöht oder vermindert werden kann. In einem Block 304 wird eine neue Sichtkoordinate aus der Datenbank 32 von Sichtkoordinaten erhalten. Jede Sichtkoordinate repräsentiert eine spezielle Kopfposition und -ausrichtung für den Beobachter im Modellraum. In einem Block 306 wird ein erster zu werfender Strahl erhalten. Im Block 308 wird eine Variable, welche den kleinsten Abstand zwischen einem gegebenen Objekt und dem Ursprung von dem gegebenen Strahl repräsentiert, gleich unendlich initialisiert. Zusätzlich wird ein Null- bzw. Leerobjekt im Speicher gespeichert.
- Die Logik geht von dem Block 308 zu einem Block 310 weiter, wo der Strahl reorientiert wird, als ob er von dem Ursprung einer x,y,z-Koordinatenachse her projiziert wird. In einem Block 312 bestimmt die Logik, welches Objekt in der Objekthierarchie der gegebenen Sichtkoordinate entlang dem reorientierten Strahl am nächsten ist, d. h., welches Objekt entlang dem reorientierten Strahl für den Beobachter sichtbar ist.
- Dieses wird dadurch bewerkstelligt, dass jeder Strahl gegen die Wurzel 40 der Objekthierarchie geprüft wird. Wenn der Strahl die Wurzel 40 schneidet, dann ist es wahrscheinlich, dass der Strahl eines oder mehrere Kinder, Enkel etc. von der Wurzel schneidet. Infolgedessen wird der Strahl gegen die Kinder, Enkel etc. der Wurzel geprüft, bis das dem Ursprung des Strahls nächstilegende Objekt gefunden wird.
- Die Logik, die dazu benutzt wird, zu bestimmen, welches Objekt entlang diesem Strahl am nächsten ist, ist mehr im Detail in den Fig. 14A und 14B gezeigt. Die Logik in Fig. 14A beginnt in einem Block 322 und geht zu einem Entscheidungsblock 324 weiter. Im Entscheidungsblock 324 bestimmt die Logik, ob der reorientierte Strahl den gegenwärtigen Kasten schneidet. Wenn nicht, endet die Logik lediglich in einem Block 326. Jene von üblicher Kenntnis auf dem Fachgebiet werden erkennen, dass während des ersten Durchgangs der vorliegenden Routine der gegenwärtige Kasten aktuell die Wurzel 40 der Objekthierarchie ist. Wenn der Strahl den gegenwärtigen Kasten nicht schneidet, schneidet daher der Strahl aktuell keinerlei Objekt, das in der Szene 52 enthalten ist, und die Logik endet im Block 326. Wenn andererseits der Strahl den gegenwärtigen Kasten schneidet, kann der Strahl wenigstens ein Objekt in der Szene 52 schneiden. Daher muss der Rest der Objekthierarchie durchsucht bzw. geprüft werden, um das nächstliegende Objekt zu lokalisieren, wenn es existiert.
- In dieser Hinsicht geht die Logik vom Entscheidungsblock 324 zu einem Block 328 weiter, wo die Entfernung von dem Ursprung des Strahls zu dem gegenwärtigen Kasten berechnet wird. Es wird erkannt werden, dass der Abstand von dem Ursprung zu dem Kind von dem gegenwärtigen Kasten lediglich der Abstand zwischen dem Ursprung des Strahls und dem Punkt auf dem Objekt (oder einem Teil hiervon) ist, das durch den gegenwärtigen Kasten, den der Strahl schneidet, begrenzt wird. In einem Entscheidungsblock 330 bestimmt die Logik, ob der Abstand von dem Ursprung des Strahls zu dem gegenwärtigen Kasten, d. h. Blatt, geringer als der vorher gespeicherte kleinste Abstand ist. Es wird erkannt werden, dass der kleinste Abstand gleich unendlich sein kann (wenn der gegenwärtige Kasten das erste Blatt von der zu verarbeitenden Objekthierarchie ist), oder er kann gleich dem Abstand von dem Ursprung zu einem anderen Blatt in der Objekthierarchie sein. Wenn der Abstand von dem Ursprung zu dem gegenwärtigen Kasten geringer als der kleinste Abstand ist, geht die Logik zu einem Entscheidungsblock 334 weiter, in dem die Logik bestimmt, ob der gegenwärtige Kasten irgendwelche Kinder hat. Wenn das so ist, geht die Logik zu einer Reihe von Blöcken 340-356 weiter, die schließlich die Objekthierarchie nach Blättern, d. h. Schrumpfumhüllungskästen, durchsuchen bzw. prüfen, welche durch den geworfenen Strahl geschnitten werden, und den Abstand zwischen dem Ursprung des geworfenen Strahls und jenen Blättern berechnen. Es wird erkannt werden, dass jedes Mal, wenn ein solches Blatt erreicht wird, das Ergebnis des Entscheidungsblocks 334 positiv sein wird, d. h. der gegenwärtige Kasten wird keinerlei Kinder haben. Folglich wird die Logik zu einem Block 336 weitergehen, wo die kleinste Entfernungsvariable gleich der Entfernung von dem Ursprung des Strahls zu dem gegenwärtigen Kasten gesetzt wird, und das mit dem gegenwärtigen Kasten verbundene Objekt (d. h. das Objekt, welches in jenem Kasten enthalten ist oder welches jenen Kasten schneidet) wird temporär in dem Speicher als das dem Ursprung des geworfenen Strahls nächstliegende. Objekt gespeichert. Die Logik endet dann im Block 338. Es sei zum Entscheidungsblock 330 zurückgekehrt, wonach, wenn der Abstand zu dem gegenwärtigen Kasten nicht geringer als der kleinste Abstand ist, das mit dem gegenwärtigen Kasten verbundene Objekt nicht näher an dem Ursprung des geworfenen Strahls als das vorher gespeicherte Objekt ist. Daher wird das mit dem gegenwärtigen Kasten verbun dene Objekt nicht im Speicher gespeichert, und die Logik endet lediglich in einem Block 332. Es wird aus dem Vorstehenden erkannt werden, dass zu dem Zeitpunkt, an dem jedes geschnittene Blatt der Unterhierarchie 46 untersucht wird, das Blatt, welches den kleinsten Abstand zum Ursprung hat, lokalisiert und sein zugehöriges Objekt im Speicher als das dem Ursprung des geworfenen Strahls nächstliegende Objekt gespeichert wird bzw. worden sein wird.
- Es sei zum Entscheidungsblock 334 zurückgekehrt, wonach es, wenn der gegenwärtige Kasten Kinder hat, notwendig ist, fortzufahren, die Nachkommen des gegenwärtigen Kastens zu untersuchen. In dieser Hinsicht geht die Logik weiter zum Block 340, wo sie eine Routine aufruft, die den Abstand von dem Ursprung des geworfenen Strahls zu jedem der Kinder des gegenwärtigen Kastens bestimmt. Die Logik zum Bestimmen des Abstands zwischen dem Ursprung des Strahls und dem der Kinder des gegenwärtigen Kastens ist deutlicher in Fig. 15 veranschaulicht. Die Logik beginnt in einem Block 362 und geht zu einem Block 364 weiter, wo das erste Kind des gegenwärtigen Kastens erhalten wird. In einem Entscheidungsblock 366 bestimmt die Logik, ob der Strahl das Kind des gegenwärtigen Kastens schneidet. Wenn das so ist, wird der Abstand von dem Ursprung des Strahls zu dem Kind des gegenwärtigen Kastens in einem Block 368 berechnet. Die Logik geht dann zu einem Block 370 weiter, wo sie bestimmt, ob das letzte Kind des gegenwärtigen Kastens verarbeitet worden ist. Wenn das Ergebnis des Entscheidungsblocks 366 negativ ist, schneidet der Strahl nicht das Kind des gegenwärtigen Kastens. Daher überspringt die Logik den Block 368 und geht direkt zum Block 370 weiter.
- Wenn das letzte Kind des gegenwärtigen Kasten nicht verarbeitet worden ist, geht die Logik zu einem Block 372 weiter, und die Blöcke 366-372 werden wiederholt, bis das letzte Kind des gegenwärtigen Kastens verarbeitet und eine Entfernung zwi schen jedem Kind und dem Ursprung des Strahls bestimmt worden ist. Wenn dieses stattfindet, geht die Logik vom Entscheidungsblock 370 weiter und endet in einem Block 374. Es wird von jenen mit üblicher Kenntnis auf dem Fachgebiet erkannt werden, dass es das Ergebnis dieser Routine ist, einen Abstand von dem Ursprung des Strahls zu jedem durch jenen Strahl geschnittenen Kind zu berechnen.
- Es sei zur Fig. 14B zurückgekehrt, wonach die Logik, nachdem der Abstand zwischen dem Ursprung des Strahls und jedem Kind des gegenwärtigen Kastens im Block 340 berechnet worden ist, zu einem Block 342 weitergeht, wo die Kinder des gegenwärtigen Kastens, die durch den geworfenen Strahl geschnitten werden, nach der Entfernung von dem Ursprung des Strahls in einer Liste von der kleinsten Entfernung zur größten Entfernung sortiert werden. In einem Block 344 wird das dem Ursprung nächstilegende Kind, d. h. das Kind des gegenwärtigen Kastens, welches den kleinsten Abstand zu dem Ursprung des Strahls hat, erhalten. In einem Entscheidungsblock 346 bestimmt die Logik, ob die Entfernung zu dem nächstilegenden Kind geringer als die kleinste Entfernung oder gleich der kleinsten Entfernung zu einem Blatt der Unterhierarchie 46 ist, das bzw. die vorher gespeichert worden ist. Wenn das Ergebnis des Entscheidungsblocks 346 negativ ist, dann gibt es keine anderen Nachkommen des nächstliegenden Kinds, die irgendwie näher an dem Ursprung des Strahls sind, als das vorher lokalisierte nächstliegende Blatt. Folglich endet die Logik im Block 248.
- Wenn andererseits der Abstand zu dem nächstilegenden Kind geringer als der kleinste vorher gespeicherte Abstand oder gleich dem vorher gespeicherten kleinsten Abstand ist, kann das nächstliegende Kind durch den geworfenen Strahl geschnittene Nachkommen haben, die näher an dem Ursprung sind, als das vorher lokalisierte nächstliegende Blatt, oder das nächstliegende Kind kann selbst das nächstilegende Blatt sein, das noch in der Unterhierarchie 46 lokalisiert ist. Demgemäß wird ein rekursiver Aufruf an die vorliegende Routine im Block 350 gemacht, wobei das nächstliegende Kind als der gegenwärtige Kasten wirkt. Wie oben erörtert ist, wird, wenn das nächstliegende Kind ein durch den geworfenen Strahl geschnittener Blatt-Schrumpf-umhüllungskasten mit einer Entfernung von dem Ursprung des geworfenen Strahls ist, die kleiner ist als die Entfernung von irgendwelchen vorherigen solchen Blättern, die kleinste Entfernungsvariable gleich dem Abstand zu dem nächstilegenden Kind gesetzt, und das mit dem nächstilegenden Kind verbundene Objekt wird im Block 336 im Speicher gespeichert. Wenn andererseits das nächstliegende Kind Kinder hat, wird schließlich ein anderer rekursiver Aufruf an die vorliegende Routine im Block 350 unter Benutzung der nächstliegenden Kinder von dem nächstliegenden Kind gemacht.
- Es wird erkannt werden, dass, wenn der im Block 350 der Fig. 14B ausgeführte rekursive Aufruf vollendet ist und die Logik in irgendeiner der oben erörterten Weisen ausgeführt worden ist, alle von den Nachkommen des nächstliegenden Kinds untersucht worden sind und das nächstliegende Objekt, das mit irgendeinem der Schrumpfumhüllungskästen verbunden ist, die Nachkommen des nächstliegenden Kinds sind, im Speicher gespeichert worden ist. Demgemäß wird die Logik vom Block 350 zu einem Entscheidungsblock 352 weitergehen, wo sie bestimmt, ob das letzte Kind in der sortierten Liste verarbeitet worden ist. Wenn nicht, geht die Logik zu einem Block 354 weiter, und das nächste nächstliegende Kind der sortierten Liste wird erhalten. Infolgedessen werden die Blöcke 346-354 für das nächste nächstliegende Kind in der sortierten Liste wiederholt, derart, dass das nächstliegende Objekt, welches mit irgendeiner der Schrumpfumhüllungskästen verbunden ist, die Nachkommen des nächstliegenden Kindes oder des nächsten nächstliegenden Kindes sind, in dem Speicher gespeichert worden ist. Schließlich werden die Blöcke 346-354 für jedes Kind in der sortierten Liste wiederholt, derart, dass das nächstliegende Objekt, das mit irgendeinem der Schrumpfumhüllungskästen von der Objekthierarchie verbunden ist, d. h., das durch den Strahl geschnittene Objekt, das der gegebenen Sichtkoordinate am nächsten ist, in dem Speicher gespeichert wird. Es wird jedoch erkannt werden, dass es möglich ist, dass der geworfene Strahl nicht irgendwelche Objekte in der Szene 52 schneidet. Wenn das so ist, wird das Null- bzw. Leerobjekt im Speicher gespeichert.
- Wenn die in den Fig. 14A und 14B veranschaulichte Routine schließlich vollendet ist, geht die Strahlwerflogik in Fig. 13 von dem Block 312 zu einem Block 314 weiter, wo das nächstliegende Objekt (wenn irgendeines vorhanden ist) zu dem Satz von sichtbaren Objekten hinzugefügt wird, die im gemeinsam genutzten Speicher in der Datenbank 30 gespeichert sind. Außerdem wird ein Renderzähler für das Objekt zu Null initialisiert. Wie unten beschrieben werden wird, hält sich der Renderzähler auf dem Laufenden darüber, wie viele Male ein Objekt in dem sichtbaren Objektsatz durch den Objektrenderprozess 34 übergangen wird. In einem Entscheidungsblock 316 bestimmt die Logik, ob der letzte Strahl verarbeitet worden ist. Wenn nicht, wird der nächste zu werfende Strahl im Block 318 erhalten. Die Blöcke 308-318 werden dann für jeden zu werfenden Strahl wiederholt. Demgemäß wird für jeden Strahl, der von der gegebenen Sichtkoordinate aus geworfen wird, das nächstliegende Objekt zu der gegebenen Sichtkoordinate, das durch den Strahl geschnitten wird, zu dem Satz von sichtbaren Objekten hinzugefügt, die in der Datenbank 30 gespeichert sind, welche im gemeinsam genutzten Speicher lokalisiert ist.
- Zurückkehrend zu Fig. 1 wird erkannt werden, dass die in Fig. 13 veranschaulichte Logik parallel durch jeden der Strahlwerfprozessoren 128 ausgeführt wird. Obwohl in der bevorzugten Ausführungsform der vorliegenden Erfindung jeder der Strahlwerfprozessoren 128 gleichzeitig Strahlen von der gleichen Sichtkoordinate aus wirft, werden die Strahlen in einen unterschiedlichen Bereich des Modellsraums geworfen. Wenn z. B. in Betracht gezogen wird, dass der Modellraum der Displayschirm ist, kann der Displayschirm in fünf separate Bereiche unterteilt werden, wobei jeder Strahlwerfprozessor 128 Strahlen in einen der Bereiche wirft. Demgemäß fügt, wenn jeder Strahlwerfprozessor 128 die veranschaulichte Logik ausführt, jeder Strahlwerfprozessor 128 ein wenig unterschiedliche Objekte zu dem Satz von sichtbaren Objekten hinzu, die in der Datenbank 30 gespeichert sind. Infolgedessen wird ein umfassender Satz von sichtbaren Objekten schnell erstellt. In der bevorzugten Ausführungsform der vorliegenden Erfindung wird ein Objekt zu dem sichtbaren Objektsatz durch die Gruppe von Strahlwerfprozessoren 128 angenähert einmal jede Sekunde hinzugefügt. Wenn sichtbare Objekte durch die fünf Strahlwerfprozessoren 128 hinzugefügt werden, lesen die zwei Objektrenderprozessoren 134 sichtbare Objekte aus den gemeinsam genutzten Datenbanken 30 aus und rendern alle von den sichtbaren Objekten, welche die Szene 52 auf dem Display 36 umfasst, alle 0,05 s. Den Objektrenderprozessoren wird es erlaubt, sichtbare Objekte mit einer schnelleren Rate zu zeichnen, als sie zu dem sichtbaren Objektsatz hinzugefügt werden, weil die Strahlwerfprozesse 28 von den Objektrenderprozessen 34 entkoppelt worden sind und es ihnen erlaubt wird, asynchron auf Prozessoren zu laufen, die separat von jenen sind, auf denen der Objektrenderprozess 34 läuft.
- Die durch jeden Objektrenderprozessor 134 zum Rendern von Objekten aus dem in der Datenbank 30 gespeicherten sichtbaren Objektsatz auf einem Display 36 implementierte Logik ist mehr im Detail in Fig. 16 gezeigt. Die Logik beginnt in einem Block 376 und geht zu einem Block 378 weiter, wo eine neue Sichtkoordinate erhalten wird. Es ist zu erkennen, dass die neue Sichtkoordinate, die von der Datenbank 30 erhalten wird, anders sein kann als die eben erst durch die Strahlwerfprozesse 28 benutzte Sichtkoordinate zum Bestimmen, welche Objekte für den Beobachter sichtbar waren. Jedoch wird in der vorliegenden Erfindung die Annahme gemacht, dass der Beobachter bzw. die Beobachterin seinen/ihren gegenwärtigen Blickpunkt im Allgemeinen langsam ändert. Daher wird, selbst wenn die im Block 378 erhaltene Sichtkoordinate anders als jene ist, die von den Strahlwerfprozessen 28 gemeinsam genutzt wird, der Satz von sichtbaren Objekten im Wesentlichen der gleiche sein.
- In einem Block 380 wird das erste Objekt aus dem sichtbaren Objektsatz aus der Datenbank 30 erhalten. Wie oben bemerkt, befindet sich die Datenbank 30, die den Satz von sichtbaren Objekten enthält, in dem Speicher, der sowohl von den Strahlwerfprozessoren 128 als auch von den Objektrenderprozessoren 134 gemeinsam genutzt wird. Infolgedessen lesen die Objektrenderprozessoren 134 Objekte aus dem im gemeinsam genutzten Speicher gespeicherten sichtbaren Objektsatz aus, während die Strahlwerfprozessoren 128 Objekte zu dem sichtbaren Objektsatz hinzufügen. Jedoch ist es nicht notwendig, dass Objekte zu dem sichtbaren Objektsatz mit der gleichen Rate hinzugefügt werden, mit der sie aus dem sichtbaren Objektsatz ausgelesen werden. Vielmehr ist es nur notwendig, dass Objekte zu dem sichtbaren Objektsatz kontinuierlich hinzugefügt werden.
- Nachdem das Objekt aus dem sichtbaren Objektsatz erhalten worden ist, bestimmt die Logik in einem Entscheidungsblock 382, ob das Objekt von der gegebenen Sichtkoordinate aus noch sichtbar ist. Es ist aus der obigen Diskussion erkennbar, dass sich der gegenwärtige Blickpunkt des Beobachters derart geändert haben kann, dass das gegebene Objekt außerhalb des Sicht Spektrums des Beobachters ist. Wenn das so ist, geht die Logik vom Entscheidungsblock 382 zu einem Block 388 weiter, wo der Renderzähler, d. h. der Renderzähler, welcher sich darüber auf dem Laufenden hält, wie viele Male das Objekt übergangen und nicht auf dem Display 36 gezeichnet wird, inkrementiert wird. Die Logik geht dann zu einem Entscheidungsblock 390 weiter, wo sie bestimmt, ob der Renderzähler für das Objekt größer als ein vorbestimmter Wert ist. In der bevorzugten Ausführungsform der vorliegenden Erfindung wird, wenn das Objekt mehr als vier Mal übergangen worden ist, das Objekt aus dem sichtbaren Objektsatz im Block 392 ausrangiert. Wenn jedoch der Renderzähler nicht größer als vier ist, wird das Objekt in dem Satz von sichtbaren Objekten gehalten. Demgemäß übergeht die Logik den Block 392 und geht zu einem Entscheidungsblock 394 weiter, wo sie bestimmt, ob das letzte Objekt in dem sichtbaren Objektsatz auf dem Display 36 gerendert worden ist.
- Zurückkehrend zum Entscheidungsblock 382 ist zu sagen, dass, wenn das Objekt von der neuen Sichtkoordinate aus noch für den Beobachter sichtbar ist, die Logik zu einem Block 384 weitergeht, wo das Objekt auf dem Display 36 gezeichnet wird. Die Logik geht dann zu einem Block 386 weiter, wo der Renderzähler für das Objekt auf seinen ursprünglichen Wert zurückgesetzt wird. Es ist für jene von üblicher Kenntnis auf dem Fachgebiet erkennbar, dass das Objekt auf dem Display 36 unter Verwendung von Graphikroutinen gerendert oder gezeichnet wird, die auf dem Fachgebiet der Computergraphik gut bekannt sind, wie z. B. GL oder OpenGL von Silicon Graphics.
- Nachdem der Renderzähler im Block 386 zurückgesetzt worden ist, geht die Logik dann zum Entscheidungsblock 394 weiter, wo sie bestimmt, ob das letzte Objekt in dem sichtbaren Objektsatz auf dem Display 36 gerendert worden ist. Wenn nicht, geht die Logik zu einem Block 396 weiter, und das nächste Objekt aus dem sichtbaren Objektsatz, welcher der gegebenen Sichtkoordinate zugeordnet ist, wird aus der Datenbank 30 erhalten. Die Blöcke 382-396 werden dann für jedes Objekt in dem sichtbaren Objektsatz, der der gegebenen Sichtkoordinate zugeordnet ist, wiederholt. Mit anderen Worten, jedes für den Beobachter von der gegebenen Sichtkoordinate aus sichtbare Objekt wird auf dem Display 36 gerendert. Da der in Fig. 16 veranschaulichte Objektrenderprozess 34 durch zwei Objektrenderprozessoren 134 parallel ablaufen gelassen wird, ist erkennbar, dass das gleiche Objekt gleichzeitig auf jedem der Displays 36 dargestellt wird. Der einzige Unterschied besteht darin, dass das Objekt auf dem einen Display 36 von der gegenwärtigen Position des Kopfs und des rechten Auges des Beobachters aus gerendert wird, während das Objekt auf dem anderen Display 36 von der gegenwärtigen Position des Kopfs und des linken Auges des Beobachters her gerendert wird. Demgemäß wird ein ausgeglichenes, dreidimensionales Stereosichtbild an den Beobachter abgegeben.
- Wenn das letzte Objekt in dem sichtbaren Objektsatz gerendert worden ist, verlässt die Logik den Entscheidungsblock 394 und kehrt zum Block 378 zurück. Die Blöcke 378-396 werden dann für jede aufeinanderfolgende Sichtkoordinate wiederholt, welche aus der Sichtkoordinatendatenbank 32 erhalten wird. In der bevorzugten Ausführungsform der vorliegenden Erfindung ist erkennbar, dass der oben beschriebene Objektrenderprozess 34 alle von den Objekten in der Szene 52 alle 0,05 s zeichnet. Jedoch werden jene mit üblicher Kenntnis auf dem Fachgebiet erkennen, dass die Geschwindigkeit, mit welcher die Objekte gezeichnet werden, von der Anzahl der Objekte in der Szene, der Kompliziertheit der Objekte und der Geschwindigkeit der Prozesse abhängt. Obwohl dieses signifikant schneller ist als die Rate, mit welcher die Strahlwerfprozesse 28 Objekte zu dem sichtbaren Objektsatz hinzufügen, ist die Differenz in den Raten belanglos, solange die Objektrenderprozesse 34 und die Strahlwerfprozesse 28 diskrete Prozesse bleiben und solange Objekte kontinuierlich bzw. fortlaufend zu dem Satz von sichtbaren Objekten hinzugefügt werden.
- Obwohl die bevorzugte Ausführungsform der Erfindung veranschaulicht und beschrieben worden ist, ist es erkennbar, dass verschiedene Änderungen darin ausgeführt werden können, ohne den Bereich der Erfindung zu verlassen, wie er durch die beigefügten Ansprüche definiert ist.
Claims (25)
1. Verfahren zur Bildaufbereitung bzw. zum Rendern eines
graphischen Bilds von einer komplizierten Struktur, die durch
eine Mehrzahl von Objekten repräsentiert wird, auf einem
Display, wobei das Verfahren folgendes umfasst:
(a) Projizieren einer Mehrzahl von Strahlen von einer
gegebenen Blick- bzw. Sichtkoordinate aus, und für jeden
projizierten Strahl,
(i) Bestimmen, welche Objekte durch den Strahl
geschnitten werden;
(ii) Bestimmen, welches Objekt unter den von dem
Strahl geschnittenen Objekten der gegebenen Blick- bzw.
Sichtkoordinate am nächsten ist bzw. das der gegebenen Blick-
bzw. Sichtkoordinate nächstliegende Objekt ist; und
(iii) Hinzufügen des nächstliegenden Objekts zu
einem Satz von sichtbaren Objekten; und
wenn Objekte zu dem Satz von sichtbaren Objekten
hinzugefügt werden. Bildaufbereiten bzw. Rendern jedes Objekts
in dem Satz von sichtbaren Objekten auf dem Display gemäß
einer gegenwärtigen Blick- bzw. Sichtkoordinate.
2. Verfahren nach Anspruch 1, worin das Bestimmen, welches
Objekt unter den durch den Strahl geschnittenen Objekten das
nächste bzw. nächstliegend Objekt zu der gegebenen Blick-
bzw. Sichtkoordinate ist, folgendes umfasst:
(a) Bestimmen einer Entfernung zwischen jedem durch den
Strahl geschnittenen Objekt und der gegebenen Blick- bzw.
Sichtkoordinate; und
Bestimmen, welches durch den Strahl geschnittene
Objekt die kleinste Entfernung zu der gegebenen Blick- bzw.
Sichtkoordinate hat.
3. Verfahren nach Anspruch 2, weiter umfassend das
Organisieren der Mehrzahl von Objekten zu einer Objekthierarchie,
aus einem Wurzelvolumen, das die komplizierte Struktur
begrenzt, zu einer Mehrzahl von Untervolumina, worin jedes
Untervolumen jedes aus der Mehrzahl der Objekte begrenzt, zu
einer Mehrzahl von geschrumpften Untervolumina, worin jedes
geschrumpfte Untervolumen einen Teil von jedem Objekt
begrenzt.
4. Verfahren nach Anspruch 3, worin das Bestimmen der
Entfernung zwischen jedem durch den Strahl geschnittenen Objekt
und der gegebenen Blick- bzw. Sichtkoordinate folgendes
umfasst:
(a) Durchsuchen bzw. Prüfen der Objekthierarchie, um zu
bestimmen, mit welchen geschrumpften Untervolumina sich der
Strahl schneidet; und
(b) für jedes geschrumpfte Untervolumen, mit welchem
sich der Strahl schneidet,
(i) Bestimmen einer Entfernung zwischen dem
geschrumpften Untervolumen und der gegebenen Blick- bzw.
Sichtkoordinate; und
(ii) Bestimmen, welches geschrumpfte Untervolumen
die kleinste Entfernung zu der gegebenen Blick- bzw.
Sichtkoordinate hat.
5. Verfahren nach Anspruch 1, worin die Bildaufbereitung
bzw. das Rendern von jedem Objekt in dem Satz von sichtbaren
Objekten folgendes umfasst:
für jedes Objekt in dem Satz von sichtbaren Objekten,
(a) Lesen des Objekts aus dem Satz von sichtbaren
Objekten, wenn Objekte zu dem Satz von sichtbaren Objekten
hinzugefügt werden; und
(b) wenn das Objekt von der gegenwärtigen Blick- bzw.
Sichtkoordinate aus sichtbar ist, Zeichnen des Objekts auf
dem Display.
6. Verfahren nach Anspruch 5, worin, wenn das Objekt nicht
länger von der gegenwärtigen Blick- bzw. Sichtkoordinate her
sichtbar ist, das Objekt aus dem Satz von sichtbaren Objekten
verworfen bzw. ausrangiert wird.
7. Verfahren nach Anspruch 1, worin (a) und (b) für
aufeinanderfolgende Blick- bzw. Sichtkoordinaten wiederholt werden.
8. Verfahren nach Anspruch 1, worin ein computerlesbares
Medium kodiert wird, um (a) und (b) auszuführen.
9. Verfahren nach Anspruch 1, worin (a) parallel durch eine
Mehrzahl von Strahlwerfprozessoren ausgeführt wird, während
(b) parallel durch eine Mehrzahl von separaten
Objektbildaufbereitungs- bzw. -renderprozessoren ausgeführt wird, derart,
dass Objekte gleichzeitig zu dem Satz von sichtbaren Objekten
durch jeden aus der Mehrzahl der Strahlwerfprozessoren
hinzugefügt werden, während Objekte asynchron auf einem Satz von
Displays durch jeden der Objektbildaufbereitungs- bzw. -
renderprozessoren bildaufbereitet bzw. gerendert werden.
10. Bildaufbereitungs- bzw. -rendersystem zum
Bildaufbereiten bzw. Rendern eines graphischen Bilds von einer
komplizierten Struktur auf einem Display, worin die komplizierte
Struktur durch eine Mehrzahl von Objekten repräsentiert wird,
wobei das Bildaufbereitungs- bzw. -rendersystem folgendes
umfasst:
(a) ein Speichermedium, das so angeordnet bzw.
eingerichtet ist, dass es die Mehrzahl von Objekten, die zu einer
Objekthierarchie organisiert sind, und einen Satz von
sichtbaren Objekten speichert;
(b) wenigstens eine an das Speichermedium angekoppelte
Bearbeitungseinheit zum Hinzufügen jener Objekte in die
Objekthierarchie, die von einem gegebenen Blick- bzw.
Sichtpunkt aus sichtbar sind, zu dem Satz von sichtbaren Objekten,
die in dem Speichermedium gespeichert sind, angeordnet bzw.
eingerichtet ist; und
(c) wenigstens eine an das Speichermedium angekoppelte
Be- bzw. Verarbeitungseinheit, welche zur Bildaufbereitung
bzw. zum Rendern jedes sichtbaren Objekts in dem Satz von
sichtbaren Objekten auf dem Display gemäß einem gegenwärtigen
Blick- bzw. Sichtpunkt angeordnet bzw. eingerichtet ist,
während die andere wenigstens eine Be- bzw. Verarbeitungseinheit
sichtbare Objekt zu dem Satz von sichtbaren Objekten
hinzufügt.
11. Bildaufbereitungs- bzw. -rendersystem nach Anspruch 10,
worin die wenigstens eine Be- bzw. Verarbeitungseinheit zum
Hinfügen von sichtbaren Objekten zu dem Satz von sichtbaren
Objekten sichtbare Objekte zu dem Satz von sichtbaren
Objekten hinzufügt durch:
(a) Projizieren einer Mehrzahl von Strahlen von dem
gegebenen Blick- bzw. Sichtpunkt aus; und
(b) für jeden projizierten Strahl,
(i) Bestimmen, mit welchen Objekten in der
Objekthierarchie sich der Strahl schneidet;
(ii) Bestimmen, welches Objekt unter den Objekten,
mit denen sich der Strahl schneidet, dem gegebenen Blick-
bzw. Sichtpunkt am nächsten bzw. nächstliegenden ist; und
(iii) Hinzufügen des nächsten bzw. nächstliegenden
Objekts zu einem Satz von sichtbaren Objekten.
12. Bildrendersystem nach Anspruch 11, worin die wenigstens
eine Be- bzw. Verarbeitungseinheit bestimmt, welches Objekt
unter den Objekten, mit denen sich der Strahl schneidet, das
nächstliegende Objekt zu der gegebenen Blick- bzw.
Sichtkoordinate ist, durch:
(a) Bestimmen einer Entfernung zwischen jedem durch den
Strahl geschnittenen Objekt und dem gegebenen Blick- bzw.
Sichtpunkt; und
(b) Bestimmen, welches Objekt, das durch den Strahl
geschnitten worden ist, die kleinste Entfernung zu dem
gegebenen Blick- bzw. Sichtpunkt hat.
13. Bildaufbereitungs- bzw. -rendersystem nach Anspruch 12,
worin die wenigstens eine Be- bzw. Verarbeitungseinheit zum
Bildaufbereiten bzw. Rendern jedes sichtbaren Objekts in dem
Satz von sichtbaren Objekten jedes sichtbare Objekt
bildaufbereitet bzw. rendert durch:
(a) Lesen des Objekts aus dem Satz von sichtbaren
Objekten, wenn Objekte zu dem Satz von sichtbaren Objekten
durch die andere wenigstens eine Be- bzw.
Verarbeitungseinheit hinzugefügt werden; und
(b) wenn das Objekt von dem gegenwärtigen Blick- bzw.
Sichtpunkt aus sichtbar ist. Zeichnen des Objekts auf dem
Display.
14. Bildaufbereitungs- bzw. -rendersystem nach Anspruch 10,
worin eine Mehrzahl von Be- bzw. Verarbeitungseinheiten an
das Speichermedium zum Hinzufügen jener Objekte in der
Objekthierarchie, die von einem gegebenen Blick- bzw.
Sichtpunkt aus sichtbar sind, zu dem Satz von sichtbaren Objekten,
die in dem Speichermedium gespeichert sind, angekoppelt ist.
15. Bildaufbereitungs- bzw. -rendersystem nach Anspruch 14,
worin eine Mehrzahl von Be- bzw. Verarbeitungseinheiten an
das Speichermedium zur Bildaufbereitung bzw. zum Rendern
jedes sichtbaren Objekts in dem Satz von sichtbaren Objekten
gemäß einem gegenwärtigen Blick- bzw. Sichtpunkt angekoppelt
ist, während die anderen Be- bzw. Verarbeitungseinheiten
sichtbare Objekte zu dem Satz von sichtbaren Objekten
hinzufügen.
16. Bildaufbereitungs- bzw. -rendersystem nach Anspruch 15,
worin jede aus der Mehrzahl von Be- bzw.
Verarbeitungseinheiten zur Bildaufbereitung bzw. zum Rendern von jedem
sichtbaren Objekt in dem Satz von sichtbaren Objekten jedes
sichtbare Objekt auf einem separaten Display bildaufbereitet bzw.
rendert.
17. Verfahren zum Erzeugen eines graphischen Bilds von einer
komplizierten Struktur auf einem Satz von Displays, worin die
komplizierte Struktur durch eine Mehrzahl von Objekten
repräsentiert wird, wobei das Verfahren folgendes umfasst:
(a) Implementieren einer Strahlwerfroutine, die (i)
eine Mehrzahl von Strahlen von einer gegebenen Blick- bzw.
Sichtkoordinate aus wirft; und (ii) für jeden geworfenen
Strahl das durch den geworfenen Strahl geschnittene Objekt,
welches der gegebenen Blick- bzw. Sichtkoordinate am nächsten
ist, zu einem Satz von sichtbaren Objekten hinzufügt; und
(b) Implementieren einer Objektbildaufbereitungs- bzw.
-renderroutine, die jedes Objekt in dem Satz von sichtbaren
Objekten auf einem Display gemäß einer gegenwärtigen Blick-
bzw. Sichtkoordinate bildaufbereitet bzw. rendert, wenn
Objekte zu dem Satz von sichtbaren Objekten hinzugefügt werden.
18. Verfahren nach Anspruch 17, worin eine Mehrzahl von
Strahlwerfroutinen parallel implementiert werden, derart,
dass jede Strahlwerfroutine Objekte zu dem Satz von
sichtbaren Objekten hinzufügt.
19. Verfahren nach Anspruch 18, worin eine Mehrzahl von
Objektbildaufbereitungs- bzw. -renderroutinen parallel
implementiert werden, derart, dass jede Objektbildaufbereitungs-
bzw. -renderroutine jedes Objekt in dem Satz von sichtbaren
Objekten auf einem Display gemäß der gegenwärtigen Blick-
bzw. Sichtkoordinate bildaufbereitet bzw. rendert, während
jede Strahlwerfroutine Objekte zu dem Satz von sichtbaren
Objekten hinzufügt.
20. Verfahren nach Anspruch 19, worin jede Strahlwerfroutine
Objekte zu dem Satz von sichtbaren Objekten hinzufügt durch:
für jeden Strahl, der mittels der Strahlwerfroutine
geworfen wird,
(a) Bestimmen, welche Objekte durch den geworfenen
Strahl geschnitten werden;
(b) Bestimmen, welches Objekt unter den von dem
geworfenen Strahl geschnittenen Objekten dem gegebenen Blick- bzw.
Sichtpunkt am nächsten bzw. nächstliegenden ist; und
(c) Hinzufügen des nächsten bzw. nächstliegenden
Objekts zu dem Satz von sichtbaren Objekten.
21. Verfahren nach Anspruch 20, worin jede Strahlwerfroutine
bestimmt, welches Objekt unter den Objekten, mit denen sich
der Strahl schneidet, das nächste bzw. nächstliegende Objekt
zu der gegebenen Blick- bzw. Sichtkoordinate ist, durch:
(a) Bestimmen einer Entfernung zwischen jedem durch den
geworfenen Strahl geschnittenen Objekt und der gegebenen
Blick- bzw. Sichtkoordinate; und
(b) Bestimmen, welches durch den geworfenen Strahl
geschnittene Objekt die kleinste Entfernung zu der gegebenen
Blick- bzw. Sichtkoordinate hat.
22. Verfahren nach Anspruch 21, worin jede
Objektbildaufbereitungs- bzw. -renderroutine jedes sichtbare Objekt in dem
Satz von sichtbaren Objekten bildaufbereitet bzw. rendert
durch:
(a) Lesen des Objekts aus dem Satz von sichtbaren
Objekten, wenn Objekte zu dem Satz von sichtbaren Objekten
durch jede der Strahlwerfroutinen hinzugefügt werden; und
(b) wenn das Objekt von dem gegenwärtigen Blick- bzw.
Sichtpunkt her sichtbar ist. Zeichnen des Objekts auf dem
Display.
23. Verfahren nach Anspruch 22, worin jede
Objektbildaufbereitungs- bzw. bzw. -renderroutine das Objekt aus dem Satz
von sichtbaren Objekten verwirrt bzw. ausrangiert, wenn
bestimmt wird, dass das Objekt nicht länger von der
gegenwärtigen Blick- bzw. Sichtkoordinate aus sichtbar ist.
24. Verfähren nach Anspruch 20, worin die Mehrzahl von
Objekten, welche die komplizierte Struktur repräsentieren, zu
einer Objekthierarchie von einem Wurzelvolumen, das die
komplizierte Struktur begrenzt, bis zu Untervolumina, welche
jede bzw. jedes von der Mehrzahl der Objekte begrenzen, bis zu
geschrumpften Untervolumina, welche Teile von jedem Objekt
begrenzen, organisiert wird.
25. Verfahren nach Anspruch 24, worin jede Strahlwerfroutine
bestimmt, welches Objekt zu der gegebenen Blick- bzw.
Sichtkoordinate am nächstliegenden ist, durch:
(a) Durchsuchten bzw. Prüfen der Objekthierarchie, um
geschrumpfte Untervolumina, die durch den geworfenen Strahl
geschnitten werden, zu lokalisieren; und
(b) für jedes geschrumpfte Untervolumen, das durch den
Strahl geschnitten wird, Bestimmen, welches geschrumpfte
Untervolumen die kleinste Entfernung zu der gegebenen Blick-
bzw. Sichtkoordinate hat; und
(c) Speichern des dem geschrumpften Untervolumen
zugeordneten Objekts in dem Satz von sichtbaren Objekten.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/781,104 US6023279A (en) | 1997-01-09 | 1997-01-09 | Method and apparatus for rapidly rendering computer generated images of complex structures |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69812732D1 DE69812732D1 (de) | 2003-05-08 |
DE69812732T2 true DE69812732T2 (de) | 2003-10-16 |
Family
ID=25121711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69812732T Expired - Lifetime DE69812732T2 (de) | 1997-01-09 | 1998-01-09 | Verfahren und Gerät zur schnellen Wiedergabe von durch Computer erzeugten Bildern von komplexen Strukturen |
Country Status (5)
Country | Link |
---|---|
US (1) | US6023279A (de) |
EP (1) | EP0854441B1 (de) |
JP (1) | JPH10208077A (de) |
CA (1) | CA2225017C (de) |
DE (1) | DE69812732T2 (de) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6762778B1 (en) * | 1999-06-10 | 2004-07-13 | Dassault Systemes | Three dimensional graphical manipulator |
SG93211A1 (en) * | 1999-07-28 | 2002-12-17 | Univ Singapore | Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications |
US6577769B1 (en) * | 1999-09-18 | 2003-06-10 | Wildtangent, Inc. | Data compression through adaptive data size reduction |
US7133043B1 (en) * | 1999-11-29 | 2006-11-07 | Microsoft Corporation | Computer graphics methods and apparatus for ray intersection |
US7184042B2 (en) * | 2000-06-19 | 2007-02-27 | Mental Images Gmbh | Computer graphic system and computer-implemented method for generating images using a ray tracing methodology that makes use of a ray tree generated using low-discrepancy sequences and ray tracer for use therewith |
EP1297495B1 (de) * | 2000-06-29 | 2004-05-06 | Sun Microsystems, Inc. | Bestimmung sichtbarer objekte |
US7130774B2 (en) * | 2001-05-15 | 2006-10-31 | Metron Media, Inc. | System for creating measured drawings |
US6806876B2 (en) * | 2001-07-11 | 2004-10-19 | Micron Technology, Inc. | Three dimensional rendering including motion sorting |
JP3949109B2 (ja) * | 2001-10-15 | 2007-07-25 | 富士通株式会社 | 仮想3次元空間におけるリンクされた複数のオブジェクトの階層的ソート |
WO2003071488A1 (en) * | 2002-02-19 | 2003-08-28 | Siemens Corporate Research, Inc. | Collision detection method for deformable objects in a scene |
US7244891B2 (en) * | 2002-06-06 | 2007-07-17 | Leviton Manufacturing Co., Inc. | Shaped wall plate for wiring device |
EP1635297B1 (de) * | 2003-05-30 | 2012-06-13 | Lattice Technology, Inc. | Verfahren zur 3dimensionalen graphischen darstellung |
GB2410663A (en) * | 2004-01-29 | 2005-08-03 | Univ London | 3d computer graphics processing system |
US7714855B2 (en) * | 2004-05-17 | 2010-05-11 | Siemens Medical Solutions Usa, Inc. | Volume rendering processing distribution in a graphics processing unit |
US7852335B2 (en) * | 2005-05-09 | 2010-12-14 | Siemens Medical Solutions Usa, Inc. | Volume rendering processing distribution in a graphics processing unit |
US7408553B1 (en) * | 2005-12-15 | 2008-08-05 | Nvidia Corporation | Inside testing for paths |
FR2896895B1 (fr) * | 2006-02-01 | 2008-09-26 | Redway Soc Par Actions Simplifiee | Procede de synthese d'une image virtuelle par lancer de faisceaux |
US9665970B2 (en) | 2006-09-19 | 2017-05-30 | Imagination Technologies Limited | Variable-sized concurrent grouping for multiprocessing |
US7830379B2 (en) * | 2006-09-19 | 2010-11-09 | Caustic Graphics, Inc. | Architectures for parallelized intersection testing and shading for ray-tracing rendering |
US7969434B2 (en) * | 2006-09-19 | 2011-06-28 | Caustic Graphics, Inc. | Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering |
US8674987B2 (en) | 2006-09-19 | 2014-03-18 | Caustic Graphics, Inc. | Dynamic ray population control |
US8018457B2 (en) * | 2006-09-19 | 2011-09-13 | Caustic Graphics, Inc. | Ray tracing system architectures and methods |
US9478062B2 (en) | 2006-09-19 | 2016-10-25 | Imagination Technologies Limited | Memory allocation in distributed memories for multiprocessing |
US7852336B2 (en) * | 2006-11-28 | 2010-12-14 | International Business Machines Corporation | Dynamic determination of optimal spatial index mapping to processor thread resources |
US8384711B2 (en) * | 2006-11-29 | 2013-02-26 | The University Of Utah Research Foundation | Ray tracing a three dimensional scene using a grid |
US8547395B1 (en) | 2006-12-20 | 2013-10-01 | Nvidia Corporation | Writing coverage information to a framebuffer in a computer graphics system |
US8004522B1 (en) | 2007-08-07 | 2011-08-23 | Nvidia Corporation | Using coverage information in computer graphics |
US8325203B1 (en) | 2007-08-15 | 2012-12-04 | Nvidia Corporation | Optimal caching for virtual coverage antialiasing |
US8786628B2 (en) * | 2007-09-14 | 2014-07-22 | Microsoft Corporation | Rendering electronic chart objects |
US8237711B2 (en) * | 2007-11-19 | 2012-08-07 | Caustic Graphics, Inc. | Tracing of shader-generated ray groups using coupled intersection testing |
GB0810205D0 (en) * | 2008-06-04 | 2008-07-09 | Advanced Risc Mach Ltd | Graphics processing systems |
US9250926B2 (en) * | 2009-04-30 | 2016-02-02 | Microsoft Technology Licensing, Llc | Platform extensibility framework |
US8638343B2 (en) * | 2009-04-30 | 2014-01-28 | Microsoft Corporation | Data visualization platform performance optimization |
US20110183301A1 (en) * | 2010-01-27 | 2011-07-28 | L-3 Communications Corporation | Method and system for single-pass rendering for off-axis view |
CN102947865B (zh) * | 2010-04-29 | 2016-10-05 | 想象技术有限公司 | 用于光线跟踪中的图元相交的系统和方法 |
US10061618B2 (en) | 2011-06-16 | 2018-08-28 | Imagination Technologies Limited | Scheduling heterogenous computation on multithreaded processors |
GB2529075A (en) | 2011-06-16 | 2016-02-10 | Imagination Tech Ltd | Graphics processor with non-blocking concurrent architecture |
US9424685B2 (en) | 2012-07-31 | 2016-08-23 | Imagination Technologies Limited | Unified rasterization and ray tracing rendering environments |
US10970429B2 (en) * | 2013-01-07 | 2021-04-06 | Magma Giessereitechnologie Gmbh | Method and algorithm for simulating the influence of thermally coupled surface radiation in casting processes |
GB2544931B (en) | 2013-03-15 | 2017-10-18 | Imagination Tech Ltd | Rendering with point sampling and pre-computed light transport information |
DK178380B1 (en) * | 2014-07-01 | 2016-01-25 | Magma Giessereitechnologie Gmbh | Method of beam tracking for use in a simulation or calculation process |
US11176752B1 (en) * | 2020-03-31 | 2021-11-16 | Amazon Technologies, Inc. | Visualization of a three-dimensional (3D) model in augmented reality (AR) |
US11250629B2 (en) * | 2020-05-22 | 2022-02-15 | Seek Xr, Llc | Systems and methods for optimizing a model file |
CN113487714A (zh) * | 2021-06-23 | 2021-10-08 | 北京奇岱松科技有限公司 | 空间对象的渲染方法、装置、计算设备及存储介质 |
CN115111970B (zh) * | 2022-07-05 | 2023-11-10 | 湖南工商大学 | 一种融合2d与3d视觉感知的烟花成型检测装置及其检测方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4570233A (en) * | 1982-07-01 | 1986-02-11 | The Singer Company | Modular digital image generator |
US4594673A (en) * | 1983-06-28 | 1986-06-10 | Gti Corporation | Hidden surface processor |
US4901252A (en) * | 1984-07-13 | 1990-02-13 | International Business Machines Corporation | Method for producing planar geometric projection images |
US4952922A (en) * | 1985-07-18 | 1990-08-28 | Hughes Aircraft Company | Predictive look ahead memory management for computer image generation in simulators |
US4928250A (en) * | 1986-07-02 | 1990-05-22 | Hewlett-Packard Company | System for deriving radiation images |
EP0513474A1 (de) * | 1986-09-11 | 1992-11-19 | Hughes Aircraft Company | Digitales System für visuelle und Sensorsimulation zur Erzeugung von realistischen Szenen |
JPH0769972B2 (ja) * | 1987-07-16 | 1995-07-31 | インタ−ナショナル・ビジネス・マシ−ンズ・コ−ポレ−ション | 画像生成方法 |
JP2659372B2 (ja) * | 1987-07-20 | 1997-09-30 | ファナック株式会社 | 構造物の三次元表示方法 |
US4912659A (en) * | 1987-10-30 | 1990-03-27 | International Business Machines Corporation | Parallel surface processing system for graphics display |
US4918626A (en) * | 1987-12-09 | 1990-04-17 | Evans & Sutherland Computer Corp. | Computer graphics priority system with antialiasing |
US5088054A (en) * | 1988-05-09 | 1992-02-11 | Paris Ii Earl A | Computer graphics hidden surface removal system |
FR2635393B1 (fr) * | 1988-08-10 | 1990-10-19 | Thomson Csf | Procede d'elimination des faces cachees, pour la synthese d'une image filaire tridimensionnelle |
US5091960A (en) * | 1988-09-26 | 1992-02-25 | Visual Information Technologies, Inc. | High-speed image rendering method using look-ahead images |
EP0459761A3 (en) * | 1990-05-31 | 1993-07-14 | Hewlett-Packard Company | Three dimensional computer graphics employing ray tracking to compute form factors in radiosity |
US5305430A (en) * | 1990-12-26 | 1994-04-19 | Xerox Corporation | Object-local sampling histories for efficient path tracing |
US5299298A (en) * | 1991-02-28 | 1994-03-29 | Hewlett-Packard Company | Accelerated shadow testing method for three dimensional graphics rendering system |
US5764228A (en) * | 1995-03-24 | 1998-06-09 | 3Dlabs Inc., Ltd. | Graphics pre-processing and rendering system |
-
1997
- 1997-01-09 US US08/781,104 patent/US6023279A/en not_active Expired - Lifetime
- 1997-12-16 CA CA002225017A patent/CA2225017C/en not_active Expired - Lifetime
-
1998
- 1998-01-08 JP JP10002360A patent/JPH10208077A/ja active Pending
- 1998-01-09 EP EP98200042A patent/EP0854441B1/de not_active Expired - Lifetime
- 1998-01-09 DE DE69812732T patent/DE69812732T2/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69812732D1 (de) | 2003-05-08 |
CA2225017A1 (en) | 1998-07-09 |
EP0854441A3 (de) | 1999-01-13 |
JPH10208077A (ja) | 1998-08-07 |
US6023279A (en) | 2000-02-08 |
EP0854441B1 (de) | 2003-04-02 |
EP0854441A2 (de) | 1998-07-22 |
CA2225017C (en) | 2007-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69812732T2 (de) | Verfahren und Gerät zur schnellen Wiedergabe von durch Computer erzeugten Bildern von komplexen Strukturen | |
DE69224499T2 (de) | Dreidimensionale graphische Verarbeitung | |
DE69924700T2 (de) | Verfahren zur Darstellung von durch Oberflächenelemente repräsentierten grafischen Objekten | |
DE3789650T2 (de) | Verfahren und System zur Festkörpermodellierung. | |
DE102006061325B4 (de) | Verfahren zur computergestützten Identifikation der von einem Richtstrahl durchschnittenen Kinderoktanten eines Elternoktants in einer Octree-Datenstruktur mittels Look-up-Tabellen | |
DE60026197T2 (de) | Detailgerichtete hierarchische Distanzfelder in der Objektmodellierung | |
DE69020780T2 (de) | Vielfache Tiefenpuffer für Graphik und Festkörpermodellierung. | |
DE19807013B4 (de) | Volumetrisches Vorabschneidungsverfahren, das eine minimale Anzahl von Abtastpunkten durch ein Volumen gewährleistet | |
DE3854543T2 (de) | Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung. | |
DE69512262T2 (de) | Verfahren zum erzeugen von räumlich ausgewogenen abgrenzvolumenhierarchien zur anwendung in einer computererzeugten darstellung einer komplexen struktur | |
DE69027402T2 (de) | Verfahren und Vorrichtung zur Steuerung von Robotern und ähnlichem zum Gebrauch hierarchisch organisierter "Bubble-Daten", die entlang einer Mittelachse angeordnet sind | |
DE69807479T2 (de) | Erzeugung eines Bildes eines dreidimensionalen Objekts | |
DE69924699T2 (de) | Verfahren zur Schaffung von als Oberflächenelemente dargestellten grafischen Objekten | |
DE69227095T2 (de) | Bewegungen zur Umwandlung von konkaven Polyedern in ihre konvexen Hüllen | |
DE3854223T2 (de) | Erzeugung und Anzeige von Rechnergraphiken. | |
DE69514820T2 (de) | Verfahren zum steuern des levels von details in einer rechnergenerierten bildschirmanzeige einer komplexen struktur | |
DE69120407T2 (de) | Bildgenerator | |
DE69623105T2 (de) | Bildverarbeitungsverfahren und bildprozessor | |
DE69924230T2 (de) | Verfahren zur Modellierung von durch Oberflächenelemente dargestellten grafischen Objekten | |
DE3608438A1 (de) | Verfahren zum berechnen von freien gekruemmten flaechen mittels computergestuetztem design cad und computergestuetzter herstellung cam und numerischer steuerung nc | |
DE19654809A1 (de) | System und Verfahren zum Erzeugen von Haar mit einem Computergrafiksystem | |
DE112012005657T5 (de) | Computerprogrammprodukt und Verfahren zum Erzeugen und Simulieren eines Modells eines Objekts | |
DE69324101T2 (de) | Bilddatenverarbeitung | |
DE19806985A1 (de) | Organisationsverfahren für volumetrische Daten, das effiziente Cache-Aufbereitungsbeschleunigungen und einen effizienten Graphik-Hardwareentwurf ermöglicht | |
DE19637463A1 (de) | Verfahren zur Anzeige von geometrischen Objektoberflächen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |