Institut für C omputer G raphik, TU Braunschweig MPI Saarbrücken, 22.7.99...
-
Upload
liselotte-welte -
Category
Documents
-
view
106 -
download
0
Transcript of Institut für C omputer G raphik, TU Braunschweig MPI Saarbrücken, 22.7.99...
Fellner/Havemann/Müller 1Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Interaktion mit großen 3D-Welten durch Generative Modellierung mit
Subdivision Surfaces
D. Fellner, S. Havemann, G. Müller
TU Braunschweig
DFG-Schwerpunkt V3D2
Fellner/Havemann/Müller 2Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Übersicht
Sehr große 3D-Welten möglich durch andere Art der Modellierung in Verbindung mit effizienter Szenenstrukturierung
Alternatives Modellierparadigma: Subdivision Surfaces als Modellierprimitiv Variante von Progressive Meshes
Detailprobleme bei der Realisierungwork in progress
Fellner/Havemann/Müller 3Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Subdivision Surfaces I
Reduktion von Freiformflächen-Modellierung auf Polyeder-Modellierung
Reduktion der Modellgröße um 1-2 Größenordng.
Fellner/Havemann/Müller 4Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Subdivision Surfaces II
Tesselation on the fly [Pulli/Segal]
parallelisierbar, wenig Overhead Idee: Progressive Subdivision Surfaces
Fellner/Havemann/Müller 5Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Progressive Meshes I
Grundoperationen: edgeSplit, edgeCollapse zueinander invers
Basismesh + Liste der Verfeinerungsoperationen Datenstruktur (Hoppe): Ersparnis ca. 10% Vsplit:18 bits + 1 int Topologie-Info pro Split Problem: Höchste Modellauflösung muß stets
zugreifbar sein
Fellner/Havemann/Müller 6Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Verallgemeinerung von PMs - Idee 1
Abhängigkeitsgraph der Verfeinerungsoperationen Adaptive Anzeige mit Hilfe von
BBox-Informationen
Fellner/Havemann/Müller 7Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Verallgemeinerung von PMs - Idee 2
Mesh-Operationen zum Modellieren benutzen Viele Teilsequenzen ähneln einander Zusammenfassen durch lazy macros
Fellner/Havemann/Müller 8Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Generative Modellierung
Generative Modellierung abstrakt: Objekte werden zu Abbildungen, Abbildungsobjekte Informationen über Bildbereich wird mitgeführt
Beispiel: f(x)=x2 bildet auch Intervalle ab, [a,b]->[a2,b2] in R+ => Intervallrechnung
Invertieren per Intervallschachtelung möglich Ziel: Operations- statt objektbasiertes Modellieren
Fellner/Havemann/Müller 9Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Verallgemeinerung von PMs - Idee 3
Generative Mesh-Modellierung Elementaroperationen mit BBox-Info versehen BBoxes von Makro-Operationen aufsammeln Damit BBox-Hierarchie des Modells
Lazy Mesh Evaluation: Makroliste ist implizit Operatorliste BBox-Liste vorkompiliert: DAG traversieren BBox-Info stößt Makroausführung an
Fellner/Havemann/Müller 10Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Zusammenfassung Viewer-Architektur
Gegeben: BBox-Hierarchie und Abhängigkeitsgraph der (Makro-) Operationen
Bei der Interaktion: Kamera stößt Auswertung der BBox-Hierarchie an BBoxes stoßen Ausführung der Makros an Damit Teilaufbau des Kontrollmeshes Kontrollmesh wird on-the-fly adaptiv tesseliert
Caching auf allen Ebenen, insbes. Displaylisten
Fellner/Havemann/Müller 11Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Problem I: Subdivision Surfaces
Adaptive Tesselierung: Verschiedene Unterteilungsgrade von Nachbarfaces
Projektion auf die Grenzfläche: position rules Diss. Schweitzer: creases, conical vertices für
Dreiecksnetze Position rules für Vierecksnetze? Pixar-Erweiterung: Blend-Faktor für halbscharfe
Kanten, nichtstationäre subdivision rules Eigenwert-Kalkül nicht unmittelbar übertragbar
Fellner/Havemann/Müller 12Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Problem II: Mesh-Operationen
Menge der Elementaroperationen für Meshes, analog zu den Euleroperatoren der BReps:
Vollständigkeit: Jedes Mesh ist erzeugbar Abgeschlossenheit: Anwendbarkeit eines Operators
überprüfen, Konsistenzerhaltung Minimalität der Operatormenge vs. Benutzbarkeit
Klar für BReps, möglich für Dreiecksnetze, unklar für Vierecksnetze (?)
Fellner/Havemann/Müller 13Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Problem II: Mesh-Operationen
faceSplit
edgeSplit
vertexSplit
edgeSwap
edgeCollapse shellSplit
Fellner/Havemann/Müller 14Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Problem II: Mesh-Operationen
Dreiecksnetze: edgeSwap, faceSplit, edgeSplit, vertexSplit, shellSplit
Dazu jeweils die inversen Operationen Vierecksnetze: Wie vermeidet man Elementarops
mit variabler Signatur? Beispiel: Y-Split [Kobbelt]
Fellner/Havemann/Müller 15Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Details der Implementierung 1
Mesh-Zugriff gekapselt durch Iteratoren analog zur Standard Template Library (STL)
void deleteVertices(list<Vertex*>& l) { list<Vertex*>::iterator i; for(i=l.begin(); i!=l.end(); i++) { delete *i; }}
TriMesh::Iter hit = mesh.rayIntersect(point,dir);cout << ” p0=" << hit.p() << ", p1=" << hit.faceCCW().p() << ”, p2=" << hit.faceCCW().p() << endl;
Fellner/Havemann/Müller 16Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Details der Implementierung 2template<class V, class F> class TriIter {public: typedef TriMesh<V,F> Mesh; typedef TriIter<V,F> Iter;
int faceId () const; int vertexId() const; int valence () const;
Vector3D& p(); Vector3D normal () const; Vector3D faceNormal () const;
Iter& vertexCW(); Iter& vertexCCW(); Iter& faceCW(); Iter& faceCCW(); Iter& edgeFlip(); ...};
template<class V, class F> class TriMesh {public: typedef TriMesh<V,F> Mesh; typedef TriIter<V,F> Iter;
Tuple2<Iter> edgeSwap (const Iter& tri); Tuple3<Iter> faceSplit (const Iter& tri, const V& p, const F& f1, const F& f2); Tuple4<Iter> edgeSplit (const Iter& edge, const V& p, const F& f0, const F& f1); ... const list<Iter>& faces () const; Iter rayIntersect(const Vector3D& point, const Vector3D& dir, Vector3D& hit) const; ...};
Fellner/Havemann/Müller 17Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Problem III: Mächtigkeit der Datenstruktur
Basisversion der Makros:subdivideHalf(Iter t0) { t1,t2,t3,t4 = edgeSplitHalf(t0); t5,t6,t7,t8 = edgeSplitHalf(t4.faceCCW()); t9,t10,t11,t12 = edgeSplitHalf(t1.faceCCW()); t13,t14 = edgeSwap(t8.faceCCW());}
Fellner/Havemann/Müller 18Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Problem III: Mächtigkeit der Datenstruktur
Erweiterung: Makros mit variabler Signatur Parameter-Datentypen: float, int, Vector3D, Iter, Listen, Makros
Hintergrund: Funktionale Programmierung
Fellner/Havemann/Müller 19Institut für Computer Graphik, TU Braunschweig
MPI Saarbrücken, 22.7.99
Ausblick: V3D2 Phase II
Arbeitsprogramm: Konsolidierung des bestehenden Ansatzes Generative Modelle sind durchgängig parametrisiert,
neuer Aspekt: Variation der Modellparameter Ziel: Viewer für Modelle mit dynamischer Geometrie
DL-Aspekt: Statt multimedialer Objekt-Datenbank nun übertragbare DL der Modellierwerkzeugen
Ziel: Modelldatei enthält Modellierwerkzeuge