Ptex: Per-Face Texture Mapping in Theorie und Anwendung - Bachelorarbeit im Studiengang
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Ptex: Per-Face Texture Mapping in Theorie und Anwendung Bachelorarbeit im Studiengang Audiovisuelle Medien vorgelegt von Melanie Gruber am 13.08.2012 an der Hochschule der Medien Stuttgart Erstprüfer: Dr. Thomas Keppler Zweitprüfer: Jochen Bomm
Eidesstattliche Erklärung Hiermit versichere ich, Melanie Gruber, an Eides Statt, dass ich die vorliegende Bachelorarbeit mit dem Titel: „Ptex: Per-Face Texture Mapping in Theorie und Anwendung“ selbständig und ohne fremde Hilfe verfasst und keine anderen als die angegebenen Hilfsmittel benutzt habe. Die Stellen der Arbeit, die dem Wortlaut oder dem Sinn nach anderen Werken entnommen wurden, sind in jedem Fall unter Angabe der Quelle kenntlich gemacht. Die Arbeit ist noch nicht veröffentlicht oder in anderer Form als Prüfungsleistung vorgelegt worden. Ich habe die Bedeutung der eidesstattlichen Versicherung und die prüfungsrechtlichen Folgen (§26 Abs. 2 Bachelor-SPO (6 Semester)) einer unrichtigen oder unvollständigen eidesstattlichen Versicherung zur Kenntnis genommen. Stuttgart, den ____________________ ________________________________ Datum Unterschrift 2
Kurzfassung Im Rahmen dieser Bachelorarbeit wurde die 2008 von der Walt Disney Company entwickelte Methode des Per-Face Texture Mapping (Ptex) näher betrachtet. Dabei wurden bereits bestehende Verfahren zum Texture Mapping mit UV-Layouts, über volumetrische Ansätze und vorangehende Per-Face Methoden vergleichend untersucht, sowie die Gründe für die Notwendigkeit eines neuen Verfahrens bei der Produktion von Feature-Filmen innerhalb der Walt Disney Company dargestellt. Des weiteren wurden die theoretischen Hintergründe zur Funktionsweise dieser neuen Technologie dargelegt, deren Kernstück die Parametrisierung einzelner Faces eines Modells ist, wodurch keine UV-Koordinaten mehr benötigt werden. Darüber hinaus enthält die Arbeit einen praktischen Anteil in dem der veränderte Workflow über das Erstellen eines 3D-Modells und dessen Texturierung mit Ptex, mit dem bisherigen Workflow unter Verwendung von UV-Layouts verglichen wurde. Verwendet wurden dazu die Software-Pakete Autodesk 3ds Max 2013, Autodesk Mudbox 2013 und Autodesk Maya 2013. Schlagwörter: Computergrafik, Parametrisierung, Ptex, Texture Mapping, UV-Koordinaten 3
Abstract In the scope of this bachelor thesis the method of Per-Face Texture Mapping (Ptex), which was developed in 2008 by the Walt Disney Company, was observed. For that purpose the already existing principles for texture mapping with UV-layouts, volumetric approaches and preceding per-face methods were compared, and the reasons for the necessity of a new method for the production of feature films at the Walt Disney Company were explored. In addition the theoretical background of the functionality of this new technology was explained, whose centerpiece is the parametrization of indivisual faces of a model that makes UV-coordinates unnecessary. This work also includes an applied part, in which the new workflow for creating a 3D- model and texturing it with Ptex was compared to the previous workflow using UV- layouts. The software used for this project was Autodesk 3ds Max 2013, Autodesk Mudbox 2013 and Autodesk Maya 2013. Keywords: Computer Graphics, Parametrization, Ptex, Texture Mapping, UV-Coordinates 4
Inhaltsverzeichnis Eidesstattliche Erklärung..................................................................................................2 Kurzfassung.......................................................................................................................3 Abstract.............................................................................................................................4 Inhaltsverzeichnis..............................................................................................................5 1 Einleitung........................................................................................................................7 2 Entwicklung von Ptex......................................................................................................9 2.1 Die Arbeit bei der Walt Disney Company...............................................................9 2.1.1 Produktion von Feature-Filmen .....................................................................9 2.1.2 Anforderungen..............................................................................................13 2.2 Prüfung bereits bestehender Verfahren...............................................................13 2.2.1 Projection Mapping (1992)...........................................................................13 2.2.2 Pelting (2000)................................................................................................15 2.2.3 Automatische Textur Atlas Erstellung (2002)................................................19 2.2.4 Volumetrische Methoden (2002)..................................................................22 2.2.5 Vorangehende Per-Face Methoden..............................................................25 2.2.6 Vergleich........................................................................................................30 3 Die Ptex Technologie.....................................................................................................31 3.1 Überblick...............................................................................................................31 3.2 Aufgaben bei der Entwicklung..............................................................................32 3.3 Umsetzung............................................................................................................32 3.3.1 Per-Face Parametrisierung............................................................................32 3.3.2 Textur Auflösungsbestimmung und Speicherung.........................................33 3.3.3 Filterung .......................................................................................................35 3.4 Einflüsse auf den Produktions-Workflow.............................................................40 3.5 Ergebnisse.............................................................................................................41 3.6 Realtime Rendering (2011)...................................................................................42 3.7 Ptex Support verschiedener Programme..............................................................50 4 Exemplarischer Workflow mit Ptex...............................................................................51 4.1 Vorbereitung.........................................................................................................51 4.2 Erstellen des Modells............................................................................................53 4.2.1 Modeling in Autodesk 3ds Max 2013............................................................53 4.2.2 Sculpting in Autodesk Mudbox 2013............................................................59 4.3 Texturierung des Modells......................................................................................61 4.3.1 Texture Painting in Autodesk Mudbox..........................................................61 4.3.2 Möglichkeiten zur Bearbeitung in Adobe Photoshop...................................68 4.4 Rendern der Szene................................................................................................69 4.4.1 Exportieren der Ptex-Dateien aus Autodesk Mudbox 2013.........................69 4.4.2 Rendern mit Mental Ray 3.10 in Autodesk Maya 2013................................71 4.5 Vergleich Workflow mit UV-Layouts.....................................................................74 4.5.1 Erstellen des UV-Layouts in Autodesk 3ds Max 2013...................................74 4.5.2 Sculpting und Texture Painting in Autodesk Mudbox 2013..........................78 4.5.3 Rendern mit Mental Ray 3.10 in Autodesk Maya 2013................................81 5 Fazit und Ausblick.........................................................................................................83 5
Abbildungsverzeichnis....................................................................................................85 Tabellenverzeichnis.........................................................................................................87 Abkürzungsverzeichnis...................................................................................................87 Literaturverzeichnis........................................................................................................88 Anhang............................................................................................................................91 6
1 Einleitung In den Anfängen computergenerierter Bilder, wurde häufig die Kritik geäußert, dass die Oberflächen zu glatt und perfekt seien – man sah keine Textur, Kratzer oder Dreck. 1 Mit der Entwicklung des Texture Mapping wurde es möglich, dreidimensionale Modelle mit zweidimensionalen Bildern und Oberflächeneigenschaften auszustatten. Diese so genannten Texturen geben damit die Möglichkeit den Anschein der gewünschten Komplexität zu erwecken, ohne jedes Detail tatsächlich modellieren zu müssen. Daher wird das Texture Mapping nicht nur verwendet um die Farbigkeit einer Oberfläche festzulegen, sondern auch für Attribute wie Reflexionseigenschaften, Transparenz, Displacement und viele mehr. Um eine 2D-Textur auf einer 3D-Oberfläche abzubilden benötigt man eine Parametrisierung dieser Oberfläche.2 Dabei wird der Textur-Raum in den Objekt-Raum abgebildet. Anschließend wird der Objekt-Raum über eine perspektivische Projektion in den Bildschirm-Raum abgebildet (Abb. 1). Beim Standard Texture Mapping wird diese Parametrisierung durch die Textur-Koordinaten (U, V) vorgenommen, die den horizontalen und vertikalen Abstand von der linken oberen Ecke der Textur angeben. Abbildung 1: Prinzip der Parametrisierung und Projektion (Quelle: http://www.cs.cmu.edu/~ph /texsurv_figs.pdf) 1 Dies und das Folgende nach [Heck86], S.1 2 Dies und das Folgende nach [Heck86], S.2-3 7
Kurven und Oberflächen, die in der Computergrafik verwendet werden, leiten sich von verschiedenen Arten von mathematischen Gleichungen ab. 3 Eine parametrische Oberfläche wird von einer Gleichung mit zwei Variablen aufgestellt. Solche Oberflächen haben zwei für die Computergrafik besonders nützliche Eigenschaften: Zum einen kann man jeden Punkt, der auf dem Objekt liegt, direkt berechnen und zum anderen konvertiert die Gleichung ein zweidimensionales Paar an parametrischen Koordinaten in den 3D-Raum. Dadurch verfügt die Oberfläche natürlicherweise über ein 2D- Koordinatensystem, welches das Abbilden von zweidimensionalen Daten wie Texturen auf der Oberfläche vereinfacht. Ein Beispiel für solche Oberflächen sind parametrische Patches, wie z.B. NURBS-Patches (Non-Uniform Rational B-Splines). 4 Dabei sind NURBS- Kurven parametrische Kurven, die in mehrere Segmente unterteilt sind, welche wiederum von Kontrollpunkten definiert werden. Ein NURBS-Patch besteht in beiden Richtungen aus solchen Kurven, wodurch eine rechteckige Anordnung von individuellen Subpatches entsteht. Anders verhält es sich mit Polygonen, die nicht über eine parametrische Gleichung definiert werden, und Subdivision Surfaces. Letztere erzeugen aus einem groben Modell durch rekursive Verfeinerung und Glättung des Modells eine gleichmäßige Oberfläche. In einem Subdivision-Schritt wird jedes Face in viereckige Subfaces unterteilt, von denen jedes über einen lokal konsistenten parametrischen Raum verfügt. Allerdings kann für das gesamte Modell keine parametrische Stetigkeit garantiert werden. So ist es möglich, dass die Parameter von Texturen über geometrisch weiche Face-Grenzen abrupt ihre Richtung wechseln. Daher wurden verschiedene Verfahren entwickelt, um solche Oberflächen mit einer Parametrisierung auszustatten. Ein recht neuer Ansatz auf diesem Gebiet ist das Per- Face Texture Mapping (Ptex), das bei der Walt Disney Company entwickelt wurde und keine explizite Parametrisierung der Oberfläche benötigt. Diese Arbeit beschäftigt sich im ersten Teil mit der Entwicklung dieses Verfahrens und dessen Funktionsweise. Im zweiten Teil wird anhand eines praktischen Beispiels der Workflow mit diesem Verfahren beschrieben und evaluiert. Dabei geht es besonders um die Frage ob dieses neue Verfahren die UV-Layouts in Zukunft vollständig ersetzen wird. 3 Dies und das Folgende nach [AG99], S.27-28 4 Dies und das Folgende nach [AG99], S.105, 111 8
2 Entwicklung von Ptex 2.1 Die Arbeit bei der Walt Disney Company 2.1.1 Produktion von Feature-Filmen Das für die Filme der Walt Disney Company typische malerische Erscheinungsbild, kann in computeranimierten Filmen nur durch zahlreiche handgemalte Texturen erreicht werden. Prozedurale Texturen werden daher kaum verwendet. 5 Auf den meisten Modellen liegen dutzende Textur-Ebenen, die unter anderem Farbe und Textur der Oberfläche, grobes und feines Displacement, Intensität der Glanzlichter und Rauheit bestimmen (Abb. 2). Zusätzlich werden gerenderte Attribute, wie Ambient Occlusion, als Texturen gespeichert um Renderzeit zu sparen. Abbildung 2: Einige Textur-Ebenen für den T-Rex aus „Meet the Robinsons“ (Quelle: [BL08b], S.7) 5 Dies und das Folgende nach [BL08a], S.1 9
Vor dem Film „Chicken Little“ (2005) waren bei der Walt Disney Company NURBS- Patches der Modeling Standard.6 Die Probleme in der Verwendung von NURBS lagen vor allem in der Anordnung der einzelnen Patches beim Modellieren. So mussten nicht nur die Patches selbst so angeordnet werden, dass eine ebenmäßige Oberfläche entsteht, sondern auch die Texturen mussten über die Kanten der Patches hinweg kontinuierlich verlaufen.7 Die von da an verwendeten Subdivision Surfaces haben den Vorteil, dass komplexe Modelle mit der Effizienz von Polygonen und der Ebenmäßigkeit von NURBS erstellt werden können. Ein durchgehendes Mesh bietet außerdem zahlreiche Vorteile beim Rigging und der Animation eines Charakters. Allerdings wurde mit den Subdivision Surfaces das Texture Mapping komplizierter, da diese im Gegensatz zu parametrischen Oberflächen nicht über Textur-Koordinaten verfügen. Die Funktionalität der NURBS Patches im Hinterkopf wurde für den Film „Chicken Little“ zunächst der Ansatz verfolgt die Subdivision Surfaces in rechteckige Patches aufzuteilen, die dann einzeln mit den Standard Methoden gemappt werden konnten (Abb. 3 und 4).8 6 Vgl. [BL08b], S.3 7 Dies und das Folgende nach [BP00], S.1 8 Vgl. [BL08b], S.4 10
Abbildung 3: Texturiertes Modell des Abbildung 4: Aufteilung Hauptcharakters aus „Chicken Little“ desselben Modells in Patches (Quelle: http://cdn3.spong.com/ (Quelle: [BL08b], S.4) artwork/c/h/chickenlit177973l/_- Chicken-Little-Xbox-_.jpg) Der Film „Meet the Robinsons“ (2007) hob die Komplexitätsstufe weiter an (Abb. 5 und 6).9 Die Entwickler mussten feststellen, dass nicht jede Subdivision Surfaces Geometrie für das Aufteilen in Patches geeignet ist. So kam es vor, dass einzelne Patches nur ein Face groß waren, aber Texturen verwendeten, die 2000 x 2000 Pixel groß waren. Für den Film wurden insgesamt etwa sechs Millionen Textur-Dateien benötigt, mit mehr als 100 000 Texturen pro Rendervorgang. Dies führte dazu, dass die Renderzeit maßgeblich von der Anforderung der Textur-Dateien bestimmt wurde. 9 Dies und das Folgende nach [BL08b], S.5-8 11
Abbildung 5: Aufteilung des Abbildung 6: Das texturierte Modell hat Gedankenscanners aus „Meet 7637 Texturen pro Ebene the Robinsons“ in Patches (Quelle: Vgl. [BL08b], S.5) (Quelle: Vgl. [BL08b], S.6) Schätzungen während der Pre-Production von „Bolt“ (2008) zufolge, sollte der Film im Bezug auf die Texturen fünfmal komplexer werden, als „Meet the Robinsons“ (Abb. 7 und 8).10 Doch das Textur-System war bereits an seinen Grenzen. Ein neues System musste also entwickelt werden, das den Anforderungen der Walt Disney Company gerecht wurde. Abbildung 7: Reference Painting für ein 3D-Modell aus dem Film „Bolt“ (Quelle: [BL08b], S.10) 10 Dies und das Folgende nach [BL08b], S.9-10 12
Abbildung 8: Gerendertes Bild der fertigen 3D-Szene (Quelle: [BL08b], S.10) 2.1.2 Anforderungen Die neue Texture Mapping Methode sollte • Filmqualität im Bezug auf die Textur-Filterung liefern.11 • universell auf jede Art von Geometrie anwendbar sein, unabhängig von Topologie und Komplexität. • Effizienz im Bezug auf Speicherplatz, Input/Output-Last und CPU (Central Processing Unit) Auslastung bieten. • Setup-frei sein, sodass jedes Modell ohne spezielle Vorbereitungen gemappt werden kann. Gemäß diesen Anforderungen wurden zunächst die bereits bekannten Verfahren geprüft und ihre Vor- und Nachteile ermittelt. 11 Dies und das Folgende nach [B08a], S.1 13
2.2 Prüfung bereits bestehender Verfahren 2.2.1 Projection Mapping (1992) Bei dieser Methode wird eine Textur mittels Projektion auf eine Oberfläche gemappt, die dann wiederum auf einen zweidimensionalen Bildschirm projiziert wird (Abb. 9). 12 Dieser Vorgang entspricht dem projizieren eines Bildes auf eine beliebig ausgerichtete Oberfläche, die dann von einem bestimmten Blickwinkel aus betrachtet wird. Die Textur-Werte werden dabei über eine Projektion auf eine parametrische Oberfläche abgefragt (Abb. 10).13 Üblich sind dabei planare, kugelförmige, zylindrische oder perspektivische Projektionen. Zusätzlich wird eine Depth Map verwendet, um keine Textur-Werte auf verdeckte Geometrie zu projizieren. Bei dieser Methode wird eine Textur mittels Projektion auf eine Oberfläche im 3D-Raum gemappt, deren Abbild dann wiederum auf einen zweidimensionalen Bildschirm projiziert wird (Abb. 9). 14 Dieser Vorgang entspricht dem projizieren eines Bildes auf eine beliebig ausgerichtete Oberfläche, die dann von einem bestimmten Blickwinkel aus betrachtet wird. Die Textur-Werte werden dabei über eine Projektion auf eine parametrische Oberfläche abgefragt (Abb. 10).15 Üblich sind dabei planare, würfelförmige, kugelförmige, zylindrische oder perspektivische Projektionen. Zusätzlich wird eine Depth Map verwendet, um keine Textur-Werte auf verdeckte Geometrieteile zu projizieren. 12 Dies und das Folgende nach [FHKSW92], S.1 13 Dies und das Folgende nach [BL08a], S.3 14 Dies und das Folgende nach [FHKSW92], S.1 15 Dies und das Folgende nach [BL08a], S.3 14
Abbildung 9: Prinzip einer projizierten Textur (Quelle: [FHKSW92], S.1) Abbildung 10: Beispiel für planares Projection Mapping (Quelle: [BL08b], S.14) 15
Diese Methode ist sehr weit verbreitet, da sie keine zugewiesenen Textur-Koordinaten voraussetzt.16 Allerdings benötigt man bei komplexer Geometrie mehrere Projektionen um diese vollständig abzudecken. 2.2.2 Pelting (2000) Zu diesem Zeitpunkt bereits existierende Algorithmen zur Erstellung von Textur- Koordinaten für Subdivision Surfaces finden zwar oft gute lokale Lösungen, die es aber nicht ermöglichen auf deren Grundlage eine globale Textur in einer 2D-Grafiksoftware zu erstellen.17 Mit dem Pelting sollte daher ein Ansatz entwickelt werden, um einzelne Regionen eines Modells zu parametrisieren und diese dann zu einer nahtlosen Textur zusammenzufügen. Die Probleme beim Zuweisen von Textur-Koordinaten auf Subdivision Surfaces sind meist topologischer Art.18 So ist es beispielsweise unmöglich einer Kugel Textur- Koordinaten zuzuweisen, die kontinuierlich sind und gleichzeitig jedem Vertex ein einzigartiges Paar von Textur-Koordinaten zuteilen. Um dieses Problem zu umgehen wird das Modell bei dieser Methode entlang mehrerer miteinander verbundener Edges aufgeschnitten und dann flach ausgebreitet (Abb. 11). Das eigentliche Modell bleibt dabei unverändert. Für das Modell einer Kugel würde man nur einen Schnitt benötigen, um eine flache Scheibe zu erhalten. Diese Methode wird vor allem für Charaktere verwendet, deren ausgebreitete Version dann an ein Fell (Pelt) desselben Charakters erinnert, daher der Name Pelting. Allerdings eignet sich diese Methode nicht für anorganische Modelle mit harten Kanten. 16 Dies und das Folgende nach [BL08a], S.3 17 Dies und das Folgende nach [BP00], S.1 18 Dies und das Folgende nach [BP00], S.3-4 16
Abbildung 11: Der Pelting-Vorgang (a) Das anfängliche Setup für das Pelting (b) Das finale Texture Mapping nach lokaler Verfeinerung (c) Drei Zwischenschritte der Pelting-Simulation (Quelle: [BP00], S.6) Das Aufschneiden dient dabei nur dem Generieren der Textur-Koordinaten, danach werden die Koordinaten zurück auf das ursprüngliche Modell übertragen. 19 Dadurch werden jedem Vertex des ursprünglichen Modells Textur-Koordinaten zugewiesen. Allerdings bleibt an der Schnittstelle eine Kante sichtbar, da die Interpolation an dieser Stelle zwischen Koordinaten stattfindet, die auf gegenüberliegenden Seiten des aufgeschnittenen Modells liegen. 19 Dies und das Folgende nach [BP00], S.3-4 17
Im nächsten Schritt wird das Modell in mehrere sich überlappende Teile zerlegt und für jedes dieser Teilstücke werden mittels Pelting Textur-Koordinaten erzeugt. 20 Nun kann man die Textur-Koordinaten der Patches wiederum auf das Modell übertragen. Unter Verwendung dieser Koordinaten kann eine globale Blend-Funktion (Abb. 12) zwischen den Textur-Koordinaten des Pelt (grün) und der Teilstücke (rot) überblenden (gelb), sodass die Schnittstelle unsichtbar wird (Abb. 13). Abbildung 12: Die Regionen der Blend-Funktion auf dem Modell einer Ratte (Quelle: [BP00], S.5) 20 Dies und das Folgende nach [BP00], S.5 18
Abbildung 13: Texturierung einer Ratte mittels Pelting (a) Pelt-Textur (b) Kanten-Textur (c) Gerenderte Ratte nur mit der Pelt-Textur (sichtbare Kante) (d) Gerenderte Ratte mit beiden Texturen (ohne Kante) (e) Die finale Ratte (Quelle: Vgl. [BP00], S.8) 2.2.3 Automatische Textur Atlas Erstellung (2002) Ein Textur Atlas ist eine effiziente Farbrepräsentation für 3D-Paint-Programme. 21 Mit diesen Programmen kann man das Erscheinungsbild eines 3D-Modells verbessern, indem man interaktiv Details wie Farbe oder eine Bump Map hinzufügt. Das Problem dabei ist, dass die beim Malen gewünschte Präzision oft höher, als die geometrische Auflösung des Modells ist. Wenn die zu bemalende Oberfläche parametrisiert ist, kann man Texture Mapping verwenden um die Farb-Informationen zu speichern. Auch hier stellt sich somit das Problem für Modelle, die aus Polygonen oder Subdivision Surfaces bestehen, eine Parametrisierung zu finden. 21 Dies und das Folgende nach [LMPR02], S.1 19
Die Erstellung eines Textur Atlas besteht aus folgenden Teilschritten: Segmentierung (das 3D-Modell wird in Charts zerlegt), Parametrisierung (jedes Chart wird „aufgefaltet“) und Packing (die Charts werden im Textur-Raum angeordnet). 22 Andere Methoden, die auch einen Textur Atlas erstellen, haben mehrere Einschränkungen, wodurch eine große Anzahl kleiner Charts mit einfachen Rändern erzeugt wird. Die zahlreichen Unterbrechungen zwischen den Charts verursachen Artefakte und erschweren es, große Bereiche mit regelmäßigen Mustern zu texturieren. Diese neuere Methode stellt daher gewisse Anforderungen an den zu erzeugenden Textur Atlas: Die Chart-Grenzen müssen so gewählt sein, dass sie Artefakte minimieren und der Textur- Raum soll optimal ausgenutzt werden. Beim Segmentierungsalgorithmus werden die Chart-Grenzen so festgelegt, dass sie sich an stark gekrümmten Stellen des Modells befinden, da hier die Variationen im Shading größer sind und die Grenzen weniger auffallen (Abb. 14). 23 Der automatisierte Ansatz imitiert dabei das Verhalten des Benutzers, der das Modell üblicherweise in Teile zerlegt, die Zylindern ähneln (A), da diese sich parametrisieren lassen ohne große Deformierungen zu verursachen. Sind die zylindrischen Formen auf einer Seite geschlossen wird ein zusätzlicher Schnitt hinzugefügt (B). Abbildung 14: Ergebnisse des Segmentierungsalgorithmus (Quelle: [LMPR02], S.6) 22 Dies und das Folgende nach [LMPR02], S.1 23 Dies und das Folgende nach [LMPR02], S.5 20
Diese Charts werden dann mit einer speziell entwickelten Methode parametrisiert, die das Auftreten von Winkel-Verformungen und uneinheitlichen Skalierungen minimiert. 24 Außerdem können große Charts mit beliebig geformten Grenzen parametrisiert werden und das Ergebnis ist unabhängig von der Auflösung des Modells. Schließlich folgt das Packing bei dem aus allen Textur-Bereichen der einzelnen Charts der Textur Atlas erzeugt wird (Abb. 15). 25 Da für die Textur-Daten üblicherweise nur begrenzter Speicherplatz zur Verfügung steht ist es sinnvoll die Charts so anzuordnen, dass der ungenutzte Platz minimiert wird, ohne dass sich Charts überlappen. Um dies zu erreichen werden die Charts beim Packing nicht wie vorher üblich mit einer Hüllgeometrie in Form eines Rechtecks umgeben, sondern werden direkt mit ihren teilweise unregelmäßigen Rändern für die Berechnung verwendet. Trotzdem bleibt immer ein Teil der Pixel ungenutzt und auch die Tatsache, dass im Atlas Charts nebeneinander liegen, die im Modell nicht benachbart sind, kann zu Problemen bei der Filterung führen.26 Abbildung 15: Segmentierung, Textur-Atlas und texturiertes Modell eines Hasen (Quelle: [LMPR02], S.1) 24 Dies und das Folgende nach [LMPR02], S.2 25 Dies und das Folgende nach [LMPR02], S.6-7 26 Dies und das Folgende nach [BL08a], S.3 21
2.2.4 Volumetrische Methoden (2002) Die Möglichkeiten von 3D-Paint-Programmen werden von der zugrundeliegenden Parametrisierung des Modells beschränkt.27 Ein hoher Detailgrad im geometrischen Modell hat nicht zwingend einen hohen Detailgrad in der Textur zur Folge, das Gegenteil ist oft der Fall. Daher ist es in Produktionen oft ein iterativer Prozess die Parametrisierung des Modells dem benötigten Detailgrad in der Textur anzupassen und die bereits existierenden Texturen den neuen Parametrisierungen anzugleichen. Besonders durch ungewöhnliche Kameraeinstellungen oder extreme Animationsposen kann es währen der ganzen Produktion immer wieder zu Nachbesserungen kommen. Der Vorteil von volumetrischen Methoden ist dabei, dass keine Parametrisierung notwendig ist und die Texturen einfach auf jede renderbare Oberfläche gemalt werden können. Bei diesen Verfahren werden die Textur-Daten in einer volumetrischen Datenstruktur, wie einem Octree, im 3D-Raum gespeichert. 28 Ein Octree ist ein anpassungsfähiger, sich räumlich aufteilender Baum, bei dem jeder Knoten gleichmäßig in acht Kinder aufgeteilt wird. Der Detailgrad des Octree wird dabei vom Detailgrad der Textur bestimmt (Abb. 16): Von den acht Kindern, die ein Knoten haben kann (potenzielle Kinder) werden nur diejenigen erzeugt, die auch einen Teil von der Oberfläche des Modells beinhalten. Daher werden je nach Detailgrad der Textur nur manche der potenziellen Kinder eines Knotens erzeugt um Speicherplatz zu sparen. Enthält ein Kind-Knoten nach dem Farbauftrag dieselbe Farbinformation wie der Eltern-Knoten wird der Kind-Knoten wieder entfernt. Dadurch kann der Octree auch in seiner Größe schrumpfen, wenn Details entfernt werden. 27 Dies und das Folgende nach [DDGR02], S.1 28 Dies und das Folgende nach [DDGR02], S.2-3 22
Abbildung 16: Der Octree eines 3D-Modells (rechts) in verschiedenen Stadien des Painting Prozesses (Quelle: [DGPR02], S.5) Da die einzelnen Texturen auf einem Modell (wie Farbe, Specularity, Bump oder Displacement Map) meist einen ähnlichen Detailgrad haben spart es Speicherplatz, alle in demselben Octree zu speichern.29 Falls einzelne Texturen keine Übereinstimmung in Detailgrad oder Umfang aufweisen, können diese auch in einem separaten Octree gespeichert werden. Jeder Blatt-Knoten des Octree enthält nun einen Farbanteil jeder Textur, die in dem Baum gespeichert ist. Wenn alle potenziellen Kind-Knoten eines Knotens erzeugt wurden, bestimmen diese die Farbe der Oberfläche vollständig und es wird keine Farbauswahl im Eltern-Knoten gespeichert. Andernfalls wird eine Farbauswahl gespeichert, welche die Farbe für alle nicht erzeugten potentiellen Kinder enthält (Abb. 17 und 18). Zusätzlich kann man in allen Eltern-Knoten eine Farbauswahl speichern, die den Durchschnitt aus den Farben aller Kind-Knoten enthält und bei der Textur-Filterung zum Einsatz kommt. 29 Dies und das Folgende nach [DDGR02], S.2 23
Abbildung 17: Schematische Abbildung 18: Aufteilung eines Darstellung eines Knotens Octree bei Farbauftrag Ein Knoten der drei potenzielle Ein komplett weißes Modell wird Kinder hat (grau), beruhend auf der von einem einzigen Knoten Oberfläche, die den Knoten repräsentiert. Malt man einen schneidet. Nur eines der potenziellen roten Punkt auf das Modell, erhält Kinder existiert (blau umrandet), der ursprüngliche Knoten einen dort wurde Farbe aufgetragen. Die Kind-Knoten. Die Knoten werden Farbe, die in dem Eltern-Knoten (rot rekursiv unterteilt, bis die Größe umrandet) gespeichert wird ist die, des kleinsten Knotens etwa mit der der beiden nicht existierenden des roten Punkts übereinstimmt. potenziellen Kinder. Dieser Blatt-Knoten enthält die Farbe rot, die Eltern dieses Knotens (Quelle: Vgl. [DGPR02], S.2) bleiben weiß. (Quelle: Vgl. [DGPR02], S.2) Seit 2004 gibt es noch eine mögliche Erweiterung, bei der sich an jedem Knoten eines Octree ein so genannter Brick (Backstein) befindet. 30 Ein Brick ist dabei die 3D- Entsprechung einer Textur-Tile (Kachel). Diese Methode wurde als eine flexible und effiziente Global Illumination Variante entwickelt, bei der die Bestrahlungsstärke in einer Brick Map gespeichert wird. Jeder Brick besteht aus einer bestimmten Anzahl an volumetrischen Pixeln (Voxel), von denen jeder leer sein oder Textur-Daten enthalten kann. Dabei enthält der Brick an der Wurzel des Octree nur eine grobe Näherung der 3D-Textur, während die Bricks an den Blatt-Knoten die genauste Repräsentation enthalten. Grundsätzlich ähneln Brick Maps anderen Octrees, wurden aber mit einer stärkeren Gewichtung auf Tiling und Caching entwickelt. 30 Dies und das Folgende nach [BC04], S.1-3 24
Da bei den volumetrischen Methoden die Topologie der Textur der Topologie des Modells entspricht kommt es zu keinen Kanten oder Verzerrungen in der Textur. 31 Außerdem kann ein höherer Detailgrad in der Textur auch lokal umgesetzt werden, eine Vergrößerung der Auflösung der gesamten Textur ist nicht notwendig. Auch bei animierten Deformierungen des Modells verhält sich die Textur korrekt. Allerdings sind die Speicherung und der Abruf der volumetrischen Texturen allgemein weniger effizient als bei 2D-Texturen und es kann zu einem Ausbluten der Farbe zwischen benachbarten Flächen mit ähnlichen Normalen kommen.32 2.2.5 Vorangehende Per-Face Methoden Die erste Methode, bei der Informationen Per-Face gespeichert wurden, sind Displaced Subdivision Surfaces (2000). Diese Methode wurde für sehr detailreiche Modelle, wie man sie z.B. durch einen Scanning-Prozess erhält, entwickelt. 33 Solche Modelle werden meist als sehr dichte Meshes aus Dreiecken repräsentiert. Die Unregelmäßigkeit und der Speicherbedarf solcher Meshes bringen Probleme bei der Manipulation und Animation des Modells, sowie beim Rendern und Speichern der Szene mit sich. Bei Displaced Subdivision Surfaces werden die Details des Ausgangsmodells als Displacement auf einer einfacheren Oberfläche dargestellt (Abb. 19). Um von einem beliebigen Ausgangsmodell (a) zu dem Displaced Subdivision Surfaces Modell (b) zu gelangen sind mehrere Schritte notwendig. Zunächst wird ein anfängliches Kontroll- Mesh (c) durch die Vereinfachung des Ausgangsmodells erzeugt. Anschließend werden die Vertices des Kontroll-Mesh optimiert (d), sodass sich das gleichmäßige Modell (e) stärker an das Ausgangsmodell annähert. Das Displacement (f) wird erzeugt indem Strahlen entlang der Oberflächen-Normalen des gleichmäßigen Modells geschickt werden, bis diese das Ausgangsmodell schneiden. Dabei wird keine Parametrisierung gespeichert, sondern geometrische Details, d.h. die Details des Ausgangsmodells müssen als Displacement von der vereinfachten Oberfläche darstellbar sein. 31 Dies und das Folgende nach [DDGR02], S.1-5 32 Vgl. [BL08a], S.3 33 Dies und das Folgende nach [HLM00], S.1-4 25
Abbildung 19: Schritte vom Ausgangsmodell zu Displaced Subdivision Surfaces (Quelle: [HLM00], S.4) 26
Einen anderen Ansatz verfolgen die PolyCube-Maps (2004). Ein PolyCube ist dabei eine aus mehreren Cubes bestehende Oberfläche, deren Form das gegebene Modell umschließt (Abb. 20).34 Die Cubes sind dabei genau eine Maßeinheit groß, an den drei Hauptachsen ausgerichtet und werden Fläche an Fläche aneinander gereiht. Ist dieser PolyCube festgelegt, wird der 3D-Textur-Raum in kubische Zellen aufgeteilt, die in Größe und Orientierung den Cubes entsprechen, aus denen der PolyCube besteht (Abb. 21). Die Durchdringung dieser Zellen mit der Oberfläche des PolyCube, teilt dessen Faces natürlicherweise in je vier Facelets (obere Reihe). Anschließend findet in der Zelle eine Projektion orthogonal zu den Facelets statt, die jeden Punkt im Innern der Zelle einem PolyCube-Face zuweist (mittlere Reihe). Beim Mapping wird dann jedes Facelet auf ein zugehöriges Squarelet im 2D-Textur-Raum abgebildet. Alle Squarelets für die Facelets einer Zelle werden zusammen in einen rechteckigen Textur-Patch gepackt (untere Reihe), die sich dank ihrer einfachen Form im Textur-Raum einfach und platzsparend anordnen lassen. Diese Methode ist zwar grundsätzlich Mesh unabhängig, kann jedoch bei sehr komplexen Modellen zu Problemen führen. Sind die Eigenschaften eines Modells beispielsweise sehr unterschiedlich in ihrer Skalierung, würde ein PolyCube aus zu vielen einzelnen Cubes bestehen, was den Datenspeicher schnell übersteigen würde. Ein Beispiel für solch ein Modell wäre ein Baum mit Stamm, Ästen und Blättern. 34 Dies und das Folgende nach [CHMT04], S.2-8 27
Abbildung 20: Anwendung von PoyCube-Maps Links: Das Originalmodell Mitte: Texturierung des Modells mit einer PolyCube-Map Rechts: Die PolyCube-Oberfläche (Quelle: Vgl. [CHMT04], S.6) Abbildung 21: Mögliche Facelet-Konfigurationen in einer nicht-leeren Zelle (Quelle: [CHMT04], S.3) 28
Der dritte Ansatz, der in diesem Zusammenhang genannt werden muss sind so genannte TileTrees (2007), welche quadratische Textur-Tiles in den Blättern eines, die Oberfläche des Modells umgebenden, Octree speichern (Abb. 22). 35 Im Vergleich zu den anderen hier beschriebenen Methoden, die einen Octree verwenden, wird hierbei nicht nur ein einzelner Farbwert in den Blättern des Octree gespeichert, sondern 2D- Tiles mit Textur-Daten auf die Faces der Blätter abgebildet. Diese Tiles werden kompakt in einer 2D-Textur (Tile Map) gespeichert. Beim Rendern wird dann die Oberfläche des Modells auf die Blätter des Octree projiziert und durch die dabei entstehenden Textur- Koordinaten wird dann die zugehörige Tile in der Tile Map abgerufen. Diese Methode kombiniert damit die Setup-Freiheit der volumetrischen Methoden mit dem effizienten Speichern und Zugreifen auf 2D Texturen. Abbildung 22: Anwendung von TileTrees Links: Ein Ring der mit einem TileTree texturiert wurde Mitte: Platzierung der Textur-Tiles um die Oberfläche durch den Octree Rechts: Die Tile Map mit den gespeicherten quadratischen Tiles (Quelle: [DL07], S.1) 35 Dies und das Folgende nach [DL07], S.1-2 29
2.2.6 Vergleich Filmqualität Universell Effizient Setup-frei Projection Mapping ✓ ✓ Pelting ✓ ✓ Atlas Methoden eventuell eventuell ✓ Volumetrische Methoden ✓ ✓ Vorangehende Per-Face Methoden eventuell ✓ eventuell Tabelle 1: Vergleich der vorangegangenen Methoden (Quelle: Vgl. [BL08a], S.3) 30
3 Die Ptex Technologie 3.1 Überblick Ptex speichert eine separate Textur für jedes Face eines Subdivision Surfaces Mesh (Abb. 23), wobei jede dieser Texturen eine eigene Auflösung haben kann. 36 Jede Oberfläche kann unabhängig von ihrer Komplexität mit einer einzigen Ptex-Datei gemappt werden, welche all die einzelnen Per-Face Texturen enthält. Diese Datei enthält außerdem die Adjazenz-Informationen (Nachbarschafts-Informationen) aller Faces des Modells, welche verwendet werden um auch über Face-Grenzen hinweg nahtlos zu filtern. Abbildung 23: Der T-Rex aus „Meet the Robinsons“ unter Verwendung von Ptex (Quelle: Vgl. http://www.disneyanimation.com/library/ptex/ptex-teaser-big.png) 36 Dies und das Folgende nach [BL08a], S.3 31
3.2 Aufgaben bei der Entwicklung Die Hauptaufgaben bei der Realisierung der beschriebenen Technologie waren zunächst die Entwicklung von Datenstrukturen und Methoden zum effizienten Speichern und Zugreifen auf die Face-Adjazenzdaten in der Textur. 37 Des Weiteren mussten Methoden gefunden werden, um die hohen Anforderungen an die Filterung zu erfüllen. Diese Anforderungen umfassen anisotrope Filterung, kein sichtbares räumliches oder zeitliches Aliasing, gleichmäßige Filterung von Displacements und Nahtlosigkeit. Außerdem musste ein eigenes Dateiformat erstellt und die Integration in einen kommerziellen Renderer umgesetzt werden. 3.3 Umsetzung 3.3.1 Per-Face Parametrisierung Ein beliebiges auf Vierecken basierendes Mesh (Abb. 24) wird vollständig und einzigartig über die Position der einzelnen Faces (Face-ID) (a) und die intrinsischen Subdivision Parameter (b) parametrisiert . 38 Die Edge-IDs von jedem Face werden von 0 bis 3 entsprechend der Vertex-Reihenfolge nummeriert. Die für die Filterung benötigten Adjazenzdaten werden für jedes Face als Array der vier benachbarten Face- und Edge-IDs gespeichert. Die Orientierung der UV-Koordinaten wird dabei durch die Reihenfolge der das Face aufspannenden Vertices festgelegt. Grundsätzlich funktioniert Ptex auch auf Geometrien, die Dreiecke und n-Ecke enthalten, da bei dem Umwandeln in ein Subdivision Surfaces Modell alle Flächen zu Vierecken reduziert werden. 37 Dies und das Folgende nach [BL08a], S.1-2 38 Dies und das Folgende nach [BL08a], S.3-4 32
Abbildung 24: Per-Face Parametrisierung (Quelle: [BL08a], S.4) 3.3.2 Textur Auflösungsbestimmung und Speicherung Auch wenn bei diesem Verfahren keine explizite Parametrisierung notwendig ist, so muss die Auflösung der Texturen dennoch effizient festgelegt werden. 39 Es wäre zwar sehr viel einfacher dieselbe Textur-Auflösung für alle Faces zu verwenden, allerdings ist es sehr viel effizienter für jedes Face eine angemessene Auflösung zu berechnen. Trotzdem behält der Benutzer die volle Kontrolle über die Auflösung von jedem einzelnen Face und kann diese bei Bedarf anpassen, eine Fähigkeit über welche die meisten Texture Mapping Methoden nicht verfügen. 39 Dies und das Folgende nach [BL08a], S.4 33
Abbildung 25: Auflösungsbestimmung der einzelnen Faces (a) Das gesamte 3D-Modell (b) Jedes Face wird mit jeweils 4 x 4 Textur-Pixeln abgebildet (c) Bessere Erfassung der einzelnen Faces unter Verwendung genauso vieler Pixel (Quelle: [BL08a], S.4) Wie in den meisten Texture Mapping Implementierungen werden auch in der Ptex- Datei symmetrische Reduktionen der Texturen gespeichert. Solche so genannten MIP- Maps (Multum In Parvo, etwa: viel auf kleinem Raum) speichern eine Textur in mehreren Auflösungen.40 Damit adressieren sie das Problem, dass sich ein texturiertes Objekt mal sehr nah und mal sehr fern vom Betrachter befinden kann und daher auch eine Anpassung der Größe der Textur erforderlich ist um Aliasing zu vermeiden. Eine MIP-Map ist eine Bildpyramide, bei der die größte Auflösung der Textur die Basis der Pyramide darstellt. Die nächst höhere Ebene der Pyramide wird gebildet, indem für jeden Pixel des verkleinerten Bildes der Mittelwert der vier korrespondieren Pixel des Ausgangsbildes berechnet wird. Dieser Vorgang wird rekursiv für alle weiteren Ebenen durchgeführt, wobei die höchste Ebene nur noch 1 x 1 Pixel misst. Daher muss das Ausgangsbild quadratisch sein und die Kantenlänge einer Zweierpotenz entsprechen, die Kantenlänge jedes Bildes ist dann genau halb so groß wie die des Vorgängerbildes. Die MIP-Map spart damit Rechenzeit während dem Rendervorgang, da die benötigte Auflösung bereits in gefilterter Form vorliegt und nur noch die Ebene ausgewählt werden muss, bei der ein Textur-Pixel genau einem Bildschirm-Pixel entspricht. Bei Ptex wird allerdings nicht für jede Textur eine separate Bildpyramide gespeichert, sondern es wird jeweils ein ganzes Set an Per-Face Texturen in einer Auflösungs-Ebene 40 Dies und das Folgende nach [Wil83], S.1-2 34
gespeichert.41 Zusätzlich zu den MIP-Maps wird ein einfacher Datenblock gespeichert, indem für jedes Face der Mittelwert der zugehörigen Textur gespeichert wird. Ist die Farbe auf einem Face konstant, was in der Praxis häufig der Fall ist, wird nur dieser Wert gespeichert und MIP-Maps sind überflüssig. Auch für Objekte, die sich weit entfernt vom Betrachter befinden und nur einen kleinen Teil des Bildes ausmachen, wird nur dieser Wert abgefragt. Dasselbe gilt natürlich für Faces denen keine Textur zugewiesen wurde, diese enthalten ebenfalls nur einen einzigen Standard-Wert und belasten daher den Speicher nicht. 3.3.3 Filterung Der Vorgang der Textur-Filterung findet nach der Berechnung des Texture Mapping statt, dabei wird das Bild beim Rendern für das Bildschirm-Raster neu abgetastet. 42 Man kann dabei nicht davon ausgehen, dass ein Pixel in der Textur auch einem Pixel des Bildschirms entspricht, besonders da sich Objekte oft in einer perspektivischen Ansicht befinden. Da ein Bildschirm-Pixel aber nur einen Farbwert annehmen kann werden bei der Filterung verschiedene Verfahren angewendet, um aus den Farbwerten der umliegenden Textur-Pixel den Farbwert für einen Bildschirm-Pixel zu ermitteln. Die einfachste dieser Methoden ist die bilineare Filterung, die einen gewichteten Durchschnitt der umgebenden Textur-Pixel verwendet um den Farbwert eines Bildschirm-Pixels zu bestimmen.43 Befindet sich das texturierte Objekt in großer Entfernung zum Betrachter, werden so viele Textur-Pixel interpoliert, dass die Bildschirm-Pixel alle einen sehr ähnlichen Wert annehmen und der Eindruck von Unschärfe entsteht. Wird die bilineare Filterung in Kombination mit MIP-Maps verwendet, kann es zu sichtbaren Übergängen zwischen den einzelnen Auflösungen der MIP-Map kommen. Die trilineare Filterung löst dieses Problem, indem sie einen 41 Dies und das Folgende nach [BL08a], S.4 42 Vgl. [Heck86], S.6 43 Dies und das Folgende nach [Short07] 35
weiteren linearen Interpolationsschritt durchführt. So wird hierbei zunächst für jeden Punkt die bilineare Filterung auf den beiden nächstliegenden Auflösungs-Ebenen ausgeführt und durch Interpolation dieser beiden Ebenen ergibt sich dann der Farbwert für den Textur-Pixel. Doch wenn sich die texturierte Oberfläche in einem steilen Winkel zur Kamera befindet erscheinen die Texturen entlang einer Achse verzerrt und unscharf. Das liegt daran, dass die bilineare und trilineare Filterung beide annehmen, dass der abgebildete Textur-Pixel perfekt quadratisch ist, was tatsächlich nur selten vorkommt. In der Perspektive ist ein Textur-Pixel nämlich in der Tiefe länger und in der Breite schmaler als die Abtastwerte aus der MIP-Map, was in einer Unschärfe aus Unter- und Überabtastung gleichermaßen resultiert. Abhilfe schafft hier das anisotrope (richtungsabhängige) Filtern. Dabei wird die MIP-Map zunächst relativ zu der perspektivischen Verzerrung der Textur entlang einer Achse neu skaliert und anschließend mit bilinearer oder trilinearer Filterung interpoliert. Dadurch wird die Auflösung entlang der skalierten Achse deutlich erhöht und die Unschärfe reduziert. Bei der Filterung kann es besonders bei Texturen mit hohem Kontrast oder hoher Musterdichte zu Aliasing kommen.44 Aliasing ist ein Problem der Signalverarbeitung, da eine stufenlose Bildfunktion so abgetastet werden muss, dass sie auf dem Bildschirm durch ein Raster begrenzter Pixel wiedergegeben werden kann. Sind die Abstände zwischen den einzelnen Abtastwerten eines Signals zu groß wird das Signal nicht korrekt wiederhergestellt und es kommt zu Fehlern im Bild. Die hier vorgestellte Methode für die anisotrope Filterung von Per-Face Texturen verschiedener Auflösungen wurde speziell für Pixars PhotoRealistic RenderMan (PRMan) entwickelt, ist in dieser Form aber auch auf andere Renderer übertragbar. 45 PRMan basiert auf einem Scanline-Algorithmus, der als REYES (Renders Everything You Ever Saw) bekannt ist. Dieser Algorithmus zerteilt die einzelnen Faces in rechteckige Shading-Gitter, die aus etwa ein Pixel großen Micro-Polygonen bestehen, und gibt den Rasterabstand durch die eingebauten Variablen du und dv an den Shader weiter (Abb. 26). Um den Qualitätsansprüchen an die Filterung gerecht zu werden wird ein 44 Dies und das Folgende nach [AG99], S.263-65 45 Dies und das Folgende nach [BL08a], S.4-5 36
bikubischer Filter verwendet, da er nicht wie die üblichen bilinearen Filter mit 2 x 2 Pixeln, sondern mit 4 x 4 Pixeln arbeitet und daher Details besser wiedergibt. Abbildung 26: Vorgehensweise des REYES-Algortihmus von PRMan (Quelle: [BL08a], S.5) Die Breite eines Filters entspricht dem Durchmesser des Filterkerns und beschreibt die Größe des Bereichs, der für die Interpolation des Farbwertes verwendet wird (Abb. 27). Überdeckt dieser Filterkern mehrere Faces wird der Kern im üblichen Fall stückweise dem jeweils überdeckten Face zugewiesen (a). 46 Nun gibt es aber auch einige mögliche Problemfälle bei der Filterung. Befindet sich ein Teil des Filterkerns außerhalb des Modells, so werden die Kern-Gewichtungen den Pixeln an der benachbarten Edge zugewiesen (b). Ist die Textur-Auflösung eines benachbarten Face nicht ausreichend für die momentane Filterbreite, passen die Texel nicht mit den Kern-Gewichtungen zusammen.47 In diesem Fall wird die Kern-Gewichtung dem nächsten verfügbaren Textur-Pixel zugewiesen (c). Es ist zu beachten, dass dieses Problem nur bei einer Bildvergrößerung der Textur auftritt. In der Produktion kommt dies eher selten vor, da die Artists die Texturen üblicherweise mit mehr als ausreichender Auflösung erstellen. Falls eine starke Vergrößerung der Textur unerlässlich ist, können Artefakte einfach vermieden werden, indem alle Per-Face Texturen mit derselben Auflösung erzeugt werden. Die Methode den Kern in mehrere Teile zu zerlegen und den überdeckten Faces zuzuweisen bringt bei Polstellen (einem Vertex an dem sich mehr als vier Edges 46 Dies und das Folgende nach [BL08a], S.5 47 Dies und das Folgende nach [BL08a], S.5-6 37
treffen) kein eindeutiges Ergebnis (d).48 Da sich die Ausdehnung des Bereichs um die Polstelle in der Regel nur im Subpixel-Bereich befindet, ist eine weiche Rekonstruktion nicht notwendig. Daher werden die Faces in den Ecken einfach ignoriert und die Normalen des Filterkerns werden neu ausgerichtet. Das führt zwar zu Unregelmäßigkeiten entlang der Edges nahe der Polstelle, doch die dadurch entstehenden Artefakte sind vernachlässigbar. Bei einer erheblichen Bildvergrößerung von großen, weichen Displacements können diese Artefakte sichtbar werden. In diesem Fall wäre es noch möglich aus den Pixeln der Textur eine weiche Rekonstruktion vorzunehmen, ähnlich dem Vorgang bei den Displaced Subdivision Surfaces. Abbildung 27: Ein mehrere Faces überdeckender 6 x 6 Filterkern (Quelle: [BL08a], S.5) 48 Dies und das Folgende nach [BL08a], S.6 38
Ein weiteres Problem kann auftreten, wenn ein Face nach dem Rendern kleiner als ein Pixel ist, da PRMan dann nur die Ecken des Face abtastet und die Filterbreite größer wird als das Face.49 Werden viele Faces nur als Subpixel wiedergegeben, kann es sein, dass der Renderer die Oberfläche nicht vollständig abtastet (da als Abtastwert für jeden Pixel nur noch ein Micro-Polygon verwendet wird) und Aliasing entsteht. Um mit solch großen Filterbreiten umgehen zu können wird eine spezielle Methode zur Vorfilterung verwendet, bei der die nur 1 x 1 Pixel großen Per-Face Texturen wiederholt unter Verwendung eines Mittelwertfilters mit ihren direkten Nachbarn überblendet werden. Abbildung 28: Texturierte Oberfläche unter Verwendung unterschiedlicher Filter Oben: Artefakte die bei anderen Methoden auftreten können Unten: Die Ergebnisse der bei Ptex verwendeten Filter-Methoden (a) Anisotrope Filterung bietet eine höhere Detailerhaltung als isotrope (b) Bikubische Filterung kann zu Aliasing bei feinen Displacements führen (c) Nahtlose Filterung sogar bei großen, weichen Displacements (Quelle: [BL08a], S.7) 49 Dies und das Folgende nach [BL08a], S.6-7 39
3.4 Einflüsse auf den Produktions-Workflow Die Notwendigkeit einer Parametrisierung hat mehrere negative Auswirkungen auf den Produktions-Workflow.50 Einige davon wurden bereits in den vorangegangenen Kapiteln beschrieben. Im Hinblick auf die Produktion eines Feature-Films in einem großen Studio wie der Walt Disney Company, muss man auch den Austausch und die Kommunikation zwischen den einzelnen Abteilungen berücksichtigen (Abb. 29). Da die Zuweisung von UV-Koordinaten, ebenso wie Shader und Texturen in der Verantwortung des Look Development Departments liegen, haben die anderen Abteilungen wie Modeling, Layout und Animation keinen Zugriff auf die UV- Koordinaten oder die Texturen. Erst ganz zum Schluss gibt das Look Development die fertig texturierten Modelle an das Lighting und Rendering Department. Abbildung 29: Arbeit der Departments bei der Walt Disney Company (Quelle: [BL008a], S.2) 50 Dies und das Folgende nach [BL08a], S.2 40
Die Verwendung von Ptex verändert in dieser Hinsicht den gesamten Workflow, da die Modelle keine spezielle Parametrisierung benötigen. 51 So können z.B. im Modeling Department feine Displacements direkt als Textur gespeichert werden, die Layout- Artists können grobe Texturen anlegen um die grundlegenden Eigenschaften der Modelle zu skizzieren und die Animatoren können Attribut-Maps erstellen um Deformationen zu kontrollieren. All dies ist möglich bevor das Modell das Look Development Department überhaupt erreicht und ohne befürchten zu müssen, dass die erstellten Texturen später unbrauchbar werden. 3.5 Ergebnisse Die neu entwickelte Technologie Ptex erfüllt die eingangs genannten Anforderungen 52: • Die Filmqualität wird durch nahtlose anisotrope Filterung von Texturen inklusive weichen Displacements sichergestellt. • Ptex ist universell anwendbar auf Modelle mit beliebiger Komplexität und Texturen mit beliebiger Auflösung. • Das Kriterium der Effizienz wird in mehreren Punkten erfüllt. So hat man für jedes Face die unabhängige Kontrolle über die Textur-Auflösung und sowohl Speicherbedarf als auch die Input/Output-Kosten werden erheblich reduziert, da pro Modell nur eine Datei benötigt wird. • Da keine UV-Koordinaten oder sonstige Vorbereitungen für die Texturierung eines Modells notwendig sind, ist die Technologie Setup-frei. 51 Dies und das Folgende nach [BL08a], S.2 52 Dies und das Folgende nach [BL08a], S.9 41
Ptex wurde praktisch auf jeder Oberfläche in dem Film „Bolt“ verwendet. 53 Als das Look Development des Films zu 60 Prozent abgeschlossen war, wurde Ptex bereits auf mehr als 80 000 Subdivision Surfaces verwendet, mit durchschnittlich sieben Textur-Ebenen pro Oberfläche und 2,3 Megapixeln pro Ptex-Datei. Die größte Ptex-Datei hatte eine Auflösung von 3,3 Gigapixeln,was mit traditionellen Textur-Dateien undenkbar wäre. Damit ermöglicht Ptex ein neues Niveau der sichtbaren Komplexität von Texturen. Die Rückmeldungen der Artists waren sehr positiv, Modelle die mit den vorangegangenen Methoden nur schwer zu texturieren waren stellten mit Ptex keinerlei Problem mehr dar. Per-Patch Texturen Ptex (NURBS) CPU Sekunden 171 141 I/O Anrufe 18 581 058 9209 Tabelle 2: Ergebnisse bei einer 1024 x 1024 Pixel Textur (Quelle: [BL08b], S.34) 3.6 Realtime Rendering (2011) Bei der Implementierung eines Algorithmus für das Realtime Rendering von Ptex-Daten war die Funktionsfähigkeit auf handelsüblicher Hardware eine wichtige Voraussetzung.54 Der Algorithmus besteht im Wesentlichen aus zwei Teilen, dem Preprocessing der Daten und dem eigentlichen Rendern (Abb. 30). 53 Dies und das Folgende nach [BL08a], S.7 54 Vgl. [BM11b], S.4 42
Abbildung 30: Schritte bei der Realtime Rendering Methode für Ptex (Quelle: Vgl. [BM11b], S.8) Der erste Schritt beim Preprocessing besteht im Laden des Modells. Wie beim Offline Ptex Verfahren muss das Mesh auf Vierecken basieren, die Textur-Größe muss eine Zweierpotenz sein und die Adjazenzdaten der einzelnen Faces müssen zur Verfügung stehen.55 Beim Laden des Modells wird für jedes Face die größte verfügbare MIP-Map von den Quelldateien geladen (Abb. 31) und die Adjazenzdaten abgerufen (Abb. 32). 56 Im Speicher werden die geladenen Textur-Daten mit einem Rand umgeben. Wie viele Pixel breit dieser Rand ist, hängt von der Filterbreite ab. 55 Vgl. [BM11a], S.1 56 Dies und das Folgende nach [BM11b], S.11 43
Sie können auch lesen