DE68927471T2 - Verfahren zur Schattierung eines graphischen Bildes - Google Patents
Verfahren zur Schattierung eines graphischen BildesInfo
- Publication number
- DE68927471T2 DE68927471T2 DE68927471T DE68927471T DE68927471T2 DE 68927471 T2 DE68927471 T2 DE 68927471T2 DE 68927471 T DE68927471 T DE 68927471T DE 68927471 T DE68927471 T DE 68927471T DE 68927471 T2 DE68927471 T2 DE 68927471T2
- Authority
- DE
- Germany
- Prior art keywords
- vertices
- subtriangle
- points
- intensity values
- normal vectors
- 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 - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 28
- 239000013598 vector Substances 0.000 claims description 56
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 238000005286 illumination Methods 0.000 description 5
- 230000009466 transformation Effects 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000010894 electron beam technology Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012821 model calculation Methods 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000000007 visual effect Effects 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/50—Lighting effects
- G06T15/80—Shading
- G06T15/87—Gouraud shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
- G06T15/83—Phong shading
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Description
- Diese Erfindung betrifft im allgemeinen ein Verfahren zur Schattierung eines graphischen Bildes, und im speziellen ein Verfahren zur Schattierung einer Darstellung einer Dreiecksfläche oder einer aus einer Dreiecksfläche modellierten gekrümmten Fläche, sowie ein Computergraphiksystem zur Durchführung des Verfahrens.
- Bei einem Computergraphiksystem wird das Bild auf dem Bildschirm einer Kathodenstrahlrähre (CRT) oder eines anderen Anzeigegeräts angezeigt. Im allgemeinen wird der Elektronenstrahl der Kathodenstrahlrähre unter der Steuerung eines digitalen Signals mit einer X- (d.h. horizontalen) und einer Y- (d.h. vertikalen) Komponente abgelenkt, so daß die Pixel in einem rechteckigen aus Rasterpunkten bestehenden Feld Reihe für Reihe gemäß einem Rastermuster adressiert werden. Die Daten, die das Bild darstellen, werden in einem Bildprozessor erzeugt und vom Bildprozessor in einen Bildpuffer geladen. Der Bildpuffer hat Speicherplätze, die den Rasterpunkten der Kathodenstrahlröhrenanzeige im Verhältnis 1:1 entsprechen. In der nachfolgenden Beschreibung wird zum besseren Verständnis davon ausgegangen, daß die Speicherplätze des Bildpuffers physikalisch in einem rechteckigen Feld angeordnet sind, das mit dem Feld der Rasterpunkte der Anzeige korrespondiert.
- Das digitale Signal, das zur Steuerung der Ablenkung des Elektronenstrahls der Kathodenstrahlröhre eingesetzt wird, wird auch zur Steuerung der Adressierung des Bildpuffers verwendet, und die Farbe, mit der die Pixel an einem Rasterpunkt angezeigt werden, ist vom Inhalt des entsprechenden Speicherplatzes abhängig. Der Bildpuffer enthält somit ein virtuelles Bild der Anzeige, die von der Kathodenstrahlröhre erzeugt wird. Die vom Bildprozessor an den Bildpuffer übertragenen Daten können ein Bild darstellen, das aus farbigen Bereichen zusammengesetzt ist. Der Vorgang des Ladens von Datenwerten in den Bildpuffer, um einen farbigen Bereich darzustellen, wird als "Belegung" (auch "Tiling") bezeichnet. In der folgenden Beschreibung wird im Zusammenhang mit einem Belegungs-Vorgang auf die Belegung von spezifisch festgelegten Rasterpunkten und die Belegung von Dreiecken eingegangen. Dies ist jedoch nur als verkürzte Art der Bezugnahme auf die Belegung der Speicherplätze, die mit den spezifizierten Rasterpunkten korrespondieren, und auf die Belegung der Speicherplätze, die mit den Rasterpunkten korrespondieren, die innerhalb der Dreiecke liegen, gedacht.
- Ein Computergraphiksystem kann zur Darstellung einer dreidimensionalen gekrümmten Fläche verwendet werden, indem diese Fläche in Dreiecksfacetten aufgelöst wird und die Projektion dieser Facetten in eine zweidimensionale Anzeigeebene angezeigt wird. Jede Dreiecksfacette bildet bei ihrer Projektion in die Anzeigeebene ein Dreieck oder ein Liniensegment. Auf den Fall, bei dem die Projektion ein Liniensegment ergibt, wird im weiteren nicht näher eingegangen. Die Information, die die Dreiecksfacetten im realen dreidimensionalen Raum definiert, wird dem Bildprozessor vorgegeben, der diese Information dazu verwendet, Information zur Definition der entsprechenden Dreiecke in der Anzeigeebene zu erzeugen. Diese Information wird vom Bildprozessor einer Renderingeinheit zur Verfügung gestellt, die zum Laden der Schattierungsintensitätswerte I in den Bildpuffer verwendet wird. Im allgemeinen werden die Dreiecksfacetten sequentiell vom Bildprozessor verarbeitet.
- Um eine genaue Abbildung zu erzielen, muß der Tatsache Rechnung getragen werden, daß bei Betrachtung eines dreidimensionalen Objekts die vom Betrachter entfernten Flächen des Objekts nicht sichtbar sind, und daher Daten, die diese Flächen darstellen, nicht in den Bildpuffer geladen werden sollten. Bei einem Graphiksystem wird dies durch die Wegnahme verborgener Flächen erreicht. Die Wegnahme verborgener Flächen ist in der Veröffentlichung "Principles of Interactive Computer Graphics" (Newman und Sproull) (Verlag: McGraw-Hill Book Company, 1979), 2. Auflage, [S.] 369 erläutert.
- Die Daten, die zur Belegung für einen gegebenen Rasterpunkt in den Speicher des Bildpuffers geladen werden, beinhalten die Farbe und die Intensität des Lichts, das vom entsprechenden Punkt der Oberfläche, der dargestellt werden soll, auf den Betrachter zurückgeworfen wird. Im vorliegenden Text werden diese Daten als Intensitätswert I bezeichnet, obgleich es sich hierbei auch um mehrere Werte handeln kann, die Intensitäten separater Farbkomponenten darstellen, z.B. die Intensitäten von Rot, Grün und Blau. Das dreidimensionale Erscheinungsbild einer Fläche wird im allgemeinen realistischer dargestellt, wenn der Intensitätswert I für einen Rasterpunkt der Position und Ausrichtung des von diesem Rasterpunkt dargestellten Flächenelements Rechnung trägt. Dies läßt sich dadurch bewirken, daß ein Flächen-Normalenvektor am Flächenelement berechnet wird und ein Beleuchtungsmodell zur Ableitung eines Intensitätswertes I für einen dieses Flächenelement darstellenden Rasterpunkt angewandt wird. Hierbei ist zu beachten, daß die Verwendung eines Beleuchtungsmodells zur Berechnung eines Intensitätswerts eines Rasterpunkts rechnerisch aufwendig ist, da zur Nachahmung von Lichtquellen und des Reflexionsvermögens der Fläche komplexe Berechnungen erforderlich sind.
- Der Intensitätswert I, der für einen gegebenen Rasterpunkt in den Bildpuffer geladen wird, ist von einem Schattierungsmodell abhangig, das auf die angezeigte Fläche angewandt wird. Drei Haupt-Schattierungsmodelle sind in der Veröffentlichung von J.D. Foley und A. Van Dam mit dem Titel "Fundamentals of Interactive Computer Graphics", [S.] 580-584, (1984) beschrieben. Die drei Modelle werden als konstante Schattierung, Intensitätsinterpolations- oder Gouraud-Schattierung, und Normalenvektor-Interpolations- oder Phong-Schattierung bezeichnet. Bei der konstanten Schattierung wird ein einziger Intensitätswert für einen gegebenen Anzeigebereich verwendet, und diese Schattierungsart ist zur zufriedenstellenden Darstellung einer gekrümmten Fläche weitaus weniger geeignet als entweder die Gouraud-Schattierung oder die Phong-Schattierung.
- Bei der Gouraud-Schattierung eines Dreiecks der Anzeigeebene, das eine Dreiecksfacette darstellt, ist für jeden Eck- oder Scheitelpunkt der Facette eine Flächen-Normale gegeben, und eine Intensität wird für jeden Eckpunkt der Anzeigeebene ermittelt, indem ein ausgewähltes Beleuchtungsmodell auf die entsprechende Normale auf einem Eckpunkt angewandt wird. Die berechneten Intensitätswerte ergeben eine Grundlage zur Schattierung des Dreiecks in der Anzeigeebene durch lineare Interpolation dieser Intensitäten entlang jeder Kante des Dreiecks und zwischen Kanten entlang jeder Abtastzeile. Somit wird zur Gouraud-Schattierung eines Dreiecks für jeden Eckpunkt einmal auf das ausgewählte Beleuchtungsmodell zugegriffen. Bei der Phong-Schattierung eines Dreiecks sind die Flächen-Normalen auf den Eckpunkten gegeben. Endpunktnormale werden für die Schnittpunkte einer jeden Abtastzeile mit den Kanten des Dreiecks berechnet, durch Interpolation zwischen den Eckpunktnormalen an gegenüberliegenden Enden der Kanten, die von der Abtastzeile geschnitten werden. Für jedes Pixel entlang einer Abtastzeile wird ein Flächen-Normalenvektor durch Interpolation zwischen den Endpunktvektoren für diese Abtastzeile berechnet. Ein Flächen-Normalenvektor wird jedem Pixel zugeordnet und ein ausgewähltes Beleuchtungsmodell wird auf den Flächen-Normalenvektor für jedes einzelne Pixel angewandt, um dessen Intensität der Schattierung zu berechnen. Da das Beleuchtungsmodell für jeden Rasterpunkt innerhalbdes Dreiecks berechnet wird, erfordert die Durchführung einer Phong-Schattierung im allgemeinen weitaus mehr Zeit als diejenige einer Gouraud-Schattierung. Bei einer Phong-Schattierung ergibt sich jedoch eine realistischere Darstellung eines Objekts, da hierbei der Position und Ausrichtung eines jeden Oberflächenelements, das mit einem entsprechenden Rasterpunkt korrespondiert, Rechnung getragen wird.
- Die in Proceedings 1986 zur FALL JOINT COMPUTER CONFERENCE, 2- 6. November 1986, New York, U.S.A. erschienene Veröffentlichung von D.E. Breen mit dem Titel "Creation and smooth-shading of Steiner patch tessellations" beschreibt auf den Seiten 931-940 die mosaikartige Aufteilung einer komplexen gekrümmten Fläche in sogenannte Steiner-Teilflächen, die biparametrischen Flächen großer Ordnung approximieren, sowie die Fein-Schattierung dieser Teilflächen zur Erzeugung von Farbrasterbildern. Beim Vorgang der mosaikartigen Aufteilung wird ein Parameterraum zunächst durch Dreieckbildung aufgeteilt, und anschließend eine Steiner-Teilfläche für jedes Dreieck berechnet. Zur Fein-Schattierung des Mosaiks werden die Teilflächen einem sogenannten Ray Tracing-Verfahren unterzogen.
- Als ein Aspekt stellt die Erfindung das in Anspruch 1 oder Anspruch 2 definierte Schattierungsverfahren zur Verfügung.
- Als weiteren Aspekt stellt die Erfindung das in Anspruch 3 oder Anspruch 6 definierte Computergraphiksystem zur Verfügung.
- Die Unteransprüche betreffen Ausführungsformen der Erfindung.
- Gemäß einer bevorzugten Ausführungsform der Erfindung wird jedes Unterdreieck auf seine Eignung zur Gouraud-Schattierung hin überprüft. Unterdreiecke, die für eine Gouraud-Schattierung nicht in Frage kommen, werden weiter unterteilt und die neuen Unterdreiecke werden wiederum auf ihre Eignung zur Gouraud-Schattierung hin überprüft. Als zur Gouraud-Schattierung geeignet eingestufte Unterdreiecke werden "belegt" (d.h. ihnen wird ein Wert zugeordnet), indem zunächst die Flächen-Normalenvektoren auf den Eckpunkten auf ein Beleuchtungsmodell angewandt werden, um Eckpunktintensitätswerte zu erhalten, und anschließend diese Intensitätswerte über das Innere des Unterdreiecks hinweg interpoliert werden.
- Fig. 1 zeigt ein Blockschaltbild eines Computergraphiksystems;
- Fig. 2 zeigt ein rechteckiges Feld von Rasterpunkten und ein Dreieck, dessen Eckpunkte auf Rasterpunkten liegen; und
- Fig. 3 zeigt das Dreieck aus Fig. 2, aufgeteilt in Unterdreiecke.
- Das in Fig. 1 dargestellte Computergraphiksystem enthält einen Bildprozessor 1, der eine Anzeigeliste empfängt und Information zur Repräsentation der Dreiecke erzeugt, sowie die diese Dreiecke definierende Information sequentiell an einen XY- Adressengenerator 2 und einen Generator für Intensitätswerte (kurz: 1-Generator) 6 weitergibt. Der XY-Adressengenerator 2 ist in EP-A2-0314367 sowie in EP-A2-0314368 beschrieben und beansprucht. Der 1-Generator 6 ist in EP-A2-0314368 beschrieben. Der XY-Adressengenerator 2 führt einen modifizierten Bresenham-Algorithmus aus, um Rasterpunkte innerhalb eines Dreiecks der Anzeigeebene auszuwählen, indem eine X-Adresse im Register 3 und eine Y-Adresse im Register 4 zur Adressierung eines Bildpuffers 5 bereitgestellt werden. Der 1-Generator 6 führt eine Gouraud-Schattierung durch, indem er für jeden der ausgewählten Rasterpunkte einen Intensitätswert an den Bildpuffer 5 übergibt.
- In Fig. 2 ist ein Gitter aus Dreiecken der Anzeigeebene dargestellt, einschließlich einem Dreieck mit den Eckpunkten V0, V1 und V2. In Fig. 2 sind auch Linien dargestellt, die Ordinatenwerte Y und Abszissenwerte X für die Rasterpunkte darstellen. Das Dreieck V0V1V2 ist eine Projektion in die Anzeigeebene einer Dreiecksfacette, die einen Abschnitt einer gekrümmten Fläche modelliert, welche in mehrere Dreiecksfacetten aufgelöst wurde, um ihre Darstellung mittels einem Computergraphiksystem zu erleichtern.
- Die vom Bildprozessor 1 empfangene Anzeigeliste enthält Weltkoordinaten (X,Y,Z) der Eckpunkte einer jeden Dreiecksfacette und einen Flächen-Normalenvektor mit (X, Y, Z)-Komponenten, die mit jedem Eckpunkt korrespondieren, wobei die Flächen-Normalenvektoren als senkrecht zu der von der Facette in der Nähe des entsprechenden Eckpunktes modellierten gekrümmten Fläche betrachtet werden. Der Prozessor 1 berechnet einen Intensitätswert I für einen Eckpunkt durch Anwenden eines passenden Beleuchtungsmodells auf den entsprechenden Flächen-Normalenvektor.
- Um die Erfindung in ihrem Kontext zu erläutern, wird zunächst auf die Gouraud-Schattierung eines Dreiecks, definiert durch Koordinatenwerte der drei Eckpunkte und ihrer entsprechenden Flächen-Normalenvektoren, eingegangen. Werte von I, nämlich I0, I1 und I2, werden für jeden Eckpunkt berechnet, indem ein passendes Beleuchtungsmodell auf die entsprechenden Eckpunktnormalen angewandt wird. Zur "Belegung" eines Dreiecks werden der XY-Adressengenerator 2 und der I-Generator 6 zunächst initialisiert, indem in die Register des Generators 2 Daten geladen werden, die einen Bereich zur Belegung definieren, und Register des Generators 6 mit anfänglichen und inkrementalen Intensitätswerten geladen werden. Die Generatoren 2 und 6 werden dann in einen Betriebszustand versetzt, in dem der Betrieb unter Steuerung einer Zustandsübergangsmaschine (State Machine) erfolgt, die in aufeinanderfolgenden, von einem Taktgeber definierten Taktzyklen sequentiell durch vorbestimmte Zustände schaltet.
- Die Gouraud-Schattierung erfolgt reihenweise von unten nach oben. Dementsprechend sortiert der Bildprozessor 1 die Eckpunkte des Dreiecks nach aufsteigenden Y-Werten. Im Falle der in Fig. 2 gezeigten Facette ist Y0< Y1< Y2, und daher wird die Facette beginnend mit der den Eckpunkt V0 enthaltenden Reihe bis hin zu der den Eckpunkt V2 enthaltenden Reihe belegt. Eine Reihe kann entweder von links nach rechts oder von rechts nach links belegt werden.
- Es wird davon ausgegangen, daß ein Dreieck zwei "Seitenverläufe" hat, die sich zwischen seinem minimalen Ordinatenwert und seinem maximalen Ordinatenwert erstrecken. Das Dreieck V0V1V2 hat zwei Seitenverläufe V0V2 und V0V1V2. Einer der Seitenverläufe wird als "Haupt"-Seitenverlauf ausgewählt, während der andere als "nebengeordneter" Seitenverlauf betrachtet wird; die Belegung jeder Rasterreihe erfolgt beginnend mit dem Haupt-Seitenverlauf bis hin zum gegenüberliegenden nebengeordneten Seitenverlauf. Im allgemeinen wird als Haupt-Seitenverlauf der Seitenverlauf mit weniger Kanten ausgewählt. Ob der Haupt-Seitenverlauf links oder rechts liegt, wird durch Auswertung des Vektorprodukts der zwei Kanten, die vom Eckpunkt V0 ausgehen, bestimmt. Im Fall von Fig. 2 wird daher der Seitenverlauf V0V2 als Haupt-Seitenverlauf ausgewählt, und die Belegung erfolgt von links nach rechts.
- Zur Durchführung des modifizierten Bresenham-Algorithmus ist ein Satz von Bresenham-Parametern für jede Kante des Dreiecks erforderlich. Diese Parameter schließen DX (Änderung des X- Werts), DY (Änderung des Y-Werts), s (Linien-Steigung, berechnet als auf die nächste Ganzzahl abgerundete Division von (DX/DY)), PInc (positives Inkrement, berechnet als DX-SDY-DY), NInc (negatives Inkrement, berechnet als DX-SDY), AErr (Anfangsfehler), X&sub0; (X-Koordinate des Ausgangs-Rasterpunkts) und Y&sub0; (Y-Koordinate des Ausgangs-Rasterpunkts) ein. Zur Belegung einer Reihe von Rasterlinien, die zwei Kanten des Dreiecks verbinden, müssen Bresenham-Parameter für diese Kanten in den XY-Adressengenerator 2 geladen werden.
- Der Bildprozessor 1 ermittelt eine Eckpunktdatenstruktur für jeden Eckpunkt des Dreiecks. Jede Eckpunktdatenstruktur umfaßt Koordinatenwerte in X, Y und Z für die Eckpunktposition und die Komponentenwerte des Eckflächen-Normalenvektors in X, Y und Z. Intensitätswerte nach Farbkomponente, z.B. Intensitäten von Rot, Grün und Blau, können in jeder Datenstruktur für einen Eckpunkt gespeichert werden. Die Datenstrukturen können auch Gerät- oder Pixel-Koordinatenwerte für jeden Eckpunkt enthalten, wie sie von einer ausgewählten Transformationsfunktion bereitgestellt werden. In jeder Eckpunktdatenstruktur ist ein Satz von Bresenham-Parametern gespeichert, die mit einer Kante des Dreiecks korrespondieren. In der mit V0 korrespondierenden Eckpunktdatenstruktur sind Bresenham-Parameter für Kante V0V1 gespeichert, in der mit Eckpunkt V1 korrespondierenden Struktur sind Parameter für Kante V1V2 gespeichert, und in der dem Eckpunkt V2 zugeordneten Struktur sind Parameter für Kante V2V0 gespeichert.
- Es versteht sich, daß in den Datenstrukturen für Eckpunkte enthaltene Information den Prozessor I zur Initialisierung des XY-Adressengenerators 2 und des I-Generators 6 zur Ausführung des modifizierten Bresenham-Algorithmus in Verbindung mit Gouraud-Schattierungstechniken zur Belegung einer Anzeigefläche in die Lage versetzt. Insbesondere werden zwei Kanten des Dreiecks, von denen einer den Haupt-Seitenverlauf und der andere einen Teil des nebengeordneten Seitenverlaufs bildet, bei der Belegung einer jeden Abtastlinie oder Rasterreihe als "aktiv" betrachtet, und die Information in den Datenstrukturen von Eckpunkten wird zur Initialisierung des XY-Adressengenerators 2 und I-Generators 6 vor der Belegung einer Reihe von Abtastzeilen, die die beiden aktiven Kanten schneiden, verwendet. Somit wird auf die Eckpunktdatenstrukturen während der Initialisierung des XY-Adressengenerators 2 zugegriffen, um die folgenden Werte in Register des XY-Generators 2 zu laden: AErrM, AErrm, PIncM, PIncm, NIncM, NIncm, DYM, DYm, sM, sm, XM, Xm sowie ein logischer Wert, der die Richtung der Belegung als entweder von rechts nach links oder von links nach rechts angibt. Die auf "M" endenden Bresenham-Parameterbezeichnungen sind dem Haupt-Seitenverlauf zugeordnet, und die auf "m" endenden sind dem nebengeordneten Seitenverlauf zugeordnet.
- Der I-Generator 6 erzeugt einen Intensitätswert I für jedes vom XY-Adressengenerator 2 bereitgestellte Koordinatenpaar (X,Y). Bei der Gouraud-Schattierung wird angenommen, daß der Wert von I linear sowohl in vertikaler als auch in horizontaler Richtung variiert. Daher erfüllen die Intensitätswerte I0, I1 und I2 für die Eckpunkte V0, V1 und V2 eine Ebenengleichung in X und Y, aus der ein horizontales und ein vertikales Intensitätsinkrement berechnet werden können. Zu Anfang lädt der Bildprozessor 1 den horizontalen und den vertikalen Wert für das Intensitätsinkrement in den I-Generator 6 und berechnet einen anfänglichen Intensitätswert I zur Bestimmung der Intensität des ersten zu belegenden Rasterpunkts; dieser Wert wird auch in den I-Generator 6 geladen.
- Nach der Initialisierung treten der XY-Adressengenerator 2 und der I-Generator 6 in den Betriebszustand ein. In diesem Zustand arbeiten die Generatoren 2 und 6 synchron, um das Dreieck gemäß dem modifizierten Bresenham-Algorithmus und dem Gouraud-Schattierungsmodell zu belegen. Der XY-Adressengenerator 2 berechnet die X-Koordinate für das erste zu belegende Pixel auf jeder Reihe und die Anzahl Hrz zu belegender Pixel auf dieser Reihe, und bestimmt auch die Richtung (von links nach rechts oder von rechts nach links), in der die Belegung erfolgen soll. Der I-Generator 6 erstellt einen Intensitäts-Wert (kurz: I-Wert) für jeden vom Generator 2 adressierten Rasterpunkt. Aus der Veröffentlichung EP-A2-0314368 ergibt sich, daß kein Wert von Hrz an der untersten Rasterreihe des Dreiecks berechnet wird, und folglich die unterste Rasterreihe nicht belegt wird. Die oberste Reihe wird jedoch belegt. Ähnlich werden der Rasterpunkt an der Abrundung des exakten Schnittpunkts einer Rasterreihe mit dem rechten Seitenverlauf (V0V1V2 im Fall von Fig. 2) und der Rasterpunkt bei Eins plus der Abrundung des exakten Schnittpunkts der Rasterreihe mit dem linken Seitenverlauf, sowie alle Rasterpunkte, die zwischen den beiden obengenannten Rasterpunkten auf einer gegebenen Rasterreihe liegen, belegt. Wenn die Dreiecken aneinanderstoßen, z.B. in einem Mosaik, wird daher ein Rasterpunkt an der Grenze zwischen zwei nebeneinanderliegenden Dreiecken behandelt, als befände er sich in einem - und nur einem - Dreieck. Auf diese Weise wird sichergestellt, daß keine Lücken zwischen Dreiecken und keine Überschneidungen von Dreiecken vorliegen.
- Eine Gouraud-Schattierung des Dreiecks V0V1V2 auf diese Weise wäre zufriedenstellend, wenn der von dem Dreieck dargestellte Abschnitt der gekrümmten Fläche im wesentlichen eben wäre. Dies ist jedoch keine allgemein-gültige Annahme und daher wäre eine Gouraud-Schattierung auf diese Weise normalerweise nicht zufriedenstellend verglichen mit dem mit einer Phong-Schattierung erzielten Ergebnis. Andererseits ist eine Phong-Schattierung rechnerisch aufwendig und häufig für eine einigermaßen genaue Wiedergabe einer gekrümmten Fläche nicht erforderlich.
- Zur Vermeidung dieser Einschränkung der Brauchbarkeit der Gouraud-Schattierung und zur Vermeidung der Kosten für den für eine Phong-Schattierung erforderlichen Rechenaufwand wird eine Kombination aus Phong- und Gouraud-Schattierungstechniken verwendet. Das Dreieck der Anzeigeebene wird in vier kongruente Unterdreiecke (Fig. 3) unterteilt, indem jede Seite des Dreiecks halbiert wird und die Bisektionspunkte verbunden werden, um vier Unterdreiecke zu bilden. Für jedes Unterdreieck werden drei Eckpunktdatenstrukturen ermittelt, wobei jede Struktur dieselben Parameter enthält wie die Eckpunktdatenstrukturen für Eckpunkte des Parent-Dreiecks (Basis-Dreiecks). Die Positionskoordinatenwerte und Flächen-Normalenvektorkomponenten für die neuen Eckpunkte werden durch Interpolation erhalten. Beispielsweise haben die Bisektionspunkte der Kanten V0V1, V1V2 und V0V2, die jeweils als V01, V12 und V02 bezeichnet werden können, Koordinatenwerte, die von den Koordinatenwerten für die Punkte V0, V1 und V2 interpoliert werden, und sie haben Flächen-Normalenvektorkomponenten, die aus den Flächen- Normalenvektorkomponenten für die Punkte V0, V1 und V2 interpoliert wurden. Ein Unterdreieck kann auf gleiche Weise weiter aufgeteilt werden, wenn es für eine Gouraud-Schattierung nicht geeignet ist, anderenfalls wird es einer Gouraud-Schattierung unterzogen. Somit wird die Flächen-Normalenvektorinterpolation, eine Phong-Schattierungstechnik, in begrenztem Maße verwendet; wenn aber ein Unterdreieck zur Gouraud-Schattierung geeignet ist, werden Intensitätswerte bei jedem Eckpunkt berechnet und das Unterdreieck durch lineare Interpolation der Intensitätswerte, d.h. durch eine Gouraud-Schattierungstechnik, belegt.
- Die Aufteilung in Unterdreiecke kann im realen Raum oder im Pixeiraum erfolgen. Wird sie im realen Raum durchgeführt, muß der Schritt der Gouraud-Schattierung eine Transformationsfunktion in Pixelkoordinaten einschließen. Wird sie hingegen im Pixelraum durchgeführt, werden die Dreieck-Eckpunkte vor der Unterteilung in Pixelkoordinaten umgewandelt, und die Gouraud- Schattierung wie voranstehend beschrieben durchgeführt. In den nachstehenden Ausführungen wird davon ausgegangen, daß die Unterteilung im Pixelraum erfolgt.
- Da Unterdreiecke durch Bisektion gebildet werden, ist jede Kante eines Unterdreiecks parallel zu einer entsprechenden Kante seines Parent-Dreiecks. Dementsprechend sind die Werte DX/DY, s, PInc und NInc für jede Kante eines Unterdreiecks dieselben wie die Werte von DX/DY, s, PInc und NInc für eine entsprechende parallele Kante seines Parent-Dreiecks. Da die Werte für diese Parameter direkt vom Parent-Dreieck übernommen werden, müssen für die Berechnung von Bresenham-Parametern Eckpunkte von Unterdreiecken nicht in Pixelkoordinaten umgewandelt werden, und bei derartigen Umwandlungen auftretende Rundungsfehler lassen sich vermeiden.
- Der Algorithmus zur weiteren Unterteilung ist besonders nützlich als rekursive Prozedur, bei der der anfängliche Eingabeparameter ein Parent-Dreieck ist und dessen Unterdreiecke an die anschließenden rekursiven Aufrufe weitergegeben werden, wobei eine weitere Rekursion von der Eignung eines gegebenen Unterdreiecks zur Gouraud-Schattierung abhängt. Somit läßt sich ein Parent-Dreieck rekursiv in viele kleinere Unterdreiecke unterteilen, von denen jedes mit einem kleineren, ebeneren Abschnitt der gekrümmten Fläche korrespondiert, und als solches zur Gouraud-Schattierung geeigneter als sein Parent- Dreieck ist. Letztendlich wird jedes Unterdreieck als für eine Gouraud-Schattierung geeignet eingestuft, und die Eckpunktdatenstrukturen für seine Eckpunkte müssen vervollständigt werden, indem ein Wert AErr (Anfangsfehlerwert) und ein Ausgangs- Rasterpunkt (X&sub0;, Y&sub0;) für jeden Unterdreiecksrand berechnet wird, um die Gouraud-Schattierung durchzuführen. Der Ausgangs- Rasterpunkt (X&sub0;, Y&sub0;) gibt an, wo bezüglich der zugehörigen Kante mit der Belegung begonnen werden soll, und AErr gibt den Abstand in X-Richtung von (X&sub0;,Y&sub0;) zur zugehorigen Kante an.
- Zur Veranschaulichung der rekursiven Unterteilung eines Parent-Dreiecks werde das Dreieck V0V1V2 als Parent-Dreieck betrachtet, das zur Belegung mit jedem Eckpunkt von Dreieck V0V1V2 versehen wird, welche als Positionskoordinaten und Flächen-Normalenvektoren definiert sind. In den nachstehenden Ausführungen sind die Positionskoordinatenwerte mit den Präfixen x, y und z bezeichnet, während Komponenten des Flächen- Normalenvektors mit den Präfixen a, b und c bezeichnet sind. Daher sind den Eckpunkten eines Parent-Dreiecks folgende Positions- und Flächen-Normalenvektor-Parameter zugeordnet:
- V0 zugeordnet sind (x0, y0, z0) und (a0, b0, c0)
- V1 zugeordnet sind (x1, y1, z1) und (a1, b1, c1)
- V2 zugeordnet sind (x2, y2, z2) und (a2, b2, c2).
- Vor dem ersten Aufruf der rekursiven Prozedur werden die Eckpunkte V0, V1 und V2 des Parent-Dreiecks in Geräte- (Pixel-) Koordinaten umgewandelt und die umgewandelten Eckpunkte werden in aufsteigender Reihenfolge ihrer Y-Werte sortiert. Im vorliegenden Beispiel hat V0 den kleinsten Y-Wert und V2 hat den größten. Die inkrementalen Bresenham-Parameter für jede Kante des Parent-Dreiecks werden unter Verwendung der Gerät-Koordinaten für jeden Eckpunkt berechnet, und in den entsprechenden Eckpunktdatenstrukturen gespeichert.
- Für die Kante V1VO:
- DY10 = y1 - y0
- DX10 = x1 - x0
- slope10 = DX10/DY10
- s10 = floor(slope10)
- PInc10 = DX10 - s10*DY10 - DY10
- NInc10 = DX10 - s10*DY10
- Für die Kante V2V1:
- DY21 = y2 - y1
- DX21 = x2 - x1
- slope21 = DX21/DY21
- s21 = floor(slope21)
- PInc21 = DX21 - s21*DY21 - DY21
- NInc21 = DX21 - s21*DY21
- Für die Kante V2V0:
- DY20 = y2 - y0
- DX20 = x2 - x0
- slope20 = DX20/DY20
- s20 = floor(slope20)
- PInc20 = DX20 - s20*DY20 - DY20
- NInc20 = DX20 - s20*DY20
- Diese Bresenham-Parameter lassen sich auf jedes Unterdreieck des Parent-Dreiecks anwenden, und die Eckpunkte eines jeden Unterdreiecks werden automatisch nach der Y-Komponente sortiert, da die Unterdreiecke dem Parent-Dreieck ähnlich sind und das Parent-Dreieck bereits gemäß der Y-Komponente sortiert ist.
- Der nächste Schritt liegt darin, zu bestimmen, ob das Parent- Dreieck für eine Gouraud-Schattierung geeignet ist. Wie nachstehend ausführlicher erläutert ist, können zur Bestimmung einer Eignung zur Gouraud-Schattierung mehrere Verfahren herangezogen werden.
- Wird das Parent-Dreieck als fur eine Gouraud-Schattierung geeignet eingestuft, dann wird die erläuterte Schattierungsprozedur zur Schattierung des Parent-Dreiecks verwendet. Ansonsten werden die Eckpunktdatenstrukturen des Parent-Dreiecks an die als PSEUDO_PHONG bezeichnete folgende rekursive Prozedur übergeben. Die lokalen Variablen V01, V02 und V12 sind Eckpunktdatenstrukturen, die jeweils mit den Bisektionspunkten der Kanten V0V1, V0V2 bzw. V1V2 korrespondieren.
- PSEUDO_PHONG (V0, V1, V2)
- vertex V01, V02, V12
- begin pseudo_phong
- /* bestimme den Bisektionspunkt V02 für Kante V0V2 */
- V02.x := (V0.x + V2.x)/2
- V02.y := (V0.y + V2.y)/2
- V02.z := (V0.z + V2.z)/2
- /* bestimme den Flächen-Normalenvektor für Bisektionspunkt V02 */
- V02.a := (V0.a + V2.a)
- V02.b := (V0.b + V2.b)
- V02.c := (V0.c + V2.c)
- L := NORM(V02.a, V02.b, V02.c)
- V02.a := V02.a/L
- V02.b := V02.b/L
- V02.c := V02.c/L
- /* bestimme den Bisektionspunkt V01 für Kante V0V1 */
- V01.x := (V0.x * V1.x)/2
- V01.y := (V0.y * V1.y)/2
- V01.z := (V0.z * V1.z)/2
- /* bestimme den Flächen-Normalenvektor für Bisektionspunkt V01 */
- V01.a := (V0.a + V1.a)
- V01.b := (V0.b + V1.b)
- V01.c := (V0.c + V1.c)
- L := NORM(V01.a, V01.b, V01.c)
- V01.a := V01.a/L
- V01.b := V01.b/L
- V01.c := V01.c/L
- /* bestimme den Bisektionspunkt V12 für Kante V1V2 */
- V12.x := (V1.x * V2.x)/2
- V12.y := (V1.y * V2.y)/2
- V12.z := (V1.z * V2.z)/2
- /* bestimme den Flächen-Normalenvektor für Bisektionspunkt V12 */
- V12.a := (V1.a + V2.a)
- V12.b := (V1.b + V2.b)
- V12.c := (V1.c + V2.c)
- L := NORM(V12.a, V12.b, V12.c)
- V12.a := V12.a/L
- V12.b := V12.b/L
- V12.c := V12.c/L
- /* überprüfe jedes Unterdreieck auf seine Eignung zur Gouraud-Schattierung hin oder darauf hin, ob eine weitere Unterteilung erforderlich ist */
- /* für das Dreieck V01V12V02 */
- if (RECURSE_CONDITION(V01,V12,V02)
- then PSEUDO_PHONG (V01,V12,V02)
- else GOURAUD_SHADE(V01,V12,V02)
- /* für das Dreieck V0V01V02 */
- if (RECURSE_CONDITION(V0,V01,V02)
- then PSEUDO_PHONG (V0,V01,V02)
- else GOURAUD_SHADE(V0,V01,V02)
- /* für das Dreieck V01V1V12 */
- if (RECURSE_CONDITION(V01,V1,V12)
- then PSEUDO_PHONG (V01,V1,V12)
- else GOURAUD_SHADE(V01,V1,V12)
- /* für das Dreieck V02V12V2 */
- if (RECURSE_CONDITION(V02,V12,V2)
- then PSEUDO_PHONG (V02,V12,V2)
- else GOURAUD_SHADE(V02,V12,V2)
- end pseudo_phong
- Die durch die Boolesche Funktion RECURSE_CONDITION bestimmte Rekursionstiefe kann adaptiv ermittelt werden, indem die ungefähre Krümmung der Fläche in der Nähe der Facette untersucht wird. Auf jedem Rekursionsniveau, einschließlich dem nullten, ist ein Flächen-Normalenvektor mit der Länge Eins gegeben oder er wird für jeden Eckpunkt des Dreiecks oder Unterdreiecks berechnet. Dies ist dadurch bedingt, daß Normalenvektoren mit der Länge Eins für die Berechnungen des Beleuchtungsmodells erforderlich sind. Die drei Eckpunktflächen-Normalen eines Dreiecks (oder Unterdreiecks) werden verglichen, indem ihre Skalarprodukte berechnet werden und bestimmt wird, wie nahe sie an eins liegen. (Das Skalarprodukt von zwei Einheitsvektoren ist gleich dem Cosinus des Winkels zwischen den Vektoren). Wenn jedes der drei Skalarprodukte einen vorbestimmten Wert überschreitet, der von dem gewünschten Grad an Realitätsnähe abhängt, wird davon ausgegangen, daß die Fläche in der Nähe des Dreiecks (oder Unterdreiecks) eben ist. Alternativ kann das Vektorprodukt von zwei Vektoren berechnet werden und sein Wert mit Null verglichen werden. Liegt der Wert des Vektorprodukts ausreichend nahe an Null, kann das Dreieck oder Unterdreieck als genügend eben betrachtet werden, und eine Gouraud- Schattierung des Dreiecks (oder Unterdreiecks) ergibt eine zufriedenstellende Wiedergabe für ein diffuses Beleuchtungsmodell unter Verwendung von punktförmigen Lichtquellen mit unendlichem Abstand.
- Außerdem kann die Rekursion eine Funktion abhängig von der Größe des Unterdreiecks in Geräte-Koordinaten gerechnet sein. Da auf einem gegebenen Rekursionsniveau alle Unterdreiecke kongruent sind, haben sie alle dieselbe Größe, und daher hat eine Anwendung einer Größenbeschränkung auf die Rekursion zur Folge, daß jedes Unterdreieck gleich oft unterteilt wird. Benachbarte Dreiecke in der Anzeigeebene oder Parent-Dreiecke können jedoch unterschiedliche Größen haben, und lassen sich daher nicht gleich oft teilen. Erfolgt die Unterteilung im realen Raum, ermöglicht dieses Verfahren Lücken und Überschneidungen zwischen Parent-Dreiecken, wenn neue Eckpunkte eingeführt werden, die an benachbarte Dreiecke angrenzen sollten, was sie jedoch nicht tun. In einer Ausführungsform der Erfindung ist die Rekursionstiefe auf vier rekursive Aufrufe für jedes Dreieck der Anzeigeebene festgelegt, wodurch jedes Dreieck der Anzeigeebene in 256 Unterdreiecke unterteilt wird; dies hat nachweislich zu zufriedenstellenden Ergebnissen geführt.
- Eine Einschränkung der Rekursionstiefe ist durch die Anzahl von Parametern gegeben, die gespeichert werden können. Da bei jeder Unterteilung zusätzliche Parameter erzeugt und für die nächste Unterteilung gespeichert werden müssen, und die Gesamtzahl von speicherbaren Parametern begrenzt ist, ist auch die Anzahl von Unterteilungen, die durchgeführt werden kann, begrenzt.
- Die Funktion NORM liefert als Ergebnis die Länge oder Größe eines Vektors und kann auf mehrere Arten realisiert werden. Eine sehr genaue, jedoch rechnerisch aufwendige Version von NORM ist folgende.
- NORM (a,b,c,) = quadrat_wurzel (a*a + b*b + c*c)
- Eine schnellere, wenn auch geringfügig ungenauere Version ist gegeben durch
- NORM (a,b,c) = MAX (ABS(a),ABS(b),ABS(c))
- wobei die Funktion ABS den Absolutbetrag ihres Arguments ergibt. Bei gegebener Länge L des Vektors wird durch Teilen einer jeden Komponente durch L der Einheits-Flächen-Normalenvektor aus dem interpolierten Flächen-Normalenvektor erhalten
- Wird die Dreiecks-Unterteilung im realen Raum durchgeführt, dann ist die Prozedur GOURAUD_SHADE für die Transformation von Dreiecks-Eckpunkten in Pixelkoordinaten verantwortlich. Findet die Unterteilung hingegen im Pixelraum statt, dann erfolgt die Prozedur GOURAUD_SHADE gemäß der vorherigen Beschreibung der Gouraud-Schattierung.
- Wurde ein Dreieck oder Unterdreieck erst einmal als zur Gouraud-Schattierung geeignet eingestuft, müssen die Eckpunktdatenstrukturen für seine drei Eckpunkte vervollständigt werden, indem ein AErr-Wert und ein Ausgangs-Rasterpunkt (X&sub0;,Y&sub0;) für jede Kante berechnet werden. Da Eckpunkte eines Unterdreiecks nicht unbedingt mit Rasterpunkten zusammenfallen, unterscheidet sich die Berechnung dieser Parameter geringfügig von dem Fall eines Parent-Dreiecks, bei dem die Eckpunkte an Rasterpunkten liegen. Der Bresenham-Algorithmus arbeitet durch inkrementale Berechnung von Variablen zur Bestimmung der Position eines gegebenen Rasterpunkts bezüglich einer Linie. Bei der Belegung eines bestimmten Unterdreiecks müssen Werte für AErr, X&sub0; und Y&sub0; bestimmt werden, als würde mit dem Bresenham- Algorithmus das Parent-Dreieck belegt und es wäre gerade das bestimmte Unterdreieck erreicht worden. Der Bresenharn-Algorithmus könnte als Simulation einer Belegung des Parent-Dreiecks ausgeführt werden, um diese Werte zum Zeitpunkt zu erfassen, an dem der Bereich des Unterdreiecks erreicht wird. Jedoch wird in der nachstehenden Berechnung diese Aufgabe effizienter durchgeführt. Es wird von Kante V01V12 des Dreiecks V01V12V02 ausgegangen. Aus den Eckpunktdatenstrukturen für das Parent-Dreieck sind Werte für PInc, NInc und s für die Kante V01V12 aus den Werten für Kante V0V2 bekannt. Mit
- slope = DX20/DY20
- s = floor(slope)
- Zur Berechnung von AErr und eines Ausgangs-Rasterpunkts (X&sub0;,Y&sub0;) für die Kante V01V12 zur Belegung des Unterdreiecks V01V12V02:
- Y&sub0; = floor(V01.y)
- X&sub0;real = V01.x - slope*(V01.y - Y0)
- X&sub0; = floor(X&sub0;real)
- AErr = floor(((X&sub0;real+slope) - (X&sub0;+s)-1)*DY20)
- Befindet sich die Kante V01V02 links, ist der Ausgangs-X-Wert für diese Kante X&sub0;+1, ansonsten ist er X&sub0;.
- Alle erforderlichen Bresenham-Parameter für die Kante V01V12 liegen nun vor: s, PInc und NInc aus dem Parent-Dreieck und AErr, X&sub0; und Y&sub0; wie voranstehend berechnet. Ähnliche Berechnungen werden durchgeführt, um die Bresenharn-Parameter für die Kanten V12V02 und V02V01 zu vervollständigen. Die Berechnung der Intensitätswerte für die Eckpunkte V01, V12 und V02 werden durch Anwendung eines ausgewählten Beleuchtungsmodells auf die entsprechenden Eckflächen-Normalenvektoren abgeleitet, und das Unterdreieck V01V12V02 wird unter Verwendung des XY-Adressengenerators 2 und des I-Generators 6 wie voranstehend beschrieben einer Gouraud-Schattierung unterzogen.
- Somit wurde ein Verfahren zur Schattierung eines Anzeigebereichs aufgezeigt, welches geringeren Rechneraufwand erfordert und dabei im Vergleich zu einer Phong-Schattierung fast dieselbe visuelle Güte erzielt. Wird es in Verbindung mit einem Bresenham-Algorithmus zur Schattierung von durch Kantenbisektion gebildeten Unterdreiecken eingesetzt, sind für die Dreiecksfläche berechnete inkrementale Bresenharn-Parameter auch auf dessen Unterdreiecke anwendbar.
- Es versteht sich, daß die vorliegende Erfindung nicht auf das bestimmte, im vorliegenden Text beschriebene Verfahren beschränkt ist, und daß Änderungen an ihr vorgenommen werden können, ohne vom Umfang der Erfindung, wie er in den beigefügten Ansprüchen und ihren Äquivalenten definiert ist, abzuweichen. Zum Beispiel muß die Gouraud-Schattierung nicht auf ein Unterdreieck angewandt werden, da auch eine konstante Schattierung durchgeführt werden kann, wenn eine weniger realistischere Darstellung annehmbar ist. Für den Fall, daß zur Bestimmung, ob eine weitere Rekursion erfolgen soll, Skalarprodukte berechnet werden, müssen nicht alle drei Skalarprodukte der Eckpunkt-Einheits-Normalen für ein Dreieck (oder Unterdreieck) ausgewertet werden, da, wenn zwei der Skalarprodukte fast eins ergeben, das dritte Skalarprodukt nicht sehr viel kleiner als eins sein wird.
- Das Verfahren der vorliegenden Erfindung findet auch über eine Dreiecksunterteilung durch Kantenbisektion hinaus zum Erhalt von vier kongruenten Unterdreiecken Anwendung. Auch andere Verfahren können zur Erzeugung von Unterdreiecken herangezogen werden. Es können beispielsweise Parent-Dreiecke unterteilt werden, indem der Bisektionspunkt einer Kante bestimmt wird und dieser Punkt mit dem gegenüberliegenden Eckpunkt verbunden wird, um ein Parent-Dreieck in zwei Unterdreiecke zu unterteilen, wobei die Positionskoordinatenwerte und Komponentenwerte der Flächen-Normalenvektoren von den Endpunkten der halbierten Kante weg interpoliert werden.
Claims (10)
1. Verfahren zur Schattierung einer Darstellung einer
Dreiecksfläche mit normalen Vektoren, die an jedem
Scheitelpunkt (V0, V1, V2) der Dreiecksfläche verbunden sind, mit
folgenden Verfahrensschritten:
(a) Definieren von drei Punkten (V01, V02, V12), von
denen jeder auf einer der drei Kanten der Dreiecksfläche
liegt, so daß ein erstes, zweites, drittes und viertes
Unterdreieck entsteht (V0, V01, V02; V01, V1, V12; V02,
V12, V2; V01, V02, V12), wobei jedes erste, zweite und
dritte Unterdreieck einen seiner drei Scheitelpunkte mit
einem entsprechenden Scheitelpunkt der Dreiecksfläche
gemeinsam hat, und zwei dieser drei Punkte als seine
anderen zwei Scheitelpunkte, und das vierte Unterdreieck
diese drei Punkte als seine Scheitelpunkte hat;
(b) jeweils Ableiten interpolierter normaler
Vektoren für diese drei Punkte aus den normalen Vektoren, die
mit den Scheitelpunkten der Dreiecksfläche verbunden
sind; und
(c) wenn die normalen Vektoren für die drei
Scheitelpunkte eines Unterdreiecks in einem vorbestimmten
Verhältnis zueinander stehen: jeweils Berechnen von
Intensitätswerten für diese drei Scheitelpunkte und Verwenden
der berechneten Intensitätswerte zur Schattierung des
Unterdreiecks, ansonsten Wiederholen der Schritte (a) und
(b) bezüglich eines jeden Unterdreiecks, bis das
vorbestimmte Verhältnis erfüllt ist, bevor die
Berechnungsund Verwendungsschritte durchgeführt werden.
2. Verfahren zur Schattierung einer Darstellung einer
gekrümmten Fläche, die aus einer Dreiecksfläche modelliert
wurde, welche definiert ist durch drei Scheitelpunkte
(V0, V1, V2), drei diese Scheitelpunkte verbindende
gerade
Linien und Normalen (N0, N1, N2) zu der gekrümmten
Fläche, die mit jedem Scheitelpunkt verbunden sind, wobei
das Verfahren folgende Verfahrensschritte umfaßt:
(a) wenn die Normalen in einem vorbestimmten
Verhältnis zueinander stehen: jeweils Berechnen von
Intensitätswerten für die drei Scheitelpunkte und Verwenden der
berechneten Intensitätswerte zur Schattierung der
Dreiecksfläche;
(b) anderenfalls:
(i) Berechnen von drei Punkten (V01, V02,
V12), die jeweils die drei geraden Linien teilen, wodurch
vier kongruente Unterdreiecke (V0, V01, V02; V01, V1,
V12; V02, V12; V2; V01, V02, V12) definiert werden,
(ii) jeweils Ableiten interpolierter Normalen
(N01, N02, N12) für diese drei Punkte aus den Normalen,
die mit jedem Scheitelpunkt, der die Dreiecksfläche
definiert, verbunden sind, und
(iii) wenn die Normalen für die drei
Scheitelpunkte eines Unterdreiecks in diesem vorbestimmten
Verhältnis zueinander stehen: jeweils Berechnen von
Intensitätswerten für diese drei Scheitelpunkte und Verwenden
der berechneten Intensitätswerte zur Schattierung des
Unterdreiecks, anderenfalls Wiederholen der Schritte (i)
und (ii) bezüglich eines jeden Unterdreiecks, bis das
vorbestimmte Verhältnis erfüllt ist, bevor die
Berechnungs- und Verwendungsschritte durchgeführt werden.
3. Computergraphiksystem mit:
(a) einem Anzeigegerat mit einer Anzeigefläche, die
durch einen Satz Rasterpunkte in Rechtecksanordnung
definiert ist;
(b) einer Anzeigeadreßvorrichtung zur Erzeugung
eines Anzeigeadressensignals mit einer X-Komponente und
einer Y-Komponente für jeden Rasterpunkt des Satzes von
Rasterpunkten;
(c) eine Bildprozessorvorrichtung (1, 6) zum
Empfangen einer Anzeigeliste, die die Positionen von wenigstens
drei Scheitelpunkten (X0, Y0), (X1, Y1) und (X2, Y2) und
Flächen-Normalenvektoren N0, N1 und N2 für die drei
Scheitelpunkte (X0, Y0), (X1, Y1) bzw. (X2, Y2) enthält,
wobei die Bildprozessorvorrichtung automatisch
Intensitätswerte erzeugt, die mit Rasterpunkten korrespondieren,
welche innerhalb der Dreiecksfläche des durch die drei
Scheitelpunkte definierten Bereichs liegen, indem sie
folgende Operationen durchführt:
(i) Definieren von Punkten (X3, Y3) und (X4,
Y4) auf Linien, die den Punkt (X0, Y0) mit den Punkten
(X1, Y1) bzw. (X2, Y2) verbinden, so daß ein Unterdreieck
durch die Punkte (X0, Y0), (X3, Y3) und (X4, Y4)
definiert ist,
(ii) Ableiten von normalen Vektoren N3 und N4
für die Punkte (X3, Y3) bzw. (X4, Y4) von den normalen
Vektoren N0, N1 und N2,
(iii) Bestimmen, ob die normalen Vektoren N0,
N3 und N4 in einem vorbestimmten Verhältnis zueinander
stehen,
wenn dies zutrifft: (iv) Berechnen von
Intensitätswerten I0, I3 und I4 für die Punkte (X0, Y0), (X3,
Y3) bzw. (X4, Y4), und
(v) Berechnen von Intensitätswerten für
Rasterpunkte innerhalb des Unterdreiecks aus wenigstens einem
der Werte I0, I3 und I4,
anderenfalls: (vi) Wiederholen der Schritte (i)
bis (iii) bezüglich des Unterdreiecks, bis das
vorbestimmte Verhältnis erfüllt ist, bevor die Schritte (iv)
und (v) durchgeführt werden;
(d) einer elektronischen Speichervorrichtung (5) mit
einem Satz adressierbarer Speicherplätze entsprechend dem
Satz von Rasterpunkten; und
(e) einer Vorrichtung (2, 3, 4) zum Laden der
berechneten Intensitätswerte in die entsprechenden
Speicherplätze der Speichervorrichtung (5), um eine
Schattierung des Unterdreiecks darzustellen.
4. Computergraphiksystem nach Anspruch 3, wobei die
Bildprozessorvorrichtung (1, 6) automatisch Intensitätswerte
berechnet, die mit Rasterpunkten korrespondieren, welche
innerhalb der Dreiecksfläche des von den drei
Scheitelpunkten (X0, Y0), (X1, Y1) und (X2, Y2) definierten
Bereichs liegen, indem sie folgende Operationen durchführt:
(i) Definieren von drei Punkten, von denen jeder auf
einem der drei Kanten der Dreiecksfläche liegt, so daß
ein erstes, zweites, drittes und viertes Unterdreieck
gebildet wird, wobei jedes erste, zweite und dritte
Unterdreieck einen seiner drei Scheitelpunkte mit einem
entsprechenden Scheitelpunkt der Dreiecksfläche gemeinsam
hat und zwei dieser drei Punkte seine zwei anderen
Scheitelpunkte bilden, und beim vierten Unterdreieck diese
drei Punkte seine Scheitelpunkte darstellen,
(ii) jeweils Ableiten interpolierter normaler
Vektoren für diese drei Punkte aus den normalen Vektoren, die
mit den Scheitelpunkten der Dreiecksfläche verbunden
sind, und
(iii) wenn die normalen Vektoren für die drei
Scheitelpunkte eines Unterdreiecks in dem vorbestimmten
Verhältnis zueinander stehen: jeweils Berechnen von
Intensitätswerten für diese drei Scheitelpunkte, anderenfalls
Wiederholen der Schritte (i) und (ii) bezüglich eines
jeden Unterdreiecks, bis das vorbestimmte Verhältnis
erfüllt ist, bevor der Berechnungsschritt durchgeführt
wird.
5. Computergraphiksystem nach Anspruch 4, wobei in Schritt
(i) die drei Punkte die entsprechenden Kanten der
Dreiecksfläche teilen, wodurch die vier Unterdreiecke
kongruent sind.
6. Computergraphiksystem mit:
(a) einem Anzeigegerat mit einer Anzeigefläche, die
durch einen Satz Rasterpunkte in Rechtecksanordnung
definiert ist;
(b) einer Anzeigeadreßvorrichtung zur Erzeugung
eines Anzeigeadressensignals mit einer X-Komponente und
einer Y-Komponente für jeden Rasterpunkt des Satzes von
Rasterpunkten;
(c) eine Bildprozessorvorrichtung (1, 6) zum
Empfangen einer Anzeigeliste, die die Positionen von wenigstens
drei Scheitelpunkten (X0, Y0), (X1, Y1) und (X2, Y2) und
Flächen-Normalenvektoren N0, N1 und N2 für die drei
Scheitelpunkte (X0, Y0), (X1, Y1) bzw. (X2, Y2) enthält,
wobei die Bildprozessorvorrichtung automatisch
Intensitätswerte erzeugt, die mit Rasterpunkten korrespondieren,
welche innerhalb der Dreiecksfläche des durch die drei
Scheitelpunkte definierten Bereichs liegen, indem sie
folgende Operationen durchführt:
(i) Definieren eines Scheitelpunktes (X3, Y3)
durch Bezug auf zwei der drei Scheitelpunkte (X0, Y0),
(X1, Y1) und (X2, Y2), so daß ein Unterdreieck durch den
Scheitelpunkt (X3, Y3) und die zwei Scheitelpunkte
definiert ist,
(ii) Ableiten eines Flächen-Normalenvektors N3
für den Scheitelpunkt (X3, Y3) durch Interpolation der
normalen Vektoren für die zwei Scheitelpunkte,
(iii) Bestimmen, ob die normalen Vektoren für
das Unterdreieck in einem vorbestimmten Verhältnis
zueinander stehen,
wenn dies zutrifft: (iv) Berechnen von
Intensitätswerten für die Scheitelpunkte, die das Unterdreieck
definieren, und
(v) Berechnen von Intensitätswerten für
Rasterpunkte innerhalb des Unterdreiecks aus wenigstens einem
der berechneten Intensitätswerte,
anderenfalls: (vi) Wiederholen der Schritte (i)
bis (iii) bezüglich des Unterdreiecks, bis das
vorbestimmte Verhältnis erfüllt ist, bevor die Schritte (iv)
und (v) durchgeführt werden;
(d) einer elektronischen Speichervorrichtung (5) mit
einem Satz adressierbarer Speicherplätze entsprechend dem
Satz von Rasterpunkten; und
(e) einer Vorrichtung (2, 3, 4) zum Laden der
berechneten Intensitätswerte in die entsprechenden
Speicherplätze der Speichervorrichtung (5), um eine
Schattierung des Unterdreiecks darzustellen.
7. Computergraphiksystem nach einem der Ansprüche 4 bis 6,
wobei die Vorrichtung zum Laden von Intensitätswerten in
das Speichergerät einen XY-Adressengenerator (2) umfaßt,
der mit der Bildprozessorvorrichtung (1) verbunden ist,
um die Adressen der Speicherplätze, die mit den Punkten
innerhalb des Unterdreiecks korrespondieren, automatisch
zu erzeugen und die Adressen an das Speichergerät (5) zu
legen.
8. Computergraphiksystem nach einem der Ansprüche 4 bis 7,
wobei die Bildprozessorvorrichtung einen Bildprozessor
(1) zum Empfangen der Anzeigeliste und einen mit dem
Bildprozessor verbundenen I-Generator (6) zur Erzeugung
der Intensitätswerte umfaßt.
9. Computergraphiksystem nach Anspruch 4, wobei die
Bildprozessorvorrichtung (1, 6) durch Auswertung von mindestens
zwei Skalarprodukten der normalen Vektoren N0, N3 und N4
bestimmt, ob die normalen Vektoren N0, N3 und N4 in dem
vorbestimmten Verhältnis zueinander stehen.
10. Computergraphiksystem nach Anspruch 4, wobei die
Bildprozessorvorrichtung (1, 6) durch Auswertung von mindestens
zwei Vektorprodukten der normalen Vektoren N0, N3 und N4
bestimmt, ob die normalen Vektoren N0, N3 und N4 in dem
vorbestimmten Verhältnis zueinander stehen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/263,294 US5142617A (en) | 1988-10-27 | 1988-10-27 | Method of shading a graphics image |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68927471D1 DE68927471D1 (de) | 1997-01-02 |
DE68927471T2 true DE68927471T2 (de) | 1997-06-05 |
Family
ID=23001165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68927471T Expired - Fee Related DE68927471T2 (de) | 1988-10-27 | 1989-10-26 | Verfahren zur Schattierung eines graphischen Bildes |
Country Status (4)
Country | Link |
---|---|
US (1) | US5142617A (de) |
EP (1) | EP0366463B1 (de) |
JP (1) | JPH0724074B2 (de) |
DE (1) | DE68927471T2 (de) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2697118B2 (ja) * | 1989-04-20 | 1998-01-14 | ダイキン工業株式会社 | シェーディング表示方法およびその装置 |
US5163126A (en) * | 1990-05-10 | 1992-11-10 | International Business Machines Corporation | Method for adaptively providing near phong grade shading for patterns in a graphics display system |
US5253339A (en) * | 1990-07-26 | 1993-10-12 | Sun Microsystems, Inc. | Method and apparatus for adaptive Phong shading |
JPH0683969A (ja) * | 1990-11-15 | 1994-03-25 | Internatl Business Mach Corp <Ibm> | グラフィックス・プロセッサ及びグラフィックス・データ処理方法 |
JPH05250445A (ja) * | 1992-03-09 | 1993-09-28 | A T R Tsushin Syst Kenkyusho:Kk | 三次元モデルデータ生成装置 |
GB9223314D0 (en) * | 1992-11-06 | 1992-12-23 | Canon Res Ct Europe Ltd | Processing image data |
US5428718A (en) * | 1993-01-22 | 1995-06-27 | Taligent, Inc. | Tessellation system |
GB2278524B (en) * | 1993-05-28 | 1997-12-10 | Nihon Unisys Ltd | Method and apparatus for rendering visual images employing area calculation and blending of fractional pixel lists for anti-aliasing and transparency |
GB9315852D0 (en) * | 1993-07-30 | 1993-09-15 | Video Logic Ltd | Shading three-dimensional images |
US5729672A (en) * | 1993-07-30 | 1998-03-17 | Videologic Limited | Ray tracing method and apparatus for projecting rays through an object represented by a set of infinite surfaces |
US5528737A (en) * | 1993-12-14 | 1996-06-18 | Silicon Graphics, Inc. | Processor-based method for rasterizing polygons at an arbitrary precision |
JPH07182537A (ja) * | 1993-12-21 | 1995-07-21 | Toshiba Corp | 図形描画装置および図形描画方法 |
JPH0870751A (ja) * | 1994-09-01 | 1996-03-19 | Komatsu Denshi Kk | 磁場を利用したソーラー付き鳥類飛来防止装置 |
US5673379A (en) * | 1995-03-20 | 1997-09-30 | Hewlett-Packard Company | Scan line generator for area fill of extensible polygons |
US5710879A (en) * | 1995-06-08 | 1998-01-20 | Hewlett-Packard Company | Method and apparatus for fast quadrilateral generation in a computer graphics system |
US5651106A (en) * | 1995-06-08 | 1997-07-22 | Hewlett-Packard Company | Method and apparatus for vertex sorting in a computer graphics system |
US5657436A (en) * | 1995-06-08 | 1997-08-12 | Hewlett-Packard Company | Preprocessing apparatus and method for line scan conversion in a computer graphics system |
US5936635A (en) * | 1996-06-28 | 1999-08-10 | Cirrus Logic, Inc. | System and method of rendering polygons into a pixel grid |
US6400365B1 (en) | 1996-12-05 | 2002-06-04 | Ryozo Setoguchi | Display method of three-dimensional shape |
DE19714915A1 (de) * | 1997-04-03 | 1998-10-08 | Gmd Gmbh | Bilddarstellungsverfahren und Vorrichtung zur Durchführung des Verfahrens |
JP3705923B2 (ja) * | 1998-04-09 | 2005-10-12 | 株式会社ソニー・コンピュータエンタテインメント | 画像処理装置および画像処理方法、プログラム提供媒体、並びにデータ提供媒体 |
US6249286B1 (en) * | 1998-10-31 | 2001-06-19 | Hewlett-Packard Company | Memory efficient surface normal compression |
EP1026639A3 (de) | 1999-02-04 | 2002-09-04 | Canon Kabushiki Kaisha | 3D-Rechnergraphik-Verarbeitungsgerät und -verfahren |
EP1033683B1 (de) | 1999-03-01 | 2006-03-22 | Canon Kabushiki Kaisha | Bildverarbeitungsgerät |
DE19915308A1 (de) * | 1999-04-03 | 2000-10-12 | Daimler Chrysler Ag | Verfahren zur zweidimensionalen Bildpunkt-Darstellung von Objekten auf einer Anzeigevorrichtung |
EP1307827A1 (de) * | 2000-05-04 | 2003-05-07 | Compudigm International Limited | Verfahren und system zur erzeugung einer konturierten oberfläche |
US6621495B1 (en) * | 2000-06-08 | 2003-09-16 | International Business Machines Corporation | Method and apparatus to handle immediate mode data streams in a data processing system |
GB0017962D0 (en) * | 2000-07-22 | 2000-09-13 | Pace Micro Tech Plc | Method for vector length calculation in data processing |
TW580642B (en) * | 2001-08-23 | 2004-03-21 | Ulead Systems Inc | Processing method using 2-dimension graphics to draw 3-dimension objects |
US7129942B2 (en) * | 2002-12-10 | 2006-10-31 | International Business Machines Corporation | System and method for performing domain decomposition for multiresolution surface analysis |
US7382369B2 (en) * | 2003-10-10 | 2008-06-03 | Microsoft Corporation | Systems and methods for robust sampling for real-time relighting of objects in natural lighting environments |
US9208603B2 (en) * | 2012-05-03 | 2015-12-08 | Zemax, Llc | Methods and associated systems for simulating illumination patterns |
US9965893B2 (en) * | 2013-06-25 | 2018-05-08 | Google Llc. | Curvature-driven normal interpolation for shading applications |
AU2013206560A1 (en) | 2013-06-27 | 2015-01-22 | Canon Kabushiki Kaisha | Method, system and apparatus for rendering |
IL233523A (en) | 2014-07-06 | 2017-06-29 | Au10Tix Ltd | A system and method for quantifying repetition such as in the analysis of laminated documents |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60186967A (ja) * | 1984-03-05 | 1985-09-24 | Fanuc Ltd | 画像表示方法 |
US4608653A (en) * | 1984-03-30 | 1986-08-26 | Ryozo Setoguchi | Form creating system |
CA1250064A (en) * | 1985-03-29 | 1989-02-14 | Kenichi Anjyo | Method for constructing three-dimensional polyhedron model |
JPS61251967A (ja) * | 1985-04-30 | 1986-11-08 | Fanuc Ltd | 画像処理装置 |
US4791583A (en) * | 1987-05-04 | 1988-12-13 | Caterpillar Inc. | Method for global blending of computer modeled solid objects using a convolution integral |
-
1988
- 1988-10-27 US US07/263,294 patent/US5142617A/en not_active Expired - Fee Related
-
1989
- 1989-10-26 EP EP89311044A patent/EP0366463B1/de not_active Expired - Lifetime
- 1989-10-26 JP JP1279605A patent/JPH0724074B2/ja not_active Expired - Lifetime
- 1989-10-26 DE DE68927471T patent/DE68927471T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0724074B2 (ja) | 1995-03-15 |
DE68927471D1 (de) | 1997-01-02 |
US5142617A (en) | 1992-08-25 |
EP0366463A3 (de) | 1992-01-08 |
EP0366463B1 (de) | 1996-11-20 |
JPH02171877A (ja) | 1990-07-03 |
EP0366463A2 (de) | 1990-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68927471T2 (de) | Verfahren zur Schattierung eines graphischen Bildes | |
DE3855231T2 (de) | Prioritätsauflösungssystem zwischen Polygonen mit Antialiasing | |
DE69032932T2 (de) | System und Verfahren zum unverfälschten Polygonenzeichnen | |
DE69130132T2 (de) | Verfahren zur Erzeugung von Adressen zu texturierten, in RIP Maps gespeicherten graphischen Primitiven | |
DE69130123T2 (de) | Anzeigegerät und Verfahren zum Betreiben eines solchen Geräts | |
DE3750784T2 (de) | Generation eines intrapolierten charakteristischen Wertes zur Anzeige. | |
DE3650129T2 (de) | Verfahren zur Kantenglättung für Rechnerbilderzeugungssystem. | |
DE3854543T2 (de) | Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung. | |
DE69713164T2 (de) | Rechnersystem und verfahren zum definieren und herstellen von bildern unter benutzung von strukturierten objekten mit veränderlichen kantenkarakteristiken | |
DE69126611T2 (de) | Bilderzeugungsgerät | |
DE3853393T2 (de) | Verfahren und Vorrichtung zur zweidimensionalen Bilderstellung. | |
DE60032832T2 (de) | Darstellung einer gekrümmten Oberfläche in mehreren Auflösungen | |
DE69716877T2 (de) | System und Verfahren zur genauen Gradientberechnung für die Texturabbildung in einem Computergraphiksystem | |
DE69129427T2 (de) | Pixelinterpolation im Perspektivraum | |
DE102005050846A1 (de) | Perspektiveneditierwerkzeuge für 2-D Bilder | |
DE3854223T2 (de) | Erzeugung und Anzeige von Rechnergraphiken. | |
DE69120407T2 (de) | Bildgenerator | |
DE3022454A1 (de) | Optisches abbildesystem mit computererzeugtem bild fuer einen bodenfesten flugsimulator | |
EP1175663A1 (de) | Verfahren zur rasterisierung eines graphikgrundelements | |
DE4211385A1 (de) | Daten-projektionssystem | |
DE69631718T2 (de) | Verfahren und Gerät zur leistungsfähigen Graphikdarstellung dreidimensionaler Szenen | |
DE60106301T2 (de) | Verfahren und system für die ausfuhr von datenverbänden zu zweidimensionalen oder dreidimensionalen geometrischen entitäten | |
DE102012210521A1 (de) | Unbeschnittene Zeit- und Linsen-Begrenzungen für verbesserte Probentest- Effizienz bei Bild-Rendering | |
DE69606177T2 (de) | Verfahren und gerät zur texturabbildung | |
DE69924230T2 (de) | Verfahren zur Modellierung von durch Oberflächenelemente dargestellten grafischen Objekten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |