03.02.2004SEP - Model generation and advanced rendering techniques Folie 1 TU - München Referenten:...
-
Upload
lenz-schnabel -
Category
Documents
-
view
108 -
download
0
Transcript of 03.02.2004SEP - Model generation and advanced rendering techniques Folie 1 TU - München Referenten:...
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 1
TU - München
Referenten:Ludwig HoegnerJochen StrunckStefan Plafka
Multiresolution deformable Objects:
Model generation and advanced rendering techniques
SystementwicklungsprojektWS 2004/ 2005
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 2
Anwendungsgebiete
• Simulation
• Forschung
• Medizin
• Ingenieurwesen
• etc.
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 3
Aufgaben und VortragsablaufÜberblick:
1. 3D-Objekte Tetraedisieren (für Deformationsprogramm)
2. Deformation
I. Finden der Controlmesh Flächen
II. Gewichtung der Control-Punkte
3. Darstellung mit OpenGL
I. Berechnung der Normalen
II. CPU
III. GPU-Beschleunigung
4. Fell Shader
I. Generieren einer Fell-Textur
II. Dynamisches Fell
III. Fell auf bestimmte Teile des Objektes begrenzen
5. Kurze Demonstration
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 4
3D-Daten aufbereiten• Einführung zum Tetraedisieren
Was ist Tetraedisieren und warum brauchen wir es?
• Vorarbeiten
•Erzeugung verschiedener Auflösungen eines 3D-Modells
•Umwandeln der Modelle in für den Tetraedisierer lesbare Daten
• Fehlerkorrektur
• Festlegung der gewünschten Ausgangswerte
• Tetraedisierung der verschiedenen Auflösungen mit
unterschiedlichen Qualitätsstufen
• Auswahl der optimalen Qualität
• Zusammenstellen der ausgewählten Qualitätsstufen und
Umwandlung der Daten in das für die Simulation lesbare Format
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 5
Einführung zum Tetraedisieren
• Was ist Tetraedisieren ?
3D-Modelle liegen meist als Oberflächen vor, die aus Dreiecken aufgebaut sind.
Das Objekt in im Inneren quasi hohl.
Ein Tetraedisierer wandelt nun dieses aus Dreiecken bestehende
Oberflächenmodell in ein aus Tetraedern bestehenden Volumenmodell um.
• Warum Tetraedisieren ?
Zur Berechnung von physikalischen Eigenschaften wie Deformationen benötigt
man Volumenkörper, später mehr dazu.
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 6
Vorarbeiten• Erzeugung von verschiedenen Auslösungen eines Modells
Als Ausgangsdaten liegen verschiedene Auslösungen eines Modells vor, in
unserem Fall im obj-Format, wie es z.B. Maja erzeugt.
• Umwandeln der Modelle in lesbare Daten
Diese obj-Daten werden im ersten Schritt so umkonvertiert, dass sie für den
verwendeten Tetraedisierer lesbar sind. Für die beiden alternativ zur Auswahl
stehenden Tetraedisierer Tetgen und Netgen sind das jeweils unterschiedliche
Formate.
• Tetgen erhält seine Eingangsdaten im poly-Format
• Netgen erhält seine Eingangsdaten im stl-Format
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 7
FehlerkorrekturLeider gibt es häufig fehlerhafte Werte aus den Eingangsdaten.
Die meisten Fehler sind:
• Löcher
• Hervorstehende einzelne Dreiecke
• 2 sich überschneidende Flächen
• Einzelne im freien Raum schwebende Punkte
Lösungsweg:
• Alle Linien aller Dreiecke sammeln und zählen. Linien zu korrekten Dreiecken
kommen genau 2 mal vor - löschen aller Dreiecke, die eine Linie besitzen, die
nur einmal vorkommt (Löcher, hervorstehenden Kanten)
• Bei 2 überschneidenden Flächen eine Fläche auf einen Punkt der anderen
Fläche zusammenschrumpfen und die Nachbardreiecke nachziehen
• Jetzt nicht mehr verwendete Punkte löschen und die Ids der Punkte in den
Dreiecken anpassen
• Verfahren wenn nötig mehrmals wiederholen, funktioniert leider nicht immer
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 8
Festlegung der Ausgangswerte• Anzahl der einzulesenden Detailstufen
• Anzahl der zu erzeugenden Detailstufen
In der späteren Simulation kann auch mit mehreren Qualitätsstufen gearbeitet
werden. Wie viele das sind, wird hier festegelegt
• Mindestzahl und Höchstzahl an Elementen
Die Mindestzahl gibt die gewünschte Elementezahl der niedrigsten Detailstufe
an, die Höchstzahl die gewünschte Elementezahl auf der höchsten Detailstufe.
Für dazwischen liegende Detailstufen k wird die gewünschte Punktzahl
interpoliert nach der Formel:
Mindestzahl * ( (Höchstzahl / Mindesatzahl )^(1/(Anzahl Level-1)) )^k
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 9
Tetraedisierung• Einbindung der Tetraedisierer als eigene Programme über
Kommandozeilenaufruf
Vorteil: Neue Versionen können ohne Eingriff in den Quellcode verwendet werden
• Erstellung verschiedener Qualitätsstufen für jedes Eingangslevel
• Netgen: Erzeugt von sich aus 5 Qualitätsstufen
• Tetgen: Wird mehrmals mit verschiedenen Parametern aufgerufen
• Nacharbeiten bei Netgen
Während Tetgen die Daten bereits im für die Simulation lesbaren Format liefert,
müssen sie für vom Netgen erst noch umgewandelt werden. Für die weitere
Bearbeitung werden die Ausgaben in 2 Dateien je Ausgabe aufgeteilt:
• eine node-Datei, in der alle Punkte mit ihren Koordinaten stehen
• eine ele-Datei, in der alle Tetraeder aufgelistet sind und mit den Punkte über
deren Index verbunden sind.
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 10
Auswahl der optimalen Qualität• Speicherung aller erzeugten Qualitätsstufen
für jedes Level und Vermerk der Elementezahlen in einer Liste nach dem
Schema:
Level1 - Qualität schlecht
Level1 - Qualität gut
Level2 - Qualität schlecht
Level2 - Qualität gut
Dabei kann Level1 - Qualität gut durchaus mehr Elemente haben wie Level2 -
Qualität schlecht
• Suche von der obersten Detailstufe abwärts
Beginnend mit dem letzten Elemente der eben erzeugten Liste wird nach der
ersten Ausgabe gesucht, die der gewünschten Elementezahl entspricht. Auf
Grund der Speicherreihenfolge ist das dann automatisch die Ausgabe der
qualitativ hochstwertigen Eingangsdetailstufe, die für diese Elementezahl
möglich ist. Dabei wird in mehren Suchdurchläufen die erlaubte Abweichung
von der optimalen Zahl zunehmend erhöht, bis ein Treffer gefunden ist.
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 11
Zusammenstellen und Umwandeln• Zusammenstellen der Ausgabedetails in ein einer Datei
In einem letzten Schritt müssen die ausgewählten Detailstufen nun noch für das
Simulationsprogramm zusammengestellt werden.
Dabei werden getrennt nach der node- und der ele-Datei die verschiedenen
Detailstufen hintereinander gereiht. Dabei erfolgt eine nochmalige Prüfung der
Punkte auf ihre Verwendung in den Tetraedern.
• Erzeugung einer einfachen Parameterdatei zur sofortigen Anzeige
im Simulationsprogramm
Beinhaltet rudimentäre Daten wie Skalierung oder eine Standardtextur und -
oberfläche
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 12
Deformation
Physikalisch korrekt
berechnetes Volumenobjekt
Ziel: Angleichung einer
hochauflösenden Oberfläche
• Definition von Controlmesh Flächen und Control-Punkte
Die Flächen oder die Punkte des physikalisch korrekt berechneten
Volumenobjektes, an die wir unser hochauflösendes Objekt binden.
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 13
Problem
Problemfall
Gewichtete Interpolation der hochauflösenden Punkte zwischen den Punkten des Controlmeshes.
Finden der drei besten Control-Punkte für jeden Vertex des
hochauflösenden Objektes.
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 14
Finden der Kontroll-PunktePer Punkteabstand
Leider findet die Methode nicht immer
die richtigen Punkte.
Kleinster Abstand zur Flächenebene
Findet Flächendreiecke, die
häufig entfernt liegen.
Punkt auf Fläche projizieren, dann die
Fläche auswählen, die den projizierten
Punkt enthält und am nächsten liegt:
Leider findet auch die Methode andere Flächen.
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 15
Baryzentrische Koordinaten Baryzentrische Koordinaten für ein 2-Dimmensionales Dreieck:
Gegeben seien drei Punkte A, B, C. Jeder weitere Punkt der Ebene lässt sich dann als gewichtetes arithmetisches Mittel der Punkte A, B, C mit Gewichtssumme 1 schreiben:
P = a1 * A + a2 * B + a3 * C
Die Koeffizienten a1, a2, a3 heißen Baryzentische Koordinaten von P und werden wie folgt berechnen:
a1 = Fläche (PBC) / Fläche (ABC),
a2 = Fläche (APC) / Fläche (ABC),
a3 = Fläche (ABP) / Fläche (ABC),
ABC ist das Koordinatendreieck.
A
B
C
P
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 16
Finden der Controlmesch Fläche• Endgültig verbinden wir zwei Methoden
• Projektion des Punktes auf die Fläche
und dessen bayzentrischen Werte
• Kleinsten Abstand zur Flächenebene
• Einsetzen der baryzentrischen Koordinaten
• sind die drei baryzentrischen Werte positiv,
tritt kein Problem auf.
• Ist min. eine von ihnen negativ,
nehmen wir von allen Flächen diejenige,
die den kleinsten Abstand zum
hochauflösenden Punkt hat.
Beim Abspeichern werden die baryzentrischen Koordinaten für die
Gewichtung der jeweiligen Punkte mitgespeichert.
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 17
Beschleunigen des Vorgangs
• Nur Tetraeda an der Oberfläche überprüfen
• Einordnen der Kontrollflächen in Raumsegmente
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 18
Normalenberechnung
• Für jede Fläche die Normale berechnen
• Zu jedem Punkt der Fläche den Normalenwert dazuzählen
• Danach jeden Punkt normalisieren (per openGL möglich)
Wird nicht von openGL gelöst
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 19
Deformation Ergebnis:
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 20
GPU Beschleunigung
• Berechnungen auf der GPU
• Warum? GPU höher parallelisiert.
• Deshalb bei Berechnung der selben Operation auf viele Daten
wesentlich schneller als CPU.
• Daten (Geometrie) müssen nicht für jeden Frame über den Bus
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 21
GPU Beschleunigung• Vertex-Shader:
• Ausführung bei Angabe einer Vertex-Position (z.B. per „glVertex“)
• Nicht möglich: Auf andere Vertices zugreifen
• Fragment-Shader:
• Ausführung für jedes rasterisierte Fragment
• Schnelle ausführung von:
Texturzugriff und Operationen auf interpolierten Attributen
• Fixed Function-Pipeline:
Frame BufferVertex
Prozessor
Fragment
Prozessor
Vertex Shader Fragment Shader
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 22
GPU Beschleunigung
Daten werden im Vertex-Shader benötigt:
• Pre-Pass Rendering
• Fragment-Shader ist Leistungsfähiger als der Vertexshader.
• Berechnungen im Fragment Shader:
- Dateneingabe in Form von Texturen
- Ergebnis wird in Offscreenbuffer ausgegeben.
• Zweiter Rendering Durchgang:
auslesen der Offscreen Inhalte und Verwendung als vertex-
Position
• Texture-fetch in Vertex-Shader
• Copy to Bufferobject auf der GPU
• Superbuffer (derzeit nicht von Nvidia unterstützt)
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 23
GPU Beschleunigung
+
=
w3 = 1-w1-w2
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 24
Fell-Shader• Fell Shader:
• Volumen Textur
• Ebenen Modell
• Generierung einer Fell Textur
• Generierung geeigneter Textur Koordinaten
• Möglichkeiten den Realismus zu Steigern
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 25
Fell-Shader• Volumen Textur:
• Warum?
• Geometrie für jedes Haar ist zu langsam
• Kaum Realistische Darstellung möglich
• Ebenen:
• Viele Ebenen werden erstellt.
• Extrusion in Richtung der Normalen
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 26
Fell-Shader• Generierung der Fell Textur:
• Alpha-Rauschen: Textur mit Zufallswert in jedem Texel
bestimmt Position und Form der Haare
• Farb-Variation
• Verlauf vom Fell-Ansatz zu Spitze:
• Rauschen auf Alphakanal wird
dunkler (durchsichtiger)
• Farbwert geht von dunkel (Schatten)
nach hell
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 27
• Generierung der Fell-Textur Koordinaten:
• Ziel: Fell muss ohne Verzerrungen auf beliebigen Oberflächen
liegen
• Lapped Patches
• Box Texture-Coordinates
Fell-Shader
• pro Vertex ein Texturkoordinatenpaar
• Vertex Separierung an Textur Koordinaten Grenze
=> Alle Punkte entlang der Grenze Speichern.
• Die Normalen an den Grenzen müssen geglättet werden
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 28
Fell-Shader• Ergebnis:
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 29
Fell-Shader• Dynamisches Fell:
• Ziel: Fell soll sich bei Deformation des Modells korrekt bewegen
• Merken des Controlmeshes vom letzten Frame
• Vergleich mit aktueller Position
=> der Unterschied ergibt die deformation
• Begrenzung der Fellbewegung
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 30
Fell-Shader• Darstellung:
• Glanzlicht vom Fell
• Mit Alpha-Kanal vom Fell skalieren
• Reflektions-winkel:
Normale Oberfläche Fell Reflektion
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 31
Fell-Shader• Darstellung:
• Einfärben des Fells mit Textur
• Generiere Weißes Fell
• Nutzung des Alpha-Kanals zum Freistellen bestimmter Bereiche.
• Skalierung der Helligkeit und des Glanzlichtes auf der
Grundfläche
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 32
Fell-Shader
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 33
Literatur
• A Multiresolution Approach for Real-Time Simulation of Deformable Objects, Joachim Georgii
• Dynamic Fur, Tomohide Kano http://www.ati.com/developer/indexsc.html
• Hair & Fur, Anand Mathew
• Lapped Textures & Fur, Hugues Hoppehttp://research.microsoft.com/~hoppe/
Vielen Dank für Eure Aufmerksamkeit
03.02.2004 SEP - Model generation and advanced rendering techniques Folie 34
E N D E