Linien, Flächen & geometrische Figuren von Mario Linge Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge
Themenübersicht kurze Einführung (Shape3D) Primitives mathematische Klassen Array-Klassen
Shape3D-Knoten
Shape3D formt ein virtuelles Objekt Unterklasse von Leaf Geometry: Struktur der Form Appearance: Farbe, Transparenz,... mehrfach verwendbar
Shape3D Konstuktoren und Methoden Konstruktoren: Shape3D( ) Shape3D( Geometry geo, Appearance ap ) Methoden: void setGeometry( Geometry geo ) void setAppearance( Appearance ap)
Übersicht Utility-Klassen fertige Objekte, Box, Cone… mathematische Klassen Tupel, Points, Color Array - Klassen LineArray bis TriangleFanArray
Utility -Klassen klassische Grundkörper com.sun.j3d.utils.geometry.Primitive fertige Körper incl. Shape3D Größe und Erscheinung änderbar
Utility –Klasse: Box Box() Box(float xdim, float ydim, float zdim, Default 2.0 m zentriert im Ursprung Box(float xdim, float ydim, float zdim, Appearance appearance) Größenangaben Erscheinungsbild
gleiches Prinzip: Sphere Default 1m Radius Sphere(float radius) Sphere(float radius, Appearance appearance)
ebenso Cone Cone() Cone(float radius, float height) float height, Default 1m Radius & 2m Höhe Cone(float radius, float height) float height, Appearance appearance)
…und Cylinder Cylinder() Cylinder(float radius, float height) Default 1m Radius & 2m Höhe Cylinder(float radius, float height) float height, Appearance appearance)
Color Cube fertiger Würfel, verschiedenfarbige Seiten nur noch Größe änderbar, keine Appearance abgeleitet von Shap3D
Wie binde ich Primitives ein? Beispiel
mathematische Klassen javax.vecmath.* - Package sieben abstrakte Tuple*-Klassen alle anderen Klassen erben von Tuple*
mathematische Klassen Point-Klassen (für Koordinaten) Color-Klasse (Farbe) Vector-Klassen (Oberflächennormale)
Konstruktoren & Methoden Point3f() Defaultwerte(0,0,0) Point3f(float x, float y, float z) void set(float x, floaty)
Geometry-Array-Klassen javax.media.j3d.Geometry Alle erben von Geometry- Array(abstrakt) Modellierung komplizierter Objekte Punkte, Linien, Polygone, Flächen
Geometry-Array-Klassen LineSripeArray LineArray TriangleStripeArray TriangleArray
3 Schritte zur Erstellung 1. Objekt erzeugen 2. Objekt mit Daten füllen 3. Referenzieren aus einem Shape3D Objekt
Schritt 1 Leeres Objekt erzeugen LineArray myLine = new LineArray (2, LineArray.COORDINATES); vertexCount: Anzahl der Vertices vertexFormat: Welcher Datentyp vertexFormat: COORDINATES, NORMALS, COLOR_3 ...
Schritt 2 Objekt mit Daten füllen Setzen der Koordinaten: myLine.setCoordinate(0,new Point3f(-0.5f,-0.8f,-0.8f)); myLine.setCoordinate(1,new Point3f( 0.9f,0.8f,0.0f)); setzen der Farbe: myLine.setColor(0, new Color3f(1.0f, 0.0f, 0.0f)); myLine.setColor(1, new Color3f(1.0f, 0.0f, 0.0f));
Schritt 3 Referenzieren von Shape3D BG = new BranchGroup(); BG.addChild(new Shape3D(myLine));
Beispiel
Beachten bei der Füllung Nur gefüllte Polygone bis zu 4 Kanten Triangulator erstellt TriangleArrays: Triangulator tr = new Triangulator(); tr.triangulate(ginfo); // ginfo ist eine geometry shape.setGeometry(ginfo.getGeometryArray()); // shape ist Shape3D
IndexedGeometryArray Ähnlich wie GeometryArray-Klasse Spezielle Lösung zur Wiederverwendung von Punkten innerhalb des Index Index kann auf sich selbst verweisen
IndexedGeometryArray //3= Anzahl der Indizes mit tatsächlichen Werten //4= Gesamtanzahl der Indizes IndexedLineArray axisLines = new IndexedLineArray(3, GeometryArray.COORDINATES, 4); //neue Indizes mit tatsächlichen Werten axisLines.setCoordinate( 0, new Point3f(-1.0f, 0.0f, 0.0f)); axisLines.setCoordinate( 1, new Point3f(1.0f, 1.0f, 1.0f)); axisLines.setCoordinate( 2, new Point3f(0.5f, -1.0f, 0.0f)); //Verweis auf schon vorhandene Werte im eigenen Index axisLines.setCoordinateIndex( 0, 0);
Referenzen http:// www.java.sun.com http://webster.fhs-hagenberg.ac.at/staff/ haller/mmp5_20012002/ http://www.j3d.org/tutorials/raw_j3d/ http://www.manning.com/selman/onlinebook/ http://java.sun.com/products/java-media/3D/collateral/class_notes/slides/mt0000.htm
Noch Fragen ? ? ?