Ptex: Per-Face Texture Mapping in Theorie und Anwendung - Bachelorarbeit im Studiengang

Die Seite wird erstellt Yanick Falk
 
WEITER LESEN
Ptex: Per-Face Texture Mapping in Theorie und Anwendung - Bachelorarbeit im Studiengang
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
Ptex: Per-Face Texture Mapping in Theorie und Anwendung - Bachelorarbeit im Studiengang
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
Ptex: Per-Face Texture Mapping in Theorie und Anwendung - Bachelorarbeit im Studiengang
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
Ptex: Per-Face Texture Mapping in Theorie und Anwendung - Bachelorarbeit im Studiengang
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
Ptex: Per-Face Texture Mapping in Theorie und Anwendung - Bachelorarbeit im Studiengang
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
Ptex: Per-Face Texture Mapping in Theorie und Anwendung - Bachelorarbeit im Studiengang
Abbildungsverzeichnis....................................................................................................85
Tabellenverzeichnis.........................................................................................................87
Abkürzungsverzeichnis...................................................................................................87
Literaturverzeichnis........................................................................................................88
Anhang............................................................................................................................91

                                                                6
Ptex: Per-Face Texture Mapping in Theorie und Anwendung - Bachelorarbeit im Studiengang
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
Ptex: Per-Face Texture Mapping in Theorie und Anwendung - Bachelorarbeit im Studiengang
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
Ptex: Per-Face Texture Mapping in Theorie und Anwendung - Bachelorarbeit im Studiengang
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
Ptex: Per-Face Texture Mapping in Theorie und Anwendung - Bachelorarbeit im Studiengang
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