DE69816469T2 - Verfahren und vorrichtung zur schnellen wiedergabe eines bildes in abhängigkeit von dreidimensionalen graphikdaten in einer umgebung mit begrenzter datengeschwindigkeit - Google Patents

Verfahren und vorrichtung zur schnellen wiedergabe eines bildes in abhängigkeit von dreidimensionalen graphikdaten in einer umgebung mit begrenzter datengeschwindigkeit Download PDF

Info

Publication number
DE69816469T2
DE69816469T2 DE1998616469 DE69816469T DE69816469T2 DE 69816469 T2 DE69816469 T2 DE 69816469T2 DE 1998616469 DE1998616469 DE 1998616469 DE 69816469 T DE69816469 T DE 69816469T DE 69816469 T2 DE69816469 T2 DE 69816469T2
Authority
DE
Germany
Prior art keywords
texture
data
pattern data
image
tiles
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE1998616469
Other languages
English (en)
Other versions
DE69816469D1 (de
Inventor
Kei Yuasa
E. Michael GOSS
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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
Priority claimed from JP6466598A external-priority patent/JPH11195132A/ja
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE69816469D1 publication Critical patent/DE69816469D1/de
Application granted granted Critical
Publication of DE69816469T2 publication Critical patent/DE69816469T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61JCONTAINERS SPECIALLY ADAPTED FOR MEDICAL OR PHARMACEUTICAL PURPOSES; DEVICES OR METHODS SPECIALLY ADAPTED FOR BRINGING PHARMACEUTICAL PRODUCTS INTO PARTICULAR PHYSICAL OR ADMINISTERING FORMS; DEVICES FOR ADMINISTERING FOOD OR MEDICINES ORALLY; BABY COMFORTERS; DEVICES FOR RECEIVING SPITTLE
    • A61J7/00Devices for administering medicines orally, e.g. spoons; Pill counting devices; Arrangements for time indication or reminder for taking medicine
    • A61J7/04Arrangements for time indication or reminder for taking medicine, e.g. programmed dispensers
    • A61J7/0409Arrangements for time indication or reminder for taking medicine, e.g. programmed dispensers with timers
    • A61J7/0481Arrangements for time indication or reminder for taking medicine, e.g. programmed dispensers with timers working on a schedule basis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3552Downloading or loading of personalisation data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F11/00Coin-freed apparatus for dispensing, or the like, discrete articles
    • G07F11/02Coin-freed apparatus for dispensing, or the like, discrete articles from non-movable magazines
    • G07F11/44Coin-freed apparatus for dispensing, or the like, discrete articles from non-movable magazines in which magazines the articles are stored in bulk
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61JCONTAINERS SPECIALLY ADAPTED FOR MEDICAL OR PHARMACEUTICAL PURPOSES; DEVICES OR METHODS SPECIALLY ADAPTED FOR BRINGING PHARMACEUTICAL PRODUCTS INTO PARTICULAR PHYSICAL OR ADMINISTERING FORMS; DEVICES FOR ADMINISTERING FOOD OR MEDICINES ORALLY; BABY COMFORTERS; DEVICES FOR RECEIVING SPITTLE
    • A61J7/00Devices for administering medicines orally, e.g. spoons; Pill counting devices; Arrangements for time indication or reminder for taking medicine
    • A61J7/04Arrangements for time indication or reminder for taking medicine, e.g. programmed dispensers
    • A61J7/0409Arrangements for time indication or reminder for taking medicine, e.g. programmed dispensers with timers
    • A61J7/0427Arrangements for time indication or reminder for taking medicine, e.g. programmed dispensers with timers with direct interaction with a dispensing or delivery system
    • A61J7/0436Arrangements for time indication or reminder for taking medicine, e.g. programmed dispensers with timers with direct interaction with a dispensing or delivery system resulting from removing a drug from, or opening, a container

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Graphics (AREA)
  • Veterinary Medicine (AREA)
  • Animal Behavior & Ethology (AREA)
  • General Health & Medical Sciences (AREA)
  • Public Health (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Geometry (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Medical Informatics (AREA)
  • Accounting & Taxation (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Image Generation (AREA)

Description

  • Bereich der Erfindung
  • Die Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zum Aufbereiten eines Bildes ansprechend auf dreidimensionale Graphikdaten und spezieller auf ein Verfahren und eine Vorrichtung zum Aufbereiten eines Bildes ansprechend auf dreidimensionale Graphikdaten in einer Umgebung, wie z. B. einem Netz, in dem die Datenrate begrenzt ist.
  • Hintergrund der Erfindung
  • Aufgrund der Fortschritte bei der Verarbeitungsleistung von Personalcomputern und anderen Graphikverarbeitungsgeräten, wie z. B. Videospielen, werden dreidimensionale Computergrafiken (3D-Graphiken) immer beliebter. Das Internet wird zunehmend zum Liefern eines Inhalts verwendet, der eine 3D-Graphik umfaßt. Heim-Personal-Computer-(PC-) Benutzer können 3D-Graphikdaten vom Internet herunterladen und Browser verwenden, um die Inhalte aufzubereiten, anzuzeigen und mit denselben zu interagieren.
  • Aufbereitungstechniken für 3D-Graphiken sind über einen längeren Zeitraum hinweg entwickelt worden. Die aktuellsten Techniken sind in einer Erweiterungshardware verkörpert, die in die Graphikadaptoren eingesteckt werden kann, die in Heim-PCs verwendet werden. Der Anstieg der Leistung von PCs und einer Graphik-Hardware erlauben eine erhöhte Komplexität der Graphiken, die aufbereitet werden können. Wenn die Quelle der 3D-Graphikdaten jedoch ein Netz ist, das über eine begrenzte Datenübertragungsrate verfügt, ist eine lange Ladezeit für die 3D-Graphikdaten erforderlich, wenn das Bild, das durch die Graphikdaten dargestellt wird, komplex ist. Das Internet ist ein Beispiel eines solchen Netzes. Bekannte Browserprogramme, die auf Client-Computern laufen, die mit dem Netz verbunden sind, setzen im wesent- lichen voraus, daß alle 3D-Graphikdaten vom Server heruntergeladen werden, bevor sie ein Ausführen der Graphikaufbereitungsberechnungen starten können, die zum Anzeigen eines Bildes ansprechend auf die 3D-Graphikdaten notwendig sind. Infolgedessen muß der Benutzer einen Großteil der Ladezeit abwarten, bevor das Bild beginnt, angezeigt zu werden. Die Verarbeitungsstruktur von herkömmlichen 3D-Graphikaufbereitungsprogrammen setzt lange Verzögerungen voraus, bevor solche Programme beginnen, ein Bild anzuzeigen.
  • In 3D-Graphiken ist ein dreidimensionaler Raum definiert, der durch ein oder mehrere dreidimensionale Objekte besiedelt ist. Die Position eines Referenzpunkts auf jedem Objekt in dem dreidimensionalen Raum ist ebenfalls definiert. Die Form von jedem Objekt ist bezüglich eines Satzes von Polygonen definiert, die die Oberfläche des Objekts abdecken. Ein gleichseitiger Würfel kann bezüglich sechs viereckiger Polygone (Quadrate) definiert sein, von denen ein jedes mit einer der Flächen des Würfels kongruent ist. Größe, Form und Koordinaten sind für jedes Polygon definiert. Zusätzlich können eine Farbe und Reflektivität definiert sein. Wenn die gesamte oder ein Teil einer Oberfläche des Objekts jedoch mit einem Muster versehen ist, muß das Polygon, das die Oberfläche darstellt, in mehrere Teilpolygone aufgeteilt sein, so daß das Muster dargestellt werden kann, indem den Teilpolygonen unterschiedliche Farben und Reflektivitäten zugeordnet werden. Dies erhöht im wesentlichen die Datenmenge, die erforderlich ist, um das Objekt darzustellen.
  • Wenn die Oberfläche des Objekts demzufolge mit mehr als einer rudimentären Musterung aufbereitet wird, wird bevorzugt, das Erscheinungsbild der Oberfläche unter Verwendung einer Textur zu definieren. Eine Textur ist ein Satz von Daten, die ein Muster einer willkürlichen Komplexität, die von einer rudimentären Bittabelle zu einem komplexen Bild reicht, darstellen. Der Satz von Daten kann Bildabbildungs daten umfassen, die z. B. das Muster definieren. Die Polygone, die die Teile der Oberfläche des Objekts darstellen, dessen Erscheinungsbild durch die Textur definiert ist, werden unter Verwendung der Textur gekachelt. Wenn Texturen verwendet werden, kann ein Objekt mit einem komplexen Oberflächenerscheinungsbild unter Verwendung von weniger Daten dargestellt werden als zum Darstellen der Oberfläche unter Verwendung einer erhöhten Anzahl von Polygonen erforderlich sind.
  • Wenn der dreidimensionale Raum, der durch dreidimensionale Objekte besiedelt ist, als ein Bild auf einem zweidimensionalen Bildschirm dargestellt wird, wie z. B. dem Bildschirm eines Computermonitors, wird zunächst ein Betrachtungspunkt durch den Benutzer gewählt oder durch die graphischen Daten definiert. Eine oder mehrere Beleuchtungsquellen sind ebenfalls definiert oder können gewählt werden. Eine imaginäre Ebene, die als ein Aufbereitungsbildschirm bezeichnet wird, der zwischen dem Betrachtungspunkt und dem dreidimensionalen Raum positioniert ist, ist ebenfalls definiert. Der Aufbereitungsbildschirm ist in einer Anordnung, die vorzugsweise der Anzahl von Pixeln entspricht, die zum Anzeigen des Bildes verwendet werden, in Bildelemente (Pixel) aufgeteilt. Wenn das Bild auf dem Bildschirm von einem NTSC-Fernseher oder einer VWA-Computeranzeige angezeigt wird, wird der Aufbereitungsbildschirm vorzugsweise in 640 × 480 Pixel aufgeteilt. Das Aufbereitungsprogramm berechnet dann die Farbwerte für jedes der Pixel, die den Aufbereitungsbildschirm bilden. Die Farbwerte für jedes der Pixel umfassen normalerweise einen roten Farbwert, einen grünen Farbwert und einen blauen Farbwert. Es können jedoch unterschiedliche Farbwerte, wie z. B. Luminanz- und Farbunterschiede verwendet werden. Das Bild wird dann ansprechend auf die Farbwerte der Pixel angezeigt. Dies kann beispielsweise durch Übertragen der Farbwerte von der 3D- Graphikerweiterungshardware an den Videospeicher des Graphikadapters des Computers erfolgen.
  • Ein herkömmliches 3D-Graphikaufbereitungsprogramm, das ein sogenanntes Z-Puffern verwendet, kann wie folgt operieren:
    • 1. Ladephase: Ein kompletter Satz von Graphikdaten wird von einem Server über ein Netz oder von lokalen Kacheln heruntergeladen.
    • 2. Geometriephase: Die Projektionen der Polygone auf den Aufbereitungsbildschirm werden berechnet. Die Ergebnisse dieser Berechnungen umfassen einen Tiefenwert, der die Tiefe von jedem Scheitelpunkt von jedem Polygon vom Blickpunkt aus anzeigt.
    • 3. Rasterisierungsphase: Schattierungsoperationen und Verborgene-Oberflächen-Entfernungsoperationen werden ausgeführt. Eine Rasterisierungsoperation wird ausgeführt, die die projizierten Polygone in Objektpixel umwandelt, die den Pixeln des Aufbereitungsbildschirm entsprechen, und berechnet einen Satz von Farbwerten Objektpixel. Weil die für jedes Objekte dreidimensional sind, kann mehr als ein Polygon auf ein gegebenes Pixel des Aufbereitungsbildschirms projiziert werden. Dementsprechend werden Farb- und Tiefenwerte für mehr als ein Objektpixel erzeugt, wobei die Polygone auf dem Aufbereitungsbildschirm überlappen. Die Farb- und Tiefenwerte werden in Pixel- und Tiefenpuffern mit Speicherungspositionen registriert, die den Pixeln des Aufbereitungsbildschirms entsprechen. Bei diesem REgistrierungsprozeß, wenn mehr als ein Objektpixel für ein gegebenes Aufbereitungsbildschirmpixel erzeugt worden ist, werden die Tiefenwerte verglichen, um zu entscheiden, welches der Objektpixel sichtbar ist. Nur die Farb- und Tiefenwerte, die dem kleinsten Tiefenwert entsprechen, d. h. jene der sichtbaren Objektpixel, werden in den Pixel- und Tiefenpuffern gespeichert. Diese Operation entfernt in effektiver Weise verborgene Oberflächen, d. h. Oberflächen, die vom Blickpunkt aus nicht zu sehen sind.
    • 4. Anzeigephase: Der Inhalt der Pixelpuffer wird für eine Anzeige ausgegeben, nachdem alle Polygone durch die Geometrie- und Rasterisierungsphase verarbeitet worden sind.
  • In der Rasterisierungsphase berechnet eine Schattierungsoperation die Farbwerte für jedes Objektpixel. Dieser Schritt berechnet auch einen Satz von Intensitätskoeffizienten für jedes Pixel und multipliziert die ursprünglichen Farbwerte der Pixel mit den jeweiligen Intensitätskoeffizienten, um die Pixelfarbwerte zu erhalten. Der Satz von Intensitätskoeffizienten umfaßt üblicherweise auch einen roten, einen grünen und einen blauen Intensitätskoeffizienten. Die Intensitätskoeffizienten definieren den Effekt der Beleuchtung und sind von einer Materialeigenschaft des Polygons, in dem das Objektpixel positioniert ist, der Farbe, Position und Richtung von jeder Lichtquelle und der Position und Richtung des Blickpunkts abhängig. Es gibt bereits verschiedene Verfahren zum Berechnen von Intensitätskoeffizienten. Die ursprüngliche Farbe des Polygons ist Teil der Graphikdaten, die die Eigenschaften des Polygons definieren. Die ursprüngliche Farbe des Polygons kann, wie vorstehend beschrieben, als eine direkte Farbe oder als eine Texturdefiniert sein. Wenn eine direkte Farbe verwendet wird, wird die direkte Farbe an sich als die Originalfarbe verwendet. Wenn eine Textur auf dem Polygon abgebildet wird, wird die ursprüngliche Farbe von jedem Objektpixel des Polygons von den Musterdaten, die die Textur darstellen, berechnet.
  • Die Musterdaten der Textur, die die Originalfarbe von jedem Objektpixel definieren, werden wie folgt bestimmt:
    • 1. Für jede Pixelkoordinate (X, Y) des Aufbereitungsbildschirms werden zugeordnete Texturkoordinaten (s, t) berechnet; und
    • 2. es wird auf eine Pixelfarbe zugegriffen oder von den Musterdaten von einem oder mehreren Texturpixeln, die bei oder nahe den Texturkoordinaten (s, t) positioniert sind, interpoliert.
  • Bei der einfachsten Implementierung wird ein einzelner Satz der Musterdaten der Textur als die Farbwerte für jedes Objektpixel übernommen. Jeder Satz der Musterdaten umfaßt üblicherweise wiederum rote, grüne und blaue Musterdaten. Dieses einfache Texturabtastverfahren erzeugt häufig unerwünschte Block- und Moiremuster. Texturfiltertechniken werden häufig verwendet, um einen Satz von einzelnen Farbwerten durch Interpolation unter mehreren der Musterdaten, die die Textur darstellen, zu berechnen. Eine sogenannte MIP-Abbildung (MIP = Multum in Parvo) speichert ein Texturbild in einem Mehrfachauflösungs-Pyramidendatenformat. Der Satz von Farbwerten, der die Farbe von jedem Objektpixel definiert, wird unter Verwendung von zwei Interpolationsstufen erzeugt. Eine erste Interpolationsoperation, eine sogenannte Intraschichtinterpolation, wird auf zwei Ebenen zwischen Musterdaten in der gleichen Ebene ausgeführt. Zwei Intraschichtinterpolationsoperationen, jede von einer anderen der zwei benachbarten Ebenen, werden zwischen den Musterdaten in der gleichen Ebene ausgeführt. Dann wird eine Interschichtinterpolationsoperation zwischen den Ergebnissen der zwei Intraschichtinterpolationsoperationen ausgeführt. Der Gesamtprozeß wird als trilineare Interpolation bezeichnet.
  • Das herkömmliche 3D-Graphikaufbereitungsprogramm setzt voraus, daß alle Texturdaten während der Ladephase empfangen werden. Jedoch erzeugen nicht alle Texturen sichtbare Ergebnisse in dem finalen aufbereiteten Bild. Texturen auf Rückflächenpolygonen und abgeschnittenen Polygonen werden in der Rasterisierungsphase nicht verarbeitet, und Objektpixel, die von Texturen abgeleitet werden, die auf eingeschlossene Polygone angewendet werden, liegen in dem finalen Bild nicht vor, weil sie während der Verborgene- Oberfläche-Entfernungsoperation aussortiert wurden. Die herkömmliche Technik des Bereitstellens der Texturen als Bittabelle mit einer einzigen hohen Auflösung verlängert auch die Aufbereitungszeit. Dies ist vorwiegend darin begründet, daß die Bittabellendaten, die zum Erzeugen einer Hochauflösungstextur notwendig sind, redundant sein können, wenn sich das Polygon, auf dem die Textur abgebildet ist, vom Blickpunkt weit entfernt oder in einem Schrägwinkel relativ zu dem Blickpunkt befindet. In diesen Fällen würde eine Textur niedrigerer Auflösung ausreichen. Unter Verwendung des herkömmlichen 3D-Graphikaufbereitungs-Programms ist es unmöglich, zu entscheiden, welche Texturen und Texturauflösungen notwendig sind, um das Bild aufzubereiten, bevor die Texturen während der herkömmlichen Ladephase geladen werden, weil zu diesem Zeitpunkt keine Geometrie berechnet worden ist. Infolgedessen erfordert das herkömmliche 3D-Graphikaufbereitungsprogramm, daß alle Texturen geladen werden und in während der Ladephase ihren höchsten Auflösungen geladen werden.
  • Die Anzahl von Polygonen beeinträchtigt die Aufbereitungszeit typischerweise vielmehr als die Größe der Texturen. Daher versuchen die Anwendungen typischerweise, die Rechenleistung, die zum Liefern von realistischen und natürlichen 3D-Bildern notwendig ist, zu reduzieren, indem die Anzahl von Polygonen reduziert und die Verwendung von Texturen erhöht wird. Wenn dies jedoch erfolgt, verlängert die große Anzahl von Texturdaten, die resultieren, die Ladezeit, speziell in einer Netzumgebung.
  • Ein Lösungsansatz zum Reduzieren der Quantität von Daten, die vom Hostcomputer übertragen werden muß, ist in der veröffentlichten Europäischen Patentanmeldung Nr. 0 747 857 von Alcorn u. a. beschrieben und an die Anmeldeyin dieser Offenbarung übertragen worden, in der ein Verfahren und eine Vorrichtung zum Verwalten von Texturabbildungsdaten in einem Computergraphiksystem offenbart ist. Das System umfaßt einen Hostcomputer, eine Grundelement- Aufbereitungshardware 12, 14 und einen texturierten Grundelement-Datenweg, der sich zwischen dem Hostcomputer und der Grundelement-Aufbereitungshardware erstreckt. Der Hostcomputer leitet die texturierten Grundelemente, die durch das System aufbereitet werden sollen, unter Verwendung von entsprechenden Texturabbildungsdaten an die Grundelement-Aufbereitungshardware über den texturierten Grundelementdatenweg. Der Hostcomputer weist einen Hauptspeicher auf, der Texturabbildungsdaten speichert, die den texturierten Grundelementen, die aufbereitet werden sollen, entsprechen. Die Grundelement-Aufbereitungshardware umfaßt einen lokalen Texturspeicher, der die Texturabbildungsdaten lokal speichert, die zumindest einem der texturierten Grundelemente entsprechen, die aufbereitet werden sollen. Wenn die Texturabbildungsdaten, die einem der texturierten Grundelemente entsprechen, die aufbereitet werden sollen, in dem Hostcomputer-Hauptspeicher gespeichert werden, jedoch nicht im Texturabbildungsspeichers, werden die Texturabbildungsdaten, die einem der texturierten Grundelemente entsprechen, vom Hostcomputer-Hauptlokaltexturabbildungsspeicher durch einen Texturabbildungsdatenweg, der von dem texturierten Grundelementdatenweg getrennt ist, heruntergeladen.
  • Der durch Alcorn offenbarte Lösungsansatz erzeugt eine nützliche Verringerung der Quantität von Daten, die übertragen werden sollen, nur wenn mehr als ein Objekt in dem Bild unter Verwendung der gleichen Texturabbildungsdaten aufbereitet wird. Die Quantität von Daten bleibt unverändert, wenn alle Objekte in dem Bild unter Verwendung von unterschiedlichen Texturen aufbereitet werden. Außerdem scheint Alcorn die Auflösung, mit der die Texturabbildungsdaten in dem Bild aufbereitet werden müssen, nicht zu berücksichtigen. Dementsprechend besteht immer noch ein Bedarf an einer umfangreicheren Reduktion der Quantität von Daten, die übertragen werden sollen, und der Wartezeit als sie durch den Lösungsansatz von Alcorn angeboten wird.
  • Zusammenfassung der Erfindung
  • Die Erfindung schafft ein Verfahren zum Aufbereiten eines Bildes ansprechend auf dreidimensionale Graphikdaten. Das Bild besteht aus Pixeln und wird durch Bilddaten dargestellt, die den Pixeln entsprechen. Die dreidimensionalen Graphikdaten umfassen Polygondaten und umfassen zusätzlich Texturdaten, die eine Textur definieren. Die Texturdaten umfassen Texturgrößendaten und Sätze von Musterdaten. Die Musterdaten in jedem der Sätze stellen die Textur mit einer anderen Auflösung dar. Die Musterdaten bilden eine Mehrheit der Texturdaten. In dem Verfahren werden das Polygon und die Texturgrößendaten empfangen. Eine anfängliche Rasterisierungsoperation wird für jedes der Pixel des Bildes ausgeführt. Die anfängliche Rasterisierungsoperation wird unter Verwendung des Polygons und der Texturgrößendaten ausgeführt und erzeugt und speichert einen Texturidentifizierer, einen Schichttiefenwert, der die Texturauflösung anzeigt, und Texturkoordinaten. Eine Musterdatenidentifizierungsoperation wird ansprechend auf den Texturidentifizierer, die Schichttiefen und die Texturkoordinaten ausgeführt, die für jedes der Pixel des Bildes gespeichert sind. Die Musterdatenidentifizierungsoperation identifiziert eines der Musterdaten, die zum Aufbereiten des Bildes erforderlich sind. Eine Musterdatenerfassungsoperation wird dann ausgeführt. Diese Operation erfaßt diejenigen der Musterdaten, die durch die Musterdatenidentifizierungsoperation als zum Aufbereiten des Bildes erforderlich identifiziert wurden. Eine finale Rasterisierungsoperation wird dann ausgeführt. Dabei werden Bilddaten, die das Bild darstellen, unter Verwendung der Musterdaten erzeugt, die durch die Musterdatenerfassungsoperation erfaßt werden.
  • Die Erfindung schafft auch eine Aufbereitungsvorrichtung zum Aufbereiten eines Bildes, das aus Pixeln besteht, ansprechend auf die dreidimensionalen Graphikdaten. Die Vorrichtung weist einen Datenweg, einen Pixel-/Tiefenpuffer, einen Referenzpuffer und eine Aufbereitungs maschine auf. Die Aufbereitungsvorrichtung empfängt die dreidimensionalen Graphikdaten über den Weg. Der Pixel-/Tiefenpuffer umfaßt erste Speicherzellen, die den Pixeln des Bildes entsprechen. Der Referenzpuffer umfaßt zweite Speicherzellen, die den Pixeln des Bildes entsprechen. Die Aufbereitungsmaschine führt das vorstehend erwähnte Bildaufbereitungsverfahren aus.
  • Diese Erfindung verringert die Zeit, die ein Benutzer warten muß, bevor ein bild auf dem Bildschirm erscheint, indem eine neue Verarbeitungsvorrichtung und ein Aufbereitungsverfahren zum Erzeugen eines Bildes ansprechend auf 3D-Graphikdaten geschaffen wird. Bei der efindungsgemäßen Aufbereitungsvorrichtung und dem Aufbereitungsverfahren werden die Musterdaten, die Texturen darstellen, erst erfaßt, nachdem die initiale Rasterisierungsoperation beendet worden ist. Die Musterdaten werden durch Laden oder durch Synthetisieren von Musterdaten von einer Höhere-Auflösungsschicht der Pyramidendatenstruktur erfaßt. Das Ausführen der anfänglichen Rasterisierungsoperation vor dem Erfassen der Musterdaten bedeutet, daß nur die Musterdaten, die die Teile der Texturen definieren, erforderlich sind, um das Bild mit der notwendigen Auflösung aufzubereiten, erfaßt werden müssen, um das Bild aufzubereiten. In dieser Weise wird die Anzahl von Musterdaten, die von dem Server geladen werden oder synthetisiert werden müssen, verringert, und somit wird auch. die Wartezeit verringert.
  • Das erfindungsgemäße Aufbereitungsverfahren und die Aufbereitungsvorrichtung speichern Zwischenergebnisse, die durch die anfängliche Aufbereitungsoperation, die ohne Musterdaten ausgeführt wird, erzeugt werden. Dies ermöglicht, daß eine Musterdatenerfassung und Interpolation der Farbwerte der Texturpixel aufgeschoben werden kann. Durch Verwenden der gespeicherten Ergebnisse der ersten Aufbereitungsoperation ermöglicht die Erfindung, daß die Musterdaten effizient erfaßt werden, da nur die erforderlichen Musterdaten geladen werden. Die Erfindung sieht auch zwei alternative Anzeigeverfahren vor, eine Beste-Auflösungs-Anzeige und eine Progressive-Auflösungs-Anzeige, wie nachstehend beschrieben wird.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm der Struktur eines 3D-Graphikaufbereitungssystems, das die Aufbereitungsvorrichtung umfaßt und das Aufbereitungsverfahren gemäß der Erfindung praktiziert.
  • 2 stellt die Mehrfachauflösungs-Pyramidendatenstruktur dar, die zum Speichern der Musterdaten der Texturen in der Aufbereitungsvorrichtung und dem Verfahren gemäß der vorliegenden Erfindung verwendet werden.
  • 3A und 3B zeigen die Datenstruktur von einer Zelle des Re ferenzpuffers, die einem Pixel des Aufbereitungsbildschirms entspricht, wenn die Farbwerte des Pixels direkt bzw. unter Verwendung von Texturfarbwerten berechnet werden.
  • 4A ist ein Flußdiagramm, das das Bildaufbereitungsverfahren gemäß der Erfindung darstellt.
  • 4B ist ein Flußdiagramm, das das Bildaufbereitungsverfahren gemäß der Erfindung ausführlicher zeigt.
  • 5A ist ein Flußdiagramm einer Teilroutine zum Anzeigen der Kacheln, deren Musterdaten durch Laden oder Synthese zum Aufbereiten des Bildes erfaßt werden müssen.
  • 5B ist ein Flußdiagramm einer Teilroutine zum Bestimmen, ob ein Texturpixel auf der Grenze einer Kachel liegt und, wenn dies der Fall ist, zum Anzeigen zusätzlicher Kacheln, deren Musterdaten erfaßt werden müssen.
  • 6 ist ein Flußdiagramm einer Teilroutine zum Erfassen der Musterdaten der Kacheln, die durch die Routine angezeigt werden, die in 5A angezeigt ist.
  • 7A ist ein Flußdiagramm einer Teilroutine zum Interpolieren von Texturfarbwerten und Erzeugen der finalen Farbwerte der Pixel des Aufbereitungsbildschirms im Beste-Auflösungs-Anzeigemodus.
  • 7B ist ein Flußdiagramm einer Teilroutine zum Interpolieren von Texturfarbwerten und Erzeugen der finalen Farbwerte der Pixel des Aufbereitungsbildschirms in dem progressiven Auflösungsanzeigemodus.
  • Ausführliche Beschreibung der Erfindung
  • Die Erfindung bezieht sich auf eine Bildaufbereitungsvorrichtung und ein Verfahren, die zur Verwendung in einer Umgebung vorgesehen sind, in der die Datenübertragungsrate begrenzt ist, wie z. B. in einem Netz, wie dem Internet. 1 ist ein Blockdiagramm der Aufbereitungsvorrichtung 100 gemäß der vorliegenden Erfindung. Die Aufbereitungsvorrichtung befindet sich in dem Computer 102. In einem praktischen Ausführungsbeispiel kann die Aufbereitungsvorrichtung einen Teil der Graphikkarte (nicht gezeigt), die in dem Computer positioniert ist, bilden. Alternativ kann die Aufbereitungsvorrichtung ein Hardwarezubehör sein, das in die Graphikkarte des Computers eingesteckt wird oder anderweitig mit derselben verbunden ist.
  • Der Computer 102 ist als ein Client des Netzes 106 gezeigt, der über den I/O-Port 104 verbunden ist. Der I/O-Port ist direkt oder indirekt mit dem Bus 108 verbunden, mit dem andere Elemente der Aufbereitungsvorrichtung und des Computers verbunden sind. Das Netz, der I/O-Port und der Bus bilden einen Weg, durch den die Aufbereitungsvorrichtung dreidimensionale Graphikdaten einschließlich Texturdaten, die ein oder mehrere Texturen definieren, empfängt.
  • Der Videoausgabeport 116, durch den die finalen Farbwerte der Aufbereitungsbildschirmpixel, die durch die Aufbereitungsvorrichtung 100 erzeugt werden, an den Monitor 150 zur Anzeige zugeführt werden, ist ebenfalls mit dem Bus 108 verbunden.
  • Der Server 110, der die Speicher 112 und 114, die die 3D-Graphikdaten gemeinsam speichern, umfaßt, ist ebenfalls mit dem Netz 106 verbunden. Der Speicher 112 speichert Polygondaten, die die Topologie der Oberflächen der Objekte in der 3D-Graphik definieren. Der Speicher 114 speichert Texturdaten, die die Texturen definieren, die auf eine oder mehrere der Oberflächen angewendet werden. Die Musterdaten, die das Erscheinungsbild der Textur definieren, bilden eine beträchtlichen Mehrzahl der Texturdaten. Die Texturdaten umfassen auch solche Daten wie Textur-Höhen- und Breitendaten.
  • Zusätzlich oder alternativ können die 3D-Graphikdaten im Computer 102 gespeichert sein. In diesem Fall sind die Speicherabschnitte, die den Speichern 112 und 114 entsprechen, in einem Speicher (nicht gezeigt) positioniert, wie z. B. einer Festplatte, die im Computer positioniert ist und direkt oder indirekt mit dem Bus 108 verbunden ist. Die 3D-Graphiken, die vom Server 110 geladen werden, können beispielsweise auf der Festplatte des Computers zwischengespeichert werden. In diesem Fall bilden die Festplatte und der Bus den Weg, durch den die Aufbereitungsvorrichtung die dreidimensionalen Graphikdaten, einschließlich Texturdaten, die ein oder mehrere Texturen definieren, empfängt.
  • In der Aufbereitungsvorrichtung 100 ist die Aufbereitungsmaschine 120 mit dem Bus 108 verbunden. Die Aufbereitungsmaschine führt das Aufbereitungsprogramm 122 aus, um eine Aufbereitungsoperation ansprechend auf die 3D-Graphikdaten auszuführen. Die Aufbereitungsoperation zeigt einen Satz von Pixeldaten, die ein zweidimensionales Bild spezifizieren. Die Aufbereitungsmaschine führt das Verfahren gemäß der Erfindung aus. Die Aufbereitungsmaschine kann unter Verwendung eines Mikroprozessors, eines digitalen Signalprozessors, einer oder mehrerer anwendungsspezifischer integrierter Schaltungen oder integrierter Allzweck-Schaltungen konstruiert sein und kann andere Elemente, wie z. B. Nur-Lese- und Direktzugriffs-Speicher umfassen, die derselben ermöglichen, die hierin beschriebene Verarbeitung auszuführen.
  • Die Aufbereitungsvorrichtung 100 umfaßt zusätzlich den Pixel-/Tiefenpuffer 124 und den Referenzpuffer 126. Der Pixel-/Tiefenpuffer und der Referenzpuffer sind mit der Aufbereitungsmaschine 120 entweder direkt über den Bus 108 oder durch irgendeine andere Anordnung verbunden. Die Datenübertragungsrate zwischen der Aufbereitungsmaschine und den Puffern ist im wesentlichen höher als die Rate, mit der die dreidimensionalen Graphikdaten über den Weg empfangen werden, d. h. von dem Netz 106 oder von der Festplatte des Computers.
  • Der Pixel-/Tiefenpuffer 124 und der Referenzpuffer 126 bestehen vorzugsweise aus Multi-Byte-Speicherzellen. Vorzugsweise entspricht jede der Zellen einem Pixel des Aufbereitungsbildschirms. Während jede Aufbereitungsoperation durch die Aufbereitungsmaschine 120 ausgeführt wird, funktioniert der Pixel-/Tiefenpuffer sequentiell zuerst als Tiefenpuffer und dann als Pixelpuffer. Typischerweise umfaßt die herkömmliche Aufbereitungsvorrichtung auch einen Tiefenpuffer und einen Pixelpuffer, jedoch verwendet die herkömmliche Vorrichtung die Puffer gleichzeitig, wenn sie Verborgene-Oberflächen-Entfernungsoperationen ausführt, so daß sie einen einzelnen Puffern nicht für beide Funktionen verwenden kann. In der erfindungsgemäßen Aufbereitungsvorrichtung dürfen der Tiefenpuffer und der Pixelpuffer nicht gleichzeitig verwendet werden, so daß die Funktionen von beiden Puffern durch einen einzelnen Abschnitt des physischen Speichers ausgeführt werden können. Die Aufbereitungsvorrichtung 100 gemäß der Erfindung verwendet den Referenzpuffer 126, um Zwischenergebnisse, die durch die Texturberechnungen erzeugt werden, zu speichern, wie nachstehend ausführlicher beschrieben wird.
  • Die Aufbereitungsvorrichtung 100 umfaßt den Texturspeicher 130, der mit dem Bus 108 verbunden ist. Der Texturspeicher ist in mehrere Seiten aufgeteilt, von denen eine exemplarische Seite bei 132 gezeigt ist. Die Texturdaten von einer Textur werden in jeder der Seiten gespeichert. Jede Seite des Texturspeichers ist in Abschnitte aufgeteilt, in denen Teilsätze der Texturdaten, die die Textur darstellen, gespeichert sind. In dem in 1 gezeigten Beispiel umfaßt die Seite 132 einen Maximum-Schichttiefenspeicher 133, den Pyramidenmusterdatenspeicher 134, die Kachelladeliste 136, das Kachelabstandarray 138 und das Kachelbasisarray 140.
  • Die Musterdaten, die die Textur darstellen, sind in dem Pyramidenmusterdatenspeicher 134 in einer Mehrfachauflösungs-Pyramidendatenstruktur, die nachstehend ausführlicher beschrieben wird, gespeichert. Die Kachelladeliste 136 umfaßt einen Eintrag für jede Kachel, in die die Textur aufgeteilt ist, wie nachstehend beschrieben wird. Der Eintrag zeigt den Erfassungsstatus der Musterdaten der Kachel an, d. h. ob die Musterdaten der Kachel erfaßt worden sind oder nicht, und ob solche Musterdaten erfaßt werden müssen. Das Kachelabstandsarray 138 und das Kachelbasisarray 140 umfassen jeweils einen Eintrag für jede Schicht der Pyramidendatenstruktur. Der Eintrag in das Kachelabstandsarray zeigt die Anzahl von Kacheln in jeder Reihe der Schicht an. Der Eintrag in das Kachelbasisarray zeigt die Kachelanzahl der obersten linken Kachel der Schicht an. Das Kachelbasisarray kann einen zusätzlichen Eintrag, in dem die Gesamtanzahl von Kacheln gespeichert ist, umfassen. Die Texturdaten, die in jeder Seite des Texturspeichers gespeichert sind, werden nachstehend ausführlicher beschrieben.
  • 2 zeigt die Struktur der Mehrfachauflösungs-Pyramidendatenstruktur 200, in der die Musterdaten, die jede Textur darstellen, gespeichert sind. Die Mehrfachauflösungspyramidendatenstruktur basiert auf dem herkömmlichen zweidimensionalen Graphiksystem, das unter dem Handelsnamen FLASHPIX vertrieben wird. Das zweidimensionale Graphiksystem verwendet eine Mehrfachauflösungs-Pyramidendatenstruktur, um Daten zu speichern, die zweidimensionale Bilder, wie z. B. Photos und dergleichen, darstellen. In der erfindungsgemäßen Aufbereitungsvorrichtung und dem Verfahren werden die Musterdaten von jeder Textur in einer Pyramidendatenstruktur gespeichert, in der Sätze von Musterdaten, die jeweils die Textur mit einer anderen Auflösung darstellen, in einer Anzahl von Schichten angeordnet sind. Die Schichten sind von der obersten Schicht nach unten numeriert, wobei die oberste Schicht die Schicht 0 ist. Die Position einer Schicht in der Pyramidenstruktur wird durch die Schichttiefe der Schicht beschrieben. Die oberste Schicht, in der die Musterdaten mit der geringsten Auflösung gespeichert sind, weist eine Schichttiefe von 0 auf. Die Schichttiefe der Schicht, in der die Musterdaten der höchsten Auflösung gespeichert sind, ist in dem Beispiel, das in 2 gezeigt ist, vier. Die Pyramidendatenstruktur kann jedoch mehr oder weniger Schichten als die Anzahl, die in diesem Beispiel gezeigt ist, umfassen.
  • Die Musterdaten in jeder der Schichten der Pyramidendatenstruktur 200 stellen die Textur bei einer Auflösung von der Hälfte der Auflösung dar, mit der die Musterdaten in der Schicht darunter die Textur darstellen, und das Doppelte der Auflösung, mit der die Musterdaten in der Schicht darüber die Textur darstellen. Die Musterdaten, die die Textur bei ihrer höchsten Auflösung darstellen, bilden die Bodenschicht 202 der Pyramidendatenstruktur 200. Normalerweise ist die höchste Auflösung mit der ursprünglichen Auflösung der Textur identisch. Wenn die ursprüngliche Auflösung jedoch höher als die maximale Auflösung ist, die für die Anwendung notwendig ist, kann die höchste Auflösung weniger als die ursprüngliche Auflösung betragen. Die Musterdaten von vier benachbarten Pixeln in der Bodenschicht werden kombiniert, um die Musterdaten von einem Pixel in der Schicht 203 unmittelbar über der Bodenschicht zu erzeugen. Dementsprechend stellen die Musterdaten in der Schicht 203 die Textur mit einer linearen Auflösung in jede Richtung von der Hälfte derjenigen der Musterdaten der Bodenschicht dar. Die Anzahl von Musterdaten in der Schicht 203 ist ein Viertel der Anzahl von Musterdaten in der Bodenschicht 202. Der Kombinierungsprozeß, der vorstehend beschrieben wurde, wird ausgeführt, um die Musterdaten in jeder der verbleibenden Schichten 204 bis 206 von den Musterdaten in der Schicht unmittelbar darunter zu erzeugen.
  • In der obersten Schicht 206 der Pyramidendatenstruktur 200 ist die Textur durch die Musterdaten von einem Array von a Pixeln horizontal und b Pixeln vertikal dargestellt. Bei dem bevorzugten Ausführungsbeispiel gilt: a = b = 64. Es wird darauf hingewiesen, daß die Pyramidendatenstruktur 200 sich von einer herkömmlichen Pyramidendatenstruktur wie der MIP-Datenstruktur unterscheidet. In der Pyramidendatenstruktur 200 werden die Musterdaten von einer Kachel in der obersten Schicht gespeichert. Bei der herkömmlichen Pyramidendatenstruktur werden die Musterdaten von einem Pixel in der obersten Schicht gespeichert.
  • Jede der Schichten der Pyramidendatenstruktur 200 unter der obersten Schicht 206 kann in Kacheln aufgeteilt sein, die jeweils aus einem Array von a × b Pixeln bestehen. Eine exemplarische Kachel ist bei 210 gezeigt. Die Kachel ist die Einheit, in der die Musterdaten erfaßt werden. Die Musterdaten werden in Einheiten von Kacheln vom Server 110 geladen und können zusätzlich oder alternativ von einem Speicher (nicht gezeigt) übertragen werden, der im Client-Computer 102, wie vorstehend beschrieben, positioniert ist. Jede Schicht der Pyramidendatenstruktur 200 ist in 4D-Kacheln aufgeteilt, wobei D die Schichttiefe der Schicht und die oberste Schicht 206 eine Schichttiefe von 0 ist.
  • Die Musterdaten in jeder der Schichten bilden normalerweise eine Bildabbildung, die die Textur darstellt. Wenn die Musterdaten an die Aufbereitungsvorrichtung durch das Netz 106 übertragen werden, können die Bildabbildungsdaten beispielsweise komprimiert werden, um die Übertragungszeit zu verringern. Eine JPEG-Komprimierung kann beispielsweise verwendet werden, um die Bildabbildungsdaten zu komprimieren, um die Musterdaten für eine Übertragung zu erzeugen. Komprimierte Musterdaten werden jedoch auf eine Bittabellenform ausgedehnt, bevor sie in der Pyramidendatenstruktur gespeichert werden.
  • Die Musterdaten werden in jeder der Schichten 202 bis 206 der Pyramidendatenstruktur 200 gespeichert. Die Schichten 202 bis 206 weisen jeweils eine Schichttiefe D auf, die eine Ganzzahl ist, d. h. 0, 1, 2, ... n. Wenn die Aufbereitungsmaschine 120 jedoch die optimale Auflösung der Textur, die auf ein gegebenes Objektpixel angewendet werden soll, berechnet, wie nachstehend ausführlicher beschrieben wird, ist die Schichttiefe, die durch diese Berechnung erzeugt wird, eine reale Zahl, d. h. die Schichttiefe kann einen Bruchzahlabschnitt neben einem Ganzzahlabschnitt aufweisen. Eine solche Schichttiefe fällt nicht dem physischen Schichten der Pyramidendatenstruktur zusammen. In diesem Fall berechnet die Aufbereitungsmaschine 120 die Musterdaten für eine Schicht mit einer nicht integralen Schichttiefe. Solche Musterdaten werden durch Interpolation zwischen den Musterdaten, die in der Schicht gespeichert sind, die eine integrale Schichttiefe DL = dem Ganzzahlteil der Schicht tiefe D aufweist, und den Musterdaten, die in der Schicht gespeichert sind, die eine Ganzzahlschichttiefe von DG = DL + 1 aufweist, berechnet. Die Aufbereitungsmaschine berechnet die Musterdaten für eine Schicht mit einer Schichttiefe von 2,3 durch Interpolation zwischen den Musterdaten der Schichten mit Schichttiefen von 2 und 3.
  • Wie vorstehend angemerkt speichert der Referenzpuffer 126 die Ergebnisse einer anfänglichen Rasterisierungsoperation, die für jedes Pixel des Aufbereitungsbildschirms ausgeführt wird. Die Ergebnisse werden später verwendet, wenn eine finale Rasterisierungsoperation ausgeführt wird. Der Referenzpuffer kann in einem Abschnitt des Speichers verkörpert sein, wie z. B. einem Direktzugriffsspeicher. Der Speicher ist in Zellen partitioniert, die jeweils einem der Pixel des Aufbereitungsbildschirms entsprechen. 3A und 3B stellen Beispiele der zwei alternativen Datenstrukturen dar, die in den Zellen des Referenzpuffers 126 verwendet werden, um die Ergebnisse der anfänglichen Rasterisierungsoperation zu speichern. Die Ergebnisse der anfänglichen Rasterisierungsoperation, die in der Zelle gespeichert sind, können direkte Farbdaten oder Texturdaten sein. Der Typ der Daten, die in der Zelle gespeichert sind, wird durch den Zustand des Bits angezeigt, das in dem ersten Feld 301 der Zelle gespeichert ist. 3A zeigt ein Beispiel der Datenstruktur der Zelle, wenn die anfängliche Rasterisierungsoperation direkte Farbdaten erzeugt. 3B zeigt ein Beispiel der Datenstruktur der Zelle, wenn die anfängliche Rasterisierungsoperation Texturkoordinaten und Intensitätskoeffizienten erzeugt.
  • Bei der anfänglichen Rasterisierungsoperation, wenn das Aufbereitungsbildschirmpixel von einem Objektpixel abgeleitet wird, das in einem Polygon liegt, auf das keine Textur angewendet werden soll, werden finale Farbwerte für das Aufbereitungsbildschirmpixel durch Multiplizieren der direkten Farbe des Polygons mit seinen Intensitätskoeffizienten, wie vorstehend beschrieben, erhalten. In diesem Fall wird eine 0 in dem ersten Feld 301 gespeichert, um anzuzeigen, daß die anfängliche Rasterisierungsoperation direkte Farbdaten erzeugt hat. Die finalen Farbwerte, die von der Multiplizierung resultieren, bestehen typischerweise aus einem roten Farbwert, einem grünen Farbwert und einem blauen Farbwert. Der rote, grüne und blaue Farbwert wird in R-, G- und B-Abschnitten des Felds 302 der Pixelzelle gespeichert, wobei die Datenstruktur, die in 3A gezeigt ist, verwendet wird. Der Rest 306 des Speichers, der der Zelle 300 zugeteilt ist, wird reserviert, so daß die gleiche Zellengröße verwendet werden kann, wenn das Aufbereitungsbildschirmpixel von einem Objektpixel abgeleitet wird, das in einem Polygon positioniert ist, auf das eine Textur angewendet werden soll, und die Datenstruktur ist diejenige, die in 3B gezeigt ist.
  • Wenn das Aufbereitungsbildschirmpixel von einem Objektpixel abgeleitet wird, das in einem Polygon positioniert ist, auf das eine Textur angewendet werden soll, wird eine 1 in dem ersten Feld 301 der Zelle 300 gespeichert, wie in 3B gezeigt ist. Die Daten, die in den restlichen Feldern der Zelle gespeichert sind, sind wie folgt: Das Feld 310 speichert einen Zeiger oder Index, der die Zahl des Texturspeichers 130 anzeigt, der in 1 gezeigt ist, in dem die Texturdaten der Textur, die auf das Pixel angewendet werden sollen, gespeichert sind. Das Feld 312 speichert die Texturkoordinaten (S, T), die bezüglich der Pixel der Boden(Höchste-Auflösungs-) Schicht 202 der Pyramidendatenstruktur, die in 2 gezeigt ist, ausgedrückt sind. Die Texturkoordinaten werden durch Anwenden einer Projektionsmatrix des Polygons und einer Texturabbildungsmatrix oder Funktion (s, t) auf die Koordinaten (X, Y) des Objektpixels berechnet: S = s (X, Y) T = t (X, Y) Das Feld 314 speichert die Schichttiefe D, die die Schicht der Pyramidendatenstruktur, die in 2 gezeigt ist, definiert, von der die Musterdaten zur Verwendung beim Berechnen der finalen Farbwerte des Aufbereitungsbildschirmpixels verwendet werden. Die Schichttiefe D wird unter Verwendung der folgenden Gleichung berechnet:
    Figure 00210001
    wobei Dmax die Schichttiefe der Bodenschicht 202 der Pyramidendatenstruktur 200 ist, die in 2 gezeigt ist.
  • Schließlich speichert das Feld 316 die Intensitätskoeffizienten des Pixels. Bei diesem Beispiel werden die roten, grünen und blauen Intensitätskoeffizienten jeweils in den Abschnitten IR, IB und IB des Felds gespeichert.
  • Bei einer herkömmlichen 3D-Graphikaufbereitung werden die Texturkoordinaten (S, T) und die Schichttiefe D in reellen Zahlen berechnet. Die Intraschicht- und Interschicht-Interpolationen werden dann unmittelbar unter Verwendung der berechneten Parameter ausgeführt, um die finalen Farbwerte von jedem Aufbereitungspixel zu erzeugen. In der erfindungsgemäßen Aufbereitungsvorrichtung und dem Verfahren werden die Texturkoordinaten (S, T) und die Schichttiefe D während der initialen Rasterisierungsoperation berechnet. Die initiale Rasterisierungsoperation wird ausgeführt, bevor beliebige der Musterdaten geladen werden. Die Ergebnisse der initialen Rasterisierungsoperation werden in dem Referenzpuffer zur Verwendung, wenn die finalen Farbwerte während der finalen Rasterisierungsoperation berechnet werden, gespeichert. Dies wird erst ausgeführt, nachdem die erforderlichen Musterdaten erfaßt worden sind.
  • Das erfindungsgemäße Verfahren und die erfindungsgemäße Operation der Aufbereitungsvorrichtung werden nun unter Bezugnahme auf 1, 2, 3, 4A und 4B beschrieben. Es wird darauf hingewiesen, daß anfänglich nur ein kleiner Bruchteil der Texturdaten von dem Server geladen wird. Das Erfassen der Musterdaten, die die erheblich Mehrzahl der Texturdaten bilden, wird aufgeschoben, bis die initiale Rasterisierungsoperation beendet worden ist. Die folgende Beschreibung bezieht sich auf ein Beispiel, in dem die 3D-Graphikdaten im Server 110 gespeichert sind, und über das Netz 106 geladen werden. Ähnliche Operationen werden ausgeführt, wenn die 3D-Graphikdaten im Computer 102 zwischengespeichert werden.
  • Zunächst wird ein Überblick über das Verfahren und die Operation der Aufbereitungsvorrichtung unter Bezugnahme auf das Flußdiagramm, das in 4A gezeigt ist, beschrieben. Um die nachstehende Erörterung zu vereinfachen, wird nur die Verarbeitung, die auf die Pixel des Aufbereitungsbildschirms angewendet wird, auf die eine Textur angewendet werden soll, beschrieben. Die Verarbeitung beginnt bei Schritt 400.
  • Bei Schritt 402 wird eine erste Ladeoperation ausgeführt. Dabei werden die Polygondaten und die Breiten- und Höhenwerte von jeder der Texturen vom Server geladen. Die Breiten- und Höhenwerte von jeder Textur bilden einen kleinen Bruchteil der Texturdaten der Textur. Außerdem ist die Anzahl von Polygondaten relativ niedrig. Dementsprechend ist eine kurze Zeit erforderlich, um diesen Schritt auszuführen.
  • Bei Schritt 404 werden die Geometrieberechnungen ausgeführt.
  • Bei Schritt 406 wird eine anfängliche Rasterisierungsoperation ausgeführt. Die anfängliche Rasterisierungsoperation unterscheidet sich von einer herkömmlichen Rasterisierung soperation dahingehend, daß sie ohne die Musterdaten für die Texturen ausgeführt wird. Die anfängliche Rasterisierungsoperation umfaßt eine Verborgene-Oberflächen-Entfernungsoperation, die den Pixel-/Tiefenpuffer 124 als ein Tiefenpuffer verwendet. Die Verborgene-Oberflächen-Entfernungsoperation identifiziert die Textur, die auf jedes Pixel des Aufbereitungsbildschirms angewendet wird. Ein Zeiger, der die Seite des Texturspeichers 130 anzeigt, wo die Texturdaten der identifizierten Textur gespeichert werden, ist in der Zelle des Pixels im Referenzpuffer 126 gespeichert. Bei diesem Schritt werden für jedes Pixel des Aufbereitungsbildschirms auch die Schichttiefe D und die Texturkoordinaten (S, T) der Textur, die durch die Verborgene-Oberflächen-Entfernungsoperation identifiziert wurde, und die Intensitätskoeffizienten des Aufbereitungsbildschirmpixels berechnet. Die Schichttiefe, die Texturkoordinaten und die Intensitätskoeffizienten werden ebenfalls in der Zelle des Pixels im Referenzpuffer gespeichert.
  • Bei Schritt 408 werden die Texturkoordinaten und die Schichttiefen, die im Referenzpuffer 126 gespeichert sind, verwendet, um die Kacheln der Pyramidendatenstruktur zu identifizieren, deren Musterdaten zum Aufbereiten des Bildes erfaßt werden müssen.
  • Bei Schritt 410 wird eine zweite Ladeoperation ausgeführt. Dabei werden die Musterdaten von nur jenen Kacheln, die bei Schritt 408 identifiziert wurden, erfaßt. Die Musterdaten werden entweder durch Laden derselben vom Server oder durch Synthetisieren derselben von den Musterdaten der Schicht unmittelbar darunter, d. h. der nächsthöheren Auflösungsschicht, erfaßt. Normalerweise werden die Musterdaten von nur einem Bruchteil der Kacheln, die eine Schicht darstellen, erfaßt. Weil außerdem die Musterdaten der Niedrigere-Auflösungsschichten synthetisiert werden können, wenn die notwendigen Musterdaten in der nächsthöheren Auflösungsschicht erfaßt worden sind, kann der Bruchteil der Kacheln der Niedrigere-Auflösungsschichten, deren Musterdaten durch Laden erfaßt wurden, kleiner sein als der Bruchteil der Kacheln der Höhere-Auflösungsschichten, deren Musterdaten durch Laden erfaßt werden. Da normalerweise weniger als alle Musterdaten geladen werden, wird dieser Schritt erheblich schneller als die herkömmliche Ladungsphase ausgeführt.
  • Bei den Schritten 412 und 414 wird eine finale Rasterisierungsoperation ausgeführt. Bei Schritt 412 wird ein Satz von Texturfarbdaten für jedes Pixel des Aufbereitungsbildschirms durch Interpolation von den Musterdaten für die Texturkacheln, die bei Schritt 410 erfaßt wurden, berechnet.
  • Bei Schritt 412 werden die Texturfarbwerte für jedes Pixel durch die Intensitätskoeffizienten des Pixels, die vom Referenzpuffer 126 gelesen wurden, und die resultierenden finalen Farbwerte für die Pixel werden im Pixel-/Tiefenpuffer 124 gespeichert. Die Intensitätskoeffizienten werden während der anfänglichen Rasterisierungsoperation berechnet.
  • Bei Schritt 414 werden die finalen Farbwerte für die Pixel des Aufbereitungsbildschirms in ein Signal umgewandelt, das zum Anzeigen auf dem Monitor 150 geeignet ist.
  • Bei Schritt 416 endet die Ausführung.
  • Das erfindungsgemäße Verfahren und die Operation der Aufbereitungsvorrichtung wird nun ausführlicher unter Bezugnahme auf 1, 2, 3 und 4B beschrieben. Die Ausführung beginnt bei Schritt 450.
  • Bei den Schritten 451 und 452 wird eine erste Ladeoperation ausgeführt. Dabei werden keine Musterdaten geladen.
  • Bei Schritt 451 werden die Polygonmaschendaten vom Speicher 112 in den Server 110 geladen. Die Polygonmaschendaten umfassen Daten, die die Texturen spezifizieren, die auf die Oberflächen der Polygone angewendet werden.
  • Bei Schritt 452 werden die Breiten- und Höhenwerte von jeder Textur, die durch die Polygonmaschendaten spezifiziert ist, vom Speicher 114 des Servers 110 geladen. Die Breiten- und Höhenwerte der Texturen bilden den kleinen Bruchteil der Texturdaten, auf die vorstehend Bezug genommen wurde. Es werden keine Musterdaten, die die Mehrheit der Texturdaten bilden, zu diesem Zeitpunkt geladen. Bei diesem Schritt wird auch eine Texturinitialisierungsoperation ansprechend auf die Breiten- und Höhenwerte für jede der Texturen ausgeführt, die durch die Polygonmaschendaten spezifiziert sind. Bei dieser Initialisierungsoperation werden die Breiten- und Höhenwerte verwendet, um die Anzahl von Schichten (Dmax + 1) zu berechnen, die die Mehrfachauflösungs-Pyramidendatenstruktur, die in 2 gezeigt ist, verwenden wird, um die Musterdaten der Textur zu speichern, wenn die Musterdaten eventuell erfaßt sind. Ebenfalls berechnet oder von einer Nachschlagetabelle gelesen wird die Anzahl von Kacheln in den Reihen für jede Schicht der Pyramidendatenstruktur und die Kachelzahl der obersten, linken Kachel von jeder Schicht.
  • Der Wert von Dmax wird bei 133 der Seite 132 der Textur des Texturspeichers 130 gespeichert. Die Initialisierungsoperation verwendet auch die Ergebnisse, die durch die Schichtberechnung erzeugt wurden, die vorstehend beschrieben wurde, und die Textur-Höhen- und Breitenwerte, um die Pyramidendatenstruktur 134, die Kachelladeliste 136, das Kachelabstandsarray 138 und das Kachelbasisarray 140 für jede Textur in der Seite der Textur des Texturspeichers einzurichten.
  • Die Kachelladeliste 136 umfaßt einen Eintrag für jede Kachel in der Pyramidendatenstruktur 134. Der Eintrag speichert einen Zwei-Bit-Code, der den Erfassungsstatus der Kachel darstellt. Der Ladestatus einer Kachel weist drei Zustände auf, die bei dieser Offenbarung durch die Buchstaben N, L und E dargestellt sind. Der Ladestatus wird bei einer praktischen Aufbereitungsvorrichtung durch den vorstehend erwähnte Zwei-Bit-Code dargestellt. Die Texturinitialisierungsoperation setzt den Eintrag für jede Kachel auf „N", was anzeigt, daß die Musterdaten für die Kachel in der Pyramidendatenstruktur für die Textur nicht vorliegen. Später setzt die Operation, die die Kacheln, deren Musterdaten erfaßt werden müssen, identifiziert, die Einträge in der Kachelladeliste für solche Kacheln auf „L", was anzeigt, daß die Musterdaten für die Kachel in der zweiten Ladeoperation, auf die vorstehend Bezug genommen wurde, erfaßt werden müssen. Die zweite Ladeoperation setzt die Einträge in die Kachelladeliste für diejenigen der Kacheln, deren Musterdaten in der Pyramidendatenstruktur erfaßt und gespeichert wurden, auf „E", was anzeigt, daß die Musterdaten für die Kachel in der Pyramidendatenstruktur existieren und zum Aufbereiten des Bildes verwendet werden können.
  • Das Kachelabstandarray 138 und das Kachelbasisarray 140 umfassen jeweils einen Eintrag für jede Schicht der Pyramidendatenstruktur 134. Der Eintrag in das Kachelabstandsarray 138 speichert den Kachelabstand der Schicht. Der Kachelabstand ist die Anzahl von Kacheln in den Reihen der Schicht. Der Eintrag in das Kachelbasisarray 140 speichert die Kachelbasis der Schicht. Die Kachelbasis ist die Kachelzahl der obersten, linken Kachel der Schicht.
  • Wenn die Textur durch die Musterdaten der Texturpixel, die in einem Viereck arraymäßig angeordnet sind, dessen Abmessung bezüglich der Pixel eine Potenz von 2 ist, z. B. 512 × 512 Pixel, definiert ist, sind die Werte des Kachelabstands in den Schichten der Pyramidendatenstruktur 200, die an der obersten (Niedrigste-Auflösungs-) Schicht 206 starten, 1, 4, 16, ... 4D, wobei D die Schichttiefe der Schicht ist, die oberste Schicht eine Schichttiefe von 0 aufweist. Die entsprechenden Werte der Kachelbasis sind:
    Figure 00270001
    wobei k ein Index ist.
  • Wenn die Textur durch die Musterdaten der Texturpixel definiert ist, die in einem Array arraymäßig angeordnet sind, dessen Abmessungen keine Potenzen von 2 sind, sind kompliziertere Berechnungen erforderlich, um den Kachelabstand und die Kachelbasis zu erzeugen. Solche Berechnungen werden bei Bedarf bei Schritt 452 ausgeführt. Es ist zu beachten, daß bei Abschluß von Schritt 452 keine Musterdaten für die Texturen erfaßt worden sind.
  • Bei Schritt 453 wird eine herkömmliche Geometriephasenoperation ausgeführt. Dabei werden die Projektionen der Polygone auf den Aufbereitungsbildschirm berechnet.
  • Bei Schritt 454 wird die initiale Rasterisierungsoperation ausgeführt. Dabei werden die Projektionen der Polygone auf den Aufbereitungsbildschirm, die bei Schritt 453 berechnet wurden, in Objektpixel umgewandelt, und eine Tiefenberechnung wird für jedes Objektpixel zur Verwendung bei einer Verborgene-Oberflächenentfernung ausgeführt. Die Tiefenberechnungen verwenden vorzugsweise den Pixel-/Tiefenpuffer 124 zum Registrieren des Tiefenwerts der Objektpixel. Alternativ kann ein Tiefenpuffer unabhängig vom Pixelpuffer verwendet werden. Wenn die Objektpixel überlappen, wird nur das Objektpixel mit dem kleinsten Tiefenwert in dem Puffer registriert, so daß die Verborgene-Oberflächenentfernung ausgeführt wird.
  • Die Tiefenberechnungen definieren das Objektpixel entsprechend jedem Pixel des Aufbereitungsbildschirms. Für die Aufbereitungsbildschirmpixel, die den Objektpixeln entsprechen, die in einem Polygon positioniert sind, auf das eine Textur angewendet werden soll, wird das Feld 301 der Zelle 300 des Pixels im Referenzpuffer 126 auf 1 gesetzt, und die Adresse der Seite des Texturspeichers 130, in dem die Texturdaten für die Textur gespeichert sind, in das Feld 310 der Zelle eingetragen. Für die Aufbereitungsbildschirmpixel, die den Objektpixeln entsprechen, die in einem Polygon positioniert sind, dessen Farbe durch eine direkte Farbberechnung bestimmt wird, wird das Feld 301 der Zelle des Pixels 300 im Referenzpuffer 126 auf null gesetzt.
  • Für das Aufbereitungsbildschirmpixel, das jedem Objektpixel entspricht, das in einem Polygon positioniert ist, auf das keine Textur angewendet werden soll, wie durch eine 0 in dem Feld 301 der Zelle 300 des Aufbereitungsbildschirmpixels im Referenzpuffer 126 angezeigt ist, wird eine herkömmliche Schattierungsberechnung ausgeführt. Die Schattierungsberechnung erzeugt einen Satz von Farbwerten für das Pixel. Die roten, grünen und blauen Farbwerte in dem Satz von Farbwerten werden in den R-, G- und B-Abschnitten des Felds 302 der Zelle des Pixels im Referenzpuffer gespeichert.
  • Für das Aufbereitungsbildschirmpixel, das jedem Objektpixel entspricht, das in einem Polygon positioniert ist, auf das eine Textur angewendet werden soll, wie durch eine 1 in dem Feld 301 der Zelle des Aufbereitungsbildschirmpixels im Referenzpuffer 126 angezeigt ist, wird eine partielle Schattierungsberechnung ausgeführt. Die partielle Schattierungsberechnung erzeugt Werte für die Texturkoordinaten (S, T), die Schichttiefe D und die Intensitäts-Koeffizienten für das Pixel. Die Texturkoordinaten werden in dem Feld 312 gespeichert, die Schichttiefe wird im Feld 314 gespeichert, und die roten, grünen und blauen Intensitäts-Koeffizienten werden in den Abschnitten IR, IG bzw. IB des Felds 316 der Zelle des Pixels im Referenzpuffer gespeichert.
  • Die Erfindung schafft zwei Anzeigemodi, nämlich einen Beste-Auflösung-Anzeigemodus und einen Progressive-Auflösung-Anzeigemodus. Der Beste-Auflösung-Anzeigemodus minimiert die Gesamtladezeit der Musterdaten. Der Progressive-Auflösung-Anzeigemodus zeigt ein Bild schneller als der Beste-Auflösung-Anzeigemodus an. Bei dem Progressive- Auflösung-Anzeigemodus werden jedoch die Texturen zuerst mit einer niedrigen Auflösung angezeigt und anschließend mit progressiv zunehmenden Auflösungen angezeigt, bis jede Textur mit einer optimalen Auflösung angezeigt ist. Der Anzeigemodus kann durch den Benutzer (nicht gezeigt) ausgewählt oder durch das 3D-Graphikprogramm definiert werden.
  • Bei Schritt 455 wird ein Test ausgeführt, um zu bestimmen, ob der Beste-Auflösung-Anzeigemodus ausgewählt worden ist. Wenn das Testergebnis JA ist, fährt die Ausführung bei Schritt 461 fort, wo die Verarbeitung für den Beste-Auflösung-Anzeigemodus beginnt. Wenn das Testergebnis NEIN ist, fährt die Ausführung bei Schritt 471 fort, wo die Verarbeitung für den Progressive-Auflösung-Anzeigemodus beginnt. Die Verarbeitung für den Beste-Auflösung-Anzeigemodus wird anschließend beschrieben, und die Verarbeitung für den Progressive-Auflösung-Anzeigemodus wird nachstehend beschrieben.
  • Bei Schritt 461 wird die Routine, die nachstehend ausführlicher unter Bezugnahme auf 5A und 5B beschrieben wird, für jedes Pixel des Aufbereitungsbildschirms mit einer 1 im Feld 301 der Zelle 300 des Pixels im Referenzpuffer 126 ausgeführt. Eine 1 in diesem Feld zeigt an, daß das Objektpixel, das dem Aufbereitungsbildschirmpixel entspricht, in einem Polygon positioniert war, auf das eine Textur angelegt werden sollte. Die Routine identifiziert für jede Textur die Kacheln der Pyramidendatenstruktur 134 der Textur, deren Musterdaten in dem zweiten Ladeprozeß erfaßt werden müssen, um zu ermöglichen, daß das Bild aufbereitet werden kann. Wenn die Ausführung des Schritts 461 beendet ist, werden alle Kacheln von der Pyramidendatenstruktur von jeder Textur, deren Musterdaten erfaßt werden müssen, identifiziert, und die Einträge für diese Kacheln in die Kachelladeliste 136 der Textur werden alle auf „L" gesetzt.
  • Bei Schritt 462 wird die zweite Ladeoperation durch Ausführen der Routine, die nachstehend unter Bezugnahme auf 6 ausführlicher beschrieben wird, für jede Textur, für die eine Seite 132 in dem Texturspeicher 130 existiert, ausgeführt. Die Routine tastet die Kachelladeliste 136 ab, die in der Seite 132 der Textur des Texturspeichers 130 gespeichert ist, und erfaßt die Musterdaten für die Kacheln, deren Kachalladeliste-Einträge auf „L" gesetzt sind. Wie vorstehend angemerkt, können die Musterdaten für jede Kachel durch Laden oder durch Synthese von den Musterdaten in der nächsthöheren Auflösung, d. h. der Schicht unmittelbar unter der Pyramidendatenstruktur, erfaßt werden. Wenn die Ausführung von Schritt 462 beendet ist, werden alle Musterdaten, die zum Aufbereiten des Bildes erforderlich sind, in den Pyramidendatenstrukturen in den jeweiligen Seiten des Texturspeichers gespeichert, und die Einträge für diese Kacheln in den entsprechenden Kachelladelisten werden alle auf „E" gesetzt.
  • Es wird darauf hingewiesen, daß bei Beendung von Schritt 462 eine beträchtliche Anzahl der Einträge in der Kachelladeliste weiterhin auf „N" gesetzt bleibt. Solche Einträge zeigen an, daß die Musterdaten für die entsprechenden Kacheln nicht erfaßt worden sind, weil solche Musterdaten nicht notwendig sind, um das Bild aufzubereiten. Dies ermöglicht, daß Schritt 462 schneller als die herkömmliche Ladephase ausgeführt werden kann.
  • Bei Schritt 463 wird die finale Aufbereitungsoperation durch Ausführen der Routine, die unter Bezugnahme auf 7A ausführlicher beschrieben ist, für jedes Pixel des Aufbereitungsbildschirms mit einer 1 im Feld 301 der Zelle 300 des Pixels des Referenzpuffers 126 ausgeführt. Die Routine führt trilineare Operationen aus, um die partielle Schattierungsoperation, die anfänglich bei Schritt 454 ausgeführt wurde, zu beenden. Die Interpolationen berechnen einen Satz von Texturfarbwerten für das Pixel von den Musterdaten, die bei Schritt 462 erfaßt wurden. Die trili nearen Interpolationen werden unter Verwendung der Musterdaten ausgeführt, die in zwei Schichten der Pyramidendatenstruktur positioniert sind. Die zwei Schichten klammern die Reelle-Zahl-Schichttiefe, die in Feld 314 der Zelle 300 des Pixels der Referenzpuffer 126 gespeichert ist, ein. Die Routine multipliziert dann die Texturfarbwerte mit den jeweiligen Intensitätskoeffizienten, die in Feld 316 der Zelle des Aufbereitungsbildschirmpixels des Referenzpuffers bei Schritt 454 gespeichert wurden, um die finalen Farbwerte für das Pixel zu erzeugen. Die finalen Farbwerte werden in der Position des Pixels des Pixelpuffers gespeichert. Bei dem bevorzugten Ausführungsbeispiel wird der Pixel-/Tiefenpuffer 124 als der Pixelpuffer verwendet. Alternativ kann ein Pixelpuffer unabhängig vom Tiefenpuffer verwendet werden.
  • Bei Schritt 464 werden für jedes Pixel des Aufbereitungsbildschirms mit einer 0 im Feld 301 der Zelle 300 des Pixels im Referenzpuffer 126 die finalen Farbwerte, die im Feld 302 der Zelle des Pixels des Referenzpuffers gespeichert sind, in die Position des Pixels im Pixelpuffer kopiert.
  • Schließlich werden bei Schritt 465 die finalen Farbwerte, die im Pixelpuffer 124 gespeichert sind, direkt oder indirekt an den Monitor 150 ausgegeben. Der Monitor zeigt das aufbereitete Bild ansprechend auf die finalen Farbwerte an, die vom Pixelpuffer empfangen wurden.
  • Die Ausführung rückt dann zu Schritt 481 vor, wo ein Test ausgeführt wird, um zu bestimmen, ob der Benutzer (nicht gezeigt) eine Eingabe eingegeben hat. Der Benutzer kann beispielsweise eine Eingabe eingeben, die den Blickpunkt verändert. Dies erfordert, daß eine neue Aufbereitungsoperation ausgeführt wird. Wenn das Testergebnis NEIN ist, kehrt die Ausführung zu Schritt 481 zurück. Wenn das Testergebnis JA ist, rückt die Ausführung zu Schritt 482 vor, wo die Parameter, die durch die Benutzereingabe betroffen sind, geändert werden. Die Ausführung kehrt dann zu Schritt 453 zurück, und eine neue Aufbereitungsoperation wird ausgeführt. Während der neuen Aufbereitungsoperation müssen die Musterdaten der Kacheln, deren Musterdaten zuvor nicht erfaßt wurden, erfaßt werden, jedoch kann ein Großteil der Musterdaten, die in der Aufbereitungsoperation, die soeben beschrieben wurde, erfaßt wurden, üblicherweise wieder verwendet werden.
  • Die Verarbeitung, die im Progressive-Auflösung-Anzeigemodus ausgeführt wurde, wird nun unter Bezugnahme auf 4B beschrieben. Bei Schritt 471 werden die Musterdaten der obersten Kacheln von allen Texturen, die durch die Polygondaten spezifiziert sind, die bei Schritt 451 geladen wurden, vom Server 110 geladen. Die Musterdaten der obersten Kachel von jeder der Texturen werden in einer entsprechenden Position in der Pyramidendatenstruktur 134 in der Seite 132 der Textur des Texturspeichers 130 gespeichert. Die Musterdaten der obersten Kacheln stellen die jeweiligen Texturen mit der niedrigsten Auflösung dar. Anschließend führt die Verarbeitung eine Auflösungsverbesserungsschleife aus, in der das Bild anfänglich mit Niedrigauflösungstexturen und dann mit progressiv Höhere-Auflösungstexturen angezeigt wird, während die Musterdaten der Höhere-Auflösungskacheln erfaßt werden. Die Auflösungsverbesserungsschleife besteht aus den Schritten 473 – 477.
  • Bei Schritt 472 wird die Routine, die nachstehend ausführlicher unter Bezugnahme auf 7B beschrieben ist, für jedes Pixel des Aufbereitungsbildschirms mit einer 1 im Feld 301 der Zelle 300 des Pixels des Referenzpuffers 126 ausgeführt. Die Routine verwendet eine bilineare und trilineare Interpolation, um Texturfarbwerte für die Texturen zu erzeugen. Die Texturfarbwerte werden mit den Intensitätskoeffizienten multipliziert, die im Referenzpuffer 126 gespeichert sind, und die resultierenden finalen Farbwerte für die Aufbereitungsbildschirmpixel werden im Pixel-/Tiefenpuffer 124 gespeichert. Der Pixel-/Tiefenpuffer wird bei dieser Operation als Pixelpuffer verwendet. Alternativ kann ein Pixelpuffer unabhängig vom Tiefenpuffer verwendet werden.
  • Bei älteren Iterationen der Schleife ist ein Großteil der Texturfarbwerte, die berechnet werden, Zwischenwerte mit einer weniger als optimalen Auflösung. Die älteren Iterationen können jedoch einige der Texturfarbwerte mit einer optimalen Auflösung berechnen. Da die Anzahl von Iterationen zunimmt, steigt die Anzahl von Aufbereitungsbildschirmpixeln, für die die Texturfarbwerte berechnet wurden, mit einer optimalen Auflösung an. Da die Auflösung der Texturfarbwerte ansteigt, steigt auch die Auflösung, mit der die Texturen im Bild angezeigt werden, ebenfalls an.
  • Die Verarbeitung, die nachstehend unter Bezugnahme auf 7B beschrieben wird, setzt auch die Kachelladelisteneinträge von bestimmten Kacheln auf „L". Solche Einträge zeigen die Kacheln an, deren Musterdaten erfasst werden müssen, wenn Schritt 477 zu einem späteren Zeitpunkt in der Routine ausgeführt werden muß. Das Erfassen dieser Musterdaten erhöht die Auflösung der Texturfarbwerte, die erzeugt wurden, wenn der Schritt 472 in der nächsten Iteration der Schleife ausgeführt wird.
  • Bei Schritt 473 werden für jedes Pixel des Aufbereitungsbildschirms mit einer 0 im Feld 301 der Referenzpufferzelle des Pixels die finalen Farbwerte, die im Feld 302 der Referenzpufferzelle des Pixels gespeichert sind, auf die Position des Pixels im Pixelpuffer 124 kopiert.
  • Bei Schritt 474 werden die finalen Farbwerte für die Pixel des Aufbereitungsbildschirms, die im Pixelpuffer 124 gespeichert sind, direkt oder indirekt an den Monitor 150 ausgegeben. Der Monitor zeigt ein Bild ansprechend auf die finalen Farbwerte an. Die Ausführung rückt dann zu Schritt 476 über den Schritt 475 vor. Schritt 475 wird nachstehend beschrieben.
  • Bei Schritt 476 wird ein Test auf der Kachelladeliste 136, die in den Seiten 132 des Texturspeichers 130 gespeichert ist, ausgeführt, um zu bestimmen, ob ein beliebiger der Einträge in die Kachelladeliste auf „L" gesetzt wurde, als Schritt 472 ausgeführt wurde. Wenn das Ergebnis NEIN ist, was anzeigt, daß alle Musterdaten, die zum Aufbereiten des Bildes mit einer besten Auflösung erforderlich sind, erfaßt worden sind, rückt die Verarbeitung zu Schritt 481, wie vorstehend beschrieben, vor. Wenn das Ergebnis JA ist, wird die Ausführung bei Schritt 477 fortgesetzt.
  • Bei Schritt 477 wird die zweite Ladeoperation durch Ausführen der Routine, die nachstehend ausführlicher unter Bezugnahme auf 6 beschrieben wird, für jede Textur, für die eine Seite 132 im Texturspeicher 130 existiert, ausgeführt. Die Routine tastet die Kachelladeliste 136 ab, die in der Seite 132 des Texturspeichers 130 der Textur gespeichert ist und erfaßt die Musterdaten für die Kacheln, deren Kachelladelisteneinträge auf „L" gesetzt sind. Wie vorstehend angemerkt, können die Musterdaten für jede Kachel durch Laden oder durch Synthese von den Musterdaten in der nächsthöheren Auflösungsschicht, d. h. der Schicht unmittelbar unter der Pyramidendatenstruktur, erfaßt werden. Wenn die Ausführung von Schritt 477 beendet ist, werden die Einträge in der Kachelladeliste für die Kacheln, deren Musterdaten erfaßt wurden, auf „E" gesetzt. Die Ausführung kehrt dann zu Schritt 472 zurück.
  • Jedesmal, wenn Schritt 477 ausgeführt wird, werden die Musterdaten mit einer Auflösung, die größer als die bisher erfaßten Musterdaten ist, erfaßt. Dies ermöglicht, daß die finalen Farbwerte eines feinkörnigeren Bildes einer besseren Auflösung erzeugt werden können, wenn der Schritt 472 das nächste Mal ausgeführt wird. Die aus den Schritten 472 – 477 bestehende Schleife wird wiederholt, bis die Musterdaten der Kacheln, die zum Erzeugen des gleichen Bildes erforderlich sind, wie jenem, das durch den Beste- Auflösung-Anzeigemodus geliefert wird, erfaßt worden sind. Ein NEIN-Ergebnis wird in dem Test erhalten, der bei Schritt 476 ausgeführt wird, wenn die Musterdaten der Kacheln, die ein solches Bild liefern, erfaßt worden sind.
  • Die aus den Schritten 472477 bestehende Schleife umfaßt den Musterdaten-Erfassungsschritt 477, und kann somit in seiner Ausführung lange dauern, speziell wenn die Höhere-Auflösung-Musterdaten geladen werden. Daher ist Schritt 475 in der Schleife umfaßt. Dieser Schritt ermöglicht dem Benutzer, die Auflösungsverbesserungsschleife zu unterbrechen, um neue Parameter einzugeben. Die neuen Parameter können eine Veränderung des Blickpunkts sein. Bei Schritt 475 wird ein Test ausgeführt, um zu bestimmen, ob eine Benutzereingabe empfangen worden ist. Wenn das Ergebnis NEIN ist, was anzeigt, daß keine Benutzereingabe empfangen worden ist, wird die Ausführung bei Schritt 476 fortgesetzt, dem nächsten Schritt der Auflösungsverbesserungsschleife. Wenn das Ergebnis JA ist, unterbricht die Auflösungsverbesserungsschleife die Ausführung, und die Ausführung wird bei Schritt 482 fortgesetzt, wo neue Benutzerparameter empfangen werden. Die Ausführung kehrt dann zu Schritt 453 zurück, wo der Aufbereitungsprozeß ansprechend auf die neue Benutzereingabe wiederholt wird.
  • 5A zeigt Einzelheiten der Routine, die bei Schritt 461 ausgeführt werden, um die Kacheln der Pyramidendatenstruktur 200 zu identifizieren, für die die Musterdaten erfaßt werden müssen, um zu ermöglichen, daß das Bild im Beste-Auflösungs-Anzeigemodus aufbereitet wird. Die in 5A gezeigte Routine wird für jedes Pixel des Aufbereitungsbildschirms ausgeführt, beginnt jedoch mit dem Testen des Inhalts des Felds 301 der Referenzpufferzelle 300 des Pixels. Wenn das Feld eine 0 enthält, was anzeigt, daß die finalen Farbwerte des Pixels bei Schritt 454 berechnet wurden, wird der Rest der Routine nicht ausgeführt. Somit wird die Routine tatsächlich nur dann vollständig auf jenen Pixeln ausgeführt, die von den Objektpixeln abgeleitet wurden, die in einem Polygon positioniert waren, auf das eine Textur angewendet werden sollte.
  • Die Ausführung startet bei Schritt 500. Bei Schritt 502 wird ein Test ausgeführt, um zu bestimmen, ob eine 1 im Feld 301 der Referenzpufferzelle 300 des Pixels gespeichert ist. Eine 1 im Feld 301 zeigt an, daß das Aufbereitungsbildschirmpixel einem Objektpixel entspricht, das in einem Polygon positioniert ist, auf das eine Textur angewendet werden soll. Wenn das Testergebnis NEIN ist, wird die Ausführung bei Schritt 542 fortgesetzt, wo die Pixeladresse so erhöht wird, daß das nächste Aufbereitungsbildschirmpixel verarbeitet werden kann. Wenn das Testergebnis JA ist, wird die Ausführung bei Schritt 504 fortgesetzt.
  • Bei Schritt 504 werden die Werte der Texturkoordinaten (S, T) und der Schichttiefe D von den Feldern 312 und 314 der Zelle 300 des Aufbereitungsbildschirmpixels im Referenzpuffer 126 gelesen. Alle Größen (Quantitäten), die gelesen werden, sind reelle Zahlen, die als Gleitkomma-, oder Festkommawerte dargestellt werden können.
  • Bei Schritt 506 wird ein Test ausgeführt, um zu bestimmen, ob der Wert von D, der bei Schritt 504 gelesen wurde, größer als der Wert von Dmax für die Textur ist. Der Wert von Dmax wird vom Abschnitt 133 der Seite 132 des Texturspeichers 130, der durch die Adresse, die im Feld 310 der Zelle 300 gespeichert ist, angezeigt ist, gelesen. Ein Wert von D größer als Dmax zeigt an, daß die maximale Auflösung der Musterdaten nicht ausreichend ist, um die gewünschte Texturauflösung in dem aufbereiteten Bild zu liefern. In diesem Fall wird D auf die maximal verfügbare Auflösung, d. h. Dmax, gesetzt. Wenn das Testergebnis JA ist, rückt die Ausführung zu Schritt 508 vor, wo D auf Dmax gesetzt wird, und dann zu Schritt 510. Wenn das Testergebnis NEIN ist, rückt die Ausführung direkt zu Schritt 510 vor.
  • Bei Schritt 510 wird die Schichttiefe D, die bei Schritt 504 gelesen wurde, in ihren Ganzzahlteil DL und ihren Bruchzahlteil Df getrennt. Zusätzlich wird der Wert des Skalierungsfaktors SF = Dmax – DL berechnet.
  • Bei Schritt 512 werden die Texturkoordinaten (S, T) in der Schicht Dmax durch 2SF geteilt, um die Texturkoordinaten (S, T)L in der Schicht DL zu erhalten.
  • Bei Schritt 514 werden die Werte des Kachelabstands und der Kachelbasis für die Schicht DF jeweils vom Kachelabstandsarray 138 und dem Kachelbasisarray 140 von der Seite 132 der Textur des Texturspeichers 130 gelesen und den variab-len WL und BL zugeordnet. Die Seite der Textur in dem Texturspeicher wird durch die Adresse angezeigt, die im Feld 310 der Zelle 300 des Pixels im Referenzpuffer 126 gespeichert ist.
  • Bei Schritt 516 werden die Texturkoordinaten (S, T)L in Ganzzahlteile (Si, Ti)L und Bruchzahlteile (Sf, Tf)L getrennt.
  • Bei Schritt 518 werden die Ganzzahlteile (Si, Ti)L der Texturkoordinaten in der Schicht DL jeweils durch TWL und THL geteilt, um die Quotienten (Sr, Tr)L zu erzeugen. Dabei sind TWL und THL jeweils die Breite und Höhe der Pixel der Kacheln in der Schicht DL. Der Rest der Divisionen (Sb, Tb)L wird ebenfalls zur Verwendung in der Teilroutine, die bei Schritt 524 ausgeführt wird, und zur Verwendung beim Berechnen von lokalen Koordinaten zur Anwendung auf die Kachel, die bei Schritt 520 identifiziert wird, berechnet.
  • Bei Schritt 520 wird die Kachelzahl der Kachel Ntil in der Schicht DL, zu der die Musterdaten, die zum Aufbereiten des Bildes erforderlich sind, gehören, von der Kachelbasis BL, dem Kachelabstand WL für die Schicht und den Quotienten, die bei Schritt 518 berechnet wurden, berechnet. Die Kachelzahl Ntil wird durch Summieren der Kachelbasis BL des Quotienten (Sr)L und des Produkts des Quotienten (Tr)L und des Kachelabstands WL, berechnet, d. h. Ntil = BL + ((Tr) L × WL) + (Sr)L.
  • Bei Schritt 522 wird der Eintrag für die Kachel Ntil, der bei Schritt 520 in der Kachelladeliste 136 in der Seite 130 des Texturspeichers 130 identifiziert wurde, auf „L" gesetzt, um anzuzeigen, daß die Musterdaten dieser Kachel zum Aufbereiten des Bildes erfaßt werden müssen. Die Seite des Texturspeichers ist durch die Adresse angezeigt, die im Feld 310 der Zelle 300 des Pixels im Referenzpuffer 126 gespeichert ist.
  • Wenn die Texturkoordinaten (S, T)L einen Punkt auf der Grenze zwischen der Kachel, die bei Schritt 520 identifiziert wurde, und einer oder mehrerer benachbarter Kacheln definieren, müssen die Einträge in der Kachelladeliste für die benachbarten Kacheln zusätzlich auf „L" gesetzt werden, um anzuzeigen, daß die Musterdaten dieser Kacheln erfaßt werden müssen. Bei Schritt 524 wird die Teilroutine, die nachstehend ausführlicher unter Bezugnahme auf 5B beschrieben wird, unter Verwendung der Reste (Sb, Tb)L und der Bruchzahlteile (Sf, Tf)L, die in den Schritten 518 bzw. 516 erhalten wurde, ausgeführt. Die Teilroutine prüft, ob die Koordinaten (S, T)L einen Punkt auf der Grenze zwischen der Kachel, die bei Schritt 520 identifiziert wurde, und einer oder mehreren benachbarten Kacheln definiert und setzt die Kachelladelisteneinträge für die zusätzlichen Kacheln nach Bedarf auf „L", so daß die Musterdaten dieser Kacheln erfaßt werden. Nach Beenden der Teilroutine rückt die Ausführung zu Schritt 526 vor.
  • Wenn der Wert von D, der im Feld 314 der Zelle 300 des Pixels im Referenzpuffer 126 gespeichert wurde, eine Ganzzahl ist, können die Texturfarbwerte für das Aufbereitungsbildschirmpixel durch Interpolation unter Verwendung der Musterdaten in ausschließlich der Schicht DL bestimmt werden. Wenn, wie es üblicherweise der Fall ist, der Wert von D einen Nicht-Null-Bruchzahlabschnitt aufweist, wird vorzugsweise eine trilineare Interpolation verwendet, um die Texturfarbwerte zu erzeugen. Die trilineare Interpolation erfordert zusätzlich Musterdaten der nächsthöheren Auflösungsschicht DG. Die Schicht DG weist eine Schichttiefe auf, die um eins größer als die der Schicht DL ist, d. h. DG = DL + 1. Der Rest der Routine, der in 5A gezeigt ist, identifiziert die zumindest eine der Kacheln in der Höhere-Auflösungsschicht DG, deren Musterdaten zum Aufbereiten des Bildes erfaßt werden müssen.
  • Bei Schritt 526 wird ein Test ausgeführt, um zu bestimmen, ob der Wert von Df, der in Schritt 510 erhalten wurde, größer als Null ist, d. h. ob der Wert von D eine Ganzzahl ist. Wenn das Testergebnis NEIN ist, wird die Ausführung bei Schritt 542 fortgesetzt, wo die Ausführungsbildschirmpixeladresse inkrementiert wird, wie vorstehend beschrieben wurde. Wenn das Testergebnis JA ist, werden die Schritte 528 bis 540 ausgeführt, um die Kachelladelisteneinträge von einer oder mehreren Kacheln in der Schicht DG unmittelbar unter der Schicht DL, in der die lineare Auflösung das Doppelte der Auflösung der Schicht DL beträgt, auf „L" zu setzen. Die Musterdaten von einer oder mehreren Kacheln, die in der nächstniedrigeren Schicht DG identifiziert werden, werden zur Verwendung bei der Interschichtinterpolation erfaßt.
  • Bei Schritt 528 werden die Texturkoordinaten (S, T)L mit zwei multipliziert, um die Texturkoordinaten (S, T)G in der Schicht DG zu erhalten.
  • Die Schritte 530540 sind im wesentlichen identisch mit den Schritten 514524, außer daß die Quantitäten, die bei den Schritten 530 – 540 verwendet werden, und die Quantitäten, die bei den Schritten 530540 berechnet wurden, sich auf die Schicht DG anstelle auf die Schicht DL beziehen. Bei Schritt 538 wird der Eintrag in der Kachelladeliste 136 für die identifizierte Kachel Ntil in der Schicht DG auf „L" gesetzt, was anzeigt, daß die Musterdaten dieser Kachel erfaßt werden müssen, um das Bild aufzubereiten. Die Kachelladeliste ist in der Seite 132 des Texturspeichers 130 gespeichert, was durch die Adresse angezeigt ist, die im Feld 310 der Zelle 300 des Pixels im Referenzpuffer 126 gespeichert ist. Zusätzliche Kacheln in der Schicht DG können in der Teilroutine markiert werden, die bei Schritt 540 ausgeführt wird. Nach Beendung der Teilroutine wird die Ausführung bei Schritt 542 fortgesetzt.
  • Bei Schritt 542 wird die Pixeladresse inkrementiert. Bei Schritt 544 wird ein Test ausgeführt, um zu bestimmen, ob alle Pixel im Wiederaufbereitungsbildschirm verarbeitet worden sind. Wenn das Ergebnis JA ist, wird die Ausführung bei Schritt 546 fortgesetzt, wo sie zur Hauptroutine, die in 4B gezeigt ist, zurückkehrt. Wenn das Testergebnis NEIN ist, kehrt die Ausführung zu Schritt 502 zurück.
  • 5B zeigt Einzelheiten der in Schritt 524 ausgeführten Teilroutine des Verfahrens, das in 5A gezeigt ist. Die Teilroutine bestimmt, ob die Texturkoordinaten (S, T)L einen Punkt auf der Grenze zwischen der Kachel, die bei Schritt 520 identifiziert wurde, und einer oder mehreren benachbarten Kacheln definieren, und, wenn dies der Fall ist, markiert sie die Einträge der benachbarten Kacheln in der Kachelladeliste. Die Teilroutine, die bei Schritt 540 ausgeführt wird, ist ähnlich, wird jedoch auf die Texturkoordinaten (S, T) G angewendet.
  • Die Ausführung startet bei Schritt 551.
  • Bei Schritt 553 werden Tests ausgeführt, um zu bestimmen, ob die Texturkoordinaten (S, T)L einen Punkt auf einer vertikalen Kante der Kachel definieren, die bei Schritt 520 identifiziert wurde. Ein solcher Punkt befindet sich auf der Grenze der identifizierten Kachel und einer Kachel benachbart in die horizontale Richtung. Ein Test wird ausgeführt, um zu bestimmen, ob der Rest (Sb) L, der bei Schritt 518 erzeugt wurde, gleich TWL – 1 ist, und ein Test wird ausgeführt, um zu bestimmen, ob der Bruchzahlteil (Si)L der Koordinate SL, die bei Schritt 516 erzeugt wurde, größer null ist. Wenn das Ergebnis von jedem Test NEIN ist, wird die Ausführung zu dem Schritt 561 weitergeleitet. Wenn das Ergebnis von beiden Tests JA ist, was anzeigt, daß der Punkt, der durch die Koordinaten (S, T)L, definiert ist, sich auf einer vertikalen Kante der identifizierten Kachel befindet, wird die Ausführung zu Schritt 555 weitergeleitet.
  • Bei Schritt 555 wird der Eintrag in die Kachelladeliste für die Kachel mit der Kachelzahl Ntil + 1 auf „L" gesetzt. Die Ausführung rückt dann zu Schritt 557 vor.
  • Bei Schritt 557 werden Tests ausgeführt, um zu bestimmen, ob die Koordinaten (S, T)L einen Punkt auf einer Ecke der Kachel definieren, die bei Schritt 520 identifiziert wurde. Ein solcher Punkt befindet sich auf der Grenze der identifizierten Kachel und der Kacheln benachbart in sowohl die horizontale als auch vertikale Richtung. Ein Test wird ausgeführt, um zu bestimmen, ob der Rest (Tb)L, der bei Schritt 518 erzeugt wurde, gleich THL – 1 ist, und ein Test wird ausgeführt, um zu bestimmen, ob der Bruchzahlteil (Tf)L, der Koordinate TL, die bei Schritt 516 erzeugt wurde, größer null ist. Wenn das Ergebnis von beiden Tests NEIN ist, wird die Ausführung bei Schritt 561 fortgesetzt. Wenn das Ergebnis von beiden Tests JA ist, was anzeigt, daß der Punkt, der durch die Koordinaten (S, T) L definiert wurde, sich auf einer Ecke der identifizierten Kachel befindet, wird die Ausführung bei Schritt 559 fortgesetzt.
  • Bei Schritt 559 wird der Eintrag in die Kachelladeliste für die Kachel mit der Kachelzahl Ntil + WL + 1 auf „L" gesetzt. Die Ausführung gelangt dann zu Schritt 561. _ Bei Schritt 561 werden Tests ausgeführt, um zu bestimmen, ob die Koordinaten (S, T)L einen Punkt auf einer horizonta len Kante der Kachel definieren, die bei Schritt 520 identifiziert wurde. Ein solcher Punkt befindet sich auf der Grenze zwischen der identifizierten Kachel und einer Kachel benachbart in die vertikale Richtung. Das ausgeführte Testverfahren ist mit dem identisch, das bei Schritt 557 ausgeführt wurde, d. h. ein Test bestimmt, ob der Rest (Tb)L, der bei Schritt 518 erzeugt wurde, gleich THL – 1 ist, und ein Test bestimmt, ob der Bruchzahlteil (Tf)L der Koordinate TL, der Schritt 516 erzeugt wurde, größer null ist. Wenn das Ergebnis von beiden Tests NEIN ist, gelangt die Ausführung zu Schritt 567, wo sie zur Hauptroutine zurückkehrt. Wenn das Ergebnis von beiden Tests JA ist, was anzeigt, daß der Punkt, der durch die Koordinaten definiert ist, sich auf einer horizontalen Kante der identifizierten Kachel befindet, gelangt die Ausführung zu Schritt 563.
  • Bei Schritt 563 wird der Eintrag in die Kachelladeliste für die Kachel mit der Kachelzahl Ntil + WL auf „L" gesetzt. Die Ausführung gelangt dann zu Schritt 565, von wo aus sie zur Hauptroutine zurückkehrt.
  • 6 ist ein ausführliches Flußdiagramm eines Beispiels einer Routine, die verwendet werden kann, um Schritt 462 der Routine, die in 4B gezeigt ist, auszuführen. Die Routine testet die Kachelladeliste 136, die in jeder Seite 132 des Texturspeichers 130 gespeichert ist, erfaßt die Musterdaten für die Kacheln, deren Kachelladelisteneinträge auf „L" gesetzt wurden, und setzt die Kachelladelisteneinträge für die Kacheln, deren Musterdaten erfaßt worden sind, auf „E". Die Musterdaten werden durch Synthese oder durch Laden erfaßt. Die Routine wird für jede der Texturen ausgeführt, für die die Texturdaten in einer Seite 132 des Texturspeichers 130 gespeichert sind. Nachdem der Schritt 461 der Routine, die in 4B gezeigt ist, für jede Zelle im Referenzpuffer 126 aufgeführt wurde, wird der Eintrag in der Kachelladeliste für jede der Kacheln, deren Musterdaten zum Aufbereiten des Bildes erfaßt werden müssen, auf null gesetzt.
  • Die Ausführung startet bei Schritt 600. Die Abschnitte der Kachelladeliste, die den Schichten der Pyramidendatenstruktur entsprechen, die in 2 gezeigt ist, werden getestet, wobei bei dem Abschnitt begonnen wird, der der Bodenschicht entspricht, in der die Texturauflösung am höchsten ist. In der nachstehenden Erörterung wird die Schicht, die dem Kachelladelistenabschnitt entspricht, der getestet wird, als die aktuelle Schicht bezeichnet. Die Schicht mit einer Schichttiefe um 1 weniger als die aktuelle Schicht wird als die nächsthöhere Schicht bezeichnet. Die Schicht mit einer Schichttiefe, die um eins größer als diejenige der aktuellen Schicht ist, wird als die nächstniedrigere Schicht bezeichnet.
  • Bei Schritt 602 wird der Wert des Schichttiefenindex d auf Dmax gesetzt, der Schichttiefe der Boden- (Höchste-Auflösungs-) Schicht.
  • Bei Schritt 604 wird der Kachelindex t auf Bd gesetzt, dem Wert für die Kachelbasis für die aktuelle Schicht.
  • Bei Schritt 606 wird ein Test ausgeführt, um zu bestimmen, ob der Eintrag in die Kachelladeliste (als TLL in den Figuren abgekürzt) für die Kachel mit dem Kachelindex t auf „L" gesetzt ist. Wenn das Testergebnis NEIN ist, was anzeigt, daß die Musterdaten für die Kachel nicht erfaßt werden müssen, wird die Ausführung bei Schritt 618 fortgesetzt. Wenn das Testergebnis JA ist, wird die Ausführung bei Schritt 608 fortgesetzt.
  • Bei Schritt 608 wird ein Test ausgeführt, um zu bestimmen, ob der Schichttiefenindex t, der die aktuelle Liste anzeigt, kleiner als die Schichttiefe Dmax der Bodenschicht 202 der Pyramidendatenstruktur 200 ist, die in 2 gezeigt ist. Die Musterdaten, die in der Bodenschicht gespeichert sind, können nicht synthetisiert werden, da keine Musterdaten einer höheren Auflösung vorliegen, die verfügbar sind, aus denen die Musterdaten der Bodenschicht synthetisiert werden können. Wenn somit das Testergebnis NEIN ist, was anzeigt, daß die aktuelle Schicht die Bodenschicht ist, wird die Ausführung bei Schritt 610 fortgesetzt, wo die Musterdaten für die Kachel mit dem Kachelindex t geladen und in der Position gespeichert werden, die durch den Kachelindex in der Pyramidendatenstruktur 134 in der Seite 132 der Textur des Texturspeichers 130 angezeigt ist. Die Ausführung wird dann bei Schritt 616 fortgesetzt, der nachstehend beschrieben wird.
  • Wenn das Testergebnis bei Schritt 608 JA ist, wird die Ausführung bei Schritt 612 fortgesetzt. Ein Testergebnis von JA zeigt an, daß die aktuelle Schicht höher als die Bodenschicht ist, so daß die Möglichkeit besteht, daß die Musterdaten für die Kachel in der aktuellen Schicht von den Musterdaten der Quellenkacheln synthetisiert werden können, die in der nächstniedrigeren Schicht positioniert sind, d.h. der Höhere-Auflösungsschicht, deren Schichttiefe d + 1 ist. Das Synthetisieren der Musterdaten ist üblicherweise gegenüber dem Laden der Musterdaten zu bevorzugen, weil die Musterdaten schneller synthetisiert als sie geladen werden können.
  • Bei Schritt 612 wird ein Test ausgeführt, um zu bestimmen, ob die Einträge in der Kachelladeliste für die Quellenkacheln der Kachel mit dem Kachelindex t alle auf „E" gesetzt sind. Die Quellenkacheln sind Kacheln, die in der nächstniedrigeren Schicht positioniert sind, deren Musterdaten verwendet werden können, um die Musterdaten der Kachel in der aktuellen Schicht zu synthetisieren. Eine solche Synthese kann nur ausgeführt werden, wenn die Musterdaten von allen erforderlichen Quellenkacheln in der Pyramidendatenstruktur existieren, wie durch „E" in den Kachelladelisteneinträgen für alle Quellenkacheln angezeigt ist. Die Musterdaten der vier Quellenkacheln in der nächstniedrigeren Schicht sind erforderlich, um die Musterdaten der meisten Kacheln in der aktuellen Schicht zu synthetisieren. Die Musterdaten von nur zwei Quellenkacheln sind jedoch erforderlich, um die Musterdaten der Kacheln zu synthetisieren, die an den rechten und unteren Grenzen der aktuellen Schicht positioniert sind. Außerdem werden nur die Musterdaten von einer Quellenkachel als die Musterdaten der Kachel verwendet, die am Boden, rechts von der aktuellen Schicht positioniert ist.
  • Wenn das Testergebnis bei Schritt 612 NEIN ist, was anzeigt, daß ungenügend Musterdaten in der nächstniedrigeren Schicht existieren, um die Kacheln mit dem Kachelindex t in der aktuellen Schicht zu synthetisieren, wird die Ausführung bei Schritt 610 fortgesetzt. Bei Schritt 610 werden die Musterdaten der Kachel mit dem Kachelindex t wie vorstehend beschrieben geladen. Wenn das Testergebnis JA ist, wird die Ausführung bei Schritt 614 fortgesetzt.
  • Bei Schritt 614 werden die Musterdaten der Kachel mit dem Kachelindex t in der aktuellen Schicht von den Musterdaten der Quellenkacheln in der nächstniedrigeren Schicht synthetisiert. Die synthetisierten Musterdaten werden in der Position gespeichert, die durch den Kachelindex in der Pyramidendatenstruktur 134 in der Seite 132 der Textur des Texturspeichers 130 angezeigt sind. Die Ausführung wird dann bei Schritt 616 fortgesetzt.
  • Bei Schritt 616 wird der Eintrag in der Kachelladeliste für die Kachel mit dem Kachelindex t auf „E" gesetzt, was anzeigt, daß die Musterdaten der Kachel nun in der Pyramidendatenstruktur der Textur als Ergebnis ihrer Erfassung durch die Synthese bei Schritt 614 oder durch Laden bei Schritt 610 existieren.
  • Bei Schritt 618 wird der Kachelindex inkrementiert.
  • Bei Schritt 620 wird ein Test ausgeführt, um zu bestimmen, ob die Kachelladelisteneinträge aller Kacheln in der aktuellen Schicht getestet worden sind. Dies wird durch Testen vorgenommen, ob der Wert des Kachelindex größer als Bd + 1 ist, dem Wert der Kachelbasis der nächstniedrigeren Schicht. Wenn die aktuelle Schicht die Boden- (Höchste-Auflösungs-) Schicht ist, wird der Wert der Gesamtanzahl von Kacheln, die im Kachelbasisarray gespeichert sind, als die Kachelbasis der (nicht existenten) Schicht unter der Bodenschicht verwendet. Wenn das Testergebnis NEIN ist, kehrt die Ausführung zu Schritt 606 zurück, so daß der Kachelladelisteneintrag einer weiteren Kachel in der aktuellen Schicht getestet werden kann. Wenn das Testergebnis JA ist, was anzeigt, daß alle möglichen Musterdaten für die aktuelle Schicht erfaßt worden sind, wird die Ausführung bei Schritt 622 fortgesetzt.
  • Bei Schritt 622 wird der Schichttiefenindex d um eins dekrementiert.
  • Bei Schritt 624 wird ein Test ausgeführt, um zu bestimmen, ob die Schichttiefe d der aktuellen Schicht kleiner null ist, der Schichttiefe der obersten (Niedrigste-Auflösungs-) Schicht. Wenn das Testergebnis NEIN ist, kehrt die Ausführung zu Schritt 604 zurück, so daß die Musterdaten der nächsthöheren Schicht erfaßt werden können. Wenn das Testergebnis JA ist, was anzeigt, daß die Musterdaten aller Kacheln, deren Kachelladelisteneinträge auf „L" gesetzt sind, erfaßt worden sind, wird die Ausführung bei Schritt 626 fortgesetzt, von wo aus sie zu der Routine, die in 4B gezeigt ist, zurückkehrt.
  • 7A zeigt Details der Routine, die bei Schritt 463 ausgeführt wurde, der Hauptroutine, die in 4B ausgeführt wurde, um die finalen Farbwerte zum Aufbereiten von Bildschirmpixeln in dem Beste-Auflösung-Anzeigemodus zu erzeugen. Diese Routine wird für jedes Pixel des Bearbeitungsbildschirms mit einer 1 im Feld 301 der Referenzpufferzelle 300 des Pixels ausgeführt. Eine 1 in diesem Feld zeigt an, daß das Aufbereitungsbildschirmpixel einem Objektpixel entspricht, das in einem Polygon positioniert ist, auf das eine Textur angewendet werden soll. Die finalen Farbwerte für jedes Aufbereitungsbildschirmpixel werden durch Multiplizieren der Intensitätskoeffizienten, die bei Schritt 454 berechnet wurden, mit den Texturfarbwerten erhalten, die durch die trilineare Interpolation von den Musterdaten, die bei Schritt 462 erfaßt wurden, erhalten wurden. Die Ausführung beginnt bei Schritt 700.
  • Bei Schritt 702 greift die Routine auf die Zelle 300 des Pixels im Referenzpuffer 126 zu und liest die Texturkoordinaten S, T und die Schichttiefe D. Diese Parameter sind alle reelle Zahlen.
  • Bei Schritt 704 werden die Schichttiefen der zwei Schichten der Pyramidendatenstruktur bestimmt, die verwendet werden, um die Interschichtinterpolation auszuführen, um die Texturfarbwerte für die Schichttiefe mit dem Wert von D, der bei Schritt 702 gelesen wurde, zu erhalten. Wie vorstehend angemerkt, klammern die Schichten die Schichttiefe D ein. Die Schichttiefe D ist in ihren Ganzzahlteil DL und ihren Bruchzahlteil Df aufgeteilt. Zusätzlich wird DL um eins dekrementiert, um DG (= DL + 1) zu erhalten. Die höhere Auflösung der zwei Schichten ist die Schicht, wo die Schichttiefe DG ist. Die niedrigere Auflösung der zwei Schichten ist die Schicht, wo die Schichttiefe DL ist.
  • Bei Schritt 706 wird ein Test ausgeführt, um zu bestimmen, ob DG größer als die maximale Schichttiefe Dmax ist. Wenn das Testergebnis NEIN ist, wird die Ausführung bei Schritt 710 fortgesetzt. Wenn das Testergebnis JA ist, wird die Ausführung bei Schritt 708 fortgesetzt, wo sowohl DL als DG auf Dmax gesetzt werden, und der Bruchzahlteil D auf null gesetzt ist. Die Ausführung wird dann bei Schritt 710 fortgesetzt.
  • Bei Schritt 710 werden die Texturkoordinaten (S, T), die Koordinaten in der Boden- (Höchste-Auflösungs-) schicht mit einer Schichttiefe von Dmax sind, in die Texturkoordinaten (S, T)L in der Schicht DL umgewandelt. Der vorstehend unter Bezugnahme auf die Schritte 510 und 512 beschriebene Prozeß von 5A kann verwendet werden. Die Pixel in der Schicht DL, die am nächsten zum Punkt positioniert sind, der durch die Texturkoordinaten (S, T)L definiert ist, werden definiert, und ihre Abstände vom Punkt (S, T)L werden berechnet. Eine erste Intraschichtinterpolationsoperation wird dann unter Verwendung der Texturfarbwerte der identifizierten Texturpixel, die gemäß ihren Abständen vom Punkt (S, T)L umgekehrt gewichtet sind, ausgeführt. Die erste Intraschichtinterpolationsoperation berechnet die Texturfarbwerte R1, B1, G1 für das Texturpixel, das an den Texturkoordinaten S, T positioniert ist.
  • Bei Schritt 712 wird ein Test ausgeführt, um zu bestimmen, ob der Bruchzahlteil Df größer null ist. Wenn das Testergebnis NEIN ist, was anzeigt, daß keine Interschichtinterpolation erforderlich ist, wird die Ausführung bei Schritt 714 fortgesetzt, wo die Texturfarbwerte R0, G0, B0 jeweils auf die Werte der Texturfarbwerte R1, G1, B1, die bei Schritt 710 berechnet wurden, gesetzt werden. Die Ausführung wird dann bei Schritt 720 fortgesetzt, der nachstehend beschrieben wird. Wenn das Testergebnis JA ist, was anzeigt, daß eine Interschichtinterpolation erforderlich ist, wird die Ausführung bei Schritt 716 fortgesetzt.
  • Bei Schritt 716 werden die Texturkoordinaten (S, T) in die Texturkoordinaten (S, T)G in der Schicht DG umgewandelt. Die Pixel in der Schicht DG, die am nächsten zum Punkt positioniert sind, der durch die Texturkoordinaten (S, T)G definiert ist, werden definiert und ihre Abstände vom Punkt (S, TG) werden berechnet. Eine zweite Intraschichtinterpolationsoperation Wird dann unter Verwendung der Texturfarbwerte der identifizierten Texturpixel, die gemäß ihren Abständen vom Punkt (S, T)G umgekehrt gewichtet sind, ausgeführt. Die zweite Intraschichtinterpolationsoperation berechnet die Texturfarbwerte R2, G2, B2 für das Texturpixel, das an den Texturkoordinaten (S, T)G positioniert ist.
  • Bei Schritt 718 wird eine Intraschichtinterpolationsoperation ausgeführt, um die Texturfarbwerte für das Texturpixel zu erzeugen, das an den Koordinaten (S, T)D in der Schicht mit einer Schichttiefe von D positioniert ist. Die Interpolation verwendet die Texturfarbwerte R1, G1, B1 für die Schicht DL, die Texturfarbwerte R2, G2, B2 für die Schicht DG und den Bruchzahlteil Df der Schichttiefe D als Gewichtungsfaktor. Die Interschichtinterpolationsoperation erzeugt die Texturfarbwerte R0, G0, B0.
  • Bei Schritt 720 werden die Intensitätskoeffizienten für das Aufbereitungsbildschirmpixel vom Feld 316 in der Zelle 300 des Pixels im Referenzpuffer 126 gelesen und mit den Texturfarbwerten R0, G0, B0, die bei Schritt 714 oder bei Schritt 718 erzeugt wurden, abhängig davon, ob ein Interschichtinterpolation notwendig war, multipliziert. Die resultierenden finalen Farbwerte werden in der Position des Aufbereitungsbildschirmpixels in Pixel-/Tiefenpuffer 124 gespeichert.
  • Die Ausführung wird bei Schritt 722 fortgesetzt, von wo aus sie zur Hauptroutine zurückkehrt.
  • 7B zeigt Einzelheiten der Routine, die bei Schritt 772 ausgeführt wurde, von der Hauptroutine, die in 4B gezeigt wurde, um finale Farbwerte für die Wiederaufbereitungsbildschirmpixel im Progressive-Auflösung-Anzeigemodus zu erzeugen. Diese Routine wird für jedes Pixel des Aufbereitungsbildschirms mit einer 1 im Feld 301 der Zelle 300 des Pixel- und Referenzpuffers 126 ausgeführt. Eine 1 in diesem Feld zeigt an, daß das Pixel von einem Objektpixel abgeleitet wurde, das in einem Polygon positioniert ist, auf das eine Textur angewendet werden soll. Die finalen Farbwerte werden durch Multiplizieren der Intensitätskoeffizienten, die bei Schritt 454 berechnet wurden, mit den Texturfarbwerten erhalten. Die Texturfarbwerte werden durch Interpolation von den Musterdaten der derzeit erfaßten Kacheln, d. h. den Musterdaten, die bei Schritt 471 das erste Mal erfaßt wurden, als die Auflösungsverbesserungsschleife, die aus den Schritten 472 bis 477 besteht, ausgeführt wurde, und den Musterdaten erhalten, die bei Schritt 471 erfaßt wurden, und den Musterdaten, die bei Schritt 477 im Anschluß an die Ausführungen der Auflösungsverbesserungsschleife erfaßt wurden. Wenn die durch die Musterdaten der aktuell erfaßten Kacheln gelieferte Auflösung für die Schichttiefe D, die bei Schritt 454 von der Hauptroutine berechnet wurde, nicht ausreicht, setzt die Auflösungsverbesserungsschleife die Kachelladelisteneinträge der Kacheln, deren Musterdaten erforderlich sind, um die erforderliche Auflösung zu liefern, auf „L", um die Musterdaten anzuzeigen, die erfaßt werden müssen, wenn Schritt 477 als nächstes ausgeführt wird. Die Ausführung beginnt bei Schritt 750.
  • Die Schritte 752, 754, 756 und 758 sind identisch mit den Schritten 702, 704, 706 und 708, die vorstehend unter Bezugnahme auf 7A beschrieben wurden, und werden hierin nicht noch einmal beschrieben.
  • Bei den Schritten 760 bis 766 werden die Einträge in die Kachelladeliste der Textur getestet, um die aktuell erfaßte Kachel der höchsten Auflösung oder die Kacheln zu lokalisieren , die verwendet werden können, um die Texturfarbwerte des Texturpixels zu interpolieren, das an den Texturkoordinaten (S, T) positioniert ist. Die Anzahl von Kacheln in einer Schicht, die zum Interpolieren der Texturfarbwerte des Texturpixels, das an den Texturkoordinaten positioniert ist, notwendig sind, können 1, 2 oder 4 sein, abhängig davon, ob die Texturkoordinaten einen Punkt definieren, der ganz innerhalb einer Kachel, an der Grenze zwischen zwei Kacheln oder an der Ecke zwischen vier Kacheln positioniert ist, wie vorstehend beschrieben. Das Testen der Kachelladeliste beginnt in dem Abschnitt der Kachelladeliste, der der Schicht DG der Pyramidendatenstruktur entspricht. Wenn die Kachelladelisteneinträge der Schicht DG anzeigen, daß die Musterdaten der einen oder der mehreren Kacheln, die zum Interpolieren der Texturfarbwerte für die Texturpixel an den Texturkoordinaten (S, T) notwendig sind, in der Schicht existieren, werden die Texturfarbwerte von den Musterdaten diese Kacheln interpoliert. Ansonsten werden die Kachelladelisteneinträge der nächsthöheren (nächstgeringeren Auflösungs-) Schicht DG – 1 getestet. Die Kachelladelisteneinträge von progressiv höheren Schichten, d. h. einer Niedrigere-Auflösungsschicht, werden getestet, bis eine Schicht, die die notwendigen Musterdaten umfaßt, gefunden worden ist. Der Testprozeß endet stets mit einem gültigen Ergebnis, weil die Musterdaten der obersten Kachel bei Schritt 471 von der Hauptroutine geladen werden, bevor diese Routine ausgeführt wird.
  • Bei Schritt 760 wird der Schichttiefenindex auf DG gesetzt. Bei Schritt 762 wird eine Routine ähnlich der vorstehend beschriebenen unter Bezugnahme auf 5A ausgeführt, um die Kachel oder Kacheln in der aktuellen Schicht, die den Texturkoordinaten (S, T) entspricht, zu identifizieren. Bei Schritt 764 wird ein Test ausgeführt, um zu bestimmen, ob die Kachelladelisteneinträge für alle Kacheln, die bei Schritt 762 identifiziert wurden, auf „E" gesetzt sind, was anzeigt, daß die Musterdaten für die Kacheln bereits erfaßt und in der Pyramidendatenstruktur der Textur gespeichert sind.
  • Wenn das Testergebnis bei Schritt 764 NEIN ist, was anzeigt, daß die notwendigen Musterdaten in der aktuellen Schicht nicht existieren, wird die Ausführung bei Schritt 766 fortgesetzt, wo der Schichtindex um eins dekrementiert wird. Die Ausführung kehrt zu Schritt 762 zurück, wo der Kachelladelistenabschnitt der nächsthöheren (nächstniedrigeren Auflösungs-) Schicht getestet wird. Wenn das Testergebnis JA ist, was anzeigt, daß die aktuelle Schicht die Musterdaten umfaßt, die zum Interpolieren der Texturfarbwerte des Texturpixels notwendig sind, das an den Texturkoordinaten (S, T) positioniert ist, wird die ordinaten (S, T) positioniert ist, wird die Ausführung bei Schritt 768 fortgesetzt.
  • Bei Schritt 768 wird die Variable D1 auf den aktuellen Wert des Schichtindex D gesetzt. Der Wert von der Variable D1 zeigt die Schichttiefe der Schicht an, an der der Kachelladelistetest endet.
  • Bei Schritt 770 wird eine Intraschichtinterpolationsoperation unter Verwendung der Musterdaten von der einen oder den mehreren Kacheln der Schicht D1, die bei Schritt 762 identifiziert wurden, ausgeführt. Die Interpolationsoperation kann unter Verwendung des Verfahrens ausgeführt werden, das vorstehend unter Bezugnahme auf Schritt 710 von 7A beschrieben wurde. Die Interpolationsoperation erzeugt die Texturfarbwerte R1, D1, B1 für das Texturpixel, das an den Texturkoordinaten (S, T) positioniert ist.
  • Wenn D1 klener als DG ist, bedeutet dies, daß die Texturfarbwerte mit einer unzureichenden Auslösung für die Schichttiefe D erzeugt werden, die bei Schritt 454 der Hauptroutine berechnet werden. Zusätzliche Musterdaten müssen erfaßt werden, um die notwendige Auflösung zu liefern. Daher wird bei Schritt 772 ein Test ausgeführt, um zu bestimmen, ob D1 gleich DG ist.
  • Wenn das Testergebnis NEIN lautet, gelangt die Ausführung zu Schritt 774, wo die Texturfarbwerte R0, G0, B0 auf die Werte der Texturfarbwerte R1, G1 bzw. B1 gesetzt sind, bei Schritt 770 berechnet werden. Die Ausführung wird dann bei Schritt 776 fortgesetzt, wo die Kachelladelisteneinträge von einer oder mehreren Kacheln in der Schicht mit einer Schichttiefe von D1 + 1, die zum Interpolieren der Texturfarbwerte des Texturpixels, das an den Texturkoordinaten (S, T) positioniert ist, erforderlich sind, auf „L" gesetzt werden. Diese Einstellung zeigt an, daß die Musterdaten für diese Kacheln erfaßt werden müssen, wenn Schritt 477 der Hauptroutine, die vorstehend unter Bezugnahme auf 4B beschrieben wurde, ausgeführt wird.
  • Die Ausführung wird dann bei Schritt 778 fortgesetzt, der nachstehend beschrieben wird.
  • Wenn das Testergebnis, das bei Schritt 772 erhalten wurde, JA ist, wird die Ausführung bei Schritt 780 fortgesetzt. Das Ja-Ergebnis bedeutet, daß D gleich DG ist, und die Musterdaten von der einen oder den mehreren Kacheln, die zum Interpolieren der Texturfarbwerte des Texturpixels notwendig sind, das an dem Texturkoordinaten positioniert ist, mit der erforderlichen Auflösung in der Pyramidendatenstruktur existieren.
  • Bei Schritt 780 wird eine Intraschicht-Interpolationsoperation unter Verwendung der Musterdaten von der einen oder den mehreren Kacheln der Schicht DL = DG – 1 ausgeführt. Die Interpolationsoperation kann unter Verwendung des vorstehend unter Bezugnahme auf Schritt 710 von 7A beschriebenen Verfahrens ausgeführt werden. Die Interpolationsoperation erzeugt die Texturfarbwerte R2, G2, B2 für die Texturpixel, die an den Texturkoordinaten (S, T)L in der Schicht DL positioniert sind.
  • Bei Schritt 782 wird die Interschichtinterpolation für das Texturpixel an den Texturkoordinaten (S, T) in der Schicht D zwischen den Texturfarbwerten R1, G1, B1 für die Schicht DG, die bei Schritt 770 erzeugt wurden, und den Texturfarbwerten R2, G2, B2 für die Schicht DL, die bei Schritt 780 erzeugt wurde, ausgeführt. Die Interpolation verwendet den Bruchzahlteil Df der Schichttiefe D als einen Gewichtungsfaktor. Die Interschichtinterpolation erzeugt die Texturfarbwerte R0, G0, B0.
  • Bei Schritt 778 werden die Intensitätskoeffizienten für den Wiederaufbereitungsbildschirmpixel vom Feld 316 der Zelle 300 des Pixels im Referenzpuffer 126 gelesen und mit den Texturfarbwerten R0, G0, B0, die bei Schritt 770 oder bei Schritt 782 erzeugt wurden, multipliziert. Die resultierenden finalen Farbwerte für das Aufbereitungsbildschirmpixel werden in der Position des Aufbereitungsbildschirmpixels im Pixel-/Tiefenspeicher 124 gespeichert.
  • Die Ausführung wird dann bei Schritt 784 fortgesetzt, von wo aus sie zur Hauptroutine zurückkehrt.
  • Die Erfindung ist unter Bezugnahme auf ein Beispiel beschrieben worden, in dem die Kacheln in den Schichten der Pyramidendatenstruktur in herkömmlicher Abtastordnung, d.h. von links nach rechts und von oben nach unten, angeordnet sind. Die Anordnung der Kacheln in den Schichten ist jedoch nicht von Bedeutung, und unterschiedliche Anordnungen können verwendet werden. Wenn eine andere Anordnung verwendet wird, sollten Bezugnahmen auf die Kacheln, die an der obersten linken, rechten und untersten und untersten rechten Ecke der Schicht positioniert sind, dementsprechend geändert werden.
  • Obwohl diese Offenbarung veranschaulichende Ausführungsbeispiele der Erfindung im Detail beschreibt, wird darauf hingewiesen, daß die Erfindung nicht auf die präzisen beschriebenen Ausführungsbeispiele beschränkt ist und daß verschiedene Modifizierungen gemäß der Erfindung, die in den angehängten Ansprüchen definiert ist, praktiziert werden können.

Claims (11)

  1. Ein Verfahren zum Rufbereiten eines Bildes ansprechend auf dreidimensionale Graphikdaten, wobei das Bild aus Pixeln besteht und durch Bilddaten entsprechend den Pixeln des Bildes dargestellt wird, wobei die dreidimensionalen Graphikdaten Polygondaten umfassen und zusätzlich Texturdaten umfassen, die eine Textur definieren, wobei die Texturdaten Texturgrößendaten und Sätze von Musterdaten umfassen, wobei die Musterdaten in jedem der Sätze die Textur mit einer unterschiedlichen Auflösung darstellen, wobei die Musterdaten eine Mehrheit der Texturdaten bilden, wobei das Verfahren folgende Schritte aufweist: Empfangen (402) der Polygon- und Texturgrößendaten; Ausführen einer anfänglichen Rasterisierungsoperation (406) für jedes der Pixel des Bildes, wobei die anfängliche Rasterisierungsoperation unter Verwendung der Polygon- und Texturgrößendaten ausgeführt wird, wobei die anfängliche Rasterisierungsoperation einen Texturidentifizierer, einen Schichttiefenwert, der eine Texturauflösung anzeigt, und Texturkoordinaten erzeugt und speichert; Ausführen einer Musterdaten-Identifizierungsoperation (408) ansprechend auf den Texturidentifizierer, wobei die Schichttiefe und die Texturkoordinaten für jedes der Pixel des Bildes gespeichert sind, wobei die Musterdaten-Identifizierungsoperation diejenigen der Musterdaten identifiziert, die zum Aufbereiten des Bildes erforderlich sind; Ausführen einer Musterdaten-Erfassungsoperation (410), bei der diejenigen der Musterdaten erfaßt werden, die durch die Musterdaten-Identifizierungsoperation als erforderlich identifiziert werden, um das Bild aufzubereiten; und Ausführen einer finalen Rasterisierungsoperation (412, 414), bei der die Bilddaten, die das Bild darstellen, unter Verwendung der Musterdaten, die durch die Musterdaten-Erfassungsoperation erfaßt wurden, erzeugt werden.
  2. Das Bildaufbereitungsverfahren gemäß Anspruch 1, bei dem: ein Ausführen der anfänglichen Rasterisierungsoperation (406) einen Schichttiefenwert als eine reale Zahl mit einem ganzzahligen Teil und einem Bruchteil erzeugt; und ein Ausführen der finalen Rasterisierungsoperation (412, 414) folgende Schritte umfaßt: wenn der Bruchteil des Schichttiefenwerts 0 ist, Ausführen einer ersten Intra-Schichtinterpolation (710) unter den Musterdaten in einem der Sätze, die durch den ganzzahligen Teil des Schichttiefenwerts identifiziert werden, um Texturfarbwerte zu erzeugen, und Ableiten (720) der Bilddaten von den Texturfarbwerten, und wenn der Bruchteil des Schichttiefenwerts Nicht-Null ist, Ausführen der ersten Intra-Schichtinterpolation (710), Ausführen einer zweiten Intra-Schichtinterpolation (716) unter den Musterdaten in einem anderen der Sätze mit einer Auflösung um einen Pegel höher als derjenige der Sätze, Ausführen einer Inter-Schichtinterpolation (718) zwischen Ergebnissen, die durch die erste und die zweite Intra-Schicht interpolationsoperation erzeugt wurden, um die Texturfarbwerte zu erzeugen, und Ableiten (720) der Bilddaten von den Texturfarbwerten.
  3. Das Bildaufbereitungsverfahren gemäß Anspruch 1 oder 2, bei dem: die anfängliche Rasterisierungsoperation (406) zusätzlich Intensitätskoeffizienten für das eine der Pixel des Bildes erzeugt; und die Intensitätskoeffizienten zusammen mit dem Texturidentifizierer, dem Schichttiefenwert und den Texturkoordinaten für das eine der Pixel des Bildes gespeichert werden.
  4. Das Bildaufbereitungsverfahren gemäß Anspruch 1, 2 oder 3, bei dem: die Musterdaten zu Texturpixeln gehören, die in rechteckigen Kacheln angeordnet sind; das Verfahren zusätzlich ein Liefern einer Kachelladeliste (136) für die Textur aufweist, wobei die Kachelladeliste einen Eintrag für jede der Kacheln umfaßt; und die Datenmuster-Identifizierungsoperation (408) folgende Schritte aufweist: Lesen der Texturkoordinaten (504), um eine der Kacheln zu identifizieren, in denen Musterdaten positioniert sind, die zum Aufbereiten des Bildes erforderlich sind, und Einstellen (522) des Eintrags in die Kachelladeliste für die eine der Kacheln in einen Ladezustand, wobei der Ladezustand anzeigt, daß die Musterdaten der einen der Kacheln erforderlich sind, um das Bild aufzubereiten.
  5. Das Bildaufbereitungsverfahren gemäß Anspruch 4, bei dem die Musterdaten-Erfassungsoperation (410) folgende Schritte aufweist: Testen (606) der Kachelladeliste für die Textur, um die Einträge, die in den Ladezustand gesetzt wurden, zu identifizieren; Erfassen (610, 614) der Musterdaten von jeder der Kacheln, deren Einträge in der Kachelladeliste als in den Ladezustand gesetzt identifiziert sind; und Verändern (616) des Eintrags in die Kachelladeliste für jede der Kacheln, deren Musterdaten erfaßt worden sind, vom Ladezustand in einen Existierzustand, wobei das Existieren anzeigt, daß die Musterdaten für die eine der Kacheln erfaßt worden sind.
  6. Das Bildaufbereitungsverfahren gemäß einem der Ansprüche 1 bis 5, das zusätzlich folgende Schritte aufweist: Liefern eines Texturspeichers (130); und Speichern der Musterdaten, die durch die Musterdaten-Erfassungsoperation im Texturspeicher in einer pyramidenartigen Datenstruktur (200) erfaßt werden, wobei die pyramidenartige Datenstruktur Schichten (z. B. 200) umfaßt, wobei in jeder derselben ein jeweiliger der Sätze der Musterdaten, die die Textur mit einer anderen Auflösung darstellen, gespeichert ist, wobei einer der Sätze der Musterdaten die Textur mit einer höchsten Auflösung darstellt.
  7. Das Bildaufbereitungsverfahren gemäß Anspruch 6, bei dem: die Musterdaten zu Texturpixeln gehören, die in rechteckigen Kacheln (z. B. 210) angeordnet sind; das Verfahren zusätzlich ein Liefern einer Kachelladeliste (136) für die Textur aufweist, wobei die Kachelladeliste einen Eintrag für jede der Kacheln umfaßt, wobei der Eintrag einen Zustand aufweist, der anzeigt, daß die Musterdaten von der einen der Kacheln in der pyramidenartigen Datenstruktur (200) existieren; und die Musterdaten-Erfassungsoperation (410), die ausgeführt wird, um die Musterdaten für die eine der Kacheln zu erfassen, die in einer der Schichten der pyramidenartigen Datenstruktur positioniert ist, folgende Schritte aufweist: Überprüfen (612) der Kachelladeliste, um zu bestimmen, ob die Musterdaten für die Quellenkacheln, die in einer Schicht unmittelbar unter der einen der Schichten positioniert sind, in der pyramidenartigen Datenstruktur existieren, wobei die Quellenkacheln diejenigen der Kacheln sind, von denen die Musterdaten der einen der Kacheln generiert werden können, und wenn die Musterdaten für die Quellenkacheln in der pyramidenartigen Datenstruktur existieren, Generieren (614) der Musterdaten für die eine der Kacheln von den Musterdaten der Quellenkacheln.
  8. Das Bildaufbereitungsverfahren gemäß Anspruch 6, bei dem: die Musterdaten zu den Texturpixeln gehören, die in rechteckigen Kacheln (z. B. 210) angeordnet sind; die Musterdaten der einen der Kacheln, die eine obere Schicht (206) der pyramidenartigen Datenstruktur bilden, in der pyramidenartigen Datenstruktur (200) empfangen und gespeichert werden und die finale Rasterisierungsoperation (770, 772, 774, 776, 778, 780, 782) vor der Musterdaten-Erfassungsoperation (477), die ausgeführt wird, ausgeführt wird, wobei die finale Rasterisierungsoperation die Bilddaten von den Musterdaten, die in der pyramidenartigen Datenstruktur noch vorhanden sind, erzeugt; die Musterdaten-Identifizierungsoperation (762, 764, 766) identifiziert diejenigen der Kacheln der pyramidenartigen Datenstruktur, deren Musterdaten erforderlich sind, um das Bild mit einer höheren Auflösung aufzubereiten; und das Verfahren zusätzlich ein Wiederholen der finalen Rasterisierungsoperation (770, 772, 774, 776, 778, 780, 782), nachdem die Musterdaten-Erfassungsoperation (477) aufweist, um die Bilddaten mit einer höheren Auflösung erneut zu erzeugen.
  9. Das Bildaufbereitungsverfahren gemäß Anspruch 8, bei dem die finale Rasterisierungsoperation (770, 772, 774, 776, 778, 780, 782) die Musterdaten-Identifizierungsoperation (762, 764, 766) und die Musterdaten-Erfassungsoperation (477) iteriert werden, bis die Bilddaten alle mit einer besten Auflösung erzeugt worden sind, wobei die beste Auflösung für die Bilddaten einem Teilsatz der Pixel des Bildes mit einer Auflösung entspricht, die geringer als die höchste Auflösung ist.
  10. Das Bildaufbereitungsverfahren gemäß einem der Ansprüche 1 bis 5, bei dem die Musterdaten-Erfassungsoperation ein Erfassen der Musterdaten umfaßt, die zum Aufbereiten des Bildes durch entweder (a) ein Laden (610) der Musterdaten oder (b) ein Generieren (614) der Musterdaten erforderlich sind.
  11. Aufbereitungsvorrichtung (100) zum Aufbereiten eines Bildes, das aus Pixeln besteht, ansprechend auf dreidimensionale Graphikdaten, wobei die Vorrichtung folgende Merkmale aufweist: eine Empfangseinrichtung (104), die angepaßt ist, um die dreidimensionalen Graphikdaten zu empfangen; eine Pixel-/Tiefen-Puffereinrichtung (124), die erste Speicherzellen umfaßt, wobei die ersten Speicherzellen angepaßt sind, um die Pixel des Bildes zu speichern; eine Referenz-Puffereinrichtung (126), die zweite Speicherzellen umfaßt, wobei die zweiten Speicherzellen angepaßt sind, um die Pixel des Bildes zu speichern; und eine Aufbereitungsmaschineneinrichtung, die eine Einrichtung aufweist, die angepaßt ist, um alle Verfahrensschritte gemäß einem der Ansprüche 1 bis 10 auszuführen.
DE1998616469 1997-10-31 1998-10-30 Verfahren und vorrichtung zur schnellen wiedergabe eines bildes in abhängigkeit von dreidimensionalen graphikdaten in einer umgebung mit begrenzter datengeschwindigkeit Expired - Lifetime DE69816469T2 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
JP31587797 1997-10-31
JP31587797 1997-10-31
JP6466598A JPH11195132A (ja) 1997-10-31 1998-02-28 テクスチャマッピング用バッファ、3次元グラフィクス処理装置、3次元グラフィクス処理システム、3次元グラフィクス処理方法および処理プログラムが記憶された記憶媒体
JP6466598 1998-02-28
US09/126,935 US6184888B1 (en) 1997-10-31 1998-07-30 Method and apparatus for rapidly rendering and image in response to three-dimensional graphics data in a data rate limited environment
US126935 1998-07-30
PCT/US1998/023001 WO1999023612A1 (en) 1997-10-31 1998-10-30 Method and apparatus for rapidly rendering an image in response to three-dimensional graphics data in a data rate limited environment

Publications (2)

Publication Number Publication Date
DE69816469D1 DE69816469D1 (de) 2003-08-21
DE69816469T2 true DE69816469T2 (de) 2004-04-15

Family

ID=27298546

Family Applications (1)

Application Number Title Priority Date Filing Date
DE1998616469 Expired - Lifetime DE69816469T2 (de) 1997-10-31 1998-10-30 Verfahren und vorrichtung zur schnellen wiedergabe eines bildes in abhängigkeit von dreidimensionalen graphikdaten in einer umgebung mit begrenzter datengeschwindigkeit

Country Status (4)

Country Link
EP (1) EP1027682B1 (de)
CN (1) CN1201269C (de)
DE (1) DE69816469T2 (de)
WO (1) WO1999023612A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100382108B1 (ko) * 2000-06-24 2003-05-01 학교법인연세대학교 3차원 그래픽 가속기 및 그의 그래픽 가속처리 방법
DE10136988A1 (de) * 2001-07-23 2003-02-13 Egi Sys Ag Verfahren zum Anzeigen von komplexen Bildern
CN100438406C (zh) * 2006-01-23 2008-11-26 北京航空航天大学 一种基于远程渲染的三维模型网络发布方法
CN101604443B (zh) * 2009-07-29 2011-07-06 腾讯科技(深圳)有限公司 一种发射体运行轨迹的生成方法及装置
GB201004675D0 (en) * 2010-03-19 2010-05-05 Imagination Tech Ltd Memory management system
US9940686B2 (en) * 2014-05-14 2018-04-10 Intel Corporation Exploiting frame to frame coherency in a sort-middle architecture
US9704217B2 (en) 2015-04-20 2017-07-11 Intel Corporation Apparatus and method for non-uniform frame buffer rasterization
WO2017172842A1 (en) * 2016-03-28 2017-10-05 Nurulize, Inc. System and method for rendering points without gaps
CN110717004A (zh) * 2019-09-30 2020-01-21 西安恒歌数码科技有限责任公司 一种基于OsgEarth的S57海图数据的加载方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745118A (en) * 1995-06-06 1998-04-28 Hewlett-Packard Company 3D bypass for download of textures
US5760783A (en) * 1995-11-06 1998-06-02 Silicon Graphics, Inc. Method and system for providing texture using a selected portion of a texture map
GB9611941D0 (en) * 1996-06-07 1996-08-07 Philips Electronics Nv Three-dimensional image texture mapping

Also Published As

Publication number Publication date
CN1278351A (zh) 2000-12-27
WO1999023612A1 (en) 1999-05-14
EP1027682B1 (de) 2003-07-16
CN1201269C (zh) 2005-05-11
DE69816469D1 (de) 2003-08-21
EP1027682A1 (de) 2000-08-16

Similar Documents

Publication Publication Date Title
DE69128731T2 (de) Schaltungsanordnung für die Konvertierung von pyramidenförmigen Texturkoordinaten und diese enthaltendes Anzeigegerät
US6184888B1 (en) Method and apparatus for rapidly rendering and image in response to three-dimensional graphics data in a data rate limited environment
DE10296401B4 (de) Verbund-Rendering von 3-D-Graphikobjekten
DE60311359T2 (de) Vorrichtungen und Verfahren zur kontrollierbaren Texturabtastung
DE60300788T2 (de) Bild mit Feldtiefe aus Z-Pufferbilddaten und Alphamischung
DE69716877T2 (de) System und Verfahren zur genauen Gradientberechnung für die Texturabbildung in einem Computergraphiksystem
DE69636599T2 (de) Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild
DE3854543T2 (de) Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung.
DE3853393T2 (de) Verfahren und Vorrichtung zur zweidimensionalen Bilderstellung.
DE69130123T2 (de) Anzeigegerät und Verfahren zum Betreiben eines solchen Geräts
DE69431329T2 (de) Verfahren zur Erzeugung von Bilddaten
DE69836924T2 (de) Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe
DE69737780T2 (de) Verfahren und Vorrichtung zur Bildverarbeitung
DE69714551T2 (de) Treiberstufe für stereoskopische bildanzeige
DE3686233T2 (de) Videosignalverarbeitung.
DE69610341T2 (de) 3-D-Bildertexturierung und -schattierung
DE3689271T2 (de) Verfahren zur Bildanzeige.
DE69722139T2 (de) Dreidimensionale abbildung von bildtexturen
DE112005002076T5 (de) Unterteilung von Geometriebildern in Grafikhardware
DE69818888T2 (de) Gerät und Verfahren zur Bildverarbeitung
DE60000686T2 (de) Graphisches system mit super-abgetastetem musterpuffer mit erzeugung von ausgangpixeln unter verwendung von selektiven adjustierung der filterung zur artifaktverminderung
DE102018125472B4 (de) Grafikprozessor, der Abtastungs-basiertes Rendering durchführt, und Verfahren zum Betreiben desselben
DE3022454A1 (de) Optisches abbildesystem mit computererzeugtem bild fuer einen bodenfesten flugsimulator
DE69631718T2 (de) Verfahren und Gerät zur leistungsfähigen Graphikdarstellung dreidimensionaler Szenen
DE69606177T2 (de) Verfahren und gerät zur texturabbildung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE