-
GEBIET DER ERFINDUNG
-
Die
Erfindung bezieht sich im Allgemeinen auf das Gebiet der Computergraphik,
des computergestützten
Entwerfens und dergleichen, und genauer gesagt auf Systeme und Verfahren
zum Erzeugen von Shader-Systemen und zum Verwenden der so der erzeugten
Shader-Systeme beim Rendering eines Bilds einer Szene. Die Erfindung
stellt insbesondere eine neue Art von Komponente bereit, die bei
einem Computergraphiksystem nützlich
ist, die hier als ein "Phänomen" gekennzeichnet wird,
das ein System mit einem verpackten und verkapselten Shader-DAG
(shader "directed
acyclic graph")
oder einen Satz kooperierender Shader-DAGs umfasst, von denen jeder
einen oder mehrere Shader umfassen kann, der erzeugt und verkapselt
wird, um beim Definieren mindestens eines Abschnitts einer Szene
auf eine Art und Weise zu helfen, die sicherstellen wird, dass die
Shader während
des Renderings ordnungsgemäß kooperieren
können.
-
HINTERGRUND DER ERFINDUNG
-
Bei
der Computergraphik, dem computergestütztem Entwerfen und dergleichen
versucht ein Künstler,
Zeichner oder dergleichen (die hier allgemein als "Operator" bezeichnet werden)
eine dreidimensionale Darstellung von Objekten in einer Szene zu
erzeugen, wie sie durch einen Computer aufrechterhalten wird, und
danach jeweilige zweidimensionale Bilder der Objekte in der Szene
aus einer oder mehreren Orientierungen zu rendern. Bei der ersten Darstellungserzeugungsphase
erzeugen Computergraphiksysteme herkömmlicherweise eine dreidimensionale
Darstellung beispielsweise aus verschiedenen zweidimensionalen Strichzeichnungen,
die Konturen und/oder Querschnitte der Objekte in der Szene umfassen,
und durch Anwenden einer Anzahl von Vorgängen auf derartige Striche,
die zu zweidimensionalen Oberflächen
im dreidimensionalen Raum führen
werden, und anschließender
Modifikation von Parametern und Steuerpunkten derartiger Oberflächen, um
die Form der resultierenden Darstellung des Objekts zu kor rigieren
oder anderweitig zu modifizieren. Während dieses Prozesses definiert der
Operator ebenfalls verschiedene Eigenschaften der Oberflächen der
Objekte, der Struktur und der Charakteristika von Lichtquellen,
die die Szene beleuchten, und die Struktur und Charakteristika einer oder
mehrerer simulierter Kameras, die das Bild erzeugen. Nachdem die
Struktur und Eigenschaften der Szene, Lichtquelle(n) und Kamera(s)
definiert wurden, ermöglicht
bei der zweiten Phase ein Operator dem Computer, ein Bild der Szene
aus einer bestimmten Betrachtungsrichtung zu rendern.
-
Die
Objekte in der Szene, Lichtquelle(n) und Kamera(s) werden in der
ersten Phase, der Szenendefinition, durch jeweilige mehrdimensionale
mathematische Darstellungen mit zumindest der drei räumlichen
Dimensionen und möglicherweise
einer Zeitdimension definiert. Die mathematischen Darstellungen
werden typischerweise in einer baumstrukturierten Datenstruktur
gespeichert. Die Eigenschaften und Oberflächen der Objekte werden ihrerseits
durch "Shade-Bäume" definiert, von denen jeder einen oder mehrere
Shader umfasst, die während
der zweiten Phase, dem Szenen-Rendering, dem Computer ermöglichen,
die jeweiligen Oberflächen
zu rendern, wobei im Wesentlichen Farbwerte bereitgestellt werden,
die für
Farben der jeweiligen Oberflächen
repräsentativ
sind. Die Shader eines Shade-Baums werden durch einen Operator erzeugt
oder a priori durch ein Computergraphiksystem in einer Sprache höherer Ebene,
wie beispielsweise C oder C++, bereitgestellt, die zusammen den
Computer befähigen,
ein Bild einer jeweiligen Oberfläche
in der zweiten Phase, dem Szenen-Rendering, zu rendern.
-
Shade-Bäume wurden
durch R. Cook in dem Artikel "Shade
trees", ACM Computer
Graphics, Bd. 18, Nr. 3, Juli 1984, eingeführt und in der von P. Hanrahan
u.a. in "A Language
for Shading and Lighting Calculations", ACM Computer Graphics, Bd. 24, Nr. 4,
April 1991, eingeführten
RenderMan-Shading-Sprache neu definiert. Eine weitere Shading-Sprache
bzw. -System wird durch B. Corrie u.a. in dem Computer Science Technical
Report TR-CS-93-02 des Computer Science Laboratory der The Australian
National University mit dem Titel "Data Shader Language and Interface Specification", Juni 1993, beschrieben.
-
Eine
Anzahl von Problemen entsteht aus der Erzeugung und Verwendung von
Shader und Shade-Bäumen,
wie sie gegenwärtig
bei Computergraphik-Anordnungen
bereitgestellt werden. Zuerst können
Shader im Allgemeinen nicht miteinander kooperieren, es sei denn,
dass sie programmiert sind, es zu tun. Typischerweise sind den Shadern
zur Verfügung gestellte
Eingangswerte konstante Werte, was die Flexibilität und Fähigkeit
des Shaders begrenzt, Merkmale in einer interessanten und lebensähnlichen
Art und Weise zu rendern. Außerdem
ist es im Allgemeinen schwierig, Systeme von kooperierenden Shadern
einzurichten, die ihre Eingangswerte von einer gemeinsamen Quelle
erhalten können.
-
Die
vorliegende Erfindung ist, wie sie in den Ansprüchen beansprucht wird.
-
Die
Erfindung stellt ein neues und verbessertes Computergraphiksystem
und -verfahren bereit, das eine erhöhte Kooperation zwischen Shadern durch
Erleichtern der Erzeugung verpackter und verkapselter Shader-DAGs
vorsieht, von denen jeder einen oder mehrere Shader umfassen können, die
auf eine Art und Weise erzeugt werden, um sicherzustellen, dass
die Shader in den Shader-DAGs während des
Renderings ordungsgemäß kooperieren
können.
-
Kurz
gesagt wird ein Computergraphiksystem bereitgestellt, bei dem eine
neue Art von Entität, die
als ein "Phänomen" bezeichnet wird,
erzeugt, instantiiert und beim Rendering eines Bilds einer Szene
verwendet werden kann. Ein Phänomen
ist ein verkapselter Shader-DAG, der umfasst: einen oder mehrere
Knoten, die jeweils einen Shader oder einen verkapselter Satz derartiger
DAGs umfassen, die untereinander verbunden sind, um zu kooperieren,
die instantiiert und an Entitäten
in der Szene angebracht sind, die während des Szenendefinitionsprozesses erzeugt
werden, um diverse Arten von Merkmalen einer Szene, einschließlich Farb-
und Texturmerkmale der Oberflächen
der Objekte in der Szene, Charakteristika von Volumen und Geometrien
in der Szene, Merkmale von Lichtquellen, die die Szene beleuchten,
Merkmale von simulierten Kameras, die während des Renderings simuliert
werden, und zahlreiche andere Merkmale, die beim Rendering nützlich sind,
zu definieren.
-
Phänomene,
die zur Verwendung durch einen Operator in Verbindung mit einer
Szene ausgewählt
werden, können
vordefiniert sein oder aus Basis-Shader-Knoten durch einen Operator mit einem Phänomenerzeuger
aufgebaut werden. Der Phänomenerzeuger
stellt sicher, dass Phänomene
aufgebaut werden, so dass die Shader in dem DAG oder kooperierenden
DAGs während
des Renderings eines Bilds einer Szene ordungsgemäß kooperieren können.
-
Bevor
es an eine Szene angebracht wird, wird ein Phänomen durch Bereitstellen von
Werten oder Funktionen instantiiert, die verwendet werden, um die
Werte für
jeden Parameter des Phänomens mit
einem Phänomeneditor
zu definieren.
-
Nachdem
eine Darstellung einer Szene definiert wurde und Phänomene angebracht
wurden, kann ein Szenenbildgenerator ein Bild der Szene erzeugen.
Bei diesem Vorgang arbeitet der Szenenbildgenerator in einer Reihe
von Phasen, einschließlich
einer Vorverarbeitungsphase, einer Rendering-Phase und einer optionalen
Nachverarbeitungsphase. Während
einer Vorverarbeitungsphase kann der Szenenbildgenerator Vorverarbeitungsvorgänge, wie
beispielsweise eine Schatten- und Photonenabbildung, mehrfache Vererbungsauflösung und
dergleichen durchführen.
Der Szenenbildgenerator kann Vorverarbeitungsvorgänge durchführen, wenn
beispielsweise ein an der Szene angebrachtes Phänomen einen Geometrie-Shader
umfasst, um Geometrie zu erzeugen, die dadurch für die Szene definiert wird.
Während
der Rendering-Phase rendert der Szenenbildgenerator das Bild. Während der
Nachverarbeitungsphase kann der Szenenbildgenerator Nachverarbeitungsvorgänge durchführen, wenn
beispielsweise ein an der Szene angebrachtes Phänomen einen Shader umfasst,
der Nachverarbeitungsvorgänge
und beispielsweise Tiefe des Feldes oder Bewegungsunschärfeberechungen
definiert, die von der Geschwindigkeit und Tiefeninformation, die
in Verbindung mit jedem Pixelwert in dem gerenderten Bild gespeichert
sind, abhängen.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Diese
Erfindung wird insbesondere in den beigefügten Ansprüchen dargelegt. Die obigen
und weitere Vorteile dieser Erfindung können besser mit Bezug auf die
folgende Beschreibung in Verbindung mit den begleitenden Zeichnungen
verstanden werden, in denen zeigen:
-
1 ein
Computergraphiksystem, das eine verbesserte Kooperation zwischen
Shadern durch Erleichtern der Erzeugung von verpackten und verkapselten
Shader-DAGs bereitstellt, von denen jeder einen oder mehrere Shader
aufweisen kann, wobei die Shader-DAGs auf eine Art und Weise erzeugt werden,
um sicherzustellen, dass die Shader in dem Shader-DAG während des
Renderings ordungsgemäß kooperieren
können,
die in Übereinstimmung mit
der Erfindung aufgebaut sind;
-
2 ein
Funktionsblockdiagramm des in 1 dargestellten
Computergraphiksystem;
-
3 eine
graphische Benutzerschnittstelle für eine Ausführungsform des bei dem Computergraphiksystem
verwendeten Phänomenerzeugers,
dessen Funktionsblockdiagramm in 2 dargestellt
ist;
-
4 graphisch
ein veranschaulichendes Phänomen
dar, das mit dem in 2 und 3 dargestellten
Phänomenerzeuger
erzeugt wurde;
-
5 eine
graphische Benutzerschnittstelle für eine Ausführungsform des Phänomeneditors
dar, der bei dem Computergraphiksystem verwendet wird, dessen Funktionsblockdiagramm
in 2 dargestellt wird;
-
6A und 6B Einzelheiten
der in 5 dargestellten graphischen Benutzerschnittstelle;
und
-
7 ein
Ablaufdiagramm, das Vorgänge darstellt,
die durch einen Szenenbild-Erzeugungsabschnitt des in 2 dargestellten
Computergraphiksystems beim Erzeugen eines Bilds einer Szene durchgeführt werden.
-
AUSFÜHRLICHE BESCHREIBUNG EINER
-
VERANSCHAULICHENDEN AUSFÜHRUNGSFORM
-
Die
hier angefügte 1 stellt
Elemente dar, die ein in Übereinstimmung
mit der Erfindung aufgebautes Computergraphiksystem 10 bilden.
Das Computergraphiksystem 10 ermöglicht eine verbesserte Kooperation
zwischen Shadern durch Erleichtern der Erzeugung von neuen Computergraphikkomponenten,
die hier als "Phänomen (im
Singular) oder "Phänomene" (im Plural)" bezeichnet werden,
die verwendet werden, um Merkmale einer Szene zur Verwendung beim
Rendering zu definieren. Ein Phänomen ist
ein verpacktes und verkapseltes System, das einen oder mehrere Shader
umfasst, die in der Form eines oder mehrerer gerichteter azyklischer
Graphen ("DAGs") organisiert und
untereinander verbunden sind, wobei jeder DAG einen oder mehrere
Shader aufweist. Die durch das Computergaphiksystem 10 erzeugten
Phänomene
werden auf eine solche Art und Weise erzeugt, um sicherzustellen,
dass der Shader oder die Shader bei jedem Shader-DAG ordnungsgemäß während des
Renderings kooperieren können,
um das Rendering realistischer zu machen oder komplexe visuelle
Effekte zu erleichtern. Außerdem
erzeugt für
Phänomene,
die mehrere kooperierende Shader-DAGs umfassen, das Computergraphiksystem 10 das
Phänomen,
so dass die Shader in allen Shader-DAGs ordnungsgemäß während des Renderings
kooperieren können,
und das Rendering von progressiv realistischen oder komplex visuellen Effekten
zu erleichtern.
-
Mit
Bezug auf 1 umfasst das Computergraphiksystem 10 bei
einer Ausführungsform
einen Computer mit einem Prozessormodul 11 und Operatorschnittstellenelemente,
die Operator-Eingangskomponenten, wie beispielsweise eine Tastatur 12A und/oder
eine Maus 12B (im Allgemeinen als Operator-Eingangselement(e) 12 bezeichnet)
und ein Operator-Ausgangselement, wie beispielsweise eine Videoanzeigevorrichtung 13 umfassen.
Das veranschaulichende Computersystem 10 ist von der herkömmlichen
Computerarchitektur mit gespeicherten Programm. Das Prozessormodul 11 umfasst
beispielsweise einen Prozessor, Speicher und Massenspeichervorrichtungen,
wie beispielsweise Platten und/oder Bandspeicherelemente (nicht
getrennt gezeigt), die Verarbeitungs- und Speicherinformationen in
Verbindung mit dazu bereitgestellten Digitaldaten durchführen. Die
Operator-Eingangselemente 12 werden bereitgestellt, um
es einem Operator zu ermöglichen,
Information für
die Verarbeitung einzugeben. Die Videoanzeigevorrichtung 13 wird
bereitgestellt, um dem Operator durch das Prozessormodul 11 erzeugte
Anzeigeausgangsinformation auf einem Schirm 14, mit Daten,
die der Operator zur Verarbeitung eingeben kann, Information, die
der Operator eingeben kann, um die Verarbeitung zu steuern, sowie
auch während
der Verarbeitung erzeugte Information anzuzeigen. Das Prozessormodul 11 erzeugt Information
für die
Anzeige durch die Videoanzeigevorrichtung 13 mit einer
sogenannten "graphischen Benutzerschnittstelle" ("GUI" = Graphical User
Interface), bei der Information für verschiedene Anwendungsprogramme
mit verschiedenartigen "Fenstern" angezeigt wird.
Obwohl das Computersystem 10 gezeigt wird, wie es bestimmte
Komponenten, wie beispielsweise die Tastatur 12A und Maus 12B zum Empfangen
von Eingangsinformation von einem Operator und eine Videoanzeigevorrichtung 13 zum Anzeigen
von Ausgangsinformation an den Operator umfasst, ist es ersichtlich,
dass das Computersystem 10 eine Vielzahl von Komponenten
zusätzlich
oder anstatt der in 1 dargestellten umfassen kann.
-
Außerdem kann
das Prozessormodul 11 einen oder mehrere Netzwerkports,
die im Allgemeinen durch die Bezugsziffer 14 gekennzeichnet
werden, die mit Kommunikationsverbindungen, die den Computer 10 in
einem Computer- Netzwerk
verbinden, umfassen. Die Netzwerkports befähigen das Computersystem 10,
Information an andere Computersysteme und andere Vorrichtungen in
dem Netzwerk zu übertragen
und Information von diesen zu empfangen. Bei einem typischen Netzwerk,
das beispielsweise gemäß dem Client-Server-Paradigma
organisiert ist, werden bestimmte Computersysteme im Netzwerk als
Server gekennzeichnet, die Daten und Programme (im Allgemeinen "Information") zur Verarbeitung
durch die anderen Client-Computersysteme speichern, um dadurch die
Client-Computersysteme zu befähigen,
die Information zweckmäßigerweise
gemeinsam zu benutzen. Ein Client-Computersystem, das Zugriff auf
einen durch einen bestimmten Server aufrechterhaltene Information
benötigt,
wird dem Server ermöglichen,
die Information zu ihm über
das Netzwerk herunterzuladen. Nach Verarbeitung der Daten kann das
Client-Computersystem ebenfalls die verarbeiteten Daten an den Server
zur Speicherung zurückgeben.
Zusätzlich
zu Computersystemen (einschließlich
der oben beschriebenen Server und Clients) kann ein Netzwerk beispielsweise
ebenfalls Drucker und Faxgeräte,
digitale Audio- oder Videospeicher- und -verteilungsvorrichtungen und
dergleichen umfassen, die zwischen den verschiedenen in dem Netzwerk
verbundenen Computersystemen gemeinsam benutzt werden können. Die
die Computersysteme in dem Netzwerk untereinander verbindenden Kommunikationsverbindungen umfassen,
wie es herkömmlich
ist, ein zweckmäßiges Informations-beförderndes
Medium, einschließlich
Drähten,
optischen Fasern oder andere Medien zum Befördern von Signalen zwischen
den Computersystemen. Computersysteme transferieren Information über das
Netzwerk mittels über
die Kommunikationsverbindungen transferierte Nachrichten, wobei
jede Nachricht Information und einen Identifizierer umfasst, der
die Vorrichtung identifiziert, um die Nachricht zu empfangen.
-
Wie
oben angemerkt ist, sorgt das Computergraphiksystem 10 für eine verbesserte
Kooperation zwischen Shadern durch Ermöglichen der Erzeugung von Phänomena,
die verpackte und verkapselte Shader-DAGs oder kooperierende Shader-DAGs umfassen,
wobei jeder Shader-DAG mindestens einen Shader umfasst, der die
Merkmale einer dreidimensionalen Szene definiert. Phänomena können verwendet
werden, um verschiedene Arten von Merkmalen einer Szene, einschließlich Farbe
und Texturmerkmale von Oberflächen
von Objekten in der Szene, Eigenschaften von Volumen und Geometrie
in der Szene, Merkmale von Lichtquellen, die die Szene beleuchten,
Merkmale von simulierten Kameras oder anderen Bildaufzeichnungsvorrichtungen, die
während
des Renderings simuliert werden, und zahlreiche andere Merkmale,
die beim Rendering nützlich
sind, zu definieren, wie es aus der folgenden Beschreibung offensichtlich
ist. Die Phänomene
sind aufgebaut, um sicherzustellen, dass die Shader in dem DAG oder
kooperierenden DAGs während
des Renderings eines Bilds der Szene ordungsgemäß kooperieren können.
-
2 stellt
ein Funktionsblockdiagramm des bei einer Ausführungsform der Erfindung verwendeten
Computergraphiksystems 10 dar. Wie in 2 dargestellt
ist, umfasst das Computergraphiksystem 10 zwei allgemeine
Abschnitte, die einen Szenenstruktur-Erzeugungsabschnitt 20 und
einen Szenenbild-Erzeugungsabschnitt 21 aufweist.
Der Szenenstruktur-Erzeugungsabschnitt 20 wird von einem Künstler,
Zeichner oder dergleichen (im Allgemeinen "Operator") während
einer Szenen-Entitätserzeugungsphase
verwendet, um eine Darstellung verschiedenartiger Elemente zu erzeugen,
die durch den Szenenbild-Erzeugungsabschnitt 21 beim
Rendering eines Bilds der Szene verwendet werden, wie beispielsweise
die Objekte in der Szene und ihre Oberflächeneigenschaften, die Struktur
und Eigenschaften der Lichtquellen oder anderen, die Szene beleuchtenden
Quellen und die Struktur und Eigenschaften einer bestimmten Vorrichtung,
wie beispielsweise einer Kamera, die beim Erzeugen des Bildes simuliert
wird, wenn das Bild gerendert wird, umfassen kann. Die durch den
Szenenstruktur-Erzeugungsabschnitt 20 erzeugte
Darstellung ist in der Form einer mathematischen Darstellung, die
in der Szenen-Objektdatenbank 22 gespeichert wird. Die mathematische
Darstellung wird durch den Bildrenderingabschnitt 21 ausgebildet,
um diese dem Operator anzuzeigen. Der Szenenstruktur-Erzeugungsabschnitt 20 und
der Szenenbild-Erzeugungsabschnitt 21 können sich auf dem gleichen
Computer befinden und einen Teil desselben bilden, wobei sich in
diesem Fall die Szenen-Objektdatenbank 22 ebenfalls auf
dem gleichen Computer liegen kann oder alternativ auf einem Server,
für den
der Computer 20 ein Client ist, befinden kann. Alternativ
können
sich die Abschnitte 20 und 21 auf unterschiedlichen
Computern befinden und Teile derselben bilden, wobei in diesem Fall
die Szenen-Objektdatenbank 22 auf
einen der beiden Computer oder einem Server für beide Computer liegen kann.
-
Genauer
gesagt wird der Szenenstruktur-Erzeugungsabschnitt 20 durch
den Operator verwendet, um eine mathematische Darstellung zu erzeugen,
die die geometrischen Strukturen der Objekte in der Szene, die Positionen
und geometrischen Eigenschaften von Lichtquellen, die die Szene
beleuchten, und die Positionen, geometrischen optischen Eigenschaften
der Kameras, die beim Erzeugen der Bilder zu simulieren sind, die
zu rendern sind, umfassen. Die mathematische Darstellung definiert
vorzugsweise die drei räumlichen
Abmessungen und kennzeichnet somit die Position des Objekts in der
Szene und die Merkmale des Objekts. Die Objekte können hinsichtlich
ihrer ein-, zwei- oder dreidimensionalen Merkmale, einschließlich gerader
oder gekrümmter Linien,
die in einem dreidimensionalen Raum eingebettet sind, zweidimensionaler
Oberflächen,
die in einem dreidimensionalen Raum eingebettet sind, eine oder
mehrere begrenzte und/oder geschlossene dreidimensionale Oberflächen oder
jede Kombination davon, definiert werden. Außerdem können die mathematischen Darstellungen
ebenfalls eine zeitliche Dimension definieren, die insbesondere
in Verbindung mit der Computeranimation nützlich sein kann, bei der die
Objekte und ihre jeweiligen Merkmale betrachtet werden, sich gemäß einer
Funktion der Zeit zu bewegen.
-
Zusätzlich zu
der mathematischen Darstellung der geometrischen Struktur des/der
Objekts(e) in der zu rendernden Szene definiert die mathematische
Darstellung ferner eine oder mehrere Lichtquellen, die die Szene
beleuchten, und eine Kamera. Die mathematische Darstellung einer
Lichtquelle definiert insbesondere die Position und/oder die Richtung
der Lichtquelle bezogen auf die Szene und die strukturellen Eigenschaften
der Lichtquelle, einschließlich,
ob die Lichtquelle eine Punktquelle, eine gerade oder gekrümmte Linie,
eine flache oder gekrümmte
Oberfläche
oder dergleichen ist. Die mathematische Darstellung der Kamera definiert
insbesondere die herkömmlichen
Kameraparameter, einschließlich
der Linse oder Linsen, der Brennweite, der Orientierung der Bildebene
usw.
-
Der
Szenenstruktur-Erzeugungsabschnitt 20 erleichtert ebenfalls
die Erzeugung der Phänomene, die
ausführlich
nachstehend beschrieben werden, und die Zuordnung der Phänomene zu
jeweiligen Elementen der Szene. Phänomene definieren im Allgemeinen
andere Information, die für
die Vervollständigung
der Definition der Szene erforderlich ist, die beim Rendering verwendet
wird. Diese Information umfasst Eigenschaften der Farbe, Texturen
usw., und der Oberflächen
der geometrischen Entitäten,
die durch den Szenenstrukturerzeugungsabschnitt 20 definiert
sind, wobei sie jedoch nicht darauf begrenzt ist. Ein Phänomen kann
mathematische Darstellungen oder andere Objekte umfassen, die, wenn
sie während des
Renderingvorgangs ausgewertet werden, den das gerenderte Bild erzeugenden
Computer befähigen
werden, die jeweiligen Oberflächen
auf die gewünschte
Art und Weise anzuzeigen. Der Szenenstruktur-Erzeugungsabschnitt 20 ordnet
unter der Steuerung des Operators die Phänomene den mathematischen Darstellungen
für die
jeweiligen Elemente (d.h., Objekte vom Oberflächenvolumen und dergleichen)
wirksam zu, mit denen sie zu verwenden sind, wobei die Phänomene an
den jeweiligen Elementen wirksam "angebracht" werden.
-
Nachdem
die mathematischen Darstellungen durch den Szenenstruktur-Erzeugungsabschnitt 20 erzeugt
und in der Szenendarstellungsdatenbank 22 gespeichert wurden,
wird der Szenenbild-Erzeugungsabschnitt 21 von einem Operator
während
einer Renderingphase verwendet, um ein Bild der Szene auf beispielsweise
der Videoanzeigeeinheit 13 zu erzeugen (1).
-
Der
Szenenstruktur-Erzeugungsabschnitt 20 umfasst mehrere Elemente,
die einen Geometrische-Darstellung-Generator für Entitäten 23, einen Phänomenerzeuger 24,
eine Phänomendatenbank 25,
einen Phänomeneditor 26,
eine Basis-Shader-Knotendatenbank 32,
eine Phänomen-Instanzen-Datenbank 33 und
einen Szenenassembler 34 umfassen, die alle unter der Steuerung
der durch eine Operatorschnittstelle 27 eingegebenen Operator-Eingangsinformation
arbeiten. Die Operatorschnittstelle 22 kann im Allgemeinen
die Operatoreingabevorrichtung 12 und die Videoanzeigeeinheit 13 des
Computergraphiksystems 10 umfassen, wie oben in Verbindung
mit 1 beschrieben ist. Der Geometrische-Darstellung-Generator für Entitäten 23 erleichtert
unter der Steuerung der Operatoreingabe von der Operatorschnittstelle 27 die
Erzeugung der mathematischen Darstellung der Objekte in der Szene
und der Lichtquelle(n) und der Kamera, wie oben beschrieben ist.
Der Phänomenerzeuger 24 stellt
einen Mechanismus bereit, wodurch der Operator mit der Operatorschnittstelle 27 und
den Basis-Shader-Knoten von der Basis-Shader-Knotendatenbank 23 Phänomene erzeugen
kann, die in Verbindung mit der Szene oder anderweitig verwendet werden
können
(wie nachstehend beschrieben wird). Nachdem ein Phänomen durch
den Phänomenerzeuger 24 erzeugt
ist, wird es (d.h. das Phänomen)
in der Phänomendatenbank 25 gespeichert.
Nachdem ein Phänomen
in der Phänomendatenbank 25 gespeichert
wurde, kann eine Instanz des Phänomens durch
den Phänomeneditor 26 erzeugt
werden. Bei diesem Vorgang wird der Operator den Phänomeneditor 26 verwenden,
um Werte für
die verschiedenen Parameter (falls vorhanden) des Phänomens bereitzu stellen.
Wenn das Phänomen
beispielsweise erzeugt wurde, um Merkmale, wie beispielsweise Farbgleichgewicht,
Texturkörnigkeit,
Glanz oder dergleichen bereitzustellen, die basierend auf der Eingabe von
dem Operator zur Anbringungszeit oder danach eingerichtet, eingestellt
oder modifiziert werden können,
wobei der Phänomeneditor 26 dem
Operator durch die Operatorschnittstelle 27 ermöglicht,
das bestimmte Merkmal einzurichten, einzustellen oder zu modifizieren.
Die Werte für
die Parameter können entweder
fest sein oder sich gemäß einer
Funktion einer Variablen (veranschaulichenderweise Zeit) verändern. Der
Operator kann mit dem Szenenassembler 34 Phänomeninstanzen,
die mit dem Phänomeneditor 26 erzeugt
wurden, an Elementen der Szene anbringen, wie sie durch den Geometrische-Darstellung-Generator
für Entitäten 23 erzeugt
wurden.
-
Obwohl
der Phänomeneditor 26 beschrieben wurde,
wie er Phänomene
von der Phänomendatenbank 25 wiederherstellt,
die durch den Phänomenerzeuger 24 des
Szenenstruktur-Erzeugungsabschnitts 20 des Computergraphiksystems 10 erzeugt wurden,
ist ersichtlich, dass ein oder mehrere und möglicherweise alle in dem Computergraphiksystem 10 bereitgestellten
Phänomene
vordefiniert und durch andere Vorrichtungen (nicht gezeigt) erzeugt und
in der Phänomendatenbank 25 zur
Verwendung durch den Phänomeneditor 26 gespeichert
sein können.
In einem derartigen Fall kann der Operator, der den Phänomeneditor
durch die Operatorschnittstelle 27 steuert, geeignete vordefinierte
Phänomene
zur Anbringung an die Szene auswählen.
-
Der
Szenenbild-Erzeugungsabschnitt 21 umfasst mehrere Komponenten
einschließlich
eines Bildgenerators 30 und einer Operatorschnittstelle 31. Wenn
der Szenenbild-Erzeugungsabschnitt 21 einen Teil des gleichen
Computers wie der Szenenstruktur-Erzeugungsabschnitt 20 bildet,
kann die Operatorschnittstelle 31 die gleichen Komponenten
wie die Operatorschnittstelle 27 umfassen, muss sie jedoch nicht.
Wenn der Szenenbild-Erzeugungsabschnitt 21 andererseits
einen Teil eines von dem Computer unterschiedlichen Computers bildet,
von dem der Szenenstruktur-Erzeugungsabschnitt ist, wird die Operatorschnittstelle 31 im
Allgemeinen unterschiedliche Komponenten als die Operatorschnittstelle 27 umfassen,
obwohl die Komponenten der beiden Operatorschnittstellen 31 und 27 ähnlich sein
können.
Der Bildgenerator 30 stellt unter der Steuerung der Operatorschnittstelle 31 die
Darstellung der Szene wieder her, die von der Szenendarstel lungsdatenbank 22 zu
rendern ist, und erzeugt ein gerendertes Bild für die Anzeige auf der Videodisplayeinheit
der Operatorschnittstelle 31.
-
Bevor
weiter fortgefahren wird, würde
es hilfreich sein, ein in Verbindung mit der Erfindung verwendetes "Phänomen" weiter zu beschreiben.
Ein Phänomen
liefert Information, die zusätzlich
zu der durch den Geometrische-Darstellung-Generator
für Entitäten 23 erzeugten
mathematischen Darstellung verwendet wird, um die Definition der
Szene, die beim Rendering verwendet wird, einschließlich, jedoch
nicht begrenzt auf Eigenschaften der Farben, Texturen und geschlossenen
Volumen usw., der Oberflächen
der durch den Szenenstruktur-Erzeugungsabschnitt 20 definierten
geometrischen Entitäten
zu vervollständigen.
Ein Phänomen
erfasst einen oder mehrere Knoten, die in der Form eines gerichteten
azyklischen Graphs ("DAG") oder einer Mehrzahl von
kooperierenden DAGs untereinander verbunden sind. Einer der Knoten
ist ein primärer
Wurzelknoten, der verwendet wird, um das Phänomen an einer Entität in einer
Szene oder genauer gesagt an einer mathematischen Darstellung der
Entität
anzubringen. Andere Arten von Knoten, die bei einem Phänomen verwendet
werden können,
umfassen optionale Wurzelknoten und Shader-Knoten. Die Shader-Knoten können jeden
einer Mehrzahl von herkömmlichen Shadern,
einschließlich
herkömmliche
einfache Shader, sowie auch Textur-Shader, Material-Shader, Volumen-Shader,
Umgebungs-Shader, Schatten-Shader und Verschiebungs-Shader und Material-Shader umfassen,
die in Verbindung mit der Erzeugung einer zu rendernden Darstellung
verwendet werden können.
Außerdem
kann eine Anzahl von anderen Arten von Shader-Knoten in einem Phänomen verwendet werden,
umfassend
- (i) Geometrie-Shader, die verwendet
werden können,
um geometrische Objekte zu der Szene hinzuzufügen. Geometrie-Shader umfassen
im Wesentlichen vordefinierte statische oder prozedurale mathematische
Darstellungen von Entitäten
im dreidimensionalen Raum, die Darstellungen, die durch den Geometrische-Darstellung-Generator für Entitäten 23 in
Verbindung mit Entitäten
in der Szene erzeugt werden, mit der Ausnahme ähnlich sind, dass sie zur Vorverarbeitungszeit
bereitgestellt werden können,
um beispielsweise jeweilige Regionen zu definieren, in denen das
jeweilige Phänomen
zu begrenzen ist. Ein Geometrie-Shader hat im Wesentlichen Zugriff
auf die Szenenaufbauelemente des Geometrische-Darstellung-Generator für Entitäten 23,
so dass er die Szenendarstellung ändern kann, wie sie in der Szenenobjektdatenbank
gespeichert ist, um beispielsweise neue geometrische Elemente der Szene
in entweder einer statischen oder prozeduralen Art und Weise zu
modifizieren oder zu erzeugen. Es sei bemerkt, dass ein Phänomen, das vollständig aus
einem Geometrie-Shader-DAG oder einem Satz von kooperierenden Geometrie-Shader-DAGs
aufgebaut ist, verwendet werden kann, um Objekte in einer Szene
auf eine prozedurale Art und Weise darzustellen. Dies ist im Gegensatz
zum typischen Modellieren, das bei dem einem Modellierungssystem
von einem menschlichen Operator durch Durchführen einer Sequenz von Modulierungsvorgängen erzielt wird,
um die gewünschte
Darstellung eines Objekts in dem Computer zu erhalten. Hier stellt
im Wesentlichen ein Geometriephänomen
einen verkapselten und automatisierten, parameterisierten abstrakten
Modellierungsvorgang dar. Ein Beispiel eines Geometriephänomens (d.h.
eines Geometriephänomens,
das einem Satz von Parameterwerten zugeordnet ist, die entweder
fest sind oder sich auf eine vorbestimmte Art und Weise mit Zeit
oder dergleichen zu verändern)
wird zu einer spezifischen geometrischen Szenenerweiterung führen, wenn
es durch den Szenenbildgenerator 30 zur Laufzeit während einer
Vorverarbeitungsphase ausgewertet wird.
- (ii) Photonen-Shader, die verwendet werden können, um die Wege von Photonen
in der Szene und die Eigenschaften der Wechselwirkung von Photonen
mit Oberflächen
von Objekten in der Szene, wie beispielsweise Absorption, Reflexion
und dergleichen, zu steuern. Photonen-Shader erleichtern die physikalisch
korrekte Simulation globaler Beleuchtung und von Kaustiks in Verbindung
mit dem Rendering. Bei einer Ausführungsform werden Photonen-Shader
während
des Renderings durch den Szenenbildgenerator 30 während eines Vorverarbeitungsvorgangs
verwendet.
- (iii) Photonen-Volumen-Shader, die Photonen-Shadern mit der
Ausnahme ähnlich
sind, dass sie in Verbindung mit einem dreidimensionalen Raumvolumen
in der Szene anstatt auf der Oberfläche eines Objekts arbeiten.
Dies ermöglicht,
dass die Simulation von Kaustiks und globaler Beleuchtung auf Volumen
und begleitende eingeschlossene teilnehmende Medien, wie beispielsweise
das Streuen von Photonen durch Staub oder Nebelteilchen in der Luft,
durch Wasserdampf wie beispielsweise in Wolken oder dergleichen,
erweitert werden kann.
- (iv) Photonen-Emitter-Shader, die ebenfalls Photonen-Shadern
mit der Ausnahme ähnlich
sind, dass sie sich auf Lichtquellen und somit auf die Emission von
Photonen beziehen. Die simulierten Photonen, für die Emission in Verbindung
mit Photonen-Emitter-Shadern simuliert wird, können dann in Verbindung mit
den Photonen-Shadern, die verwendet werden können, um Weg- und Oberflächenwechselwirkungscharakteristika
der simulierten Photonen zu simulieren, und Photonenvolumen-Shadern,
die verwendet werden können,
um Weg- und andere Charakteristika in dreidimensionalem Volumen
insbesondere entlang der jeweiligen Wege zu simulieren, verarbeitet
werden.
- (v) Kontur-Shader, die in Verbindung mit der Erzeugung von Konturlinien
während
des Renderings verwendet werden. Bei einer Ausführungsform gibt es drei Subarten
von Kontur-Shadern, nämlich
Konturspeicher-Shader, Konturkontrast-Shader und Konturerzeugungs-Shader.
Ein Konturspeicher-Shader wird verwendet, um Konturabtastinformationen
beispielsweise für
eine Oberfläche
zu sammeln. Ein Konturkontrast-Shader wird verwendet, um zwei Sätze der
Abtastinformation zu vergleichen, die mittels eines Konturspeicher-Shaders
gesammelt werden. Schließlich wird
ein Konturerzeugungs-Shader verwendet, um Konturpunktinformation
zur Speicherung in einem Puffer zu erzeugen, die dann durch einen Ausgangs-Shader
(nachstehend beschrieben) beim Erzeugen von Konturlinien verwendet
wird.
- (vi) Ausgangs-Shader, die verwendet werden, um Information in
Puffern zu verarbeiten, die durch den Szenenbildgenerator 30 während des
Renderings erzeugt werden. Ein Ausgangs-Shader kann auf Pixel-Information
zugreifen, die während
des Renderings erzeugt wurde, um bei einer Ausführungsform Compositing-Vorgänge, komplexe
Faltungen und eine Konturlinienzeichnung aus Konturpunktinformation,
die durch Konturerzeugungs-Shader erzeugt wurden, wie oben beschrieben,
durchzuführen.
- (vii) Dreidimensionale Volumen-Shader, die verwendet werden,
um zu steuern, wie Licht, andere sichtbare Strahlen und dergleichen
durch einen Teil oder dem gesamten leeren dreidimensionalen Raum
in einer Szene läuft/laufen.
Ein dreidimensionaler Volumen-Shader kann für jeden einer Anzahl von Volumeneffekten,
einschließlich
beispielsweise Nebel, und prozeduralen Effekte, wie beispielsweise
Rauch, Flammen, Pelz und Teilchenwolken, verwendet werden. Da ein
dreidimensionaler Volumen-Shader in Verbindung mit Licht verwendet
wird, sind sie außerdem
ebenfalls in Verbindung mit Schatten nützlich, die aus den prozeduralen
Effekten entstehen würden;
und
- (viii) Licht-Shader, die verwendet werden, um Emissionseigenschaften
von Lichtquellen, einschließlich
beispielsweise Farbe, Richtung und Dämpfungscharakteristika zu steuern,
die aus Eigenschaften, wie beispielsweise den Formen jeweiligen
Lichtquellen, der Texturprojektion, der Schattenbildung und anderen
Lichteigenschaften resultieren können.
-
Weitere
Arten von Shadern, die in Verbindung mit der Definition einer Szene
nützlich
sein können,
können
ebenfalls bei einem Phänomen
verwendet werden.
-
Ein
Phänomen
wird definiert durch
- (i) eine Beschreibung
der extern steuerbaren Parameter eines Phänomens,
- (ii) einen primären
Wurzelknoten und optional einen oder mehrere optionale Wurzelknoten,
- (iii) eine Beschreibung der internen Struktur des Phänomens einschließlich der
Identifikation der Shader, die als Knoten zu verwenden sind, und wie
sie untereinander verbunden sind, um einen DAG oder eine Mehrzahl
von kooperierenden DAGs zu bilden, und
- (iv) optional eine Beschreibung von Dialogfeldern und dergleichen,
die durch das Phänomen
zur Verwendung durch den Phänomeneditor 26 definiert
werden können,
um dem Operator zu ermöglichen,
Werte für
Parameter oder Eigenschaften bereitzustellen, die bei der Auswertung
des jeweiligen Phänomens
verwendet werden.
-
Außerdem kann
ein Phänomen
externe Deklarationen und einen Verbindungs-ausführbaren Code von Bibliotheken
aufweisen, wie es bei der Programmierung Standard ist.
-
Wie
oben bemerkt, kann ein Phänomen
eine Mehrzahl von kooperierenden DAGs aufweisen. Bei einem derartigen
Phänomen
kann während
des Renderings Information, die aus der Verarbeitung einer oder
mehrerer Knoten eines ersten DAGs in dem Phänomen erzeugt wurde, bei der
Verarbeitung in Verbindung mit einem oder mehreren Knoten eines zweiten
DAGs in dem Phänomen
verwendet werden. Die beiden DAGs werden nichtsdestotrotz unabhängig verarbeitet
und können
bei unterschiedlichen Stufen bei dem Rendering-Prozess verarbeitet
werden. Die durch einen jeweiligen Knoten in dem ersten DAG erzeugte
Information, die mit einem Knoten in dem zweiten DAG "kooperieren" kann (d.h., die
durch den Knoten bei dem zweiten DAG bei seiner Verarbeitung verwendet
werden kann), kann von dem jeweiligen Knoten in dem ersten DAG zu
dem Knoten in dem zweiten DAG über
jeden geeigneten Kommunikationskanal, wie beispielsweise ein Puffer,
der dafür
zugeteilt sein kann, transferiert werden. Das Bereitstellen aller
DAGs, die auf dieses Art und Weise kooperieren müssen, in einem einzigen Phänomen stellt
sicher, dass sämtliche
Bedingungen für
die Kooperation erfüllt
werden, was nicht der Fall sein kann, wenn die DAGs nicht verkapselt
oder in getrennten Phänomenen
oder anderen Entitäten
getrennt bereitgestellt werden.
-
Als
ein Beispiel eines Phänomens
mit mehreren kooperierenden DAGs kann ein Phänomen mehrere DAGs einschließlich eines
Material-Shader-DAG, eines Ausgangs-Shader-DAG und Anweisungen zum
Erzeugen eines Bezeichner-Frame-Puffers
umfassen. Der Material-Shader-DAG umfasst mindestens einen Material-Shader
zum Erzeugen eines Farbwerts für
ein Material und speichert ebenfalls Bezeichnerinformation über die
Objekte, die während
der Verarbeitung des Material-Shader-DAGs angetroffen werden, in
dem Bezeichner-Frame-Puffer, der in Verbindung mit der Verarbeitung
der Bezeichner-Frame-Puffererzeugungsanweisungen
eingerichtet wird. Der Ausgangs-Shader-DAG umfasst seinerseits mindestens
einen Ausgangs-Shader, der die Bezeichnerinformation aus dem Bezeichner-Frame-Puffer
wiederherstellt, um das Durchführen
objektspezifischer Compositing-Vorgänge zu erleichtern. Zusätzlich zu
den Bezeichner-Frame-Puffererzeugungsanweisungen kann das Phänomen ebenfalls
Anweisungen zum Steuern von Betriebsarten des Szenenbildgenerators 30 umfassen,
so dass beide DAGs arbeiten und kooperieren können. Beispielsweise können derartige Anweisungen
die Mindestprobendichte steuern, die erforderlich ist, damit die
beiden DAGs ausgewertet werden können.
-
Als
ein zweites Beispiel eines Phänomens mit
mehreren kooperierenden Shader-DAGs kann ein Materialphänomen, das
ein Material darstellt, das sowohl durch einen Photonen-Shader-DAG,
der mindestens einen Photonen-Shader, als auch einen Material-Shader-DAG,
der mindestens einen Material-Shader aufweist, umfasst. Während des
Renderings wird der Photonen-Shader-DAG während Kaustiks und globaler
Beleuchtungsvorverarbeitung ausgewertet, und der Material-Shader-DAG
wird später
während
des Renderings eines Bildes ausgewertet. Während der Verarbeitung des
Photonen-Shader-DAGs wird simulierte Photonen-darstellende Information
auf eine solche Art und Weise gespeichert, dass sie während späterer Verarbeitung des
Material-Shader-DAGs verwendet werden kann, um Beleuchtungsbeiträge von dem
Kaustik oder der globalen Beleuchtungsvorverarbeitungsstufe hinzuzufügen. Bei
einer Ausführungsform
speichert der Photonen-Shader-DAG die simulierte Photoneninformation
in einer Photonenmap, die durch den Photonen-Shader-DAG verwendet
wird, um die simulierte Photoneninformation dem Material-Shader-DAG
mitzuteilen.
-
Als
ein drittes Beispiel eines Phänomens, das
mehrere kooperierende Shader-DAGs aufweist, kann ein Phänomen einen
Kontur-Shader-DAG, der mindestens einen Shader des Kontur-Shader-Typs aufweist,
und einen Ausgangs-Shader-DAG,
der mindestens einen Ausgangs-Shader aufweist, umfassen. Der Kontur-Shader-DAG
wird verwendet, um zu bestimmen, wie Konturlinien durch Speichern
von "Punkten" einer ausgewählten Farbe,
Transparenz, Breite und anderen Attributen zu zeichnen sind. Der Ausgangs-Shader-DAG
wird verwendet, um alle Zellen zu sammeln, die während des Renderings erzeugt
wurden, und um sie, wenn das Rendering abgeschlossen ist, in Konturlinien
zusammenzufügen. Der
Kontur-Shader-DAG umfasst einen Konturspeicher-Shader, einen Konturkontrast-Shader
und einen Konturerzeugungs-Shader. Der Konturspeicher-Shader wird
verwendet, um Abtastinformation zur späteren Verwendung durch einen
Konturkontrast-Shader zu sammeln. Der Konturkontrast-Shader wird
seinerseits verwendet, um zu bestimmen, ob die durch den Konturspeicher-Shader
gesammelte Abtastinformation derart ist, dass ein Konturpunkt in
dem Bild anzuordnen ist, und falls so, ordnet der Konturerzeugungs-Shader
tatsächlich
den Konturpunkt an. Dieses veranschaulichende Phänomen veranschaulicht eine
Vier-Stufen-Kooperation,
mit
- (1) einer ersten Stufe, bei der Abtastinformation (durch
den Konturspeicher-Shader) gesammelt wird;
- (2) einer zweiten Stufe, bei der die Entscheidung (durch den
Konturkontrast-Shader) getroffen wird, ob eine Konturzelle anzuordnen
ist;
- (3) einer dritten Stufe, bei der der Konturpunkt (durch den
Konturerzeugungs-Shader) erzeugt wird; und
- (4) einer vierten Stufe, bei der erzeugte Konturpunkte (durch
den Ausgangs-Shader-DAG) erzeugt werden.
-
Keiner
der Shader Stufe macht in irgendeiner Gebrauch von einem anderen
Shader in einer anderen Stufe, wobei sie stattdessen einzeln zu
unterschiedli chen Zeiten verarbeitet und ausgewertet werden, wobei
sie jedoch kooperieren, um die Erzeugung des Endergebnisses zu ermöglichen.
-
Als
ein viertes Beispiel eines Phänomens
mit mehreren kooperierenden Shader-DAGs kann ein Phänomen einen
Volumen-Shader-DAG und einen Geometrie-Shader-DAG umfassen. Der
Volumen-Shader-DAG umfasst mindestens einen Volumen-Shader, der
Eigenschaften eines begrenzten Volumens, beispielsweise einen Pelz-Shader,
der Pelz innerhalb des begrenzten Volumens simuliert, definiert.
Der Geometrie-Shader-DAG umfasst mindestens einen Geometrie-Shader, der verwendet wird,
um eine äußere Grenzoberfläche als
eine neue Geometrie in die Szene aufzunehmen, bevor das Rendering
beginnt, wobei geeignete Material- und Volumen-Shader-DAGs an der äußeren Grenzoberfläche angebracht
sind, um die Berechnungen zu definieren, die in Verbindung mit Haar
in Verbindung mit dem ursprünglichen
Volumen-Shader-DAG durchzuführen
sind. Bei diesem veranschaulichenden Phänomen findet die Kooperation
zwischen dem Geometrie-Shader-DAG und dem Volumen-Shader-DAG statt,
wobei der Geometrie-Shader-DAG eine prozedurale Geometrie einführt, bei
der der Geometrie-Shader-DAG
den Volumen-Shader-DAG unterstützt.
Der Volumen-Shader-DAG macht von dieser Geometrie Gebrauch, wobei
er jedoch nicht imstande sein würde,
die Geometrie selbst zu erzeugen, da die Geometrie mit dem Geometrie-Shader-DAG während eines
Vorverarbeitungsvorgangs vor dem Rendering erzeugt wird, wohingegen
der Volumen-Shader-DAG während
des Renderings verwendet wird. Die in Verbindung mit diesem vierten
veranschaulichenden vierten Beispiel dargestellten Kooperation unterscheidet
sich von der, die in Verbindung mit dem ersten bis dritten veranschaulichten
Beispielen dargestellt ist, da der oder die Shader, die den Geometrie-Shader
bilden, prozedural Elemente bereitstellen, die durch den Volumen-Shader-DAG
verwendet werden, und nicht nur Daten speichern, wie es der Fall
in Verbindung mit der Kooperation in Verbindung mit dem ersten bis
dritten veranschaulichenden Beispielen ist.
-
Alle
diese Beispiele veranschaulichen Computergraphikeffekte, bei denen
ein Bild einer Szene mit mehreren kooperierenden, jedoch unabhängigen Shader-DAGs
gerendert werden kann, die in ein einziges Phänomen gebündelt und verkapselt werden.
-
Mit
diesem Hintergrund werden die in Verbindung mit dem Phänomenerzeuger 24 und
dem Phänomeneditor 26 durchgeführten Vorgänge in Verbin dung
mit 3 bzw. 5 beschrieben. Außerdem wird
ein in Verbindung mit dem Phänomenerzeuger 24 erzeugtes
veranschaulichendes Phänomen
in Verbindung mit 4 beschrieben, und Einzelheiten der
durch den Phänomeneditor 26 in
Verbindung mit den in Verbindung mit 4 dargestellten
Phänomen
durchgeführten
Vorgänge
werden in Verbindung mit 6A und 6B beschrieben. 3 stellt
ein Phänomenerzeugerfenster
dar, das dem Phänomenerzeuger 24 ermöglicht,
dem Operator die Operatorschnittstelle 27 anzuzeigen, um
dem Operator zu ermöglichen,
ein neues Phänomen
zu definieren und die Definition eines existierenden Phänomens zu
modifizieren. Das Phänomenerzeugerfenster 40 umfasst
eine Mehrzahl von Frames, einschließlich eines Regal-Frames 41,
eines unterstützten
Graphikknoten-Frames 42, eines Steuer-Frames 43 und
eines Phänomengraph-Leinwand-Frames 44.
Der Regal-Frame 41 kann ein oder mehrere Phänomen-Icons
umfassen, die im Allgemeinen durch die Bezugsziffer 45 gekennzeichnet
werden, wobei jedes von ihnen ein Phänomen darstellt, das mindestens teilweise
zur Verwendung bei dem Szenenstruktur-Erzeugungsabschnitt 20 definiert
wurde. Der unterstützte
Graphknoten-Frame 42 umfasst ein oder mehrere Icons, die
im Allgemeinen durch die Bezugsziffer 46 gekennzeichnet
werden, die Entitäten,
wie beispielsweise Schnittstellen, der verschiedenen Arten von Shaders,
die bei einem Phänomen
verwendet werden können,
und dergleichen darstellen, die der Operator zur Verwendung bei
einem Phänomen auswählen kann.
Wie nachstehend beschrieben wird, können die in dem unterstützten Graphknoten-Frame 42 dargestellten
Icons von einem Operator verwendet werden, um die Knoten des gerichteten azyklischen
Graphs zu bilden, der ein Phänomen
definiert, das zu erzeugen oder zu modifizieren ist. Bei einer Ausführungsform
gibt es eine Anzahl von Arten von Knoten, umfassend:
- (i) Einen primären
Wurzelknoten, der die Wurzel des gerichteten azyklischen Graphs
und die Verbindung mit der Szene bildet, und typischerweise einen
Farbwert während
des Renderings bereitstellt.
- (ii) Verschiedene Arten von optionalen Wurzelknoten, die als
Ankerpunkte in einem Phänomen-DAG
verwendet werden können,
um den Hauptwurzelknoten zu unterstützen (obiger Punkt (i)). Veranschaulichende
Arten von optionalen Wurzelknoten umfassen:
- (a) einen Linsenwurzelknoten, der verwendet werden kann, um
Linsen-Shader oder Linsen-Shader-DAG in eine Kamera zur Verwendung
während
des Renderings einzuführen;
- (b) einen Volumenwurzelknoten, der verwendet werden kann, um
globale Volumen (oder Atmosphären)-Shaders
oder Shader-DAGs
in eine Kamera zur Verwendung während
des Renderings einzuführen;
- (c) einen Umgebungswurzelknoten, der verwendet werden kann,
um einen globalen Umgebungs-Shader oder Shader-DAGs in eine Kamera zur
Verwendung während
des Renderings einzuführen;
- (d) einen Geometriewurzelknoten, der verwendet werden kann,
um Geometrie-Shader oder Shader-DAGs zu spezifizieren, die während des
Renderings vorverarbeitet werden können, um eine prozedurale unterstützende Geometrie
oder andere Elemente einer Szene, die zu der Szenendatenbank hinzuzufügen sind,
zu ermöglichen;
- (e) einen Konturspeicherwurzelknoten, der verwendet werden kann,
um einen Konturspeicher-Shader in eine Szenenoptionen-Datenstruktur einzuführen;
- (f) einen Ausgangswurzelknoten, der in Verbindung mit einer
Nachverarbeitung nach einer Rendering-Phase verwendet werden kann;
und
- (g) eine Konturkontrastwurzel, die verwendet werden kann, um
einen Konturkontrast-Shader in die Szenenoptionen-Datenstruktur
einzufügen.
- (iii) Einen Shader-Knoten, der einen Shader darstellt, d.h.
eine Funktion, die in einer Sprache höherer Ebene, wie beispielsweise
C oder C++, geschrieben ist.
- (iv) Einen Lichtknoten, der in Verbindung mit einer Lichtquelle
verwendet wird. Ein Lichtknoten stellt der Lichtquelle einen Licht-Shader,
Farbe, Intensität,
Ursprung und/oder Richtung und optional einen Photonen-Emitter-Shader
zur Verfügung.
- (v) Einen Materialknoten, der in Verbindung mit einer Oberfläche verwendet
wird. Ein Materialknoten stellt eine Oberfläche mit einem Farbwert bereit
und umfasst Eingänge
für eine
lichtundurchlässige
Angabe, die angibt, ob die Oberfläche lichtundurchlässig ist,
und für
Material-, Volumen-, Umgebungs-, Schatten-, Verschiebungs-, Photonen-,
Photonen-Volumen- und Kontur-Shader.
- (vi) Einen Phänomenknoten,
der eine Phänomeninstanz
ist.
- (vii) Einen konstanten Knoten, der einen konstanten Wert bereitstellt,
der eine Eingabe in irgendeinen der anderen Knoten sein kann. Der
konstante Wert kann aus den meisten Arten von Datentypen in der
für die
Entitäten
verwendeten Programmiersprache sein, wie beispielsweise Shader,
die durch irgendeinen der anderen Knoten, wie beispielsweise Skalar,
Vektor, logisch (Boolesch), Farbe, Transformation und so weiter
dargestellt werden; und
- (viii) Einen Dialogknoten, der Dialogfelder darstellt, die dem
Operator durch den Phänomen-Editor 26 angezeigt
und die von dem Operator verwendet werden können, um Eingangsinformation
bereitzustellen, um das Phänomen
vor oder während
des Renderings zu steuern. Die Dialogknoten können den Phänomen-Editor 26 aktivieren,
um Schaltflächen,
Schieber, Räder
usw. zu aktivieren, um angezeigt zu werden, um dem Operator zu ermöglichen,
beispielsweise Farbe und andere Werte zu spezifizieren, die in Verbindung
mit der Oberfläche
zu verwenden sind, mit der das Phänomen mit dem Dialogknoten
verbunden ist.
-
Wie
in 3 gezeigt ist, umfassen der Regal-Frame 41 und
der unterstützte
Graphknoten-Frame 42 sowohl linke als auch rechte Pfeil-Icons,
die im Allgemeinen durch die Bezugsziffer 47 identifiziert werden,
die ermöglichen,
dass die in dem jeweiligen Frame gezeigten Icons nach links oder
rechts verschoben werden können
(wie in 3 gezeigt ist), um anzuzeigende
Icons in dem Phänomenerzeugerfenster 40 zu
verschieben, wenn es mehr Entitäten gibt,
als auf einmal angezeigt werden können.
-
Der
Steuer-Frame 43 enthält
Icons (nicht gezeigt), die Schaltflächen darstellen, die der Operator verwenden
kann, um Steuervorgänge,
einschließlich beispielsweise
Löschen
oder Duplizieren von Knoten in dem Regal-Frame 41 oder
unterstützten
Graphknoten-Frame 42, beginnenden Aufbau eines neuen Phänomens,
Starten eines Online-Hilfesystems, Verlassen des Phänomen-Erzeugers 24 usw.
durchzuführen.
-
Die
Phänomen-Graphleinwand 44 stellt
einen Bereich zur Verfügung,
bei dem ein Phänomen durch
ein Operator erzeugt oder modifiziert werden kann. Wenn der Operator
wünscht,
ein existierendes Phänomen
zu modifizieren, kann er oder sie mit einer „Ziehen- und Ablegen (drag
and drop)"-Methodik
mit einer Zeigevorrichtung, wie beispielsweise einer Maus, das Icon 45 von
dem das Phänomen
darstellende Regal-Frame 41 auswählen und zu der Phänomen-Graphleinwand 44 ziehen.
Nachdem das ausgewählte
Icon 45, das dem zu modifizierenden Phänomen zugeordnet ist, zu der
Phänomen-Grapheinwand 44 gezogen
wurde, kann der Operator das Icon 45 aktivieren, damit
es expandiert wird, um ein oder mehrere, durch Pfeile untereinander
verbundene Knoten zu zeigen, die den Graph darstellen, der das Phänomen definiert.
Ein Graph 50, der ein veranschaulichendes Phänomen darstellt,
wird in 3 dargestellt. Wie in 3 gezeigt
ist, umfasst der Graph 50 eine Mehrzahl von Graph-Knoten,
die Kreise und Blöcke
umfassen, wobei jeder von diesen einer Entität zugeordnet ist, die bei einem
Phänomen verwendet
werden kann, wobei die Knoten durch Pfeile untereinander verbunden
sind, um den dem Phänomen
zugeordneten Graph zu definieren.
-
Nachdem
der dem Icon 45 zugeordnete Graph, der zu der Phänomen-Graphleinwand 44 gezogen
wurde, expandiert wurde, um den Graph zu zeigen, der das dem Icon 45 zugeordnete
Phänomen definiert,
kann der Operator den das Phänomen
definierenden Graph modifizieren. Bei diesem Vorgang kann der Operator
mit einer entsprechenden „Ziehen-
und Ablegen"-Methodik
Icons 46 auswählen und
von den unterstützten
Graphknoten-Frames 42, die die Entitäten darstellen, ziehen, um
zu dem Graph an der Phänomen-Graphleinwand 44 hinzugefügt zu werden,
um dadurch einen neuen Knoten für den
Graph einzurichten. Nachdem der neue Knoten eingerichtet wurde,
kann der Operator ihn mit einem Knoten in dem existierenden Graph
durch Klicken auf beide Knoten auf eine geeignete Art und Weise
untereinander verbinden, um zu ermöglichen, dass ein Pfeil dazwischen
angezeigt werden kann. Knoten in dem Graph können ebenfalls von anderen
Knoten durch Löschen
der Pfeile getrennt werden, die sich zwischen den jeweiligen Knoten
erstrecken, und von dem Graph durch geeignete Betätigung einer
Löschschaltfläche in dem
Steuer-Frame 43 gelöscht
werden.
-
Auf ähnliche
Weise kann er oder sie, wenn der Operator wünscht, ein neues Phänomen zu
erzeugen, mit der entsprechenden „Ziehen- und Ablegen"-Methodik Icons 46 auswählen und
von dem unterstützten
Graphknoten-Frames 42, die die zu dem Graph hinzuzufügenden Entitäten darstellen,
zu der Phänomen-Graphleinwand 44 ziehen,
um dadurch einen neuen Knoten für
den zu erzeugenden Graph festzulegen. Nachdem der neue Knoten in
der Phänomen-Graphleinwand 44 eingerichtet
wurde, kann der Operator ihn mit einem Knoten in dem existierenden
Graph durch Klicken auf beide Knoten auf eine geeignete Art und
Weise verbinden, um zu ermöglichen,
dass ein Pfeil dazwischen angezeigt wird. Knoten in dem Graph können ebenfalls
von anderen Knoten durch Löschen
von Pfeilen, die sich zwischen den jeweiligen Knoten erstrecken,
getrennt werden, und von dem Graph durch eine geeignete Betätigung einer
Löschschaltfläche in dem
Steuer-Frame 43 gelöscht
werden.
-
Nachdem
der Operator den DAG oder einen Satz von kooperierenden DAGs für das Phänomen, entweder
für ein
neues Phänomen
oder für
ein modifiziertes Phänomen,
spezifiziert hat, und bevor das durch den Graph dargestellte Phänomen in
der Phänomen-Datenbank 25 gespeichert
ist, wird der Phänomen-Erzeuger 24 den
Phänomen-Graph
untersuchen, um zu verifizieren, dass er konform ist und während des
Renderings verarbeitet werden kann. Bei diesem Vorgang wird der
Phänomen-Erzeuger 24 sicherstellen,
dass die Zwischenverbindungen zwischen den Graph-Knoten keinen Zyklus
bilden, um dadurch sicherzustellen, dass der Graph oder die Graphen,
die dem Phänomen
zugeordnet sind, gerichtete azyklische Graphen bilden, und dass
Zwischenverbindungen zwischen Graph-Knoten jeweilige Eingangs- und Ausgangsdatentypen
darstellen, die konform sind. Es ist ersichtlich, dass, wenn der Phänomen-Erzeuger 24 bestimmt,
dass die Graph-Knoten einen Zyklus bilden, das Phänomen im
Wesentlichen eine endlose Schleife bilden wird, die im Allgemeinen
nicht ordnungsgemäß verarbeitet werden
kann. Diese Vorgänge
werden sicherstellen, dass das so erzeugte oder modifizierte Phänomen durch
den Szenenbild-Erzeugungsabschnitt verarbeitet werden kann, wenn
ein Bild einer Szene, an der das Phänomen angebracht ist, gerendert
wird.
-
Nachdem
der Operator ein Phänomen
erzeugt oder modifiziert hat, wird es in der Phänomen-Datenbank 25 gespeichert.
-
4 stellt
ein in Verbindung mit dem Phänomen-Erzeuger 24 erzeugtes,
veranschaulichendes Phänomen
dar, das mit dem oben in Verbindung mit 3 beschriebenen
Phänomen-Erzeugerfenster erzeugt
werden kann. Das in 4 dargestellte veranschaulichende
Phänomen,
das durch die Bezugsziffer 60 ge kennzeichnet wird, ist
eines, das für
Oberflächenmerkmale
eines Holzmaterials verwendet werden kann. Mit Bezug auf 4 umfasst
das Phänomen 60 einen
Wurzelknoten, der durch die Bezugsziffer 61 gekennzeichnet
wird, der verwendet wird, um das Phänomen 60 an einem
Element einer Szene anzubringen. Weitere Knoten in dem Graph umfassen
einen Material-Shader-Knoten 62, einen Textur-Shader-Knoten 63,
einen Kohärentes-Rauschen-Shader-Knoten 64,
der einen Material-Shader darstellt, einen Textur-Shader bzw. einen
Kohärentes-Rauschen-Shader und einen
Dialogknoten 65. Der Dialogknoten 65 stellt ein
Dialogfeld dar, das durch den Phänomen-Editor 26 angezeigt
wird, um dem Operator zu ermöglichen,
Eingangsinformation zur Verwendung mit dem Phänomen bereitzustellen, wenn
das Bild gerendert wird.
-
Einzelheiten
eines Material-Shaders, eines Textur-Shaders und eines Kohärentes-Rauschen-Shaders
sind einem Fachmann bekannt und werden hier nicht weiter beschrieben.
Im Allgemeinen umfasst der Material-Shader einen oder mehrere durch „Ergebnis" dargestellte Ausgänge, die
dem Wurzelknoten 61 zur Verfügung gestellt werden. Der Material-Shader
umfasst seinerseits mehrere Eingänge,
die einen „Glanz"-Eingang, „Umgebungs"-Farbeneingang, einen „diffusen" Farbeneingang, einen „Transparenz"-Eingang, und einen „Lichter"-Eingang umfassen,
und der dadurch dargestellte Material-Shader-Knoten 62 wird
gezeigt, wie er Eingaben dafür
von dem Dialogknoten 65 (im Fall der Glanz-Eingabe), von
dem Textur-Shader-Knoten 63 (im Fall der Umgebungs- und
diffusen Farbeingänge),
von einer fest verdrahteten Konstanten (im Fall des Transparenz-Eingangs) und von
einer Lichterliste (im Fall des Lichter-Eingangs) empfängt. Der
als „0,0" angegebene, fest
verdrahtete konstante Wert, der dem Transparenz-Eingang bereitgestellt wird, gibt an,
dass das Material lichtundurchlässig
ist. Der „Glanz"-Lichter-Eingang
ist mit einem „Glanz"-Ausgang verbunden,
der durch den Dialogknoten 65 bereitgestellt wird, und
wenn der durch den Knoten 62 dargestellte Material-Shader
während
des Renderings verarbeitet wird, wird er den Glanz-Eingangswert
dafür von
dem durch den Dialogknoten dargestellten Dialogfeld erhalten, wie
nachstehend in Verbindung mit 6A und 6B beschrieben
wird.
-
Die
Umgebungs- und diffusen Eingänge
des durch den Knoten 62 dargestellten Material-Shaders werden
durch die Ausgabe des Textur-Shaders bereitgestellt, wie durch die
Verbindung des „Ergebnis"-Ausgangs des Knoten 63 mit
den jeweiligen Eingängen
des Knotens 62 angegeben wird. Wenn das Holzmaterial-Phänomen 60 während des
Renderingvorgangs verarbeitet wird, und insbesondere, wenn der durch
den Knoten 62 dargestellte Material-Shader verarbeitet
wird, wird ermöglicht,
dass der durch den Knoten 63 dargestellte Textur-Shader
verarbeitet werden kann, um die Umgebungs- und diffusen Farbeingangswerte
bereitzustellen. Der Textur-Shader umfasst seinerseits drei Eingänge, die
Umgebungs- und diffuse
Farbeingänge,
die durch an dem Knoten 63 gezeigte „Farbe1"- und „Farbe2"-Eingänge und einen „Misch"-Eingang dargestellt
werden. Die Werte für
die Umgebungs- und diffusen Farbeingänge werden durch den Operator
mit dem durch den Dialogknoten 65 dargestellten Dialogfeld
bereitgestellt, wie durch die Verbindungen von den jeweiligen diffusen
und Umgebungs-Farbausgängen
von dem Dialogfeld 65 zu dem Textur-Shader-Knoten 63 in 4 dargestellt
wird.
-
Außerdem wird
der Eingangswert für
den Eingang des durch den Knoten 63 dargestellten Textur-Shaders
durch den durch den Knoten 64 dargestellten Kohärentes-Rauschen-Shader
bereitgestellt. Wenn somit der durch den Knoten 63 dargestellte Textur-Shader
während
des Renderingvorgangs verarbeitet wird, wird er ermöglichen,
dass der durch den Knoten 64 dargestellte Kohärentes-Rauschen-Shader verarbeitet
werden kann, um den Misch-Eingangswert bereitzustellen. Der Kohärentes-Rauschen-Shader
umfasst zwei Eingänge,
die einen „Turbulenz"-Eingang und einen „zylindrischen" Eingang umfassen.
Der Wert für
den Turbulenz-Eingang wird dem Operator mit dem durch den Dialogknoten 65 dargestellten
Dialogfeld bereitgestellt, wie es durch die Verbindungen von dem
Turbulenz-Ausgang
von dem Dialogknoten 65 zu dem Kohärentes-Rauschen-Shader-Knoten 64 dargestellt
ist. Der Eingangswert für
den zylindrischen Eingang, der als ein logischer Wert „WAHR" gezeigt wird, ist
in dem Phänomen 60 fest
verdrahtet.
-
Durch
den Phänomen-Editor 26 durchgeführte Vorgänge werden
in Verbindung mit 5 beschrieben. 5 stellt
ein Phänomen-Editorfenster 70 dar,
das den Phänomen-Editor 26 in
die Lage versetzt, durch die Operator-Schnittstelle 27 zur
Verwendung durch einen Operator bei einer Ausführungsform der Erfindung angezeigt
zu werden, um Eingangswerte für
Phänomene
festzulegen und einzustellen, die an einer Szene angebracht wurden. Insbesondere
kann der Operator das Phänomen-Editorfenster
verwenden, um Werte für
Phänomene
festzulegen, die durch Dialogknoten, wie beispielsweise dem Dialogknoten 65,
zugeordnete Dialogfelder bereitgestellt werden (4),
die für
die jeweiligen Phänomene während der
Erzeugung oder Modifikation eingerichtet wurden, wie oben in Verbindung
mit 3 beschrieben ist. Das Phänomen-Editorfenster 70 umfasst
eine Mehrzahl von Frames, die ein Regal-Frame 71 und ein
Steuer-Frame 72 umfassen, und umfasst ebenfalls ein Phänomen-Dialogfenster 73 und
ein Phänomen-Vorausschaufenster 74.
Der Regal-Frame 71 stellt Icons 80 dar, die die
verschiedenen Phänomene
darstellen, die zur Anbringung an einer Szene verfügbar sind.
Wie bei dem Phänomenerzeugerfenster 40 (3)
umfasst der Regal-Frame linke und rechte Pfeil-Icons, die im Allgemeinen durch
die Bezugsziffer 81 gekennzeichnet werden, die es den in
den jeweiligen Frame gezeigten Icons ermöglicht, nach links und rechts
verschoben zu werden (wie in 3 gezeigt
ist), um in dem Phänomen-Editorfenster 70 anzuzeigende
Icons zu verschieben, wenn es mehr Icons gibt, als auf einmal angezeigt
werden können.
-
Der
Steuer-Frame 71 enthält
Icons (nicht gezeigt), die Schaltflächen darstellen, die der Operator benutzen
kann, um Steuervorgänge,
einschließlich beispielsweise
Löschen
oder Duplizieren von Icons in dem Regal-Frame 71, Starten
eines Online-Hilfesystems, Verlassen des Phänomen-Editors 26 usw. durchzuführen.
-
Der
Operator kann ein Phänomen
auswählen,
dessen Parameterwerte durch geeignete Manipulation einer Zeigervorrichtung,
wie beispielsweise einer Maus, festzulegen sind, um eine Instanz
eines Phänomens
zu erzeugen. (Eine Instanz eines Phänomens entspricht einem Phänomen, dessen
Parameterwerte festgelegt wurden.) Nachdem der Operator ein Phänomen ausgewählt hat,
wird der Phänomen-Editor 26 der
Operator-Schnittstelle 27 ermöglichen, das seinem Dialogknoten
zugeordnete Dialogfeld in dem Phänomen-Dialogfenster
anzuzeigen. Ein veranschaulichendes Dialogfeld, das in Verbindung
mit einer Ausführungsform
des oben in Verbindung mit 4 beschriebenen
Holzmaterial-Phänomens 60 verwendet
wird, wird nachstehend in Verbindung mit 6A und 6B beschrieben.
Wenn der Operator die Eingangswerte bereitstellt und einstellt, die
durch das Dialogfeld bereitgestellt werden können, verarbeitet der Phänomen-Editor 26 effektiv
das Phänomen
und zeigt die resultierende Ausgabe in dem Phänomen-Vorausschaufenster 74 an.
Somit kann der Operator das Phänomen-Editorfenster 70 verwenden,
um das Ergebnis der Werte zu betrachten, die er oder sie mit den
Eingänge
festlegt, die durch das in dem Phänomen-Dialogfenster angezeigte
Dialogfeld verfügbar
sind.
-
6A und 6B stellen
graphisch Einzelheiten eines Dialogknotens (im Fall von 6A) und
eines veranschaulichenden zugeordneten Dialogfeldes (im Fall von 6B)
dar, die in Verbindung mit dem in 4 dargestellten
Holzmaterial-Phänomen 60 verwendet
werden. Der Dialogknoten, der durch die Bezugsziffer 65 in 4 gekennzeichnet wird,
wird definiert und durch den Operator mit dem Phänomen-Erzeuger 24 während des
Prozesses des Erzeugens oder Modifizierens des bestimmten Phänomens erzeugt,
dem er zugeordnet ist. Mit Bezug auf 6A umfasst
das Dialogfeld 65 eine Mehrzahl von Kacheln, nämlich eine
Umgebungs-Farbenkachel 90, eine diffuse Farbenkachel 91,
eine Turbulenz-Kachel 92 und eine Glanz-Kachel 93.
Es ist ersichtlich, dass die jeweiligen Kacheln 90 bis 93 den jeweiligen
Umgebungs-, diffusen, Turbulenz- und Glanz-Ausgangswerten zugeordnet sind, die
durch den Dialogknoten 65 bereitgestellt werden, wie es oben
in Verbindung mit 4 beschrieben ist. Den Umgebungs- und diffusen Farbkacheln
sind Farbwerte zugeordnet, die mit der herkömmlichen Rot/Grün/Blau/Alpha-
oder „RGBA"-Farb-Transparenz-Spezifikation
spezifiziert werden können,
und somit wird jede Farbkachel tatsächlich mehreren Eingangswerten,
einen für
jeweils die rote, grüne
und blaue Farbe in der Farbdarstellung und eine für Transparenz
(Alpha), zugeordnet sein. Andererseits ist jede der Turbulenz- und
Glanz-Kacheln 92 und 93 einem skalaren Wert zugeordnet.
-
6B stellt
ein veranschaulichendes Dialogfeld 100 dar, das dem Dialogknoten 65 zugeordnet ist
(6A), wie es durch die Operator-Schnittstelle 27 unter
der Steuerung des Phänomen-Editors 26 angezeigt
wird. In dem Dialogfeld 100 werden die Umgebungs- und diffusen
Farbkacheln 90 und 91 des Dialogknotens 65 jeweils
durch die Operator-Schnittstelle 27 als jeweilige Sätze von
Schiebern angezeigt, die im Allgemeinen durch die Bezugsziffern 101 bzw. 102 gekennzeichnet
werden, von denen jeder einer der Farben in der Farbdarstellung
zugeordnet ist, die während
der Verarbeitung des zugeordneten Phänomens während des Renderings zu verwenden
ist. Außerdem
werden die Turbulenz- und Glanz-Kacheln 92 und 93 des
Dialogknotens 65 durch die Operator-Schnittstelle jeweils
als einzelne Schieber 103 und 104 angezeigt. Die
Schieber in den jeweiligen Sätzen
von Schiebern 101 und 102 können durch den Operator mit
einer Zeigevorrichtung, wie beispielsweise einer Maus, auf eine
herkömmliche
Art und Weise manipuliert werden, um dadurch den Phänomen-Editor 26 zu
aktivieren, um die jeweiligen Kombinationen von Farben für die jeweiligen Umgebungs-
und diffusen Farbwerte einzustellen, die durch den Dialogknoten 65 den
Shadern bereitgestellt werden, die den anderen Knoten des Phänomens 60 zugeordnet
sind (4). Außerdem
können die
den Turbulenz- und Glanz-Eingängen
zugeordnete Schieber 103 und 104 durch den Operator
manipuliert werden, um dadurch dem Phänomen-Editor 26 zu
aktivieren, die jeweiligen Turbulenz- und Glanz-Werte einzustellen,
die durch den Dialogknoten 65 mit den anderen Knoten des
Holzmaterial-Phänomens 60 zugeordneten
Shadern bereitgestellt werden.
-
In 2 werden,
nachdem der Operator mit dem Phänomen-Editor 26 die
Werte für
die verschiedenen Phänomene
und Phänomen-Instanzen,
die einer Szene zugeordnet sind, festgelegt hat, diese Werte mit
der Szene in der Szenen-Objektdatenbank 22 gespeichert.
Danach kann ein Bild einer Szene durch den Szenenbild-Erzeugungsabschnitt 21 insbesondere
durch den Szenenbild-Generator 30 zur Anzeige
durch die Operator-Schnittstelle 31 gerendert werden. Durch
den Szenenbild-Generator 30 durchgeführte Vorgänge werden im Allgemeinen in Verbindung
mit dem in 7 dargestellten Ablaufdiagramm
beschrieben. Mit Bezug auf 7 arbeitet der
Szenenbild-Generator 30 in einer Reihe von Phasen, die
eine Vorverarbeitungsphase, eine Rendering-Phase und eine Nachverarbeitungsphase
umfassen. Bei der Vorverarbeitungsphase wird der Szenenbild-Generator 30 die
Phänomene
untersuchen, die an einer Szene angebracht sind, um zu bestimmen,
ob er die Vorverarbeitungs- und/oder Nachverarbeitungsvorgänge in Verbindung
damit durchzuführen
muss (Schritt 100). Der Szenenbild-Generator 30 bestimmt dann,
ob die Vorgänge
bei Schritt 100 angaben, dass Vorverarbeitungsgänge in Verbindung mit
mindestens einem an der Szene angebrachten Phänomen erforderlich sind (Schritt 101),
und falls so, wird die Vorverarbeitungsvorgänge durchführen (Schritt 102).
Veranschaulichende Vorverarbeitungsvorgänge umfassen beispielsweise
die Erzeugung der Geometrie für
die Szene, wenn ein an der Szene angebrachtes Phänomen einen Geometrie-Shader umfasst,
um die dadurch für
die Szene definierte Geometrie zu erzeugen. Weitere veranschaulichende Vorverarbeitungsvorgänge umfassen
beispielsweise Schatten- und Photonenabbildung, mehrfache Vererbungsauflösung und
dergleichen. Nach Schritt 102 oder Schritt 101,
kann, wenn der Szenenbild-Generator 30 eine negative Bestimmung
bei diesem Schritt durchführt,
der Szenenbild-Generator weitere Vorverarbeitungsvorgänge durchführen, die
in Verbindung mit der Szenendarstel- lung vor dem Rendering erforderlich
sein können,
die nicht mit den a der Szene angebrachten Phänomenen in Beziehung stehen (Schritt 103).
-
Nach
Schritt 103 wird der Szenenbild-Generator 30 die
Rendering-Phase durchführen,
bei der er Rendering-Vorgänge
in Verbindung mit der vorverarbeiteten Szenendarstellung durchführt, um
ein gerendertes Bild zu erzeugen (Schritt 104). Bei diesem Vorgang
wird der Szenenbild-Generator 30 die in der Szenen-Objektdatenbank 22 gespeicherten
Phänomene
identifizieren, die an die verschiedenen Komponenten der Szene anzubringen
sind, wie sie durch den Geometrische-Darstellung-Generator für Entitäten 23 erzeugt
wurden, und alle primären
und optionalen Wurzelknoten der jeweiligen Phänomene an den Szenenkomponenten
anbringen, die der Art des Wurzelknotens entsprechen. Danach wird
der Szenenbild-Generator 30 das Bild rendern. Außerdem wird
der Szenenbild-Generator 30 Information
nach Bedarf erzeugen, die bei Nachverarbeitungsvorgängen während der
Nachverarbeitungsphase verwendet werden können.
-
Nach
der Rendering-Phase (Schritt 104) wird der Szenenbild-Generator 30 die
Nachverarbeitungsphase durchführen.
Bei diesem Vorgang wird der Szenenbild-Generator 30 bestimmen,
ob bei Schritt 100 durchgeführte Vorgänge angaben, dass Nachverarbeitungsvorgänge in Verbindung
mit an der Szene angebrachten Phänomenen
erforderlich sind (Schritt 105). Wenn der Szenenbild-Generator 30 eine
positive Bestimmung bei Schritt 105 durchführt, wird
er die Nachverarbeitungsvorgänge
durchführen, die
in Verbindung mit den an der Szene angebrachten Phänomenen
erforderlich sind (Schritt 106). Außerdem kann der Szenenbild-Generator 30 ebenfalls weitere
Nachverarbeitungsvorgänge
durchführen, die
nicht mit den Phänomenen
bei Schritt 106 in Beziehung stehen. Der Szenenbild-Generator 30 kann Nachverarbeitungsvorgänge in Verbindung
mit dem Manipulieren von Pixelwerten zur Farbkorrektur und einer
Filterung, um verschiedene optische Effekte bereitzustellen, durchführen. Außerdem kann
der Szenenbild-Generator 30 Nachverarbeitungsvorgänge durchführen, wenn
beispielsweise ein an der Szene angebrachtes Phänomen einen Ausgangs-Shader umfasst,
der Nachverarbeitungsvorgänge,
wie beispielsweise Tiefe eines Feldes oder Bewegungs-Unschärfeberechnung
definiert, die bei einer Ausführungsform
vollständig
in einem Ausgangs-Shader beispielsweise abhängig von der Geschwindigkeit und
Tiefeninformation, die in Verbindung mit jedem Pixelwert gespeichert
ist, in Verbindung mit dem gerenderten Bild durchgeführt werden
können.
-
Die
Erfindung stellt eine Anzahl von Vorteilen bereit. Insbesondere
liefert die Erfindung ein Computer-Graphiksystem, das Anordnungen
zum Erzeugen (siehe Phänomen-Erzeuger 24)
und Manipulieren (siehe Phänomen-Editor 26)
von Phänomenen
bereitstellt. Die so erzeugten Phänomene werden durch den Phänomen-Erzeuger 24 verarbeitet,
um sicherzustellen, dass sie konform sind und während des Renderings verarbeitet
werden können.
Da die Phänomene
erzeugt werden, bevor sie an einer Szene angebracht werden, ist
ersichtlich, dass sie durch Programmierer oder andere erzeugt werden
können, die
Fachleute bei der Entwicklung von Computerprogrammen sind, wodurch
andere, wie beispielsweise Künstler,
Zeichner oder dergleichen, von der Notwendigkeit befreit werden,
sie zu entwickeln. Phänomene
befreien ebenfalls den Künstler
von der Komplexität
des Instrumentierens der Szene mit vielen unterschiedlichen und
untereinander in Beziehung stehenden Shadern, indem sie (d.h. die
Komplexität) in
eine unabhängige
Aufgabe getrennt wird, die durch einen Expert-Benutzer des Phänomen-Erzeugers
im Voraus durchgeführt
wird. Mit den Phänomenen
wird die Instrumentation größtenteils
automatisiert. Sobald ein Phänomen
oder eine Phänomen-Instanz
erzeugt wurde, ist es/sie szenenunabhängig und kann in vielen Szenen
erneut verwendet werden, wodurch sich wiederholende Arbeit vermieden
wird.
-
Es
ist ersichtlich, dass eine Anzahl von Änderungen und Modifikationen
an der Erfindung durchgeführt
werden können.
Wie oben bemerkt ist, kann, da Phänomene getrennt von ihrer Verwendung in
Verbindung mit einer Szene erzeugt werden können, der Phänomen-Erzeuger 24,
der verwendet wird, um Phänomene
zu erzeugen und zu modifizieren, der Phänomen-Editor 26, der
verwendet wird, um Phänomen-Instanzen
zu erzeugen, in getrennten Computer-Graphiksystemen bereitgestellt werden. Beispielsweise
ist es für
ein Computer-Graphiksystem 10,
das einen Phänomen-Editor 26 umfasst, nicht
notwendig, Phänomen-Erzeuger 24 aufweisen, wenn
die Phänomen-Datenbank 25 geeignete
zuvor erzeugte Phänomene
aufweist, und der Operator Phänomene
weder erzeugen noch modifizieren muss.
-
Außerdem können, wie
oben angemerkt ist, die Werte von Parametern eines Phänomens fest sein,
oder sich basierend auf einer Funktion einer oder mehrerer Variablen
verändern.
Beispielsweise kann, wenn sich ein oder mehrere Werte jeweiliger Parameter
in Übereinstimmung
mit der Zeit als eine Variable verändern, die Phänomen-Instanz
zeitunabhängig
oder „animiert" gemacht werden.
-
Dies
wird normalerweise in Zeitintervallen diskretisiert, die durch die
Frame-Nummern einer Reihe
von Frames bezeichnet werden, die eine Animation umfassen, wobei
jedoch die Zeitabhängigkeit nichtsdestotrotz
die Form irgendeiner parameterwertigen Funktion über die Zeit annehmen kann,
wobei jede davon mit einem absoluten Zeitwert markiert werden kann,
sodass, sogar wenn ein Bild bei aufeinander folgenden Frame-Nummern
gerendert wird, die Shader nicht auf diskrete Intervalle begrenzt
sind.
-
In
diesem Zusammenhang wird der Phänomen-Editor
verwendet, um zeitabhängige
Werte für einen
oder mehrere Parameter eines Phänomens auszuwählen, wobei
eine zeitabhängige „Phänomen-Instanz" erzeugt wird. Die
Auswahl von zeitabhängigen
Werten für
die Parameter eines Phänomens
wird bei einer bestimmten Ausführungsform durch
die graphische interaktive Anbringung von dem, was hier als „Phänomen-Eigenschafts-Steuerbäume" bezeichnet wird,
an einem Phänomen
erreicht. Ein Phänomen-Eigenschaften-Steuerbaum, der
in der Form eines Baums oder DAG sein kann, wird an Phänomen-Parametern
effektiv außerhalb des
Phänomens
angebracht und mit dem Phänomen in
der Phänomen-Instanzendatenbank
gespeichert. Ein Phänomen-Eigenschafts-Steuerbaum
ist aus einem oder mehreren Knoten aufgebaut, von denen jeder ein
Shader im Sinne der Funktionen ist, wie beispielsweise Bewegungskurven,
Datennachschlagefunktion und dergleichen, die er bereitstellt. Ein
Phänomen-Eigenschafts-Steuerbaum
kann vorzugsweise flach bleiben und wird normalerweise nur sehr
wenige Verzweigungsebenen aufweisen. Ein Phänomen-Eigenschafts-Steuerbaum
kann aus lediglich einem Shader aufgebaut sein, der eine Funktion
definiert, um den Wert für
den Parameter zu berechnen, der damit zur Laufzeit zugeordnet wird.
Ein Phänomen-Eigenschafts-Steuerbaum
kann flach bleiben, weil das Phänomen
die Verkapselung der komplizierten Shader-Bäume oder DAGs ermöglicht und
fördert,
wobei eine Auswertung auf eine optimierte Art und Weise während des
Rendering-Schritts beispielsweise durch Speichern von Daten zur
Wiederverwendung erleichtert wird. Wenn es einem Operator ermöglicht wird,
derartige Phänomen-Eigenschafts-Steuerbäume anzubringen,
um die Parameter eines Phänomens
zu steuern, wird die Flexibilität des
Benutzers sehr erhöht,
um kundenspezifische Effekte basierend auf seiner Verwendung eines
vordefinierten und verpackten Phänomens
zu erreichen. Die Anzahl getrennter Phänomen-Instanzen, die auf diese
Art und Weise erzeugt werden können,
wird daher sehr erhöht,
während
die Einfachheit der Verwendung dank der Verkapselung der gesamten
Komplexität
in dem Phänomen
nicht gefährdet
wird.
-
Außerdem ist
ersichtlich, dass die äußere Erscheinung
und die Strukturen der Fenster, die in Verbindung mit dem Phänomen-Erzeuger 24 und
dem Phänomen-Editor 26 verwendet
werden, die in Verbindung mit 3 und 5 beschrieben
sind, sich von den hier beschriebenen unterscheiden können.
-
Es
ist ersichtlich, dass ein System in Übereinstimmung mit der Erfindung
vollständig
oder teilweise aus Spezialzweck-Hardware oder einem Allzweck-Computersystem oder
jeder Kombination davon aufgebaut sein kann, wobei ein beliebiges
Teil davon durch ein geeignetes Programm gesteuert werden kann.
Jedes Programm kann vollständig
oder teilweise ein Teil von dem System sein oder auf diesem auf
eine herkömmlichen
Art und Weise gespeichert sein, oder es kann vollständig oder
teilweise dem System über
ein Netzwerk oder anderen Mechanismus zum Transferieren von Information
auf eine herkömmliche
Art und Weise bereitgestellt werden. Außerdem ist ersichtlich, dass
das System mittels Information betrieben und/oder anderweitig gesteuert werden
kann, die durch einen Operator mit Operator-Eingabeelementen (nicht
gezeigt) bereitgestellt wird, die direkt mit dem System verbunden
sein können
oder die die Information an das System über ein Netzwerk oder anderen
Mechanismus zum Transferieren von Information auf eine herkömmliche
Art und Weise transferieren können.
-
Die
vorhergehende Beschreibung wurde auf eine spezifische Ausführungsform
dieser Erfindung begrenzt. Es ist jedoch offensichtlich, dass verschiedene
Variationen und Modifikationen an der Erfindung durchgeführt werden
können,
wobei einige oder alle der Vorteile der Erfindung erzielt werden.