Java 3D – Seminar
Linien, Flächen & Linien, Flächen &
geometrische Figurengeometrische Figuren
von Mario Lingevon Mario Linge
Themenübersicht
• kurze Einführung (Shape3D)kurze Einführung (Shape3D)
•PrimitivesPrimitives
•mathematische Klassen mathematische Klassen
•Array-KlassenArray-Klassen
Shape3D-Knoten
Shape3D formt ein virtuelles Objekt
• Unterklasse von LeafUnterklasse 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()• Default 2.0 m • zentriert im Ursprung
Box(float xdim,float ydim,float zdim, Appearance appearance)
•Größenangaben•Erscheinungsbild•zentriert im Ursprung
gleiches Prinzip: Sphere
Sphere() •Default 1m Radius
Sphere(float radius)
Sphere(float radius,
Appearance appearance)
ebenso Cone
Cone() •Default 1m Radius & 2m Höhe
Cone(float radius,
float height)
Cone(float radius,
float height,
Appearance appearance)
…und Cylinder Cylinder() •Default 1m Radius & 2m Höhe
Cylinder(float radius,
float height)
Cylinder(float radius,
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
LineArray
TriangleArray
LineSripeArray
TriangleStripeArray
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 IndizesIndexedLineArray axisLines = new IndexedLineArray(3, GeometryArray.COORDINATES, 4);
//neue Indizes mit tatsächlichen WertenaxisLines.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 IndexaxisLines.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
? ? ?
Top Related