28
Java 3D – Seminar Linien, Flächen & Linien, Flächen & geometrische Figuren geometrische Figuren von Mario Linge von Mario Linge

Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Embed Size (px)

Citation preview

Page 1: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Java 3D – Seminar

Linien, Flächen & Linien, Flächen &

geometrische Figurengeometrische Figuren

von Mario Lingevon Mario Linge

Page 2: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Themenübersicht

• kurze Einführung (Shape3D)kurze Einführung (Shape3D)

•PrimitivesPrimitives

•mathematische Klassen mathematische Klassen

•Array-KlassenArray-Klassen

Page 3: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Shape3D-Knoten

Page 4: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Shape3D formt ein virtuelles Objekt

• Unterklasse von LeafUnterklasse von Leaf

• Geometry: Struktur der Form

• Appearance: Farbe, Transparenz,...

• mehrfach verwendbar

Page 5: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Shape3D Konstuktoren und Methoden

Konstruktoren:Shape3D( )

Shape3D( Geometry geo, Appearance ap )

Methoden:void setGeometry( Geometry geo )

void setAppearance( Appearance ap)

Page 6: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Übersicht

• Utility-Klassen fertige Objekte, Box, Cone…

• mathematische Klassen Tupel, Points, Color

• Array - Klassen

LineArray bis TriangleFanArray

Page 7: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Utility -Klassen

• klassische Grundkörper

•com.sun.j3d.utils.geometry.Primitive

• fertige Körper incl. Shape3D

• Größe und Erscheinung änderbar

Page 8: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

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

Page 9: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

gleiches Prinzip: Sphere

Sphere() •Default 1m Radius

Sphere(float radius)

Sphere(float radius,

Appearance appearance)

Page 10: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

ebenso Cone

Cone() •Default 1m Radius & 2m Höhe

Cone(float radius,

float height)

Cone(float radius,

float height,

Appearance appearance)

Page 11: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

…und Cylinder Cylinder() •Default 1m Radius & 2m Höhe

Cylinder(float radius,

float height)

Cylinder(float radius,

float height,

Appearance appearance)

Page 12: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Color Cube

• fertiger Würfel, verschiedenfarbige Seiten

• nur noch Größe änderbar, keine Appearance

• abgeleitet von Shap3D

Page 13: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Wie binde ich Primitives ein?

Beispiel

Page 14: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

mathematische Klassen

•javax.vecmath.* - Package

•sieben abstrakte Tuple*-Klassen

•alle anderen Klassen erben von Tuple*

Page 15: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

mathematische Klassen

• Point-Klassen (für Koordinaten)

•Color-Klasse (Farbe)

•Vector-Klassen (Oberflächennormale)

Page 16: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Konstruktoren & Methoden

Point3f()• Defaultwerte(0,0,0)

Point3f(float x,

float y,

float z)

void set(float x, floaty)          

Page 17: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Geometry-Array-Klassen

•javax.media.j3d.Geometry

•Alle erben von Geometry-Array(abstrakt)

•Modellierung komplizierter Objekte

•Punkte, Linien, Polygone, Flächen

          

Page 18: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Geometry-Array-Klassen

LineArray

TriangleArray

LineSripeArray

TriangleStripeArray

Page 19: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

3 Schritte zur Erstellung

1. Objekt erzeugen

2. Objekt mit Daten füllen

3. Referenzieren aus einem Shape3D Objekt

          

Page 20: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Schritt 1 Leeres Objekt erzeugen

LineArray myLine =

new LineArray (2, LineArray.COORDINATES);

vertexCount: Anzahl der Vertices

vertexFormat: Welcher Datentyp

vertexFormat: COORDINATES, NORMALS, COLOR_3...

          

Page 21: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

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));

         

Page 22: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Schritt 3 Referenzieren von Shape3D

BG = new BranchGroup();

BG.addChild(new Shape3D(myLine));

Page 23: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Beispiel

Page 24: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

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

Page 25: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

IndexedGeometryArray

•Ähnlich wie GeometryArray-Klasse

•Spezielle Lösung zur Wiederverwendung von Punkten innerhalb des Index

•Index kann auf sich selbst verweisen

Page 26: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

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);

Page 27: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

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

Page 28: Java 3D – Seminar Linien, Flächen & geometrische Figuren von Mario Linge

Noch Fragen

? ? ?