DE68927471T2 - Verfahren zur Schattierung eines graphischen Bildes - Google Patents

Verfahren zur Schattierung eines graphischen Bildes

Info

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
Application number
DE68927471T
Other languages
English (en)
Other versions
DE68927471D1 (de
Inventor
John C Dalrymple
V B Sureshkumar
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tektronix Inc
Original Assignee
Tektronix Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tektronix Inc filed Critical Tektronix Inc
Publication of DE68927471D1 publication Critical patent/DE68927471D1/de
Application granted granted Critical
Publication of DE68927471T2 publication Critical patent/DE68927471T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • G06T15/87Gouraud shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • G06T15/83Phong shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Description

    Hintergrund der Erfindung
  • 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.
  • Zusammenfassung der Erfindung
  • 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.
  • Beschreibung der Zeichnungen
  • 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.
  • Detaillierte Beschreibung
  • 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.
DE68927471T 1988-10-27 1989-10-26 Verfahren zur Schattierung eines graphischen Bildes Expired - Fee Related DE68927471T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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