-
Die
vorliegende Erfindung betrifft allgemein das Gebiet von Computergraphik,
insbesondere Systeme und Verfahren zur Erzeugung und Erstellung von
Bildern in dreidimensionalen Graphiken. Insbesondere betrifft die
vorliegende Erfindung ein System und ein Verfahren zum Erzeugen
dreidimensionaler Objekte, die durch ein Graphiksubsystem zu erstellen
sind.
-
Rendering-Systeme
erzeugen Darstellungen von Objekten mittels polygonaler Näherungen.
Der Detaillierungsgrad und der Realismus, der in einer 3D-Darstellung erzielt
wird, steht in direktem Bezug auf die Anzahl von Polygonen, die
zum Darstellen des Objekts verwendet werden. Jedoch sind Objekte, die
eine große
Anzahl von Polygonen aufweisen, für die Verarbeitung resourcenintensiv.
Daher begrenzen viele herkömmliche
Systeme die Anzahl von Polygonen, die zum Darstellen von Objekten
verwendet werden. Wenn in diesen Systemen die Kamera näher zu den
Objekten hin zoomt, erscheinen die Objekte blockartig und verlieren
ihre glatten Kanten. Zusätzlich
werden in herkömmlichen
Systeme Polygone aus mathematischen Oberflächen durch rekursive Unterteilung
erzeugt. Daher werden Polygone eines Objekts mit aufeinanderfolgenden
Durchläufen
unterteilt, um eine höhere
Anzahl von Polygonen zu erzeugen und um etwaige bekannte Artefakte,
die durch die Unterteilung hervorgerufen werden, zu eliminieren.
Dieser Prozess ist ebenfalls resourcenintensiv und erfordert einen
längeren
Verarbeitungszyklus. Daher sind ein System, ein Verfahren und eine
Vorrichtung erforderlich, die dynamisch Details zu den Objekten
hinzufügen,
wenn vom menschlichen Auge ein näheres
Detail wahrgenommen würde,
und die weniger Details verwenden, wenn und wo weniger Detail erforderlich
ist, um das Erscheinungsbild von 3D- Objekten zu optimieren, ohne Prozessleistung
zu verschwenden. Zusätzlich
sind ein System, ein Verfahren und eine Vorrichtung erforderlich,
die einen rekursiven Durchlauf erübrigt, aber immer noch glatte akkurate
Oberflächen
erzeugt und durch Unterteilung erzeugte Artefakte eliminiert.
-
GROSS
M N ET AL: "Fast
multi resolution surface meshing",
VISUALIZATION '95.
PROCEEDINGS., IEEE CONFERENCE ON VISUALIZATION. ATLANTA 1995, GA,
USA 29 OKT. – 3.
NOV. 1995, LOS ALAMITOS, CA, USA, IEEE OMPUT. SOC, USA, 29. Oktober
1995 (1995-10-29), Seiten 135 – 142,
446, XP010151190 ISBN: 0-8186-7187-4; offenbart ein Verfahren zur
adaptiven Oberflächennetzbildung,
das den örtlichen
Detaillierungsgrad der Oberflächennäherung mittels örtlicher
spektraler Schätzungen
steuert. Die Schätzungen
werden durch eine Wavelet-Repräsentation
der Oberflächendaten
bestimmt. Es wird ein hierarchischer Netzbildungsalgorithmus verwendet,
um Daten eines anfänglich
regelmäßigen Datennetzes
der Oberfläche
in eine Vierfachbaum-Repräsentation
durch Verwerfen unwichtiger Netzscheitel zu transformieren. Auf
diese Weise erhält
man eine Aufteilung in rechteckige Polygone unter Berücksichtigung
der Auflösungspegel.
Es wird eine Nachschlagetabelle, die alle möglichen bruchfreien triangulationen
auflistet, dazu benutzt, die erhaltenen rechtwinkligen Polygone
in Dreiecke aufzuteilen, derart, dass T-Scheitel vermieden werden.
-
HOPPE
H: "View-dependent
refinement of progressive meshes",
COMPUTER GRAPHICS PROCEEDINGS, SIGGRAPH 97, PROCEEDINGS OF 24THINTERNATIONAL
CONFERENCE ON COMPUTER GRAPHICS AND INTERACTIVE TECHNIQUES, LOS
ANGELES, CA, USA, 3 – 8. AUG.
1997, Seiten 189 – 98,
XP002244379, 1997, New York, NY; USA, ACM, USA ISBN: 0-89791-896-7;
offenbart ein Verfahren zum selektiven Verfeinern eines beliebigen
progressiven Netzes gemäß Blickwinkelparametern.
Das Netz wird entweder durch Aufteilen eines Scheitels in zwei Scheitel (d.h.
einer Kante) verfeinert, oder durch Zusammenführen einer Kante (eines Paars
von Scheiteln) in einen einzelnen Scheitel verfeinert. Die Abweichung, bei Projektion
auf den Schirm, zwischen der ursprünglichen Oberfläche und
der Netzannäherung der
Oberfläche
wird als Kriterium dazu verwendet, zu bestimmen, ob Scheitel aufgeteilt
werden sollten.
-
Die
US 5,602,979 offenbart ein
Verfahren zum Erzeugen glatter polynomischer Spline-Oberfächen über irreguläre Netze.
-
Eine
Veröffentlichung
mit dem Titel "Real-Time,
Coninuous Level of Detail Rendering of Height Fields" von Lindstrom et
al. In Comptuer Graphics Proceedings, Annual Conference Series 1996,
Seiten 109 – 118
diskutiert die Verwendung eines variablen Bildschirm-Raumschwellenwerts
zur Begrenzung des Maximalfehlers des projizierten Bilds.
-
Eine
Veröffentlichung
mit dem Titel "Virtual Reality – New methods
for improving and accelerating the development process in vehicle
styling and design" von
F. Purschke et al., Proceedings or Computer Graphics International,
1998, IEEE Computer Society, USA betrifft auch das Erstellen dreidimensionaler
Netze.
-
Die
Erfindung sieht ein Verfahren und eine Vorrichtung vor, wie sie
in den Ansprüchen
1 und 6 jeweils aufgeführt
sind.
-
Ausführungen
der Erfindung werden dazu verwendet, den Betrag und die Eigenschaften
von anzuwendenden Polygonen adaptiv zu bestimmen, um Objekte in
einer 3D-Umgebung zu bekommen. Zuerst wird ein Steuernetz polygonaler
Näherungen aus
einem einer Vielzahl herkömmlicher
Objektrepräsentationsschemata
erzeugt. Das Steuernetz ist eine gleichmäßige Repräsentation des zu erstellenden Objekts,
die Randinformation und Rekonstruktionsdaten für die Polygone aufweist, die
das Steuernetz aufweist. Die Rekonstruktionsdaten enthalten Oberfläche-normal-Daten
und Oberfläche-versteckt-Daten.
Die Oberfläche-versteckt-Daten
enthalten Information in Bezug darauf, ob ein Scheitel ein scharfer Punkt
ist oder ob eine Kante als harte Kante dargestellt werden sollte.
Dann werden Auflösungspegel für alle Scheitel
aller Polygone in dem Steuernetz berechnet. Die Auflösungspegel
spezifizieren den geeigneten Auflösungspegel für ein Dreieck
und ein anderes Polygon in Antwort auf die Topologie des Objekts
und den Kamerawinkel, der gegenwärtig
in der Anwendung benutzt wird. Polygonen, die Bereiche eines Objekts
repräsentieren,
die durch die Kamera mit einem Winkel gesehen werden, der Kanten
des Objekts aufzeigt, werden höhere
Auflösungspegel gegeben.
Jedoch werden solchen Polygonen, die Bereiche eines Objekts repräsentieren,
die von einer Kamera mit einem Winkel gesehen werden, der Kanteninformation
verdeckt, wenn z.B. die Kamera direkt auf den Bereich blickt, geringe
Auflösungspegel
gegeben. Somit wird die Auflösung
des Objekts dynamisch, örtlich
und adaptiv bestimmt, um höhere
Detaillierungsgrade dort vorzusehen, wo das Detail für das menschliche
Auge am sichtbarsten ist, und weniger Detail, wenn das Detail nicht
bemerkt würde.
-
In
Antwort auf die Berechnung der Auflösungspegel werden die Polygone
in Antwort auf die Auflösungspegel
unterteilt. Jedoch erfordern herkömmliche Unterteilungsmethodiken
mehrere heuristische Durchläufe,
um etwaige Brüche
oder Artefakte zu identifizieren und auszubessern, die erzeugt werden,
wenn zwei Polygone sich Kanten teilen, die nicht identisch unterteilt
werden (T-Scheitel).
Dieses bekannte Problem wird in herkömmlichen Systemen durch repetivitive
Analyse und Korrektur behandelt, was resourcenintensiv und ineffizient
ist. Jedoch wird gemäß der vorliegenden
Erfindung die Datenstruktur beibehalten, die die geeignete Unterteilungsmethodik
vorsieht, die für
alle Fälle
von T-Scheiteln anzuwenden ist, die durch Unterteilung von Verbindungen unterschiedlicher
Auflösung
hervorgerufen werden. Die Datenstruktur erlaubt, dass die Bearbeitung rasch
und effizient von statten geht und stellt sicher, dass während der
Unterteilung keine Brüche
oder Artefakte auftreten. Daher ist gemäß der vorliegenden Erfindung
keine repetivitive Verschleifung oder Abzweigung erforderlich, um
Brüche
oder Artefakte zu identifizieren.
-
Nach
der Unterteilung werden Orte für
die Scheitel der neuen Polygone berechnet. Gemäß der vorliegenden Erfindung
werden dort, wo die erzeugte Polygone Dreiecke sind, Bezier-Dreieck-Patches
anstelle der ursprünglichen
Dreiecke verwendet, um eine gekrümmte
Oberfläche
zu erlangen, die einen größeren Steuerungspegel
hat. Die Parameter für
die Bezier-Dreiecke werden aus bekannten Scheiteln und Scheitel-Attributen
von Dreiecken und den Rekonstruktionsdaten berechnet, um eine detaillierte
realistische Darstellung des Objekts zu bekommen. Somit kann gemäß einer
weiteren Ausführung
der vorliegenden Erfindung ein zusätzliches Detail zu einem Objekt
von einem ursprünglichen
Steuerungsnetz hinzugefügt
werden. In Systemen, wo polygonale Näherungen als Eingaben erhalten
werden, ist das hinzugefügte
Detail ein neues Detail, das in dem ursprünglichen Objekt nicht vorhanden
ist, um hierdurch ein Objekt zu bekommen, das detaillierter ist als
das Original. Für
andere Typen von Eingaben ist das Endprodukt eine sehr enge Näherung der
ursprünglichen
Oberfläche.
Da jedoch das Detail adaptiv hinzugefügt wird, wird die Detailmenge
nach Bedarf hinzugefügt,
um das genaueste Bild ohne Resourcenverschwendung zu erzeugen.
-
In
den beigefügten
Zeichnungen:
-
1 ist
ein Blockdiagramm, das Prozessmodule zum Vorsehen einer gekrümmten Oberflächenrekonstruktion
gemäß der vorliegenden
Erfindung darstellt.
-
2 ist
ein Flussdiagramm, das ein Verfahren zur Rekonstruktion gekrümmter Oberflächen gemäß der vorliegenden
Erfindung darstellt.
-
3 ist
ein Flussdiagramm, das ein Verfahren zur Erzeugung von Rekonstruktionsdaten
gemäß der vorliegenden
Erfindung darstellt.
-
4a ist
ein Flussdiagramm, das ein Verfahren zur Berechnung von Auflösungspegeln
gemäß der vorliegenden
Erfindung darstellt.
-
4b ist
ein Diagramm, das einen Vektor darstellt, der eine Kantensehnenabweichung
gemäß der vorliegenden
Erfindung repräsentiert.
-
4c ist
ein Diagramm eines projizierten Vektors im Bildschirmraum.
-
5 ist
ein Flussdiagramm, das ein Verfahren zur Unterteilung von Polygonen
gemäß der vorliegenden
Erfindung darstellt.
-
6a und 6c sind
Diagramme, die herkömmliche
Unterteilungen darstellen.
-
6b und 6d sind
Diagramme, die Unterteilungen gemäß der vorliegenden Erfindung
darstellen.
-
7 ist
ein Flussdiagramm, das eine Rekonstruktion einer gekrümmten Oberfläche gemäß der vorliegenden
Erfindung darstellt.
-
8a – 8t sind
Diagramme von Unterteilungsmustern zur Beseitigung von T-Scheiteln
gemäß der vorliegenden
Erfindung.
-
9 ist
eine Darstellung zur Erzeugung von 10 Bezier-Steuerparametern von
3 Kanten-Splines gemäß der vorliegenden
Erfindung.
-
10 ist
eine Darstellung zur Erzeugung von Tangentenvektoren aus Oberfläche-normal-Daten
gemäß der vorliegenden
Erfindung.
-
1 ist
ein Blockdiagramm, das Prozessmodule zum Vorsehen einer gekrümmten Oberflächenrekonstruktion
gemäß der vorliegenden
Erfindung darstellt. Wie unten beschrieben, kann der Prozess gemäß der vorliegenden
Erfindung durch anwenderspezifische integrierte Schaltungen, durch Mehrzweckprozessoren
oder durch beliebige andere bekannte Verfahren zur Implementierung
sequenzierter Instruktionen ausgeführt werden. Die Methodik der
vorliegenden Erfindung ist besonders vorteilhaft für die Implementation
als ASIC, da die Methodik keine Verzweigungsanweisungen erfordert,
die eine ASIC-Implementierung anderenfalls verkomplizieren würden 1 stellt
ein Graphiksubsystem 124 dar, worin ein Oberflächendarstellungsgenerator 100 ein Objekt
erzeugt, das auf einem Computerdisplay dargestellt werden soll.
Der Oberflächendarstellungsgenerator 100 kann
jede beliebige herkömmliche
Quelle für
dreidimensionale Objekte sein, die in CAD-Anwendungen, Spielanwendungen
oder dgl. verwendbar sind. Oberflächendarstellungen können Umgrenzungs-Darstellungen,
nicht gleichmäßige rationale b-Splines,
polygonale Annäherungen,
primitive, analytische oder prozedurale Objekte umfassen. Wie ersichtlich,
kann gemäß der vorliegenden
Erfindung jedes Darstellungsformat verwendet werden. Hierin wird
das zu analysierende Objekt als ein solches beschrieben, das eine
Serie von Dreiecken aufweist, aber diese Beschreibung ist beispielhaft
und soll nicht dazu dienen, die Anwendung der vorliegenden Erfindung
auf Dreieck-basierende Graphiksysteme einzuschränken.
-
Als
Nächstes
wandelt ein Rekonstruktionsdatengenerator 104 eine Oberflächendarstellung
in eine uniforme Darstellung um. Dies wird vorzugsweise dadurch
erreicht, dass die Oberflächendarstellung in
ein Steuernetz umgeformt wird. Um ein Steuernetz aus der Oberflächendarstellung
zu erzeugen, werden bekannte Tesselationstechniken dazu verwendet,
die Polygondaten aus der Oberflächendarstellung
zu extrahieren. 2 ist ein Flussdiagramm, das
ein Verfahren zur Rekonstruktion gekrümmter Oberflächen gemäß der vorliegenden
Erfindung darstellt, und wird in Verbindung mit 1 beschrieben.
Gemäß der vorliegenden
Erfindung werden, nachdem in 200 ein Steuernetz erhalten
ist, Rekonstruktionsdaten in 204 aus den Tesselationsdaten
durch den Rekonstruktionsdatengenerator 104 generiert.
Die Rekonstruktionsdaten sind Daten, die gemäß der vorliegenden Erfindung
dazu benutzt werden, gekrümmte
Oberflächen
zu rekonstruieren, und sie werden daher in einem Speicher gehalten,
der dem Rekonstruktionsdatengenerator 104 zugeordnet ist,
oder in einem zentralisierten Speicher, der anderswo angeordnet
ist (nicht gezeigt). Die Rekonstruktionsdaten sind zusätzlich zu
den Polygondaten vorgesehen, die typischerweise in einem Steuernetz
enthalten sind. Z.B. werden in einer Ausführung der vorliegenden Erfindung,
wie in 3 gezeigt, in 300 Oberfläche-normal-Daten
erzeugt. Zusätzlich
werden Oberfläche-versteckt-Daten gespeichert,
die Eigenschaften über
die die Polygone aufweisende Oberfläche angeben. In einer Ausführung enthalten
die Oberfläche-versteckt-Daten Kantendaten,
Scharfheitsdaten und kubische Spline-Daten. Wenn in dieser Ausführung das
Polygon eine Oberfläche
darstellt, die einen scharten Punkt hat, wird in 304 ein
Flag gesetzt, um Information für
spätere
Rekonstruktion beizubehalten. Auch wenn eine Oberfläche eine
harte Kante hat, wird ein Flag (Harte-Kante-Flag genannt) in 308 gesetzt,
um diese Information beizubehalten. Wenn eine Kante glatt ist, wird
ein Glatt-Flag gesetzt. Kubische Spline-Information wird in 312 für jede ursprüngliche
Polygonkante gespeichert, um die Krümmung einer Oberfläche zu erfassen.
Kubische Spline-Information wird bevorzugt dadurch erhalten, dass
ein Kopf- und Endetangentenvektor
gespeichert wird, der dazu verwendet wird, den kubischen Spline über seine
Hermit-Darstellung wieder herzustellen. Diese Hermit-Kubik-Splines
entlang jeder Kante werden dann dazu benutzt, für jedes ursprüngliche
Polygon ein dreieckiges Bezier-Patch zu erzeugen. Die Verwendung
von Rekonstruktionsdaten ermöglicht die
Rekonstruktion einer akkuraten Darstellung der ursprünglichen
Oberfläche.
Andere Daten, die in der Tesselationsinformation enthalten sind,
können
gemäß der vorliegenden
Erfindung auch extrahiert werden, um Rekonstruktionsinformation
zu erhalten.
-
Als
Nächstes
erhält
ein Auflösungspegelgenerator 108 das
Steuernetz und die Rekonstruktionsdaten, um scheitelspezifische
Auslösungspegel
für jedes
Polygon zu berechnen. Die Auflösungspegel bestimmen,
ob und wie oft ein Polygon unterteilt wird. Das Unterteilen eines
Polygons liefert eine höhere Auflösung, da
ein unterteiltes Polygon glattgängiger gekrümmt aussieht
und bei der Erstellung detaillierter erscheint als ein Polygon,
das nicht unterteilt ist. Ein scheitelspezifischer Auflösungspegel
erlaubt, dass eine Unterteilung präzise dort erfolgt, wo sie erforderlich
ist. Im Gegensatz hierzu haben herkömmliche Systeme keine scheitelspezifische
Auflösungspegel und
messen daher die Unterteilung nicht solchen Polygonen zu, die sie
am meisten benötigen.
Gemäß der vorliegenden
Erfindung können
die Auflösungspegel
vier Werte einnehmen, 0 (keine Unterteilung), 1 (einmalige Unterteilung),
2 (zweifache Unterteilung) und 3 (dreifache Unterteilung). Z.B.
sind in 8a die Auflösungspegel aller drei Scheitel
0. Daher wird das Polygon (in diesem Fall ein Dreieck) nicht unterteilt.
In 8d haben alle drei Scheitel einen
Auflösungspegel
von 1. Dementsprechend wird das Polygon einmal in vier kleinere
Dreiecke unterteilt, was für
eine größere Detaillierung
und Krümmung
sorgt als das ursprüngliche
Dreieck. In 8j werden die Scheitel
auf einen Auflösungspegel
von 2 spezifiziert. Somit wird das Polygon zweimal unterteilt, um
aus dem ursprünglichen
Dreieck 16 Dreiecke zu erzeugen. 8t hat
Scheitel, die mit einem Auflösungspegel
von 3 spezifiziert sind. Dementsprechend wird das ursprüngliche
Polygon dreimal unterteilt, um 64 Dreiecke zu erzeugen. Die Unterteilung liefert
den größten Auflösungswert
und wird für
Oberflächen
ausgewählt,
die sehr stark gekrümmt
sind und die in Bezug auf die Kamerarichtung schräg positioniert
sind, wie unten im näheren
Detail diskutiert wird. Somit steuert die Spezifizierung der Auflösungspegel
der Scheitel die Höhe
er Unterteilung, die an einem Polygon vorgenommen wird und erlaubt daher
eine dynamische Steuerung über
den Detailreichtum, der unterschiedlichen Komponenten eines Objekts
zugeordnet ist.
-
Um
einen Auflösungspegel
zu berechnen, wird, wie in 4a gezeigt,
in 400 zuerst ein Sehnenabweichungsvektor für eine Kante 420 erzeugt.
Wie in 4b gezeigt, wird der Sehnenabweichungsvektor 424 am
Mittelpunkt einer Kante 420 zum Mittelpunkt eines kubischen
Splines 416 erzeugt, der die Oberfläche des Polygons repräsentiert.
Dieser kubische Spline 416 wird aus der kubischen Spline-Information
genommen, die aus dem Steuernetz gewonnen wird, wie oben beschrieben.
Für jede
Kante des ursprünglichen
Steuernetzes gibt es einen kubischen Spline 416. Dieser
Vektor 42 repräsentiert
somit die Auswärtsprojektion
der Kante 420 eines Polygons. Als Nächstes wird der Vektor 324 in
den Bildschirmraum projiziert, um einen Sichtbarkeitsfaktor für die Kante 420 des
Polygons zu bestimmen. Der Sichtbarkeitsfaktor misst den Grad der
Sichtbarkeit der Kante 420 des Polygons, wenn es in Bildschirmraumkoordinaten
umgewandelt ist. Wenn z.B. das Polygon Teil der Nasenspitze eines
Gesichts darstellt, das zur Kamera blickt, haben die die Spitze
aufweisenden Polygone einen geringen Sichtbarkeitsfaktor, weil die Krümmung der
Nase bei direkter Sicht nicht erkennbar ist. Wenn jedoch das Gesicht
weiter zu einem stärker
profilierten Winkel gedreht wird, ist der Sichtbarkeitsfaktor hoch,
weil die Krümmung
der Nase im Bildschirmraum sehr klar sichtbar sein kann. Um den Sichtbarkeitsfaktor
einer Kante 420 zu bestimmen, wird der Vektor 424 in 404 in
den Bildschirmraum projiziert, wie in 4c gezeigt.
Die Länge
des Vektors 424 im Bildschirmraum 428 repräsentiert
die Höhe der
Sichtbarkeit des Raums 420 des Polygons bei Betrachtung
durch den Verwender. Somit wird in einer bevorzugten Ausführung ein
Auflösungsschwellenwert
erzeugt, um Längen
gegenprojizierter Vektoren zu vergleichen, um in 412 die
Auflösungshöhe zu bestimmen,
die den Endpunkten einer Kante 420 zuzuordnen ist, die
durch den Vektor 424 definiert ist.
-
In
einer Ausführung
wird ein Auflösungsschwellenwert
derart gewählt,
dass dann, wenn die Länge
des projizierten Vektors den Schwellenwert nicht überschreitet,
ein Auflösungspegel
von 0 oder keine ausreichende Unterteilung den Endpunkten der durch
den Vektor 424 repräsentierten
Kante 420 zugeordnet wird. Wenn die Länge des projizierten Vektors 42 1T überschreitet,
aber kleiner ist als 2T (wobei T der Auflösungsschwellenwert ist), dann
wird den Endpunkten der Kante 420 ein Auflösungspegel von
1 zugeordnet, was angibt, dass das Polygon einmal unterteilt werden
soll. Wenn die Länge
des projizierten Vektors 424 2T überschreitet, aber kleiner
3T ist, wird den Endpunkten der Kante 420 ein Auflösungspegel
2 zugeordnet. Wenn schließlich
in dieser Ausführung
die Länge
des projizierten Vektors 424 3T überschreitet, aber kleiner
als 4T ist, wird den Endpunkten der Kante 420 ein Auflösungspegel
2 zugeordnet. Somit können
die Auflösungspegel
für einzelne
Scheitel eines Polygons in Antwort auf die Sichtbarkeit der Kante 420 des
Polygons, wenn es im Bildschirmraum dargestellt wird, adaptiv bestimmt werden.
Gemäß der vorliegenden
Erfindung können auch
Varianten für
einen gewählten
Auflösungsschwellenwert
und die sich daraus ergebenden Zuordnungen von Auflösungspegeln
angewendet werden.
-
In
einer bevorzugten Ausführung
wird in 414 in ein Endauflösungspegel für alle Kanten,
für die
er ein Teil ist, erzeugt. Dies kann unterschiedliche Auflösungspegel
für einen
Endpunkt ergeben, in Abhängigkeit
davon, ob das Polygon mit berücksichtigt
wird. Gemäß der vorliegenden
Erfindung wird in 415 ein maximaler Auflösungspegel
für einen
Endpunkt einer Kante als der Auflösungspegel, der für den Endpunkt anzuwenden
ist, gewählt.
Dies gewährleistet,
dass durch die vorliegende Erfindung die höchste Qualität beim Aussehen
eines Objekts erzeugt wird. Jedoch kann gemäß der vorliegenden Erfindung
auch ein Durchschnitt der Auflösungswerte
oder der minimale Auflösungswert
(was für
eine schnellere Geschwindigkeit sorgt) angewendet werden.
-
Sobald
die Auflösungspegel
für die
Scheitel der Polygone bestimmt worden sind, werden in 112 die
Polygone durch den Polygonunterteiler 112 unterteilt. Ein
wichtiger Aspekt der 3D-Erstellung ist, dass T-Scheitel Artefakte
erzeugen, die einen Benutzer stören. 6a stellt
das T-Scheitelproblem dar. In 6a erzeugt
das dem Dreieck 606 benachbarte Dreieck 605 ein
T-Scheitelproblem,
weil die Basen der Dreiecke 601 des Dreecks 605 durch
die Dreiecke 602 des Dreiecks 606 and den Punkten 604 aufgeteilt
sind. Bei der Erstellung erzeugt dies visuelle Artefakte. Um jedoch
in herkömmlichen
Systemen dem T-Scheitelproblem zu begegnen, werden nach der Unterteilung
Polygone geprüft
und nachgeprüft, um
die T-Scheitelprobleme rekursiv zu "fixieren". Nach einer Iteration werden die unterteilten
Polygone verändert,
um jegliche T-ScheitelArtefakte zu beseitigen. Dann wird eine zweite
Iteration erforderlich, um zu bestimmen, ob der vorangehende Durchlauf
etwaige neue T-Scheitel erzeugt hat, und um diese T-Scheitelprobleme
zu fixieren. Dies muss wiederholt durchgeführt werden, um die T-Scheitel
zu beseitigen. Dies erfolgt zusätzlich
zu der rekursiven Unterteilung und daher erfordert der gesamte Unterteilungs-
bis Erstellungsprozess herkömmlicher
Systeme einen großen
Umfang rekursiver Verarbeitung.
-
Jedoch
wird gemäß der vorliegenden
Erfindung ein Unterteilungsoptimierer 116 vorgesehen, um
diese rekursive Verarbeitung zu erübrigen. In einer bevorzugten
Ausführung
umfasst der Unterteilungsoptimierer 116 eine Nachschlagetabelle,
die im Speicher gespeichert ist, der die Unterteilungen für jede mögliche Auflösungspegelkombination
hält. Jedoch
können
gemäß der vorliegenden
Erfindung auch andere Datenstrukturen dazu benutzt werden, Information
in organisierter Weise zu speichern, die rasch abgefragt werden
kann. Wie in 5 gezeigt, bestimmt in 500 der
Polygonunterteiler 112 zuerst die Auflösungspegel von Scheiteln eines
Polygons, das unterteilt werden soll. Der Auflösungspegelgenerator 108 hat
bvorzugt die Auflösungspegel
bestimmt, wobei aber die Auflösungspegel
auch von einer beliebigen anderen Quelle erzeugt werden können. Dann fragt
in 504 der Polygonunterteiler 112 ein Unterteilungsmuster
ab, das in dem Unterteilungsoptimierer 116 für die gegebenen
Auflösungspegel
gespeichert ist. Die Unterteilungsmuster sind vorgestaltet, um T-Scheitelprobleme
zu beseitigen, um hierdurch ohne rekursives Fixieren von T-Scheitelproblemen auszukommen.
In 508 unterteilt dann der Polygonunterteiler 112 das
Polygon in Antwort auf das abgefragte Unterteilungsmuster.
-
8a – 8t stellen
eine Ausführung
vorgestalteter Muster dar, die alle möglichen Unterteilungen in einem
System abdecken, das vier Auflösungspegel
(0 – 3)
hat. In den Figuren der 8a – 8t sind
die Scheitelnummern der erzeugten unterteilen Dreiecke in Scheitelzahlenkästen neben dem
unterteilten Dreieck aufgelistet. Die Scheitelnummern sind in dem
Referenzdreieck 800 identifiziert, das auf jedem Blatter
der Zeichnungen dargestellt ist. In einer Ausführung wird eine Darstellung des
Referenzdreiecks 800 durch den Unterteiler 112 beibehalten,
um eine effiziente Unterteilung eines gegebenen Dreiecks zu gestalten.
Das Referenzdreieck 800 spezifiziert alle möglichen
Scheitel eines unterteilten Dreiecks. Z.B. sollen in 8f vier
unterteilte Dreiecke erzeugt werden. Die Scheitelnummern für das erste
unterteilte Dreieck 801 sind (0, 1, 5) und wie im Referenzdreieck 800 gezeigt,
können
diese Punkte des Referenzdreiecks 800 verbunden werden zur
Bildung eines Dreiecks 801. Die anderen Dreiecke 802, 803, 804 werden ähnlich berechnet.
Somit kann, nachdem der Unterteilungsoptimierer 116 die Auflösungspegel
von Scheiteln eines zu unterteilenden Polygons erhält, der Unterteilungsoptimierer 116 die
Scheitelnummern der neuen Polygone zum Unterteiler 112 übertragen
und der Unterteiler kann das Polygon unterteilen, indem die Polygone
an den Stellen hinzugefügt
werden, die durch die Scheitelnummern in Bezug auf das Referenzdreieck 800 spezifiziert
sind. Der Unterteilungsoptimierer 116 braucht nur das Unterteilungsmuster
und die zugeordneten Scheitelnummern der zu erzeugenden Polygone
zu speichern, um hierdurch die Resourcen zu minimieren, die zum
Implementieren des Unterteilungsoptimierers erforderlich sind. Wenn
z.B. der Unterteilungsoptimierer eine Nachschlagetabelle ist, wird
die Größe der Nachschlagetabelle
durch die Verwendung des Referenzdreiecks 800 stark reduziert.
-
In
der Ausführung
der 8a – 8t sind Unterteilungsmuster
für 20
mögliche
Kombinationen von Auflösungspegeln
gespeichert. Da jedoch jedes Muster drei Rotationsgrade hat, werden
alle möglichen
64 Fälle
durch diese 20 Unterteilungsmuster addressiert. Das Speichern von
nur 20 Mustern und das Vorsehen von Rotation minimiert die Speicheranforderungen;
jedoch könnten
gemäß der vorliegenden
Erfindung auch alle 64 Muster beibehalten werden. Wie in 6b gezeigt,
beseitigt die Anwendung eines Unterteilungsmusters, in diesem Fall
des Musters von 8g, T-Scheitelprobleme durch
Erzeugen eines unterteilten Polygons, das den erforderlichen Unterteilungsgrad
vorsieht, ohne T-Scheitel zu erzeugen. Gemäß diesem Unterteilungsmuster
fluchten am Punkt 604 die Dreiecke 601 des Dreiecks 605 mit
dem Dreieck 602, um den T-Scheitel zu beseitigen. 6c stellt
ein zweites T-Scheitelproblem dar, und 6d stellt
ein Unterteilungsmuster dar, das das T-Scheitelproblem löst. In 6c ist
die Basis des Dreiecks 612 durch Dreiecke 614 an
den Punkten 616 unterteilt. Jedoch trifft, gemäß dem vordefinierten
Unterteilungsmuster von 8k, das
in 3d gedreht gezeigt ist, die Basis
des Dreiecks 612 mit einer gleichermaßen festen Basis des Dreiecks 614 zusammen.
Somit ist gemäß der vorliegenden
Erfindung lediglich eine einzige Iteration erforderlich, um T-scheitelfreie
Polygon-Kombinationen zu erzeugen, Prozessleistung und Zeit einzusparen und
eine qualitativ höherwertige
visuelle Darstellung zu erzeugen. Wie oben diskutiert, erlaubt die
Einzeliterationsmethode, dass die vorliegende Erfindung als gesonderte
Hardware implementiert wird, da der rekursive Prozess herkömmlicher
Systeme eliminiert wird.
-
Nachdem
die Polygone unterteilt worden sind, erhält eine Gekrümmte-Oberfläche-Rekonstruktionsmaschine 118 die
Polygoninformations- und -rekonstruktionsdaten sowie die Scheitelinformation der
neuen Scheitel, die während
der Unterteilung hinzugefügt
wurden, um bei 216 die gekrümmte Oberfläche mit den zusätzlichen
Polygonen, die durch die Unterteilung erzeugt wurden, zu rekonstruieren. 7 ist
ein Flussdiagramm, das die Rekonstruktion einer gekrümmten Oberfläche gemäß der vorliegenden
Erfindung darstellt. Zuerst wird in 700 ein zu analysierendes
Polygon durch die Gekrümmte-Oberflächen-Rekonstruktionsmaschine 116 erhalten.
Wiederum kann das Polygon von dem Polygonunterteiler 112 erzeugt
werden, oder kann aus einer herkömmlichen
Quelle von Polygonen, die durch einen Renderer 120 zu gewinnen
sind, erzeugt werden. Dann wird in 704 die Positionsinformation
der Scheitel des Polygons abgefragt. Diese Information war, wie
oben beschrieben, als Teil der ursprünglichen Polygoninformation
gespeichert, einhergehend mit den Rekonstruktionsdaten, die durch
den Rekonstruktionsdatengenerator 104 erzeugt wurden.
-
Gemäß der vorliegenden
Erfindung werden dreeckige Bezier-Patches (bikubische Patches) dazu benutzt,
die gekrümmte
Oberfläche
darzustellen, die durch ein Polygon dargestellt ist, um eine genauere Rekonstruktion
der Oberfläche
aufgrund der hohen Flexibilität
des Bezier-Patches vorzusehen. Wie bekannt ist, gibt es 10 Oberflächenparameter
(genannt Steuerpunkte), die erforderlich sind, um ein bikubisches
Bezier-Patch zu erzeugen. Die Bezier-Dreieckoberflächenparameter werden aus den
Kanten-Spline-Daten berechnet, die zuvor während der Erzeugung des Rekonstruktionsdatenschritts
gespeichert wurden. Wie in 9 gezeigt,
umfasst ein Polygon 900 drei Kanten-Splines 901, 902, 903.
Diese Splines (Hermite) sind aus zwei Scheiteln zusammengesetzt,
einem Kopfscheitel und einem Endscheitel, für die zuvor die Positionsinformation
gespeichert wurde. Die Oberfläche-normal-Daten,
die ebenfalls zuvor gespeichert wurden, werden dazu benutzt, die
zwei Tangenten an jedem Scheitel (nachfolgend diskutiert), eine
Kopftangente und eine Endtangente zu erzeugen. Diese Information
wird dann dazu benutzt, die drei Kanten-Splines 901, 902, 903 in
1 Bezier-Dreieckpatch umzuwandeln. Die in 9 aufgelisteten
Gleichungen sind ein bevorzugtes Verfahren zum Umwandeln von Kanten-Spline-Daten
in Bezier-Patchdaten; jedoch können
Fachleute gemäß der vorliegenden
Erfindung auch andere Methoden anwenden.
-
Insbesondere
wird zuerst die Positionsinformation der Scheitel den drei Bezier-Parameterfeldern
zugewiesen, um Koordinaten des Bezier-Patches zu speichern, wie
in den Gleichungen 905, 908 und 911 gezeigt.
Dann wird in 708 die Oberfläche-normal-Information, die
zuvor als Teil der Rekonstruktionsdaten gespeichert wurde, abgefragt
und dazu benutzt, zwei Oberflächentangenten
für jede Oberflächen-Normale
zu erzeugen. Wie in 8 im näheren Detail
gezeigt, werden die Oberflächen-Normalen 1001, 1002 dazu
benutzt, für
jede Kante 901, 902, 903 des erhaltenen
Polygons Tangentenvektoren 1003, 1004 zu erzeugen.
Ein erster Tangentenvektor 1003 wird in Antwort auf Gleichung 1005 erzeugt,
und ein zweiter Tangentenvektor 1004 wird in Antwort auf
Gleichung 1006 erzeugt, wobei t0 der
erste Tangentenvektor 1003, t1 der
zweite Tangentenvektor ist, n0 die erste
Oberflächen-Normale
am Endpunkt am Ende der Kante 901, 902, 903 ist,
n1 die Oberflächen-Normale am Kopf der Kante 901, 902, 903 ist,
wobei das Symbol "^" den konventionellen Normalisierungsoperator
bezeichnet, der einen Vektor einer beliebigen Länge einnimmt und einen Vektor mit
einer Einheitslänge
in der gleichen Richtung erzeugt, und e0 die
zu analysierende Kante 901, 902, 903 ist.
In der bevorzugten Ausführung
werden alle diese Vektoren als 3D-Vektoren berechnet. Die Daten
zur Darstellung der zwei Oberflächentangenten für jeden
Kanten-Spline 901, 902, 903 werden zwei Bezier-Parameterfeldern
in Antwort auf die Gleichungen 906, 907, 909, 910, 912, 913 zugewiesen.
Als Nächstes
wird der Abstand des Bezier-Patches, der von der die Endpunkte des
Patches enthaltenden Ebene vorsteht, in Antwort auf Gleichung 904 berechnet,
und dem letzten Bezier-Parameterfeld zugewiesen, der den letzten
von 10 Bezier-Steuerpunkten gibt.
Andere Gleichungen zum Umwandeln des Scheitels, Cubic Spline und
Oberflächen-Normale-Information
in 10 Bezier-Steuerparametern sollen auch innerhalb des Umfangs
der vorliegenden Erfindung liegen.
-
Um
eine genauere gekrümmte
Oberflächendarstellung
zu erzeugen, prüft
die vorliegende Erfindung auch die Flags, die während der Rekonstruktionsdatenerzeugung
gesetzt werden. Wie oben diskutiert, geben die Flags an, ob die
zu rekonstruierende Oberfläche
einen scharten Punkt, eine harte Kante hat, durchgehend glatt ist
oder andere Oberflächenqualitäten hat.
Diese Information erlaubt die Erzeugung einer gekrümmten Oberfläche, die
durch das Bezier-Dreieck repräsentiert
wird, das die Oberfläche
des ursprünglichen
Objekts akkurat wiedergibt. Insbesondere werden die Flags dazu benutzt, die
Kontinuität
benachbarter Bezier-Dreiecke zu steuern. Wenn das Glatt-Flag gesetzt
ist, werden Normalen quer über
benachbarte Bezier-Dreiecke angepasst.
Wenn eine scharte Kante oder ein Punkt gesetzt ist, werden die Normalen
nicht entlang den Kanten oder Punkten quer über benachbarte Bezier-Dreiecke
gemeinsam benutzt, was eine scharfe Kante ergibt. Die Rekonstruktionsdaten
könnten
gemäß der vorliegenden
Erfindung auch dazu benutzt werden, Parameter für alternative mathematische Darstellungen
zu erzeugen. Sobald das Bezier-Patch für jedes Polygon erzeugt worden
ist, wird das Bezier-Patch bei allen durch Unterteilung erzeugten neuen
Scheiteln eines Polygons ausgewertet, und diese neuen Polygone werden
zum Renderer 120 übertragen,
der dann das Objekt erstellt, um es dem Benutzer anzuzeigen.
-
Trotz
der Hinzufügung
der neuen Polygone wird ein Detail jenen Teilen des Bilds hinzugefügt, denen
das zusätzliche
Detail am meisten nützt,
und weniger Datil wird angewendet, wenn für einen Benutzer mehr Detail
nicht sichtbar wäre.
Dies ergibt eine maximale Bildqualität, während die Resourcenanforderungen
minimiert werden. Zusätzlich
kann, aufgrund der Unterteilungsmethodik der vorliegenden Erfindung,
die gemäß der vorliegenden
Erfindung die rekonstruierte Version des Objekts einen größeren Detailreichtum
haben als die ursprüngliche
Darstellung (wenn z.B. als die ursprüngliche Oberflächendarstellung
eine polygonale Näherung
benutzt wurde), um hierdurch eine höhere Qualität des rekonstruierten Objekts
als die des ursprünglichen
Objekts vorzusehen, auf dem das rekonstruierte Objekt basiert hat.
-
Während der
Laufzeit führt
die Schaltung der vorliegenden Erfindung die oben beschriebene Methodik
bevorzugt jedesmal aus, wenn sich ein Kamerawinkel verschiebt, um
bei Bedarf Polygone zu dem betrachteten Bild hinzuzufügen oder
davon zu subtrahieren. Durch Implementieren der oben beschriebenen
Methodik als gesonderte integrierte Schaltung kann die Verarbeitung
der Bilder während
der Laufzeit effektiv und effizient erreicht werden. Darüber hinaus
wird aufgrund der Verwendung des Unterteilungsoptimierers 118 die
zum Bearbeiten jedes Objekts erforderliche Zeit stark verkürzt. Dementsprechend
können
auch solche Systeme, die die vorliegende Erfindung mit einem Mehrzweckprozessor
implementieren, die Gekrümmte-Oberfläche-Darstellung
on-the-fly rasch mit der Laufzeit erzeugen.
-
Es
versteht sich, dass die spezifischen Mechanismen und Techniken,
die beschrieben worden sind, lediglich eine Anwendung der Prinzipien
der Erfindung veranschaulichen. An der oben beschriebenen Vorrichtung
können
zahlreiche zusätzliche
Modifikationen vorgenommen werden, ohne vom wahren Geist der Erfindung
abzuweichen. Obwohl darüber hinaus
eine spezifische Funktionalität
an verschiedenen Schritten des oben beschriebenen Verfahrens und
der Module der oben beschriebenen Schaltung beschrieben worden sind,
können
diese Funktionalitäten
auch in anderen Reihenfolgen und anderen Modulen durchgeführt werden,
wie sie dem Fachkundigen bekannt wären.