-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft allgemein Computer-Software. Insbesondere
betrifft die vorliegende Erfindung eine Rendering-Anwendung, die dafür konfiguriert
ist, ein rendereragnostisches Verfahren zum Repräsentieren von Materialien unabhängig von
einer zugrundeliegenden Render-Maschine (rendering engine) auszuführen.
-
Beschreibung des Standes der Technik
-
Der
Begriff ”computerunterstütztes Design” (Computer
Aided Design – CAD)
bezieht sich auf eine breite Vielfalt computergestützter Werkzeuge (tools),
die von Architekten, Ingenieuren, Animatoren, Videospiele-Entwicklern
und anderen Grafik- und Designprofis verwendet werden. CAD-Anwendungen
mögen verwendet
werden, um Computermodelle oder Zeichnungen zu erstellen, die praktisch
jedes erdenkliche zweidimensionale (2D) oder dreidimensionale (3D)
Konstrukt repräsentieren.
Eine Render-Anwendung (rendering application) mag dann verwendet
werden, um ein Bild aus einem CAD-Modell zu erzeugen. Rendern (rendering)
wird ebenfalls verwendet, um den Prozess des Berechnens von Effekten
in einer Videobearbeitungsdatei zu beschreiben, um eine endgültige Videoausgabe
zu produzieren.
-
Eine
Render-Anwendung kann das Aussehen von Texturen, Farben, Oberflächenschatten, Spitzenlichtern
und Reflexionen der realen Welt simulieren, indem sie den Modellen
und Animationen das endgültige
Aussehen verleiht. Als ein Produkt gibt es Render-Anwendungen in
vielen Formen. Einige Render-Anwendungen sind in größere Modellierungs-,
Animations- und CAD-Pakete
integriert, während
es sich bei anderen um selbstständige Anwendungen
handelt. Funktional ist der Render-Prozess ein sorgfältig entwickeltes
Programm, das auf einer selektiven Mischung von Techniken basiert,
die mit Lichtphysik, visueller Wahrnehmung, Mathematik und Software-Entwicklung
zu tun haben.
-
Render-Anwendungen
können
in Hardware oder Software implementiert werden. Im Fall von Software-Rendern
ist der eigentliche Render-Prozess ein rechenaufwändiger Prozess,
der häufig
für die
Erstellung bewegter Bilder verwendet wird. In der Regel wird Software-Rendern
nicht in Echtzeit durchgeführt,
d. h. es dauert länger,
einen einzelnen Frame zu rendern, als dieser Frame angezeigt wird.
Allerdings mag softwaregestütztes
Rendern qualitativ sehr hochwertige Bilder hervorbringen, da der
Renderer nicht an Frameraten-Anforderungen gebunden ist. Im Gegensatz
dazu wird Echtzeit-Rendern, das auf Grafikarten mit 3D-Hardware-Beschleunigern
implementiert wird, häufig
in Videospielen verwendet und wird oft auf Grafikarten mit 3D-Hardware-Beschleunigern
implementiert.
-
Zu
softwarebasierten Render-Maschinen gehören unter anderem Maya, StudioMax,
Renderman, Vray und Mental Ray. Gleichermaßen mögen hochentwickelte 3D-Grafik-APIs,
wie zum Beispiel DirectX und OpenGL, verwendet werden, um hardwarebasierte
Grafik-Render-Pipelines zu steuern. Angesichts dieses Sortiments
an verfügbaren
Render-Werkzeugen, von denen jedes einzigartige Vor- und Nachteile
besitzt, wünschen
Nutzer oft, eine Render-Maschine für bestimmte Zwecke und eine andere
Render-Maschine für
andere Zwecke einzusetzen. Zum Beispiel ist Mental RayTM ein
leistungsfähiges
Raytracing-Render-Werkzeug, während RenderManTM als ein effizientes abtastzeilenbasiertes
(scan-line based) Render-Werkzeug bekannt ist. Je nach dem gewünschten
Effekt mag der Nutzer eine dieser Render-Lösung den anderen vorziehen.
-
Um
jedoch von einer Render-Maschine zu einer anderen zu wechseln, muss
der Nutzer die Schnittstelle und Konfiguration für jede Render-Maschine verstehen.
Um zum Beispiel einen gewünschten
Render-Effekt mit
Hilfe von Mental Ray zu erreichen, mag der Nutzer spezifizieren müssen, welche Dynamik-Bibliothek
zu laden ist, mag eine Mental Ray-Datei spezifizieren müssen, die
eine Schnittstelle zu einem Shader beschreibt, und mag einen Satz Parameter
spezifizieren müssen.
Das Wechseln zu einer anderen Render-Maschine mag vom Nutzer verlangen,
einen völlig
anderen Satz Bibliotheken, Dateien und Parameter zu spezifizieren,
der für
diese Render-Maschine spezifisch ist. Darüber hinaus besitzen die Nutzer
dieser Render-Werkzeuge oftmals keinen hohen Wissenstand auf dem
Gebiet der Computerprogrammierung. Zum Beispiel mag es Architekten,
Illustratoren und Ingenieuren, die mit den gewünschten Eigenschaften gerenderter
Oberflächen vertraut
sein mögen
(zum Beispiel, ob eine gestrichene Wandfläche ein glänzendes oder ein mattes Aussehen
haben soll, oder wie kiesartig ein Betonweg auszusehen hat), trotzdem
am Verständnis
der Render-Einstellungen
mangeln, die erforderlich sind, um diese Effekte mit Hilfe eines
bestimmten Typs einer Render-Maschine zu erreichen.
-
Derzeit
erlauben Versuche auf hochentwickelten Rendering-Frameworks keine Implementierung unterschiedlicher
Render-Maschinen. Zum Beispiel nutzt Autodesk® ImageStudioTM Nutzerfassaden (user facades), um das
Rendern benutzerfreundlicher zu machen. Jedoch gestattet ImageStudioTM nicht
die Implementierung mehrerer Renderer. Ebenso erlaubt es mental
Images® MetaSLTM (in Verbindung mit der Mental Mill®-Anwendung)
Nutzern, einen Shader einmal zu schreiben und dann den Shader in
einer für
das Rendern geeignete Sprache zu übersetzen. Jedoch geht die
MetaSLTM-Lösung von der Annahme aus, dass
dieselbe Implementierung für
mehrere Render-Maschinen
verwendet werden kann. Das ist in der Regel nicht der Fall. Es ist
unwahrscheinlich, dass eine Material-Implementierung, die für einen
Raytracer geschrieben wurde, in einem Abtastzeilen-Renderer oder
einem Hardware-Renderer
läuft oder
gut funktioniert. Die MetaSLTM-Lösung verlangt
auch von den Programmierern die Verwendung einer spezifischen abstrakten
Sprache anstelle der nativen Renderer-API.
-
Dementsprechend
besteht auf diesem technischen Gebiet nach wie vor Bedarf an einem
rendereragnostischen Verfahren zum Repräsentieren von Materialien,
das in mehreren Render-Maschinen implementiert ist.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Ausführungsformen
der Erfindung stellen ein rendereragnostisches Verfahren zum Repräsentieren
von Materialien unabhängig
von einer zugrundeliegenden Render-Maschine bereit. Vorteilhafterweise
mögen Materialien-Bibliotheken
um neue Materialien zum Rendern mit einer vorhandenen Render-Maschine
und -Implementierung erweitert werden. Es mögen auch neue Render-Maschinen
und -Implementierungen für
vorhandene Materialien hinzugefügt
werden. Eine Implementierung eines bestimmten Materials mag speziell
für jede
zugrundeliegende Render-Maschine angepasst werden. Zum Beispiel
mag jede Implementierung in der nativen Sprache geschrieben werden,
die einer bestimmten Render-Maschine zugeordnet ist, wodurch sowohl die
Effizienz als auch die Render-Qualität optimiert werden. Somit mag,
bei Laufzeit, anstatt das Rendern darauf zu beschränken, auf
einer vorgegebenen Render-Maschine ausgeführt zu werden, die Render-Anwendung
effizient und bequem das Rendern eine Grafikszene auf einer Mehrzahl
von Render-Maschinen oder -Implementierungen entsprechend der Nutzer-Präferenz verwalten.
-
Eine
Ausführungsform
der Erfindung enthält ein
Verfahren zum Rendern einer Grafikszene. Das Verfahren mag allgemein
ein Zugreifen auf eine Grafikszenen-Datei, die einen Satz Geometrie
enthält, und
Anzeigen eines Satzes Materialparameter, die einem ersten Material
zugeordnet sind, das in einem Satz Materialien enthalten ist, enthalten.
Jeder Materialparameter mag ein charakteristisches Merkmal des ersten
Materials spezifizieren, das in einer Render-Operation zu verwenden
ist, in der das erste Material auf Geometrie angewendet wird, die
in der Szene enthalten ist. Das Verfahren mag des Weiteren ein Empfangen
einer Auswahl eines Parameterwertes für jeden Materialparameter in
dem Satz Materialparameter, Übersetzen
der Parameterwerte für
das erste Material in ein Format, das einer ersten Render-Implementierung zugeordnet
ist, und Rendern der Geometrie, auf die das erste Material angewendet
wird, unter Verwendung der ersten Render-Implementierung und der übersetzten
Parameterwerte enthalten.
-
Eine
weitere Ausführungsform
der Erfindung enthält
ein Verfahren zum Erstellen von Materialien, die auf Geometrie innerhalb
einer Grafikszene angewendet werden mögen. Das Verfahren mag allgemein
das Laden einer Materialien-Bibliothek enthalten, die eine Definition
für jedes
einer Mehrzahl von Materialien enthält. Die Definition für jedes
Material mag einen Satz streng typisierter Parameter enthalten,
die kennzeichnende Merkmale eines Materials darstellen, und eine
oder mehrere Render-Implementierungen spezifizieren, die dem Material
zugeordnet sind. Das Verfahren mag des Weiteren ein Empfangen einer
Auswahl eines ersten Materials aus der Materialien-Bibliothek, Empfangen
einer Modifikation der Definition des ersten Materials, und Speichern
des modifizierten ersten Materials in der Materialien-Bibliothek, zusätzlich zu
dem ersten Material, enthalten.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
ein Blockschaubild, das Komponenten einer Render-Anwendung veranschaulicht, die dafür konfiguriert
ist, ein rendereragnostisches Verfahren zum Repräsentieren von Materialien unabhängig von
einer zugrundeliegenden Render-Maschine gemäß einer Ausführungsform
der Erfindung auszuführen.
-
2 ist
eine Konzeptzeichnung, die Komponenten eines Systems, das zum Rendern
einer Grafikszene unter Verwendung eines universellen Render-Frameworks
konfiguriert ist, gemäß einer Ausführungsform
der Erfindung veranschaulicht.
-
3 ist
ein Flussdiagramm, das ein renderagnostisches Verfahren zum Repräsentieren
von Materialien unabhängig
von einer zugrundeliegenden Render-Maschine gemäß einer Ausführungsform
der Erfindung veranschaulicht.
-
4 ist
ein Blockschaubild, das mehrere Implementierungen einer Render-Maschine
gemäß einer
Ausführungsform
der Erfindung veranschaulicht.
-
5 ist
ein Flussdiagramm, das ein Verfahren zum Erstellen neuer Materialien,
die von einer vorhandenen Render-Maschine verwendet werden, gemäß einer
Ausführungsform
der Erfindung veranschaulicht.
-
6A–6C veranschaulichen
ein Verfahren zum Erstellen neuer Materialien zur Verwendung mit
einer vorhandenen Render-Maschine gemäß einer Ausführungsform
der Erfindung.
-
7 ist
ein Screenshot, der eine Benutzerschnittstelle für ein Ziegelmaterial (brick
material) gemäß einer
Ausführungsform
der Erfindung veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN
AUSFÜHRUNGSFORMEN
-
1 ist
ein Blockschaubild, das Komponenten einer Render-Anwendung veranschaulicht, die dafür konfiguriert
ist, ein rendereragnostisches Verfahren zum Repräsentieren von Materialien unabhängig von
einer zugrundeliegenden Render-Maschine auszuführen, gemäß einer Ausführungsform der
Erfindung. Die in 1 veranschaulichten Komponenten
mögen Computer-Software-Anwendungen enthalten,
die auf vorhandenen Computersystemen, zum Beispiel Desktop-Computern,
Server-Computern,
Laptop-Computern, Tablet-Computern, Videospielekonsolen und dergleichen,
ablaufen. Die im vorliegenden Text beschriebenen Software-Anwendungen sind
jedoch nicht auf irgendein bestimmtes Computersystem beschränkt und
mögen angepasst werden,
um Vorteile aus neuen Computersystemen zu ziehen, die auf den Markt
kommen.
-
Außerdem mögen die
in 1 veranschaulichten Komponenten als Software-Anwendungen implementiert
werden, die auf einem Einzelcomputer-System oder auf verteilten Systemen,
die über Computer-Netzwerke
wie zum Beispiel Nahbereichsnetze oder große Fernbereichsnetzwerke wie
zum Beispiel die Internet kommunizieren, ablaufen. Zum Beispiel
mag eine grafische Benutzerschnittstelle 110 ein Softwareprogramm
enthalten, das auf einem Client-Computersystem an einem physischen
Standort, das mit der Render-Anwendung 105 an
einem anderen physischen Standort kommuniziert, abläuft. Des
Weiteren mögen
in einer Ausführungsform
die Render-Anwendung 105 und
die grafische Benutzerschnittstelle 110 als ein Anwendungsprogramm
(oder -programme) ausgeführt
sein, die auf computerlesbaren Medien gespeichert sind, wie zum
Beispiel einer CD-ROM, einer DVD-ROM, einem Flashspeichermodul oder
einem anderen physischen Speichermedium.
-
Wie
gezeigt, enthält
ein System 100, ohne darauf beschränkt zu sein, eine Render-Anwendung 105,
eine grafische Benutzerschnittstelle 110, eine Szenendatei 120,
Benutzereingabevorrichtungen 130 und eine Anzeigevorrichtung 115.
Der Fachmann erkennt jedoch, dass die in 1 gezeigten Komponenten
vereinfacht sind, um Aspekte der vorliegende Erfindung hervorzuheben,
und dass eine typische Render-Anwendung 105 und GUI-Schnittstelle 110 eine
breite Vielfalt zusätzlicher
Werkzeuge und Features enthalten mögen, die zum Erstellen und Verwalten
eines Designs oder einer Zeichnung verwendet werden. Die Render-Anwendung 105 mag dafür konfiguriert
sein, es Nutzern zu erlauben, die mit der GUI-Schnittstelle 110 interagieren,
eine grafische Szene zu erstellen. Dementsprechend mögen die
Render-Anwendung 105 und die GUI-Schnittstelle 110 programmierte
Routinen oder Anweisungen enthalten, die es Nutzern erlauben, die
Szenendatei 120 zu erzeugen, zu bearbeiten, zu laden und
zu speichern. Zu Benutzereingabegeräten 130 mögen ein
Mauszeigegerät,
eine Tastatur, ein Joystick oder ein Videospiele-Controller gehören, und
das Anzeigegerät 115 mag
eine Kathodenstrahlröhre
oder eine LCD-Anzeige sein.
-
Wie
ebenfalls gezeigt, enthält
die Szenendatei 120 Geometrie 122 und Materialien 124.
Die Geometrie 122 definiert die 3D-Struktur oder -Gestalt
von Elementen, die in einer Szene enthalten sind. Zum Beispiel die
Gestalt eines Gebäudes
oder eines Menschen. Typischerweise wird die Geometrie 122 als eine
Zusammenstellung von Polygonen repräsentiert, die in einem dreidimensionalen
Raum definiert sind. Render-Anwendungen 105 verleihen Nutzern bekanntlich
häufig
die Fähigkeit,
Materialien 124 auf die Geometrie 122 in der Szenendatei 120 anzuwenden.
Ein Material 124 ist ein Satz wiederverwendbarer Aussehensattribute.
Das Verwenden vordefinierter Materialien 124 aus einer
Bibliothek von Materialien erlaubt es Nutzern, rasch die Anmutung
(look and feel) einer Szene zu verändern. Beispiele von Materialien 124 beinhalten
Beton, Ziegel, Wandanstrich oder sonstige Texturen, Farben oder
Erscheinungsbilder. Materialien 124 sind nicht auf 2D beschränkt und
mögen auch
volumetrisch sein, wie zum Beispiel Rauschen und Nebel.
-
Die
grafische Benutzerschnittstelle 110 stellt Werkzeuge bereit,
die dafür
verwendet werden, die Szenendatei 120 mittels der Render-Anwendung 105 zu
manipulieren. Wie in 1 gezeigt, mag die grafische
Benutzerschnittstelle 110 Materialparameter-Bearbeitungswerkzeuge 112 und
Rendermaschinen-Auswahlwerkzeuge 114 enthalten. Der Fachmann
erkennt jedoch, dass die Werkzeuge der in 1 gezeigten
GUI-Schnittstelle 110 vereinfacht sind, um Aspekte der
vorliegenden Erfindung hervorzuheben, und dass eine typische Render-Anwendung 105 und
GUI-Schnittstelle 110 eine breite Vielfalt an zusätzlichen
Werkzeugen und Feature enthalten mögen, die zum Erstellen und
Manipulieren der Szenendatei 120 verwendet werden.
-
Die
Materialparameter-Bearbeitungswerkzeuge 112 mögen grafische
Benutzerschnittstellenelemente bereitstellen, die es einem Nutzer
erlauben, die Materialien 124 zu bearbeiten, die auf eine
bestimmte Zusammenstellung von Geometrie 122 innerhalb
einer Szene angewendet werden. Die Materialparameter-Bearbeitungswerkzeuge 112 mögen es dem
Nutzer erlauben, physische, Anzeige- und Meta-Eigenschaften des
Materials 124, die im vorliegenden Text allgemein als Materialparameter
bezeichnet werden, zu definieren und zu modifizieren, das auf die
konkrete Geometrie 122 in der Szenendatei 120 angewendet
werden soll. Zu Beispielen von Materialparametern gehören Liniendicke
(stroke weight), Überschreitung (overshoot),
Beabstandung, Papiertyp, Härte,
Dunkelheit, Winkel, Bogen, Transparenz, Textur, Farbe, Farbvariation
oder irgendwelche andere Parameter, die dafür verwendet werden, die physischen,
Anzeige- und Meta-Eigenschaften eines
Materials 124 zu steuern, das auf die Geometrie 122 innerhalb
einer Szene angewendet wird. Auf der Basis des dargestellten Materials 124 mögen verschiedene
Materialparameter implementiert werden. Zum Beispiel könnte ein
Material 124, das Ziegelsteine darstellt, Höhen-, Breiten-
und Mörteldickenparameter
enthalten, wohingegen ein Material 124, das Wandanstrich
darstellt, Farb- und Oberflächenbeschaffenheitsparameter
enthalten könnte.
-
In
einer Ausführungsform
mögen die
Rendermaschinen-Auswahlwerkzeuge 114 grafische
Benutzerschnittstellenelemente bereitstellen, die es einem Nutzer
erlauben, eine bestimmte Rendermaschinenimplementierung zum Rendern
von Abschnitten der Geometrie 122 aus der Szenendatei 120 auszuwählen. Jede
Implementierung implementiert ein bestimmtes Material für eine bestimmte
Render-Maschine. Des Weiteren mag eine Implementierung, die für eine bestimmte
Render-Maschine
geschrieben wurde, unter Verwendung einer nativen Sprache geschrieben
werden, die durch diese Render-Maschine verwendet wird, ohne die
Benutzerschnittstelle zu modifizieren, die dem Nutzer für dieses
Material präsentiert
wird. Nehmen wir zum Beispiel an, dass die Render-Anwendung 105 mit
drei Render-Maschinen konfiguriert ist, von denen jede in der Lage
ist, ein bestimmtes Material zu rendern. Jede Render-Maschine könnte zwei
Implementierungen zum Rendern des Materials bereitstellen: eine
erste Implementierung mit hoher Geschwindigkeit und geringer Qualität und eine
zweite Implementierung mit geringer Geschwindigkeit und hoher Qualität. In diesem
Beispiel gibt es insgesamt sechs Implementierungen, die in der Lage
sind, das bestimmte Material zu rendern. In einem solchen Fall erlauben
es die Rendermaschinen-Auswahlwerkzeuge 114 dem Nutzer
auszuwählen,
welche Implementierung zum Rendern eines bestimmten Bildes aus einer
Liste von verfügbaren
Implementierungen zu verwenden ist.
-
In
einer weiteren Ausführungsform
mögen die
Rendermaschinen-Auswahlwerkzeuge 114 automatisch
auf der Basis eines vom Nutzer ausgewählten Kontexts, vom Nutzer
ausgewählter
Präferenzen oder
eines vom Nutzer ausgewählten
Profils auswählen,
welche Render-Implementierung zum Rendern zu verwenden ist. Zum
Beispiel mag ein Nutzer zwischen Rendern ”von hoher Qualität” und Rendern ”von geringer
Qualität” auswählen, und
die Render-Anwendung 105 bestimmt, welche Render-Implementierung
zum Rendern der Szene die geeignetste ist.
-
2 ist
eine Konzeptzeichnung, die Komponenten eines Systems, das zum Rendern
einer Grafikszene unter Verwendung eines universellen Render-Frameworks 200 konfiguriert
ist, gemäß einer
Ausführungsform
der Erfindung veranschaulicht. Wie gezeigt, mag eine Grafik-Anwendung
mit einem Render-Framework 200 konfiguriert sein, welches vier
Komponenten aufweist,: eine Zusammenstellung von Benutzerschnittstellenobjekten 202, 252,
eine Zusammenstellung von Materialobjekten 204, 254, eine
Zusammenstellung von Implementierungsobjekten 206, 256 für jedes
Materialobjekt 204, 254 und eine Zusammenstellung
von zugrundeliegenden (underlying) Rendermaschinenimplementierungen 208. Die
zugrundeliegenden Rendermaschinenimplementierungen 208 mögen softwaregestützt (zum
Beispiel Mental Ray und RenderMan) sowie Grafik-APIs (zum Beispiel
OpenGL und DirectX) sein, die zum Steuern verschiedener Hardware-Render-Pipelines
verwendet werden.
-
Jedes
Materialobjekt 204, 254 stellt eine andere Materialklasse
dar, die in einer Szene gerendert werden mag. Zu gängigen Beispielen
von Materialien, die durch Materialobjekte 204, 254 dargestellt werden,
gehören
ein Material einer gestrichenen Wand, Betonmaterialien, Metallmaterialien,
Glasmaterialien und Wassermaterialien usw. In einer Ausführungsform
mag jedes Materialobjekt 204, 254 streng typisierte
Parameter enthalten, welche die relevanten kennzeichnenden Merkmale
eines bestimmten Materials repräsentieren.
Zum Beispiel könnte
ein Materialobjekt 204, 254, das eine gestrichene
Wandoberfläche
darstellt, Parameter für
Farbe, Auftrags- oder Bürstentyp
und Oberflächenbeschaffenheit
(finish) enthalten. Durch starkes Typisieren der Parameter auf die
kennzeichnenden Merkmale des Materialobjekts können Nutzer mühelos die
kennzeichnenden Merkmale identifizieren, die beim Rendern eines
bestimmten Materialtyps zu verwenden sind, ohne die Besonderheiten
einer zugrundeliegenden Render-Maschine verstehen zu müssen oder
zu verstehen, wie die zugrundeliegenden Render-Maschinen zu konfigurieren sind, um
ein gewünschtes
Aussehen für
Oberflächen
in einem gerenderten Bild hervorzubringen.
-
Durch
starkes Typisieren der Parameter auf die kennzeichnenden Merkmale
des Materialobjekts 204, 254 mögen außerdem die Benutzerschnittstellenobjekte 202, 252 dem
Nutzer die entsprechenden Benutzerschnittstellenkonstrukte anbieten,
und zwar unabhängig
von dem zugrundeliegenden Implementierungsobjekt 206 oder
den zugrundeliegenden Rendermaschinenimplementierungen. Zum Beispiel – unter
Fortführung
des Beispiels eines Materialobjekts, das eine gestrichene Wandoberfläche darstellt – mag das
Benutzerschnittstellenobjekt 202 dem Nutzer einen Farbtypparameter
unter Verwendung von Schnittstellenelementen anbieten, die es einem Nutzer
erlauben, einen RGB-Farbwert, eine Codeverweis zu einem Herstellerkatalog
oder sogar gesampelte Spektralwerte zu spezifizieren. Gleichermaßen mögen die
Benutzerschnittstellenobjekte 202, 252 dem Nutzer
Dropdown-Listen für
die Anwendungstyp- und Oberflächenbeschaffenheitsparameter
anbieten. Diese Dropdown-Listen könnten Werte für eine gestrichene
Oberfläche
anbieten, mit denen ein Architekt oder Designer vertraut ist, wie zum
Beispiel mit der Farbrolle aufgetragen, aufgesprüht, mit dem Pinsel aufgetragen,
matt, Hochglanz, Seidenglanz usw. Durch Entkoppeln der Benutzerschnittstelle
von dem Material ermöglicht
es das Render-Framework verschiedenen Anwendungen, die Benutzerschnittstelle
an die Fertigkeiten des Nutzers anzupassen. Zum Beispiel wird ein
typischer Nutzer von Autodesk® Revit® es
vorziehen, Farben aus einem Katalog einzugeben, während ein
Nutzer von Autodesk® 3ds Max® es
vorziehen mag, RGB-Werte einzugeben.
-
Die
Implementierungsobjekte 206, 256 bilden eine Schnittstelle
zwischen einem bestimmten Material 204, 254 und
einer bestimmten Render-Maschine 208.
Allgemein sind die Implementierungsobjekte 206, 256 dafür konfiguriert,
Werte für
die streng typisierten Parameter zu empfangen und diese Werte auch
in eine geeignete Form für
eine der Rendermaschinenimplementierungen zu übersetzen, um einen gewünschten
Render-Effekt zu erreichen. Die Übersetzung
mag ein einfaches Hindurchlassen sein, wie zum Beispiel im Fall
des Durchlassens von RGB-Farbwerten,
aber es kann auch ein Mappen von einem Wert auf einen anderen sein.
Des Weiteren mag das zugrundeliegende Implementierungsobjekt 206, 256,
je nach dem gewünschten
Render-Effekt, mehrere Parameter aus einem einzelnen Materialparameter
erzeugen oder mag Bibliotheken, Dateien, Shader-Programme, Texturen,
Render-Parameter oder irgendwelche andere Werte identifizieren,
die durch eine bestimmten Render-Maschine verwendet werden, um einen
gewünschten
Effekt zu erreichen. Durch Entkoppeln der Render-Maschine 208 von
den Materialien 204, 254 mag der universelle Render-Rahmen
auf einfache Weise um neue Render-Maschinen 208 erweitert
werden, indem die entsprechenden Implementierungsobjekte 206, 256 hinzugefügt werden,
um es einer neuen Render-Maschine 208 zu gestatten, vorhandene
Materialien 204, 254 zu rendern, die dem Nutzer über die
Benutzerobjektschnittstelle 202, 252 angeboten
werden. Des Weiteren ist das universelle Render-Framework auch dafür ausgelegt,
dass er ohne Weiteres um neue Materialien für vorhandene Render-Maschinen
erweitert werden kann, wie ausführlicher
in den 5 und 6A–6C beschrieben
ist.
-
3 ist
ein Flussdiagramm, das ein renderagnostisches Verfahren zum Repräsentieren
von Materialien unabhängig
von einer zugrundeliegenden Render-Maschine gemäß einer Ausführungsform
der Erfindung veranschaulicht. Der Fachmann versteht, dass, obgleich
das Verfahren in Verbindung mit den Systemen der 1 und 2 beschrieben wird,
jedes beliebige System, das dafür
konfiguriert ist, die Schritte des in 3 veranschaulichten
Verfahrens, in irgendeiner Reihenfolge, auszuführen, innerhalb des Geltungsbereichs
der vorliegenden Erfindung liegt. Wie gezeigt, beginnt das Verfahren 300 bei
Schritt 302, wo die Grafik-Anwendung eine Grafikszenen-Datei
lädt, die
Geometrie und Materialien, die der Geometrie zugeordnet sind, enthält. In einer Ausführungsform
ist jedes Objekt in einer Grafikszene aus einem oder mehreren Stücken Geometrie
zusammengesetzt, zum Beispiel einer Zusammenstellung von Dreiecken
oder Polygonen. Jedem Stück Geometrie
mag auch ein Material zugeordnet sein, das zum Rendern dieses Stücks Geometrie
zu verwenden ist.
-
Bei
Schritt 304 zeigt die Render-Anwendung editierbare Materialparameter
für ein
erstes Material an. Wie oben besprochen, mag jedes Material unterschiedliche
editierbare Parameter aufweisen, basierend auf den kennzeichnenden
Merkmalen des Materials.
-
Bei
Schritt 306 erhält
die Render-Anwendung Nutzereingaben von Materialparameterwerten für das erste
Material. Die Materialparameterwerte mögen numerisch, aus einem Dropdown-Menü ausgewählt oder
auf sonstige Weise eingegeben werden. Des Weiteren mögen in einer
Ausführungsform die
Materialparameterwerte auf standardmäßige Vorgabewerte für ein bestimmtes
Material voreingestellt sein und dann durch den Nutzer modifiziert
werden, um den gewünschten
Effekt zu erreichen.
-
Bei
Schritt 308 wählt
die Render-Anwendung eine Rendermaschinenimplementierung aus, die
mit dem ersten Material und den bei Schritt 306 übermittelten
Materialparameterwerten kompatibel ist. Wie oben beschrieben, mögen mehrere
Render-Maschinen und mehrere Render-Implementierungen für jede Render-Maschine zum
Rendern des ersten Materials verfügbar sein. In einer Ausführungsform
mag der Nutzer die zu verwendende Implementierung und Render-Maschine
auf der Grundlage dessen auswählen,
welche Implementierungen des ersten Materials für einen Satz verfügbarer Render-Maschinen verfügbar sind.
Alternativ mag die Render-Anwendung dafür konfiguriert sein, eine standardmäßig voreingestellte Auswahl
(oder Hierarchie von Auswahlen) zu verwenden, um auszuwählen, welche
Implementierung zum Rendern des ersten Materials zu verwenden ist.
Weiterhin alternativ mag die Render-Anwendung auf der Basis eines
vom Nutzer ausgewählten
Kontexts ausgewählt
werden. Zum Beispiel mag der Nutzer Rendern ”von hoher Qualität” oder Rendern ”von geringer
Qualität” auswählen, und die
Render-Anwendung bestimmt die entsprechende Render-Implementierung,
die beim Rendern zu verwenden ist.
-
In
einer weiteren Ausführungsform
mag die Render-Anwendung für
jedes zu rendernde Material eine unterschiedliche Render-Implementierung
auswählen.
Auf der Basis des Kontexts, in dem der Nutzer rendert, mag die Render-Anwendung
eine entsprechende Render-Maschine und -Implementierung auswählen. Wenn
zum Beispiel eine interaktive Anwendung gerendert wird und in eine
interaktive Ansicht hinein gerendert wird, so mag die Render-Anwendung
automatisch die schnellste Render-Implementierung mit der geringsten
Qualität
auswählen. Gleichermaßen mag,
wenn offline gerendert wird, die Render-Anwendung die Implementierung
mit der höchsten
Qualität
auswählen,
weil die Render-Zeit ein weniger bedeutender Faktor ist.
-
Bei
Schritt 310 übersetzt
die Render-Anwendung die Materialparameterwerte in ein Format, das zur
Verwendung mit der bei Schritt 308 ausgewählten Render-Implementierung
benötigt
wird. Zum Beispiel mögen
die in 2 gezeigten Implementierungsobjekte 206, 256 eine Übersetzungstabelle
verwenden, die von den streng typisierten Materialparameterwerten
in die entsprechenden Werte hinein abbildet, die durch die bei Schritt 308 ausgewählte Render-Implementierung
verwendet werden. Bei Schritt 312 rendert die Render-Anwendung
die Grafikszenen-Datei unter Verwendung der ausgewählten Render-Maschine.
Wie oben beschrieben, mag jedes Material, das für Abschnitte einer Szene spezifiziert
wurde, unter Verwendung einer anderen Render-Implementierung gerendert
werden.
-
4 ist
ein Blockschaubild, das mehrere Render-Implementierungen einer einzelnen Render-Maschine
gemäß einer
Ausführungsform
der Erfindung veranschaulicht. Anschaulich enthält die Render-Maschine 400 erste
Render-Implementierung 402 und eine zweite Render-Implementierung 404.
Wie gezeigt, stellt die erste Render-Implementierung 402 eine Render-Implementierung
von geringer Qualität
und hoher Geschwindigkeit für
ein bestimmtes Material dar. Diese Implementierung mag zweckmäßig sein,
wenn in Echtzeit gerendert wird, zum Beispiel um dem Nutzer einen
raschen Eindruck vom Aussehen eines bestimmten Materials innerhalb einer
Szene zu verschaffen. Die zweite Render-Implementierung 404 mag
eine Render-Implementierung von hoher Qualität und geringer Geschwindigkeit sein.
Diese Implementierung mag zweckmäßig sein, wenn
eine endgültige
Version einer Szene gerendert wird, wodurch Ergebnisse mit höherer Auflösung erhalten
werden.
-
5 ist
ein Flussdiagramm, das ein Verfahren 500 zum Erstellen
neuer Materialien zur Verwendung mit einer vorhandenen Render-Maschine
gemäß einer
Ausführungsform
der Erfindung veranschaulicht. Der Fachmann versteht, dass, obgleich das
Verfahren in Verbindung mit den Systemen der 1 und 2 beschrieben
wird, jedes beliebige System, das dafür konfiguriert ist, die Schritte
des in 5 veranschaulichten Verfahrens, in irgendeiner Reihenfolge,
auszuführen,
innerhalb des Geltungsbereichs der vorliegenden Erfindung liegt.
-
Bei
Schritt 502 lädt
die Render-Anwendung eine Materialien-Bibliothek. Die Materialien-Bibliothek
mag eine Mehrzahl von Materialien enthalten, die unter Verwendung
einer bestimmten Render-Implementierung zu rendern sind. Zum Beispiel
mag die Materialien-Bibliothek Materialien zum Rendern von Ziegelsteinen,
Beton, Sand, Granit und Kalkstein enthalten. Des Weiteren mag jedes
Material einer oder mehreren Implementierungen zugeordnet sein,
die dafür
verwendet werden, dieses Material auf einer bestimmten Render-Maschine
zu rendern. Wie dargelegt, mag ein Material mehrere Implementierungen haben,
um verschiedene Stufen der Render-Qualität zu erhalten oder um unterschiedliche
Versionen einer Implementierung zu unterstützen. Dies mag nützlich sein,
wenn unterschiedliche Techniken von der zugrundeliegenden Render-Maschine verwendet
werden, um das gleiche Material zu rendern. In einem solchen Fall
mag jede Implementierung die streng typisierten Materialparameter
unterschiedlich mappen, so wie es für die unterschiedlichen zugrundeliegenden
Render-Techniken zweckmäßig ist.
-
Bei
Schritt 504 wird ein erstes Material aus der Bibliothek
modifiziert. Die Modifikation mag in Reaktion auf Nutzereingaben
erfolgen. Zum Beispiel mag die Modifikation das Variieren der Parameterwerte
des ersten Materials, das Entfernen eines Parameters von dem ersten
Material oder das Hinzufügen
eines Parameters zu dem ersten Material enthalten. Die unten beschriebenen 6A–6C veranschaulichen
zusätzliche
Beispiele des Modifizierens eines Materials. Bei Schritt 506 speichert
die Render-Anwendung das modifizierte erste Material als ein zweites
Material in der Materialien-Bibliothek. Auf
diese Weise wird ein neues Material zu der Materialien-Bibliothek für die konkrete
Render-Implementierung hinzugefügt.
-
Die 6A–6C veranschaulichen
ein Verfahren zum Erstellen neuer Materialien zur Verwendung mit
einer vorhandenen Render-Maschine gemäß einer Ausführungsform
der Erfindung. Die in den 6A, 6B bzw. 6C gezeigten
Verfahrensschritte 602, 604 und 606 veranschaulichen
andere Beispiele von Modifikationen vorhandener Materialien (Schritt 504 von 5).
Die in den 6A–6C beschriebenen
Modifikationen sind jeweils für
einen Nutzer einfach genug, der über
keine Programmiererfahrung verfügt.
In 6A werden bei Schritt 602 die Parameterwerte
des ersten Materials modifiziert. Die Modifikation mag in Reaktion
auf Nutzereingaben erfolgen. Zum Beispiel mag ein erstes Material
rote Wandfarbe mit hochglänzender Oberfläche sein,
die so modifiziert wird, dass sie eine rotorange Farbe und eine
matte Oberflächenbeschaffenheit
aufweist. Das modifizierte erste Material mag dann als ein zweites
Material in Schritt 506 gespeichert werden. In dem Wandfarbenbeispiel
kann das rotorange, matte Material dann wieder zurück in die
Bibliothek gespeichert werden.
-
In 6B wird
bei Schritt 604 ein Materialparameter von dem ersten Material
entfernt. Das Entfernen mag in Reaktion auf Nutzereingaben erfolgen. Das
modifizierte erste Material mag dann als ein zweites Material in
Schritt 506 gespeichert werden. Zum Beispiel mag ein erstes
Material grüne
Wandfarbe mit hochglänzender
Oberfläche
sein, das so modifiziert wird, dass der ”Oberflächen”-Parameter entfernt wird.
Die bei Schritt 604 ausgeführte Modifikation erzeugt praktisch
ein neues Material, wo irgendein Materialparameter nicht mehr geändert werden
kann. Das Entfernen des Materialparameters aus den durch den Nutzer
bearbeitbaren Parametern bewirkt, dass dieser Materialparameter
ungeachtet sonstiger Modifikationen, die an den anderen Materialparametern
vorgenommen werden, konstant ist. Daher bleiben, in dem obigen Beispiel,
wo der ”Oberflächen”-Parameter
entfernt wurde, die anderen Parameter bearbeitbar, aber die Oberflächenbeschaffenheit
ist konstant auf ”Hochglanz” gesetzt.
-
In 6C wird
bei Schritt 606 ein erstes Material mit einem anderen Material
kombiniert, um ein modifiziertes erstes Material zu erzeugen. Die
Kombination mag in Reaktion auf Nutzereingaben erfolgen. Das modifizierte
erste Material mag dann als ein zweites Material in Schritt 506 gespeichert
werden. Die in 6C beschriebene Modifikation
erzeugt ein neues Material, das die Parameter und kennzeichnenden
Merkmale der zwei kombinierten Materialien kombiniert. Zum Beispiel
mag das erste Material ein Wandfarbenmaterial sein, und das zweite
Material mag ein Bildmaterial sein, das ein Bild über eine Oberfläche hinweg
kachelt. Wenn die zwei Materialien kombiniert werden, so bildet
das resultierende Material ein Wandfarbenmaterial, das alle typischen Wandfarbenparameter
aufweist, die, wenn sie auf eine Oberfläche angewendet werden, als
eine Wandfarbe gerendert werden mögen, die das Bild des zweiten
Materials kachelt.
-
In
einer (nicht gezeigten) weiteren Ausführungsform mag ein Nutzer ein
völlig
neues Materialobjekt erstellen. Zum Beispiel mag ein Nutzer eine prozedurale
Textur unter Verwendung einer Programmiersprache, zum Beispiel C++
oder einer high Level Shading-Sprache (zum Beispiel HLSL), schreiben
und den Code kompilieren, um ein völlig neues Material zu erstellen.
In einem solchen Fall mag der Nutzer auch ein entsprechendes Implementierungsobjekt schreiben,
welches das neue Materialobjekt und die neuen Eingabeparameter auf
Parameter mappt, die für
eine oder mehrere zugrundeliegende Render-Maschinen geeignet sind. Das neue Materialienobjekt
mag dann einer Materialien-Bibliothek hinzugefügt werden. Das nächste Mal,
wenn die Render-Anwendung
geladen wird, ist das neue Material zur Verwendung in Render-Operationen verfügbar.
-
Vorteilhafterweise
erlaubt es das in den 5 und 6A–6C beschriebene
Verfahren Nutzern, unterschiedliche Materialien durch Bereitstellen
von Konstrukten der obersten Ebene zu erstellen. Des Weiteren mögen Nutzer
neue Materialien aus jenen Konstrukten erstellen und sie verschiedenen
Render-Implementierungen zuordnen. Auf diese Weise mögen Nutzer
die Render-Anwendung mittels Erstellens neuer Materialien für eine vorhandene
Render-Implementierung erweitern. Darüber hinaus mögen Nutzer
die Render-Anwendung um neue Render-Implementierungen und -Maschinen
für ein
vorhandenes Material erweitern. Somit erlaubt es das Render-Framework,
jede Render-Maschine separat und zu unterschiedlichen Zeitpunkten
zu installieren.
-
7 ist
ein Screenshot, der eine beispielhafte Benutzerschnittstelle 700 für ein Ziegelmaterial gemäß einer
Ausführungsform
der Erfindung veranschaulicht. In diesem Beispiel zeigt die Benutzerschnittstelle 700 drei
Kategorien an: eine Ziegelstein-Kategorie 702, eine Mörtel-Kategorie 704 und eine
Anordnungs-Kategorie 706. Erläuternd stellt die Ziegelstein-Kategorie 702 bearbeitbare
Materialparameter von Farbe, Farbvariation, Verkleidung (facing), Ziegelsteinlänge und
Ziegelsteinhöhe
bereit. Die Mörtel-Kategorie 704 stellt
bearbeitbare Materialparameter von Farbe und Mörteldicke bereit. Die Anordnungs-Kategorie 706 stellt
bearbeitbare Materialparameter von Ziegelsteinmuster und Schichtversatz bereit.
Der Fachmann erkennt, dass, obgleich die Ziegelmaterial-Benutzerschnittstelle 700 mit
diesen spezifischen bearbeitbaren Nutzer-Parametern beschrieben
ist, auch andere Nutzer-Parameter
innerhalb des Geltungsbereichs der vorliegenden Erfindung verwendet
werden mögen.
Allgemeiner ausgedrückt,
und wie oben beschrieben, mögen
die bearbeitbaren Materialparameter sowohl streng typisiert als
auch speziell an die Eigenschaften des tatsächlichen Materials, das durch
ein bestimmtes Materialobjekt dargestellt wird, angepasst sein.
Somit mag ein Nutzer in verschiedenen Ausführungsformen einen gewünschten
Render-Effekt durch Modifizieren der in 7 gezeigten
Materialparameter erreichen. Wie oben beschrieben, mag der Nutzer
ein neues Ziegelmaterial (d. h. ”Ziegelstein 2”) mittels
des Verfahrens der 5 und 6A–6C erzeugen.
-
Wie
beschrieben, stellen Ausführungsformen
der Erfindung ein rendereragnostisches Verfahren zum Repräsentieren
von Materialien unabhängig von
einer zugrundeliegenden Render-Maschine bereit. Vorteilhafterweise
mögen Material-Bibliotheken um
neue Materialien zum Rendern mit einer vorhandenen Render-Maschine
und -Implementierung erweitert werden. Des Weiteren mögen neue
Render-Maschinen und -Implementierungen für vorhandene Materialien hinzugefügt werden.
Somit mag, bei Laufzeit, anstatt das Rendern darauf zu beschränken, auf
einer vorgegebenen Render-Maschine ausgeführt zu werden, die Render-Anwendung
effizient und bequem das Rendern eine Grafikszene auf einer Mehrzahl
von Render-Maschinen oder -Implementierungen verwalten. Des Weiteren
mag, durch Bereitstellen eines gemeinsamen Front-End für ein bestimmtes
Material unter Verwendung eines Schnittstellenobjekts und eines
Satzes streng typisierter Parameter für dieses Material, jede beliebige
Anzahl unterschiedlicher Implementierungen für eine bestimmte Render-Maschine
(oder unterschiedliche Render-Maschinen) verwendet werden, um dieses
Material zu rendern, ohne dass ein Nutzer jede konkrete Implementierung
verstehen muss oder lernen muss, wie man jede unabhängige Render-Maschine verwendet.
Stattdessen präsentiert
das universelle Front-End einfach die verfügbaren Materialien unter Verwendung
der Parameter, die für
jedes konkrete Material repräsentativ
sind. Während
des Renderns wird die Implementierung jedes konkreten Materials verwendet,
um die streng typisierten Parameter des Materialienobjekts in eine
Form zu übersetzen,
die von einer ausgewählten
Render-Maschine benötigt wird.
-
Obgleich
das oben Dargelegte Ausführungsformen
der vorliegenden Erfindung betrifft, mögen andere und weitere Ausführungsformen
der Erfindung ersonnen werden, ohne von ihrem grundlegenden Geltungsbereich
abzuweichen. Zum Beispiel mögen
Aspekte der vorliegenden Erfindung in Hardware oder Software oder
in einer Kombination aus Hardware und Software implementiert werden.
Eine Ausführungsform
der Erfindung mag als ein Programmprodukt zur Verwendung mit einem
Computersystem implementiert werden. Das oder die Programme des
Programmprodukts definieren Funktionen der Ausführungsformen (einschließlich der
im vorliegenden Text beschriebenen Verfahren) und können auf
einer Vielzahl verschiedener computerlesbarer Speichermedien enthalten
sein. Erläuternd
gehören zu
computerlesbaren Speichermedien beispielsweise, ohne darauf beschränkt zu sein:
(i) nicht-beschreibbare Speichermedien (zum Beispiel Nurlesespeichervorrichtungen
innerhalb eines Computers, wie zum Beispiel CD-ROM-Disks, die durch
ein CD-ROM-Laufwerk gelesen werden können, Flash-Speicher, ROM-Chips
oder beliebige Arten von nicht-flüchtigen Festkörper-Halbleiterspeichern),
auf denen Informationen dauerhaft gespeichert sind; und (ii) beschreibbare
Speichermedien (zum Beispiel Floppy-Disks innerhalb eines Diskettenlaufwerks oder
ein Festplattenlaufwerk oder beliebige Arten von Festkörper-Direktzugriffs-Halbleiterspeichern), auf
denen änderbare
Informationen gespeichert sind. Solche computerlesbaren Speichermedien,
wenn sie computerlesbare Anweisungen enthalten, welche die Funktionen
der vorliegenden Erfindung anweisen, sind Ausführungsformen der vorliegenden
Erfindung. Darum wird der Geltungsbereich der vorliegenden Erfindung
durch die folgenden Ansprüche
bestimmt.