Erinnerung Arbeitsschritte der Computergrafik Modellierung Animation Generierung Rendering Ausgabemedium Modellierung Szenenbeschreibungen Liste aller Objekte zusammen mit den zugehörigen geometrischen Transformationen Hierarchische Szenenbeschreibung sehr oft Baumstruktur (oder gerichteter, azyklischer Graph: Szenengraph, scene graph) Wird von vielen Graphik-APIs benutzt, wie Open Inventor, Java3D, VRML, OpenGL | Performer, OpenSceneGraph Modellierung Hierarchische Szenenbeschreibung Die Wurzel beschreibt die gesamte Szene. Innere Knoten sind z.B. Transformationsknoten, Gruppierungsknoten. Blätter des Baumes sind Geometrieknoten, Lichter. Modellierung Hierarchische Szenenbeschreibung Die Gesamttransformation für ein Blatt ergibt sich aus der Multiplikation der Transformationsmatrizen auf dem Weg von der Wurzel zu diesem Blatt Modellierung Hierarchische Szenenbeschreibung Beispiel Auto Auto Transf. Transf. Transf. Transf. Transf. Geom. Geom. Rad Rad Geom. Geom. Rad Rad Geom. Karosserie Modellierung Hierarchische Szenenbeschreibung Modellierung Java3D: http://java3d.dev.java.net/ Modellierung Hierarchische Szenenbeschreibung Objekthierarchie Java3D SceneGraphObject Node Leaf .. Background Fog Light Shape3D Sound ... Modellierung Solid modeling mit constructive solid geometry (CSG) Modellierung mit Hilfe der boole´schen Operatoren A ∪ B,A∩ B,A∖B Genauer: regularisierte (regularized) boole ´sche Operationen deren Ergebnis nur Volumina sein dürfen. (was gibt es sonst noch?) Modellierung Solid modeling mit constructive solid geometry (CSG) 3dimensionale, volumetrische Objekte werden mit diesen Operatoren verknüpft. -> Repräsentation und Konstruktionsbeschreibung Modellierung Solid modeling, CSG Macht dort Sinn, wo aus vorgefertigten Teilen andere zusammengesetzt werden. Keine gute generische Konstruktionsmethode. Modellierung Solid modeling, CSG Datenstruktur: Baum mit dreidim. Objekten als Blätter, Operationen als innere Knoten. Wurzel beschreibt Gesamtobjekt Modellierung Solid modeling, CSG Zur Darstellung können z.B. Dreiecksnetze benutzt werden. Für jede Operation muß das Dreiecksnetz geändert werden. Modellierung Solid modeling, b-reps Viele CSG-Systeme benutzen intern sog. boundary representations (b-reps). Beschreibung über Ecken, Kanten, Flächen Polyeder(Polyhedron): Ein Volumen, das durch Polygone begrenzt ist, deren Kanten jeweils Teil einer geraden Anzahl an Polygonen sind. Modellierung Solid modeling, b-reps Eulers Formel: Sei V die Anzahl der Ecken eines Polyeders, E die Anzahl der Kanten und F die Anzahl der Flächen. Dann gilt: V-E+F=2 Siehe Würfel: V=8, E=12, F=6 Tetraeder: V=4, E=6, F=4 Modellierung Solid modeling mit sweeps Einfache, auch 2dim. Objekte werden durch den Raum bewegt und das dabei umschlossene Volumen ergibt das zu modellierende Objekt. Modellierung Volumina Einige bildgebende Verfahren (CT, MR, …) produzieren Meßwerte in einem Volumen -> Volumendatensatz Modellierung Datenstrukturen für Volumina Voxel: Der gesamte Raum wird in einzelne, kubische Elemente (Voxel=volume element, wie: pixel=picture element) unterteilt. Unterteilungstiefe ist abhängig von gewünschter Genauigkeit. Voxel werden als zu einem Objekt gehörig oder nicht zugehörig gekennzeichnet. CSG-Operationen->Operationen auf Voxeln Modellierung Datenstrukturen für Volumina Voxel: Modellierung Datenstrukturen für Volumina Octree: Der gesamte, würfelförmige Raum wird wird rekursiv in 8 kongruente Unterwürfel aufgeteilt. Oktanten werden als einem Objekt zugehörig oder nicht zugehörig gekennzeichnet. Adaptive Datenstruktur. Modellierung Datenstrukturen für Volumina Octree: Modellierung Datenstrukturen für Volumina Octree: Baumstruktur, 2dimensionales Beispiel Modellierung Datenstrukturen für Volumina Octree: Weitere Anwendung z.B. in der effizienten Rekonstruktion von Oberflächen aus Volumendaten beim Marching Cubes – Verfahren oder für die schnelle Bestimmung des Schnittes eines (Seh-) Strahles mit Szeneobjekten beim Raytracing. Übung Informieren Sie sich bei http://java3d.dev.java.net/ über Java3D 1. Installieren Sie Java3D (soweit nicht schon vorhanden (P:)) und übersetzen und starten Sie das HelloJava3D/HelloUniverse Programm (Installationshinweise finden Sie auf der Webseite der Veranstaltung) 1. Ändern Sie das Programm so, daß der Würfel sich um die x-Achse dreht (statt y-Achse). Tip: Benutzen Sie dazu eine Methode des