DE3750784T2 - Generation eines intrapolierten charakteristischen Wertes zur Anzeige. - Google Patents
Generation eines intrapolierten charakteristischen Wertes zur Anzeige.Info
- Publication number
- DE3750784T2 DE3750784T2 DE3750784T DE3750784T DE3750784T2 DE 3750784 T2 DE3750784 T2 DE 3750784T2 DE 3750784 T DE3750784 T DE 3750784T DE 3750784 T DE3750784 T DE 3750784T DE 3750784 T2 DE3750784 T2 DE 3750784T2
- Authority
- DE
- Germany
- Prior art keywords
- error
- pel
- value
- parameter value
- integer
- 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 claims description 35
- 239000013598 vector Substances 0.000 description 37
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 5
- 230000012447 hatching Effects 0.000 description 5
- 101150083341 LOG2 gene Proteins 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000013139 quantization Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 101100443272 Arabidopsis thaliana DIR2 gene Proteins 0.000 description 1
- 102100038804 FK506-binding protein-like Human genes 0.000 description 1
- 101001031402 Homo sapiens FK506-binding protein-like Proteins 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 230000002441 reversible 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/17—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
- G06F17/175—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method of multidimensional data
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Digital Computer Display Output (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf die Generation eines interpolierten charakteristischen Wertes zur Anzeige und beschreibt ein Verfahren und eine Einrichtung zur Bereitstellung der interpolierten charakteristischen Werte zur Anzeige von Pels in einem anzeigbaren Polygon.
- Computer-Graphikanzeigesysteme sind Computersysteme, die Graphikbilder auf einem Bildschirm mit Rasterabtastung erzeugen und anzeigen. Die Graphikbilder kommen von digitalen Daten, die im Systemspeicher gespeichert sind. Die Daten werden normalerweise in Form von Punkten in einem zwei- oder dreidimensionalen Koordinatensystem gespeichert, in dem die Punkte den Spitzen von Polygonen entsprechen, z.B. Dreiecken. Die Polygone bilden die "Bausteine" von größeren Objekten, die angezeigt werden. Zusammen mit den Scheitelpunktdaten werden noch Parameterdaten gespeichert, wie beispielsweise Intensität oder andere Werte zur Berechnung der Intensität, z.B. Oberflächenfarbe, Reflexionsvermögen der Oberfläche, Transparenz, Lichtquellen und normale Vektoren.
- Die Daten werden für ein bestimmtes Objekt in Form einer Instruktionsliste gespeichert, die als "Anzeigeliste" bezeichnet wird. Um eine solche Anzeigeliste in ein Bild auf einem Bildschirm mit Rasterabtastung umzuwandeln, steht ein Anzeigeprozessor zur Verfügung, der die Liste aus dem Speicher liest, die Daten verarbeitet und Pel-Rohdaten in einen Anzeigenspeicher schreibt. Der Anzeigenspeicher wird in Rasterabtastungs-Echtzeit gelesen und der sich daraus ergebende Datenfluß wird in ein analoges Videosignal umgewandelt, das zum Bildschirm gesendet wird.
- Die vorliegende Erfindung bezieht sich auf eine Funktion im Anzeigeprozessorteil des Computergraphiksystems. Die Erfindung beschäftigt sich dabei insbesondere mit der Erzeugung von Daten in bezug auf einen dritten Parameterwert für alle Pel- Werte eines angezeigten Dreiecks, die auf der Pel-Position beruhen, sowie mit der Erzeugung von anderen Daten in bezug auf den dritten Parameter. Beispielsweise beim sogenannten Schraffierungsproblem erhält der Anzeigeprozessor für ein bestimmtes Dreieck Schraffierungsinformationen in Form von der Lichtstärke der Spitzen des Dreiecks. Der Anzeigeprozessor kann alternativ dazu auch die Parameter der Objektoberfläche, die Oberflächenausrichtung und das spezifizierte Lichtmodell erhalten. Der Anzeigeprozessor muß daraufhin für jedes zum Dreieck gehörende Pel einen Lichtstärkewert auf der Grundlage der bereitgestellten Werte berechnen.
- Das Schraffierungsproblem wurde in der herkömmlichen Technik allgemein mit "Gouraud-Schraffierung" zu lösen versucht, die im Zusammenhang mit Polygonen implementiert wurde. In einem Fall beispielsweise wird die Intensität der Polygonpunkte in zwei Stufen berechnet. Zuerst werden die Intensitätswerte aller Pels, die zu jeder Kante gehören, in Abhängigkeit von den Kantenendpunkten (Spitzen) mit Hilfe von eindimensionaler linearer Interpolation berechnet. Danach wird die Pel-Intensität in jeder zum Polygon gehörenden Reihe (oder Spalte) in Abhängigkeit von den zuvor berechneten Intensitäten bestimmt, wobei zwischen zwei Endpunkten interpoliert wird. Der Begriff Intensität bezieht sich in diesem Zusammenhang auf die Helligkeit der Pels, wenn das Objekt in Graustufen (monochrom) vorliegt, oder auf die Rot-, Grün-, und Blauwerte bei einem Farbobjekt.
- Ein weiteres Beispiel ist in "A 3-D Graphic Display System With Depth Buffer and Pipeline Processor" von A. Fujimoto et al., IEEE CG & A, (Juni 1984), Seite 11 beschrieben. Hier wurden die elementaren Anzeigepolygone zuerst "schachbrettartig eingeteilt", d.h. in Dreiecke unterteilt. Dadurch wird sichergestellt, daß das betreffende Dreieck eine eindeutige Ebene definiert. Die Intensität jedes Pel wird mit Hilfe der zuvor erwähnten linearen Interpolationsmethode bestimmt, wobei dabei die Intensität von vorherigen, benachbarten Pels durch die Addierung einer festen Inkrementmenge für eine X-Bewegung und einer weiteren festen Inkrementmenge für eine Y-Bewegung berechnet wird.
- Das Problem bei dem von Fujimoto vorgeschlagenen Verfahren liegt darin, daß die arithmetische Genauigkeit zur Darstellung der Inkremente hoch genug sein muß, um eine umfangreiche Fehlersummierung zu vermeiden, wenn der Prozeß wiederholt bei allen Punkten des Dreiecks angewendet wird.
- Ein weiteres Beispiel für die Funktion, auf die sich die vorliegende Erfindung bezieht, ist die Berechnung der Z-Werte jedes zum Dreieck gehörenden Pel auf der Grundlage der X-, Y- und Z-Werte der Spitzen des Dreiecks. Die herkömmlichen Berechnungsmethoden sind im wesentlichen die gleichen wie bei dem oben beschriebenen Verfahren zur Berechnung des Intensitätswertes für jeden Punkt auf dem Dreieck.
- Die größte Nachteil der herkömmlichen Technik liegt in der fehlenden Genauigkeit der berechneten Intensitäten (oder Z- Werte) aufgrund der Quantisierung der X- und Y-Koordinaten oder Fehlersumnierung. Bei praktischen Computergraphiksystemen mit Rasterabtastung sind Linien, die Kanten definieren, nicht immer gerade Linien. Die Position eines Punktes auf einer Dreieckskante kann von der theoretischen Position abweichen, so daß die berechnete Intensität nicht mit dem richtigen Wert übereinstimmt.
- Die vorliegende Erfindung bietet eine Lösung für die genannten Probleme und ermöglicht die Berechnung der Intensität jedes Punktes auf dem Polygon mit einer Fehlerrate, die 0,5 Intensitätseinheiten nicht überschreitet, oder die Bestimmung anderer Mengen wie beispielsweise die Z-Werte für Pels.
- Darüber hinaus wird auf einen Artikel von D. Field in ACM Transactions on Graphics, Vol. 4, Nr. 1, Januar 1985, Seite 1 bis 11 verwiesen. In diesem Artikel beschreibt der Autor zwei inkrementale, lineare Interpolationsalgorithmen, die durch Geschwindigkeit und Genauigkeit geprüft wurden. Beim ersten Algorithmus handelt es sich um einen einfachen digitalen Differentialanalysator mit Festkomma-Arithmetik, während der zweite Algorithmus eine Verallgemeinerung des Bresenhamschen Zeichnungsalgorithmus ist, der sehr genau ist und schneller als der Festkomma-Algorithmus sein kann.
- Die vorliegende Erfindung stellt in einem Computer-Graphikanzeigeverarbeitungssystem, zu dem ein Speicher, ein Anzeigeprozessor und ein Anzeigemittel zur Anzeige von Graphikobjekten gehört, bei dem ein Graphikobjekt in einem Speicher durch Positionsdaten dargestellt wird, die den Positionen von Pels in einem zweidimensionalen Raum in Form einer ersten und zweiten Achse entsprechen, aus denen sich das Graphikobjekt zusammensetzt, sowie durch Parameterwerte, die einer Anzeigecharakteristik in bezug auf die Positionsdaten entsprechen, ein Verfahren zur Bereitstellung interpolierter charakteristischer Parameterwerte zur Anzeige für jedes Pel auf dem Rasterabtastungs-Anzeigemittel vor, das zu einem anzeigbaren Graphikobjekt gehört, wobei das Verfahren folgende Schritte umfaßt:
- die Bereitstellung von Positionsdaten und Parameterwertdaten für zahlreiche Pels, die ausgewählte Punkte auf dem Graphikobjekt zur Interpolation darstellen, um davon die Parameterwertdaten für die anderen Pels des Graphikobjekts zu erzeugen;
- auf der Grundlage der zahlreichen Pels, die ausgewählte Punkte auf dem Graphikobjekt darstellen, die Erzeugung von Pel- Positionswerten für die anderen Pels des Graphikobjekts, wobei bei einem der zahlreichen Pels begonnen und in einer Abtastoperation in einer ersten und zweiten ausgewählten Abtastrichtung parallel zur ersten bzw. zweiten Achse von einem Pel zum nächsten gegangen wird;
- wobei das Verfahren dadurch gekennzeichnet ist, daß ganzzahlige Werte, die sich der Änderungsrate der Parameterwerte annähern, ein erster Summierungsfehlerwert, Fehlerterme und Fehlerkorrekturterme bestimmt werden, so daß der Fehler beim Parameterwert nach Durchführung folgender Schritte nicht 0,5 Einheiten übersteigt:
- die Festlegung von ersten und zweiten ganzzahligen Werten, die sich der Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung annähern;
- die Festlegung eines ersten Summierungsfehlerwertes auf der Grundlage der Positionsdaten und der Parameterwertdaten;
- die Festlegung erster und zweiter Fehlerterme, die den Fehler darstellen, indem die ersten und zweiten ganzzahligen Werte als Näherungen der Änderungsrate des Parameterwertes in der ersten und zweiten Richtung verwendet werden;
- die Festlegung erster und zweiter Fehlerkorrekturterme, die die Fehlerkorrektur darstellen, indem die dritten und vierten ganzzahligen Werte, die sich der Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung nähern, ersetzt werden, wobei die ersten und zweiten ganzzahligen Werte eine erste ganzzahlige Grenze der tatsächlichen Änderungsrate des Parameterwertes darstellen, während die dritten und vierten ganzzahligen Werte eine zweite ganzzahlige Grenze der tatsächlichen Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung darstellen;
- wobei die ersten, zweiten, dritten und vierten ganzzahligen Werte so ausgewählt werden, daß das Unterschiedsvorzeichen zwischen dem zweiten und vierten Wert mit dem Unterschiedsvorzeichen zwischen dem ersten und dritten ganzzahligen Wert übereinstimmt;
- die Erzeugung interpolierter Parameterwertdaten für jedes Pel, das durch die Bewegung von einem Pel zum nächsten erzeugt wird, indem die Parameterwertdaten eines zuvor bestimmten Pel verwendet und dabei folgende Schritte durchgeführt werden:
- wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in die erste Abtastrichtung erreicht wird, wird zu dem zuvor festgelegten Parameterwert folgendes hinzugezählt:
- der erste ganzzahlige Wert, wenn der summierte Fehlerwert negativ ist, andernfalls der dritte ganzzahlige Wert; und
- zum summierten Fehlerwert der erste Fehlerterm addiert wird, wenn der Summierungsfehler negativ ist; oder
- andernfalls der erste Fehlerkorrekturterm;
- wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in die zweite Abtastrichtung erreicht wird, wird zu dem zuvor festgelegten Parameterwert folgendes hinzugezählt:
- der zweite ganzzahlige Wert, wenn der summierte Fehlerwert negativ ist, oder andernfalls der vierte ganzzahlige Wert; und
- zum summierten Fehlerwert der Fehlerterm addiert wird, wenn der summierte Fehlerwert negativ ist, oder andernfalls der zweite Fehlerkorrekturterm; und
- wenn jedes Pel sich an einer anderen Position befindet, wird eine Summe addiert, die durch den Pfad zu jeder anderen Pel- Position als Kombination einer Bewegung in der ersten Abtastrichtung und als Bewegung in der zweiten Abtastrichtung bestimmt wird.
- Die vorliegende Erfindung stellt darüber hinaus ein Computer- Graphikanzeigeverarbeitungssystem vor, zu dem ein Speicher (10), ein Anzeigeprozessor (12) und ein Anzeigemittel (16) zur Anzeige von Graphikobjekten gehört, bei dem ein Graphikobjekt in einem Speicher durch Positionsdaten dargestellt wird, die den Positionen von Pels in einem zweidimensionalen Raum in Form einer ersten und zweiten Achse entsprechen, aus denen sich das Graphikobjekt zusammensetzt, sowie durch Parameterwerte, die einer Anzeigecharakteristik in bezug auf die Positionsdaten entsprechen, einschließlich eines Mittels zur Bereitstellung interpolierter charakteristischer Parameterwerte zur Anzeige für jedes Pel auf dem Rasterabtastungs-Anzeigemittel, das zu einem anzeigbaren Graphikobjekt gehört, wobei folgendes dazu gehört:
- ein Mittel zur Bereitstellung von Positionsdaten und Parameterwertdaten für zahlreiche Pels, die ausgewählte Punkte auf dem Graphikobjekt zur Interpolation darstellen, um davon die Parameterwertdaten für die anderen Pels des Graphikobjekts zu erzeugen;
- wobei das System dadurch gekennzeichnet ist, daß es ein Mittel (42) hat, um auf der Grundlage der zahlreichen Pels, die ausgewählte Punkte auf dem Graphikobjekt darstellen, Pel- Positionswerten für die anderen Pels des Graphikobjekts zu erzeugen, wobei bei einem der zahlreichen Pels begonnen und in einer Abtastoperation in einer ersten und zweiten ausgewählten Abtastrichtung parallel zur ersten bzw. zweiten Achse von einem Pel zum nächsten gegangen wird;
- ein Mittel (43) zur Bestimmung ganzzahliger Werte, die sich der Änderungsrate der Parameterwerte annähern, eines ersten Summierungsfehlerwertes, Fehlertermen und Fehlerkorrekturtermen, so daß der Fehler beim Parameterwert nicht 0,5 Einheiten übersteigt und zu dem Bestimmungsmittel weiterhin gehört:
- ein Mittel zur Festlegung von ersten und zweiten ganzzahligen Werten, die sich der Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung annähern;
- ein Mittel zur Festlegung eines ersten Summierungsfehlerwertes auf der Grundlage der Positionsdaten und der Parameterwertdaten;
- ein Mittel zur Festlegung erster und zweiter Fehlerterme, die den Fehler darstellen, indem die ersten und zweiten ganzzahligen Werte als Näherungen der Änderungsrate des Parameterwertes in der ersten und zweiten Richtung verwendet werden;
- ein Mittel zur Festlegung erster und zweiter Fehlerkorrekturterme, die die Fehlerkorrektur darstellen, indem die dritten und vierten ganzzahligen Werte, die sich der Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung annähern, ersetzt werden, wobei die ersten und zweiten ganzzahligen Werte eine erste ganzzahlige Grenze der tatsächlichen Änderungsrate des Parameterwertes darstellen, während die dritten und vierten ganzzahligen Werte eine zweite ganzzahlige Grenze der tatsächlichen Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung darstellen;
- ein Mittel zur Erzeugung interpolierter Parameterwertdaten für jedes Pel, das durch diese Bewegungen erzeugt wird, indem die Parameterwertdaten eines zuvor bestimmten Pel verwendet werden und dabei folgendes hinzukommt:
- ein Mittel zur Addierung von folgenden Werten zum zuvor bestimmten Parameterwert, wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in die erste Abtastrichtung erreicht wird:
- ein erster ganzzahliger Wert, wenn der summierte Fehlerwert negativ ist, oder andernfalls ein dritter ganzzahliger Wert; und
- die Addition des ersten Fehlerterms zum summierten Fehlerwert, wenn der Summierungsfehler negativ ist; oder andernfalls des ersten Fehlerkorrekturterms;
- ein Mittel zur Addierung folgender Werte zum zuvor festgelegten Parameterwert, wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in die zweite Abtastrichtung erreicht wird:
- ein zweiter ganzzahliger Wert, wenn der summierte Fehlerwert negativ ist, oder andernfalls ein vierter ganzzahliger Wert; und
- die Addierung des Fehlerterms zum summierten Fehlerwert, wenn der summierte Fehlerwert negativ ist, oder andernfalls des zweiten Fehlerkorrekturterms; und
- wenn jedes Pel sich an einer anderen Position befindet, ein Mittel zur Addierung einer Summe, die durch den Pfad zu jeder anderen Pel-Position als Kombination einer Bewegung in der ersten Abtastrichtung und einer Bewegung in der zweiten Abtastrichtung bestimmt wird.
- Die beschriebene Anordnung verringert in hohem Maße Intensitätsfehler, z.B. Lichtstärke oder Schraffierung, bei der linearen Interpolation von charakteristischen Anzeigeparameterwerten in einem Computer-Graphikanzeigesystem mit Rasterabtastung. Durch Vermeidung der zuvor praktizierten Interpolation zwischen den Kanten wird die Hardware-Anordnung im Vergleich zu Verfahren auf dem Stand der Technik maßgeblich vereinfacht. Des weiteren verringert das Verfahren die Zahl der Quotientenbits in Teilungsoperationen im Zusammenhang mit dem Verfahren erheblich, so daß die Setup-Prozedur beschleunigt wird.
- Die Erfindung wird im folgenden anhand von Beispielen mit Bezug auf bevorzugte Ausführungsbeispiele der Erfindung beschrieben, die in den Begleitzeichnungen dargestellt sind.
- Fig. 1 ist ein Blockdiagramm eines Computer-Graphiksystems.
- Fig. 2 ist ein Blockdiagramm des Anzeigeprozessors von Fig. 1.
- Fig. 3 ist ein Diagramm mit der geometrischen Darstellung eines Anzeigedreiecks.
- Fig. 4 ist ein Blockdiagramm des Schraffierungsprozessors von Fig. 2.
- Fig. 5 ist die geometrische Darstellung von Pels in einem Anzeigedreieck.
- Fig. 6 zeigt eine Tabelle mit den 14 verschiedenen Arten von Anzeigedreiecken und den dazugehörenden Parametern.
- Fig. 7 ist ein Diagramm einer Linie, die den Bresenhamschen Standardalgorithmus zur Berechnung von I in einer Dimension zeigt.
- Fig. 8 ist ein Diagramm mit den Logikelementen des Entscheidungsfindungsteils des Schraffierungsgenerators von Fig. 4.
- Fig. 9 ist ein Diagramm mit dem Intensitätsberechnungsteil des Schraffierungsgenerators von Fig. 4.
- Fig. 10 zeigt eine Tabelle mit den Intensitätsinkrementen in Abhängigkeit von bestimmten Anfangswerten, die durch Mikrocode festgelegt werden.
- Fig. 11 ist ein Diagramm mit zwei Vorwärts/Rückwärts-Zählern, die beim Adreßgenerator von Fig. 4 verwendet werden.
- Fig. 12 ist ein Diagramm mit zwei Registern, die im Zähler von Fig. 4 verwendet werden; und
- Fig. 13 ist ein Blockdiagramm eines weiteren Ausführungsbeispiels eines Schraffierungsprozessors.
- Fig. 1 ist ein vereinfachtes Blockdiagramm eines Computer- Graphiksystems. Dazu gehört ein Speicher 10, der über Leitung 11 Befehle zu einem Anzeigeprozessor 12 sendet. Der Anzeigeprozessor arbeitet mit den Befehlen von Speicher 10, um Pel- Werte zu erzeugen, die den anzeigbaren Graphikobjekten entsprechen, wobei die Werte über Leitung 13 zu einem Anzeigenspeicher 14 gehen. Die im Anzeigenspeicher 14 gespeicherten Pel-Werte werden durch Rasterabtastung gelesen und über Leitung 15 zu einem geeigneten Bildschirm 16 übermittelt. Diese Art von Systemen ist in der Technik hinlänglich bekannt.
- Fig. 2 ist ein genaueres Blockdiagramm des Anzeigeprozessors 12 von Fig. 1. Ein Graphiksteuerungs- und Transformationsprozessor 18 empfängt auf Leitung 11 Daten vom Speicher 10 (Fig. 1) und gibt Daten auf Leitung 19 an den Zeichnungsprozessor 26 weiter, der einen Zeichen/Vektor-Generator 24 und einen Schraffierungsprozessor 20 umfaßt. Der Zeichen/Vektor- Generator 24 erzeugt Pel-Werte für alphanumerische Zeichen und Vektoren. Der Schraffierungsprozessor 20 erzeugt Pel-Werte für Polygone, für die Spitzendaten und andere Daten auf Leitung 19 übermittelt werden. Das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung ist in Zusammenhang mit dem Schattierungsprozessor 20 implementiert. Die Ausgabedaten des Schattierungsprozessors 20 gehen über Leitung 13 zum Anzeigenspeicher 14 (Fig. 1). Der Schattierungsprozessor kann ein Mittel zur Festlegung der Z-Werte für die Entfernung von verdeckten Flächen durch einen nachfolgenden Tiefenpuffer und der dazugehörenden Logik umfassen.
- Bevor näher auf die Schaltlogik und die Funktionsweise des Schattierungsprozessors 20 eingegangen wird, erfolgt anhand von Fig. 3 eine allgemeine Beschreibung des Graphikanzeigeproblems, mit dem sich die Erfindung befaßt.
- Fig. 3 ist ein Diagramm mit einem Dreieck 30, das durch die drei Punkte P1, P2 und P3 in einem dreidimensionalen Koordinatensystem X, Y und I definiert wird, das das von der Erfindung gelöste Problem illustriert. Die Achsen I des in Fig. 3 gezeigten Dreiecks 30 stellen die Intensitätskoordinate für einen monochromen Graphikbildschirm dar. Sie könnte auch für die Farben Rot, Grün oder Blau bei einem Farbbildschirm oder für Z bei der Tiefenberechnung stehen.
- Die Scheitelpunkte P1, P2 und P3 definieren eine Ebene 32, die als Schattierungsebene im X-, Y- und I-Raum bezeichnet werden kann. Die Projektion des Dreiecks 30 auf der XY-Ebene (Bildschirmebene) ergibt ein zweites Dreieck 30', bei dem es sich um das zu schattierende Dreieck handelt. Jeder Punkt von Dreieck 30', der einem Pixel entspricht, wird mit dem Intensitätswert gefüllt, der vom entsprechenden Punkt von Dreieck 30 in der Schattierungsebene kommt. Der korrekte Intensitätswert für ein Pixel mit der Koordinate XjYj im Dreieck 30' ergibt sich dadurch, daß eine Linie von Punkt XiYi parallel zur Achse I gezogen wird, um den Schnittpunkt XiYjIk auf Dreieck 30 zu bestimmen. Ik ist dabei der entsprechende Intensitätswert für diesen Punkt.
- Fig. 4 ist ein Blockdiagramm mit der Struktur des Schattierungsprozessors von Fig. 2, wobei hier das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung implementiert ist. Die Ausgabedaten des Graphiksteuerungs- und Transformationsprozessors 18 (Fig. 2) gelangen zu einer Steuerlogikeinheit 40. Die beiden Vektorgeneratoren VG 41 und VG 42 legen die Kante eines anzeigbaren Dreiecks fest. Sie implementieren einen Prozeß in Übereinstimmung mit dem Bresenhamschen Algorithmus. Ein Schattierungsgenerator 43 berechnet die interpolierten Intensitäten mit einer neuen zweidimensionalen Interpolationstechnik. Ein Adreßgenerator 44 liefert die X- und Y-Koordinaten, die den durch den Schattierungsgenerator 43 berechneten Intensitäten entsprechen. Der Zähler 45 überwacht die Anzahl der Punkte, die in jeder Reihe schattiert werden müssen. Das Steuerlogikmodul 40 steuert den gesamten Prozeß. Ein allgemeiner Prozessor (nicht gezeigt) oder ein anderes geeignetes Mittel unterstützen das Setup der Schaltlogik im Schattierungsprozessor 20 auf eine Art und Weise, die im folgendem noch näher beschrieben wird.
- Fig. 5 veranschaulicht den durch den Schattierungsprozessor 20 von Fig. 4 implementierten Prozeß graphisch. Die X- und Y- Achsen entsprechen den Reihen- und Spaltenachsen des durch die Anzeigeeinrichtung des Systems abgetasteten Rasters. Die Punkte Q1, Q2 und Q3 sind die Spitzen eines anzeigbaren Dreiecks.
- Im ersten Verfahrensschritt werden die drei Punkte des anzeigbaren Dreiecks als Teil der Setup-Prozedur durch einen Mikrocode sortiert. Der Sortieralgorithmus wird unten vorgestellt. Der Algorithmus erfüllt die Anforderungen der Steuerlogik 40 und des Schattierungsgenerators 43 (Fig. 4) und wird nachfolgend unter "Sortieralgorithmus" beschrieben. In diesem Beispiel sind Q1, Q2 und Q3 bereits sortiert, wobei die Q- Numerierung der Sortierung der Punkte entspricht. Das Setup des Schattierungsprozessors 43 sieht den Beginn bei Punkt Q1 vor. Die internen Parameter werden jeweils einmal pro Dreieck durch Mikrocode festgelegt. Die Parameter ändern sich nicht von Reihe zu Reihe.
- Zuerst erhält der Vektorgenerator 41 den Befehl, eine Linie von Q1 zu Q2 zu ziehen. Ebenso erhält der Vektorgenerator 42 den Befehl, eine Linie von Q1 zu Q3 zu ziehen.
- Ein zweidimensionaler Schattierungsalgorithmus ist im Schattierungsgenerator 43 implementiert. Der Algorithmus berechnet den Intensitätswert eines Punktes (Xi, Yj), z.B. I(i,j), wenn die einem benachbarten Punkt entsprechende Intensität bekannt ist, z.B. I(i,j-1), I(i,j+1), I(i-1,j) oder I(i+1,j). Der zweidimensionale Schattierungsalgorithmus ist nicht umkehrbar in dem Sinne, daß sich das Ergebnis durch die Bewegung von beispielsweise Punkt P1 zu P2 vom Ergebnis durch die Bewegung von P2 zu P1 unterscheidet. Dies ist vergleichbar mit dem Bresenhamschen Standardalgorithmus.
- Der Schattierungsgenerator 43 hat zwei Betriebsarten: den "Kantenschattierungsmodus" und den "Reihenschattierungsmodus". Im "Kantenschattierungsmodus" wird der Schattierungsgenerator 43 vom Vektorgenerator 41 gesteuert. Der Schattierungsgenerator 43 speichert die Intensität und den Status des nächsten, zuvor berechneten Punktes durch entsprechende Register in der Hardware, die als "Sicherungsregister" bezeichnet werden. So wie der Vektorgenerator 41 von Q1 zu Q2 geht, geht auch der Schattierungsgenerator 43 den gleichen Weg. Während dieses Prozesses wird in den Anzeigenspeicher 14 (Fig. 1) geschrieben. Wenn der Vektorgenerator 41 die Koordinate Y inkrementiert, stoppt er. Mit Bezug auf Fig. 5 wird davon ausgegangen, daß der Vektorgenerator 41 bei Punkt Pb gestoppt hat, nachdem Punkt Pa geschrieben wurde.
- Gleichzeitig hat der Vektorgenerator 42 von Q1 zu Q3 gerechnet. Als Y inkrementiert war, stoppte der Vektorgenerator 42 bei Punkt Pd. An dieser Stelle im Prozeß sind die Punkte Pa und Pb schattiert. Mit Hilfe der Sicherungsregister beginnt der Schattierungsgenerator 43 nun, von Punkt Pe zu Punkt Pc zu schattieren, wobei er die Intensität und den Status verwendet, der Punkt Pa als Ausgangspunkt entspricht. Es handelt sich hierbei um den "Reihenschattierungsmodus". Pc ist der Punkt, der dem Ende des aktuellen Durchlaufs des Vektorgenerators 42 entspricht. Bei diesem Beispiel ist hervorzuheben, daß Q3 sich auf der rechten Seite des Dreiecks befindet, ebensogut aber auch auf der linken Seite sein könnte, wie im folgenden noch näher beschrieben wird.
- Wenn Vektor Q1Q3 beendet ist, erhält der Vektorgenerator 42 den Befehl, Vektor Q3Q2 zu zeichnen. In diesem Fall haben die Richtungskoeffizienten von Q3Q2 und Q1Q3 unterschiedliche Vorzeichen. Daraus folgt, daß Punkt Pg der letzte berechnete Punkt der Pel-Reihe ist, die aus Pf und Pg besteht, die das Segment von Vektor Q3Q2 der Reihe bilden. Bei der Berechnung des Vektors Q1Q3 ist das weitest rechts gelegene Pel in jedem Reihensegment das zuletzt berechnete Pel. Das zuletzt berechnete Pel ist im Fall des Vektors Q1Q3 auch das letzte Pel der gesamten Reihe für das zu schattierende Dreieck. Wenn Vektor Q3Q2 berechnet ist, ist das zuerst berechnete Pel des Reihensegments für den Vektor, in diesem Fall Punkt Pf, der Endpunkt für diese Reihe. Dieser Tatsache wird in der im weiteren näher erläuterten Setup-Prozedur Rechnung getragen.
- Wenn der Vektorgenerator 41 alle Punkte durchlaufen hat, wird die letzte Reihe schattiert und der Algorithmus stoppt.
- Es gibt einige ungewöhnliche Fälle, wenn Y1=Y3, oder wenn Y2=Y3 ist. In diesen Fällen wird der Endpunkt für jede Reihe nur von einem Vektor, Q3Q2 bzw. Q1Q3, berechnet.
- Die eigentliche Gleichung der Schattierungsebene, die durch die drei Punkte Pi (Xi,Yi,I) (i=1,2,3) (Fig. 3) im dreidimensionalen Raum (X,Y,I) definiert wird, lautet:
- AX+BY+CI=D
- wobei
- ist.
- Die Ebenengleichung kann auch anders dargestellt werden:
- wobei dI/dX und dI/dY die Teilableitungen sind und IO der Intensitätswert bei (X=0,Y=0) ist.
- Es kann nachgewiesen werden, daß der absolute Wert der Koeffizienten A, B und C zweimal die Projektionsfläche des dreidimensionalen Dreiecks auf den Ebenen (X=0), (Y=0) bzw. (I=0) ausmacht. Diese Eigenschaft wird zur Analyse des dynamischen Bereichs der Koeffizienten verwendet.
- Insgesamt werden sechs Multiplikationen benötigt, um A, B und C zu berechnen.
- Der Sortieralgorithmus ordnet die drei Dreieckspitzen (hier als Pa, Pb und Pc bezeichnet) neu und bildet eine neue Folge (Q1, Q2, Q3), so daß
- 1. der Vektorgenerator 41 (und der Schattierungsgenerator 43) immer von Q1 zu Q2 gehen. Vektor Q1Q2 legt die "Anfangskante" des Reihenschattierungsprozesses fest.
- 2. der Vektorgenerator 42 die "Endkante" Q1-Q3-Q2 bestimmt.
- 3. sich der Schattierungsgenerator 43 immer in der gleichen X- Richtung und in der gleichen Y-Richtung für alle Punkte im Dreieck bewegt. Dadurch sollen Fehler im Schattierungsalgorithmus vermieden werden.
- Fig. 6 zeigt eine Tabelle mit den 14 verschiedenen möglichen Dreiecken sowie verschiedene Werte und Parameter im Zusammenhang mit dem Sortieralgorithmus. Die Spalten 3 bis 5 führen die Werte von Ya, Yb und Yc für jeden Fall auf, wobei davon ausgegangen wird, daß Xa< Xb< Xc ist. In diesen Spalten ist:
- Ymin = Minimum (Ya,Yb,Yc)
- Ymax = Maximum (Ya,Yb,Yc)
- In Spalte 6 stehen der Wert von T, mit dem zwischen den Fällen 11 bis 14 unterschieden wird. T wird wie folgt definiert:
- T = (Xb-Xa) (Yc-Ya)-(Xc-Xa) (Yb-Ya)
- Zur Berechnung von T sind zwei Multiplikationen notwendig. T stimmt jedoch mit dem oben definierten Koeffizienten C mit Ausnahme eines Vorzeichenunterschieds überein. Es könnte ohne weiteres eine Prozedur entwickelt werden, um die Multiplikation zu vermeiden.
- Die Spalten 7 bis 9 legen die Reihenfolge der Ausgabesequenz fest. Fall 12 beispielsweise gibt Q1=Pa, Q2=Pc und Q3=Pb.
- Spalte 2 beschreibt ein Dreieck für jeden Fall. Der Pfeil definiert die "Startkante" und geht von Q1 zu Q2.
- Die Spalten 10 bis 14 definieren den Wert der Binär-Flags, die vom Schattierungsalgorithmus verwendet werden. Die Flag-Werte bleiben beim ganzen Dreieck konstant.
- - Flag A ist 1, wenn der Vektor Q1Q3 horizontal ist. In diesem Fall ist die "Endkante" Vektor Q3Q2.
- - Flag B ist 1, wenn Vektor Q3Q2 horizontal ist. In diesem Fall ist die "Endkante" Vektor Q1Q3.
- - Flag C ist 1, wenn die Vorzeichen der Richtungskoeffizienten der Vektoren Q1Q3 und Q3Q2 gleich sind.
- - Flag D ist 1, wenn das Inkrement von X und das Inkrement von Y unterschiedliche Vorzeichen bei der Bewegung des Schattierungsgenerators 43 haben.
- - Flag E ist 1, wenn das Inkrement in X positiv ist, während sich der Schattierungsgenerator 43 im "Reihenschattierungsmodus" befindet. (Mit anderen Worten heißt dies, daß die linke Kante die "Startkante" und die rechte Kante die "Endkante" ist.)
- Die Sortierprozedur in Microcode-Implementierung sieht wie folgt aus:
- Die Intensität an jedem Pixel wird mit einem geänderten Bresenhamschen Algorithmus berechnet, der sowohl in X- als auch in Y-Richtung arbeitet. Bei jedem Schritt berechnet der Algorithmus den Intensitätswert eines bestimmten Punktes, wenn die Intensität des benachbarten Punktes (vertikal oder horizontal benachbart) bekannt ist. Dabei sind zwei Schritte notwendig, um von Punkt (X unleserlich, Yj) zu Punkt (Xi+1,Yj+1) zu gehen. Der Schattierungsalgorithmus ist in der Hardware des Schattierungsgenerators 43 von Fig. 4 implementiert.
- Um den Algorithmus zu erklären, wird zuerst der eindimensionale Fall behandelt. Danach wird der allgemeine zweidimensionale Fall beschrieben.
- Horizontale Linie: Wenn Y=Yq(konstant) ist, hat die Ebenengleichung folgende Form:
- I = (-A/C)*X + Ky
- wobei
- Ky = I0 + (-B/C)*Yq ist,
- so daß der Intensitätswert entlang der horizontalen Linie Y=Yq berechnet werden kann.
- Wenn ABS(A/C)≤1 ist, kann die Intensität mit dem normalen Bresenhamschen Algorithmus in der I-X-Ebene (Fig. 7) berechnet werden. Ein von Punkt P zu Punkt Q gehender Vektor liefert die Intensitätswerte für jedes X. Für den Algorithmus werden die Werte (-A) und C benötigt. Wenn nur der Teil der Schattierungslinie von Punkt R zu Punkt S berechnet werden soll und die Punkt R entsprechende Intensität bekannt ist, kann der Algorithmus auf gleiche Art und Weise angeordnet werden, wobei der einzige Unterschied im Anfangsintensitätswert und der Anzahl der Punkte besteht. Der Richtungskoeffizient wird durch A und C festgelegt, der für alle horizontalen Linien in der X-Y- Ebene konstant bleibt.
- Wenn ABS (A/C)> 1 ist, kann der Bresenhamsche Algorithmus nicht direkt verwendet werden, da I und X nicht austauschbar sind. Für jedes X darf nur ein Wert von I berechnet werden. Der Bresenhamsche Algorithmus würde mehrere I-Werte für den gleichen X-Wert liefern. Obgleich zwar ein Wert nach bestimmten Kriterien ausgewählt werden könnte, ist der Algorithmus nicht effizient, da mehrere Zyklen benötigt werden, um die Intensität für jeden X-Wert zu berechnen.
- Der Bresenhamsche Algorithmus muß folgendermaßen geändert werden. Gehen wir davon aus, daß C> 0, (-A)≥0 und (-B)> 0 ist.
- A1 = FLOOR(-A/C)
- A2 = (-A) - A1*C (z.B. der Rest)
- wobei FLOOR ( ) als ganzzahliger Teil von ( ) definiert wird.
- Bei jedem Punkt ist die Intensität gleich mit der Intensität des vorherigen Punktes, der durch A1 (A1+1) inkrementiert wurde. Die Entscheidung wird vom Bresenhamschen Algorithmus getroffen, bei dem der Wert A2 nun die Rolle von (-A) übernimmt. Der vorherige Fall kann auf diesen Fall reduziert werden, wenn A1=0 ist. Der Linien-Richtungskoeffizient besteht aus zwei Termen: einem ganzzahligen Teil und einem Bruchteil. Der Bruchteil wird vom Bresenhamschen Algorithmus bearbeitet. Der ganzzahlige Teil wird zur aktuellen Intensität von einem Punkt zum nächsten hinzugezählt.
- Bei Verwendung einer ähnlichen Formel ergibt sich folgende Gleichung:
- A3 = CEIL (-A/C)
- A4 = AC*3 - (-A) (z.B. der Rest)
- wobei CEIL ( ) als nächstliegende ganze Zahl definiert ist, die größer oder gleich ( ) ist.
- Die Intensität an jedem Punkt entspricht der Intensität des vorherigen Punktes plus A3 oder (A3-1). Dabei ist
- A2 + A4 = C
- Der Wert A4 nimmt den Platz von (-A) des ersten vorgestellten Falles ein.
- Die Wahl der Formeln A1-A2 oder A3-A4 ist nicht zufällig. Die Entscheidung wird unten bei der Beschreibung des zweidimensionalen Falles erläutert.
- Vertikale Linie: Wenn die zu schattierende Linie vertikal anstatt horizontal ist, kann auf ähnliche Art und Weise vorgegangen werden.
- Wenn X=Xp (konstant) ist, dann ergibt sich
- I = (-B/C)*Y + Kx
- wobei
- Kx = I0 + (-A/C)*Xp
- und
- B1 = FLOOR(-B/C)
- B2 = (-B) - B1*C
- B3 = CEIL(-B/C)
- B4 = B3*C - (-B)
- ist.
- Dabei ist
- B2 + B4 = C
- Der Fall einer beliebigen Linie in der X-Y-Ebene kann als Kombination der vorherigen Fälle angesehen werden. Beim Weg von (Xi,Yj) zu Punkt (Xi+1,Yj+1) geht der Algorithmus zu (Xi+1,Yj) (oder Xi,Yj+1) und von diesem Punkt zu (Xi+1,Yj+1).
- Die Bewegung in X muß für alle Punkte auf dem Dreieck in die gleiche Richtung gehen. Das gleiche gilt für Y.
- Wie oben bereits erwähnt kann das Intensitätsinkrement bei der Bewegung von einem Punkt zum nächsten als Beitrag eines ganzzahligen Teils und eines Bruchteils angesehen werden. Der Bruchteil trägt durch 0 oder 1, oder -1 oder 0 zum Intensitätsinkrement bei. Dabei ist es wichtig, daß der Beitrag des Bruchteils für das ganze Dreieck und für beide X- und Y-Richtungen das gleiche Vorzeichen haben muß, z.B. immer 0 oder 1, oder immer -1 oder 0. Die Bedingung kann durch Wahl der entsprechenden Formel (A1-A2 oder A3-A4 für X-Bewegungen oder B1- B2 oder B3-B4 für Y-Bewegungen) auf einer der beiden Achsen erfüllt werden sowie durch Sicherstellung, daß die X-Bewegung immer in der gleichen Richtung ist (entweder positiv oder negativ). Das gleiche gilt für Y.
- Die erforderliche Hardware ist in den Figuren 8 und 9 zu sehen. INCR11, INCR12, INCR21 und INCR22 sind durch Microcode implementierte Register. Ihr Inhalt ist für jedes Dreieck festgelegt. D und DB sind Akkumulatoren. D wird als Hauptakkumulator im "Kantenschattierungsmodus" verwendet. DB enthält den Wert von D, der dem unmittelbar zuvor berechneten Punkt entspricht. Während des "Reihenschattierungsmodus" wird DB als Hauptakkumulator verwendet. Der Inhalt von D ändert sich im "Reihenschattierungsmodus" nicht.
- H1 und H2 enthalten Inkrementierwerte für die Intensität. Sie werden durch Microcode festgelegt. I und IB sind Akkumulatoren mit der aktuellen Intensität. I wird als Hauptakkumulator im "Kantenschattierungsmodus" verwendet. IB enthält den Wert von I, der dem unmittelbar zuvor berechneten Punkt entspricht. Während des "Kantenschattierungsmodus" wird IB als Hauptakkumulator verwendet. Der Inhalt von I ändert sich im "Reihenschattierungsmodus" nicht.
- Die Sättigungslogik setzt den Ausgabewert zwischen die höchste positive Zahl und Null. Diese Logik ist erforderlich, da aufgrund der Quantisierung der X- und Y-Achsen ein schattierter Punkt außerhalb des theoretischen Dreiecks liegen könnte. Der Wert der Schattierungsebene an diesem Punkt könnte außerhalb des erlaubten Intensitätsbereichs liegen.
- Die folgende Prozedur ist in Mikrocode implementiert.
- Das folgende Pseudoprogramm beschreibt die Operation des Schattierungsgenerators 43 in Fig. 4.
- Fig. 12 zeigt eine Tabelle mit den Intensitätsinkrementen in Abhängigkeit von den Anfangswerten von H1 und H2, S1 und S2 (Vorzeichen der Richtungskoeffizienten), DIR1 und DIR2, FLAG4 und D (oder DB im Fall des "Reihenschattierungsmodus").
- Wie oben bereits erwähnt macht der absolute Wert des Koeffizienten C in der Ebenengleichung das Doppelte des zu schattierenden Dreieckbereichs (in der X-Y-Ebene) aus. Der Höchstwert für C beträgt daher Nx*Ny, wobei Nx und Ny die Bildschirmgröße in X- bzw. Y-Richtung ist. Daraus ergibt sich:
- 0≤INCR11≤2*Nx*Ny
- -2*Nx*Ny≤INCR12≤0
- 0≤INCR21≤2*Nx*Ny
- -2*Nx*Ny≤INCR22≤0
- Die erforderliche Anzahl von Bits für den Addierer des entscheidungstragenden Teils von Fig. 8 beträgt somit:
- NBd = CEIL(1[Vorzeichen] + 1[Addierer] + 1[Faktor 2] +
- LOG2 (Nx+Ny))
- = 3 + CEIL (LOG2 (Nx) + LOG2 (Ny))
- Das werthöchste Bit der Addiererausgabe ist immer das wahre Vorzeichenbit des Ergebnisses (z.B. kein Überlauf). Für Nx=Ny=1024 ist NB gleich 23 Bits.
- Die arithmetische Genauigkeit des Intensitätsteils (siehe Fig. 9) ergibt sich aus:
- NBi = 2 + LOG2 (Ni)
- Dabei wird davon ausgegangen, daß Ni, die Anzahl möglicher unterschiedlicher Intensitätsstufen, die Potenz 2 hat. Die Zahl 2 der oben aufgeführten Gleichung ergibt sich aus der Tatsache, daß ein zusätzliches Bit für mögliche negative Zahlen benötigt wird, während ein weiteres Bit zur Erfassung eines Überlaufs notwendig ist.
- Der grundlegende zweidimensionale Schattierungsgenerator kann unter Verwendung der in Fig. 4 gezeigten Hardware zur Schattierung von Dreiecken verwendet werden. Der Adreßgenerator 44 verfügt für jede Koordinate über einen Vorwärts/Rückwärts-Zähler (siehe Fig. 11). Der Zähler 45 von Fig. 4 ist mit zwei Vorwärts/Rückwärts-Zählern ausgestattet, die die Anzahl der zu jeder Reihe des Dreiecks gehörenden Pixel kontrollieren (siehe Fig. 12). Die Register X, Y und N sind durch den Microcode implementiert. Sie ändern unter Steuerung der Steuerlogik 40 von Fig. 4 ihre Werte im "Kantenschattierungsmodus". Die Register XB, YB und NB werden in erster Linie im "Reihenschattierungsmodus" verwendet.
- Die folgende Prozedur beschreibt die Operation des Adreßgenerators 44, der Zähler und der Steuerlogik 40 von Fig. 4.
- Die Sortierprozedur und die Implementierung des Vektorgenerators 41, des Vektorgenerators 42, des Schattierungsgenerators 43, der Zähler und des Adreßgenerators 44 erfolgt über Microcode.
- Fig. 13 zeigt ein Blockdiagramm eines Ausführungsbeispiels der Erfindung mit einer Erweiterung der in Fig. 4 gezeigten Funktionen; darüber hinaus zeigt die Figur, wie ein Mikroprozessor angeschlossen werden kann, so daß er die Implementierung der oben beschriebenen Prozeduren und Algorithmen steuert. Ein Dreieck-Scanner 100 umfaßt die Steuerlogik 40, den Vektorgenerator VG1 31, den Vektorgenerator VG2 42 und den Zähler 45 von Fig. 4. Der Scanner 100 ist mit dem XY-Generator 44' verbunden, der derselbe wie der Adreßgenerator 44 von Fig. 4 ist. Der Scanner 100 ist auch mit einem Z-Generator 102, einem Rot-Generator 104, einem Grün-Generator 106 und einem Blau-Generator 108 wie gezeigt verbunden.
- Die in den Generatoren 102, 104, 106 und 108 durchgeführten Sequenzen sind im wesentlichen gleich. Jeder Generator ist im wesentlichen mit unterschiedlichen Anfangswerten konfiguriert, die den Werten an den entsprechenden Spitzen für die jeweiligen Parameterwerte entsprechen, die von diesem Generator erzeugt werden.
- Fig. 13 zeigt auch, wie ein Mikroprozessor 110 angeschlossen wird, um Steuersignale für die im Zusammenhang mit diesen Ausführungsbeispielen implementierten Prozeduren und Algorithmen zu erzeugen.
Claims (2)
1. In einem Computer-Graphikanzeigeverarbeitungssystem, zu
dem ein Speicher, ein Anzeigeprozessor und ein
Anzeigemittel zur Anzeige von Graphikobjekten gehört, bei dem
ein Graphikobjekt in einem Speicher durch Positionsdaten
dargestellt wird, die den Positionen von Pels in einem
zweidimensionalen Raum in Form einer ersten und zweiten
Achse entsprechen, aus denen sich das Graphikobjekt
zusammensetzt, sowie durch Parameterwerte, die einer
Anzeigecharakteristik in bezug auf die Positionsdaten
entsprechen, ein Verfahren zur Bereitstellung interpolierter
charakteristischer Parameterwerte zur Anzeige für jedes
Pel auf dem Rasterabtastungs-Anzeigemittel, das zu einem
anzeigbaren Graphikobjekt gehört, wobei das Verfahren
folgende Schritte umfaßt:
die Bereitstellung von Positionsdaten und
Parameterwertdaten für zahlreiche Pels, die ausgewählte Punkte auf dem
Graphikobjekt zur Interpolation darstellen, um davon die
Parameterwertdaten für die anderen Pels des
Graphikobjekts zu erzeugen;
auf der Grundlage der zahlreichen Pels, die ausgewählte
Punkte auf dem Graphikobjekt darstellen, die Erzeugung
von Pel-Positionswerten für die anderen Pels des
Graphikobjekts, wobei bei einem der zahlreichen Pels begonnen
und in einer Abtastoperation in einer ersten und zweiten
ausgewählten Abtastrichtung parallel zur ersten bzw.
zweiten Achse von einem Pel zum nächsten gegangen wird;
wobei das Verfahren dadurch gekennzeichnet ist, daß
ganzzahlige Werte, die sich der Änderungsrate der
Parameterwerte annähern, ein erster Summierungsfehlerwert,
Fehlerterme und Fehlerkorrekturterme bestimmt werden, so daß
der Fehler beim Parameterwert nach Durchführung folgender
Schritte nicht 0,5 Einheiten übersteigt:
die Festlegung von ersten und zweiten ganzzahligen
Werten, die sich der Änderungsrate des Parameterwertes in
der ersten und zweiten Abtastrichtung annähern;
die Festlegung eines ersten Summierungsfehlerwertes auf
der Grundlage der Positionsdaten und der
Parameterwertdaten;
die Festlegung erster und zweiter Fehlerterme, die den
Fehler darstellen, indem die ersten und zweiten
ganzzahligen Werte als Näherungen der Änderungsrate des
Parameterwertes in der ersten und zweiten Richtung verwendet
werden;
die Festlegung erster und zweiter Fehlerkorrekturterme,
die die Fehlerkorrektur darstellen, indem die dritten und
vierten ganzzahligen Werte, die sich der Änderungsrate
des Parameterwertes in der ersten und zweiten
Abtastrichtung nähern, ersetzt werden, wobei die ersten und zweiten
ganzzahligen Werte ein erste ganzzahlige Grenze der
tatsächlichen Änderungsrate des Parameterwertes
darstellen, während die dritten und vierten ganzzahligen Werte
eine zweite ganzzahlige Grenze der tatsächlichen
Änderungsrate des Parameterwertes in der ersten und zweiten
Abtastrichtung darstellen;
wobei die ersten, zweiten, dritten und vierten
ganzzahligen Werte so ausgewählt werden, daß das
Unterschiedsvorzeichen zwischen dem zweiten und vierten Wert mit dem
Unterschiedsvorzeichen zwischen dem ersten und dritten
ganzzahligen Wert übereinstimmt;
die Erzeugung interpolierter Parameterwertdaten für jedes
Pel, das durch die Bewegung von einem Pel zum nächsten
erzeugt wird, indem die Parameterwertdaten eines zuvor
bestimmten Pel verwendet und dabei folgende Schritte
durchgeführt werden:
wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in
die erste Abtastrichtung erreicht wird, wird zu dem zuvor
festgelegten Parameterwert folgendes hinzugezählt:
der erste ganzzahlige Wert, wenn der summierte Fehlerwert
negativ ist, andernfalls der dritte ganzzahlige Wert; und
zum summierten Fehlerwert der erste Fehlerterm addiert
wird, wenn der Summierungsfehler negativ ist; oder
andernfalls der erste Fehlerkorrekturterm;
wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in
die zweite Abtastrichtung erreicht wird, wird zu dem
zuvor festgelegten Parameterwert folgendes hinzugezählt:
der zweite ganzzahlige Wert, wenn der summierte
Fehlerwert negativ ist, oder andernfalls der vierte ganzzahlige
Wert; und
zum summierten Fehlerwert der Fehlerterm addiert wird,
wenn der summierte Fehlerwert negativ ist, oder
andernfalls der zweite Fehlerkorrekturterm; und
wenn jedes Pel sich an einer anderen Position befindet,
wird eine Summe addiert, die durch den Pfad zu jeder
anderen Pel-Position als Kombination einer Bewegung in der
ersten Abtastrichtung und einer Bewegung in der zweiten
Abtastrichtung bestimmt wird.
2. Ein Computer-Graphikanzeigeverarbeitungssystem, zu dem
ein Speicher (10), ein Anzeigeprozessor (12) und ein
Anzeigemittel (16) zur Anzeige von Graphikobjekten gehört,
bei dem ein Graphikobjekt in einem Speicher durch
Positionsdaten dargestellt wird, die den Positionen von Pels in
einem zweidimensionalen Raum in Form einer ersten und
zweiten Achse entsprechen, aus denen sich das
Graphikobjekt zusammensetzt, sowie durch Parameterwerte, die einer
Anzeigecharakteristik in bezug auf die Positionsdaten
entsprechen, einschließlich eines Mittels zur
Bereitstellung interpolierter charakteristischer Parameterwerte zur
Anzeige für jedes Pel auf dem
Rasterabtastungs-Anzeigemittel, das zu einem anzeigbaren Graphikobjekt gehört,
wobei folgendes dazu gehört:
ein Mittel zur Bereitstellung von Positionsdaten und
Parameterwertdaten für zahlreiche Pels, die ausgewählte
Punkte auf dem Graphikobjekt zur Interpolation
darstellen, um davon die Parameterwertdaten für die anderen Pels
des Graphikobjekts zu erzeugen;
wobei das System dadurch gekennzeichnet ist, daß es ein
Mittel (42) hat, um auf der Grundlage der zahlreichen
Pels, die ausgewählte Punkte auf dem Graphikobjekt
darstellen, Pel-Positionswerten für die anderen Pels des
Graphikobjekts zu erzeugen, wobei bei einem der
zahlreichen Pels begonnen und in einer Abtastoperation in einer
ersten und zweiten ausgewählten Abtastrichtung parallel
zur ersten bzw. zweiten Achse von einem Pel zum nächsten
gegangen wird;
ein Mittel (43) zur Bestimmung ganzzahliger Werte, die
sich der Änderungsrate der Parameterwerte annähern, eines
ersten Summierungsfehlerwertes, Fehlertermen und
Fehlerkorrekturtermen, so daß der Fehler beim Parameterwert
nicht 0,5 Einheiten übersteigt und zu dem
Bestimmungsmittel weiterhin gehört:
ein Mittel zur Festlegung von ersten und zweiten
ganzzahligen Werten, die sich der Änderungsrate des
Parameterwertes in der ersten und zweiten Abtastrichtung annähern;
ein Mittel zur Festlegung eines ersten
Summierungsfehlerwertes auf der Grundlage der Positionsdaten und der
Parameterwertdaten;
ein Mittel zur Festlegung erster und zweiter Fehlerterme,
die den Fehler darstellen, indem die ersten und zweiten
ganzzahligen Werte als Näherungen der Änderungsrate des
Parameterwertes in der ersten und zweiten Richtung
verwendet werden;
ein Mittel zur Festlegung erster und zweiter
Fehlerkorrekturterme, die die Fehlerkorrektur darstellen, indem
die dritten und vierten ganzzahligen Werte, die sich der
Änderungsrate des Parameterwertes in der ersten und
zweiten Abtastrichtung annähern, ersetzt werden, wobei die
ersten und zweiten ganzzahligen Werte eine erste
ganzzahlige Grenze der tatsächlichen Änderungsrate des
Parameterwertes darstellen, während die dritten und vierten
ganzzahligen Werte eine zweite ganzzahlige Grenze der
tatsächlichen Änderungsrate des Parameterwertes in der
ersten und zweiten Abtastrichtung darstellen;
ein Mittel zur Erzeugung interpolierter
Parameterwertdaten für jedes Pel, das durch diese Bewegungen erzeugt
wird, indem die Parameterwertdaten eines zuvor bestimmten
Pel verwendet werden und dabei folgendes hinzukommt:
ein Mittel zur Addierung von folgenden Werten zum zuvor
bestimmten Parameterwert, wenn jedes Pel vom zuvor
bestimmten Pel durch Bewegung in die erste Abtastrichtung
erreicht wird:
ein erster ganzzahliger Wert, wenn der summierte
Fehlerwert negativ ist, oder andernfalls ein dritter
ganzzahliger Wert; und
die Addition des ersten Fehlerterms zum summierten
Fehlerwert, wenn der Summierungsfehler negativ ist; oder
andernfalls des ersten Fehlerkorrekturterms;
ein Mittel zur Addierung folgender Werte zum zuvor
festgelegten
Parameterwert, wenn jedes Pel vom zuvor
bestimmten Pel durch Bewegung in die zweite Abtastrichtung
erreicht wird:
ein zweiter ganzzahliger Wert, wenn der summierte
Fehlerwert negativ ist, oder andernfalls ein vierter
ganzzahliger Wert; und
die Addierung des Fehlerterms zum summierten Fehlerwert,
wenn der summierte Fehlerwert negativ ist, oder
andernfalls des zweiten Fehlerkorrekturterms; und
wenn jedes Pel sich an einer anderen Position befindet,
ein Mittel zur Addierung einer Summe, die durch den Pfad
zu jeder anderen Pel-Position als Kombination einer
Bewegung in der ersten Abtastrichtung und einer Bewegung in
der zweiten Abtastrichtung bestimmt wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/854,965 US4805116A (en) | 1986-04-23 | 1986-04-23 | Interpolated display characteristic value generator |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3750784D1 DE3750784D1 (de) | 1995-01-12 |
DE3750784T2 true DE3750784T2 (de) | 1995-07-13 |
Family
ID=25320005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3750784T Expired - Fee Related DE3750784T2 (de) | 1986-04-23 | 1987-03-17 | Generation eines intrapolierten charakteristischen Wertes zur Anzeige. |
Country Status (5)
Country | Link |
---|---|
US (1) | US4805116A (de) |
EP (1) | EP0243644B1 (de) |
JP (1) | JPH0719297B2 (de) |
CA (1) | CA1266722A (de) |
DE (1) | DE3750784T2 (de) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL8503461A (nl) * | 1985-12-17 | 1986-04-01 | Oce Nederland Bv | Werkwijze voor het genereren van lijnstukken. |
JP2612260B2 (ja) * | 1986-09-24 | 1997-05-21 | ダイキン工業株式会社 | テクスチヤマツピング装置 |
US4930091A (en) * | 1987-11-04 | 1990-05-29 | Schlumberger Systems, Inc. | Triangle classification setup method and apparatus for 3-D graphics display system |
US4962468A (en) * | 1987-12-09 | 1990-10-09 | International Business Machines Corporation | System and method for utilizing fast polygon fill routines in a graphics display system |
JP2618951B2 (ja) * | 1988-02-16 | 1997-06-11 | 株式会社東芝 | 三次元図形処理装置 |
US4988984A (en) * | 1988-10-31 | 1991-01-29 | International Business Machines Corporation | Image interpolator for an image display system |
US4967286A (en) * | 1988-12-12 | 1990-10-30 | Disctronics Manufacturing, Inc. | Method and apparatus for forming a digital image on an optical recording disc |
US5128872A (en) * | 1988-12-20 | 1992-07-07 | Sun Microsystems, Inc. | Method and apparatus for determining line positions for display and manipulation by a computer system |
US5020014A (en) * | 1989-02-07 | 1991-05-28 | Honeywell Inc. | Generic interpolation pipeline processor |
GB2228597A (en) * | 1989-02-27 | 1990-08-29 | Ibm | Data processor with conditional instructions |
US5060172A (en) * | 1989-07-06 | 1991-10-22 | Digital Equipment Corporation | Method and apparatus for displaying smooth-shaded objects |
US5214753A (en) * | 1989-07-31 | 1993-05-25 | Shographics, Inc. | Video system with parallel attribute interpolations |
JPH0760465B2 (ja) * | 1989-10-23 | 1995-06-28 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | 凹ポリゴン描出方法及びプロセツサ |
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 |
GB2245460B (en) * | 1990-06-18 | 1994-04-06 | Link Miles Ltd | Apparatus for generating a visual display |
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> | グラフィックス・プロセッサ及びグラフィックス・データ処理方法 |
JP2725915B2 (ja) * | 1990-11-15 | 1998-03-11 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 三角形描画装置及び方法 |
US5420972A (en) * | 1990-11-15 | 1995-05-30 | International Business Machines Corporation | Method and apparatus for rendering lines |
JPH087715B2 (ja) * | 1990-11-15 | 1996-01-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理装置及びアクセス制御方法 |
JPH0785219B2 (ja) * | 1990-11-15 | 1995-09-13 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理システム及びデータ制御方法 |
US5542025A (en) * | 1991-01-16 | 1996-07-30 | Hewlett-Packard Company | Precision Z-interpolation method and apparatus |
US5343558A (en) * | 1991-02-19 | 1994-08-30 | Silicon Graphics, Inc. | Method for scan converting shaded triangular polygons |
JPH0589251A (ja) * | 1991-07-12 | 1993-04-09 | Sony Corp | 画像の描画装置 |
US5345541A (en) * | 1991-12-20 | 1994-09-06 | Apple Computer, Inc. | Method and apparatus for approximating a value between two endpoint values in a three-dimensional image rendering device |
US5706415A (en) * | 1991-12-20 | 1998-01-06 | Apple Computer, Inc. | Method and apparatus for distributed interpolation of pixel shading parameter values |
US5422991A (en) * | 1992-09-22 | 1995-06-06 | International Business Machines Corporation | Parallel vector generator and triangle generator incorporating same |
US5748946A (en) * | 1995-02-17 | 1998-05-05 | International Business Machines Corporation | Method and apparatus for improved graphics picking using auxiliary buffer information |
US5973705A (en) * | 1997-04-24 | 1999-10-26 | International Business Machines Corporation | Geometry pipeline implemented on a SIMD machine |
US5951672A (en) * | 1997-07-02 | 1999-09-14 | International Business Machines Corporation | Synchronization method for work distribution in a multiprocessor system |
JP4717208B2 (ja) | 1998-02-27 | 2011-07-06 | ダグ カーソン アンド アソシエーツ,インク. | 光ディスクマスタ作成プロセスにおけるピットおよびランド遷移ロケーションの個別調整方法、およびそのための最適化回路 |
US6088044A (en) * | 1998-05-29 | 2000-07-11 | International Business Machines Corporation | Method for parallelizing software graphics geometry pipeline rendering |
DE19915308A1 (de) | 1999-04-03 | 2000-10-12 | Daimler Chrysler Ag | Verfahren zur zweidimensionalen Bildpunkt-Darstellung von Objekten auf einer Anzeigevorrichtung |
US6906732B1 (en) * | 1999-12-07 | 2005-06-14 | Nintendo Co., Ltd. | Texture morphing process provided by the preferred embodiment of the present invention |
TW580642B (en) * | 2001-08-23 | 2004-03-21 | Ulead Systems Inc | Processing method using 2-dimension graphics to draw 3-dimension objects |
TWI222040B (en) * | 2001-12-28 | 2004-10-11 | Silicon Integrated Sys Corp | Pre-setup and shading device and method of computer graph |
AUPS300502A0 (en) * | 2002-06-17 | 2002-07-11 | Canon Kabushiki Kaisha | Generating one or more linear blends |
JP4237046B2 (ja) * | 2003-12-24 | 2009-03-11 | 株式会社リコー | 画像処理装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57119390A (en) * | 1981-01-16 | 1982-07-24 | Tokyo Shibaura Electric Co | Shading method |
JPS5971093A (ja) * | 1982-10-18 | 1984-04-21 | 株式会社日立製作所 | 塗潰し図形発生装置 |
US4475104A (en) * | 1983-01-17 | 1984-10-02 | Lexidata Corporation | Three-dimensional display system |
US4609917A (en) * | 1983-01-17 | 1986-09-02 | Lexidata Corporation | Three-dimensional display system |
US4586038A (en) * | 1983-12-12 | 1986-04-29 | General Electric Company | True-perspective texture/shading processor |
US4648049A (en) * | 1984-05-07 | 1987-03-03 | Advanced Micro Devices, Inc. | Rapid graphics bit mapping circuit and method |
US4677573A (en) * | 1984-05-15 | 1987-06-30 | International Business Machines Corporation | Hardware generation of styled vectors in a graphics system |
US4697178A (en) * | 1984-06-29 | 1987-09-29 | Megatek Corporation | Computer graphics system for real-time calculation and display of the perspective view of three-dimensional scenes |
-
1986
- 1986-04-23 US US06/854,965 patent/US4805116A/en not_active Expired - Fee Related
-
1987
- 1987-03-17 CA CA000532247A patent/CA1266722A/en not_active Expired
- 1987-03-17 EP EP87103897A patent/EP0243644B1/de not_active Expired - Lifetime
- 1987-03-17 DE DE3750784T patent/DE3750784T2/de not_active Expired - Fee Related
- 1987-03-23 JP JP62065933A patent/JPH0719297B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPS62256186A (ja) | 1987-11-07 |
DE3750784D1 (de) | 1995-01-12 |
CA1266722C (en) | 1990-03-13 |
EP0243644A3 (en) | 1990-06-06 |
EP0243644A2 (de) | 1987-11-04 |
CA1266722A (en) | 1990-03-13 |
EP0243644B1 (de) | 1994-11-30 |
US4805116A (en) | 1989-02-14 |
JPH0719297B2 (ja) | 1995-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3750784T2 (de) | Generation eines intrapolierten charakteristischen Wertes zur Anzeige. | |
DE10053439B4 (de) | Grafik-Beschleuniger mit Interpolationsfunktion | |
DE3854543T2 (de) | Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung. | |
DE68919024T2 (de) | Verfahren und Prozessor zur Abtastumsetzung. | |
DE69122557T2 (de) | Bilderzeugung | |
DE68927471T2 (de) | Verfahren zur Schattierung eines graphischen Bildes | |
DE69131927T2 (de) | Verfahren und gerät um verfälschte polygone darzustellen | |
DE69811849T2 (de) | Verfahren und gerät zur interpolation von attributen bei 3d-grafiken | |
DE69428491T2 (de) | Bildlinse | |
DE3855231T2 (de) | Prioritätsauflösungssystem zwischen Polygonen mit Antialiasing | |
DE69032932T2 (de) | System und Verfahren zum unverfälschten Polygonenzeichnen | |
DE69130123T2 (de) | Anzeigegerät und Verfahren zum Betreiben eines solchen Geräts | |
DE69424716T2 (de) | Verfahren und Vorrichtung zur adaptiven Steuerung der Texturabbildung | |
DE68928744T2 (de) | Verfahren zum senkrechten Filtern bei rasterabgetasteten Anzeigevorrichtungen | |
DE69423129T2 (de) | System und Verfahren zur Kurvendarstellung | |
DE69716877T2 (de) | System und Verfahren zur genauen Gradientberechnung für die Texturabbildung in einem Computergraphiksystem | |
DE69127516T2 (de) | Verfahren und Gerät zur Bilderzeugung | |
DE3854223T2 (de) | Erzeugung und Anzeige von Rechnergraphiken. | |
DE3315148C2 (de) | ||
DE69330578T2 (de) | Verfahren und Einrichtung zum Füllen eines Bildes | |
DE102005050846A1 (de) | Perspektiveneditierwerkzeuge für 2-D Bilder | |
DE3518416A1 (de) | Speicher- und prozessorsystem mit schnellem zugriff zur rasteranzeige | |
DE4211385A1 (de) | Daten-projektionssystem | |
DE2703021A1 (de) | Datenprozessor zum liefern von intensitaetssteuersignalen zur verwendung in einer rasteranzeige | |
DE3801364A1 (de) | Anzeigesystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |