FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe.

Slides:



Advertisements
Ähnliche Präsentationen
Eine Seminararbeit von Gerd Mühlinghaus
Advertisements

Objektorientierte Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Ein Beispiel in Java.
Java3D Einfacher scene graph View branch graph BG Shape3D Knoten S
Application Programming Interface Graphische Datenverarbeitung
Linien, Flächen & geometrische Figuren von Mario Linge
Geometrie Programmierung beginnend bei 0 ist
Java: Programmierung grafischer Oberflächen
Threads Richard Göbel.
Java: Reversi Spielbrett
FH-Hof Texturen Richard Göbel. FH-Hof Anwendungen von Texturen Darstellung von 2D-Bildern Gestaltung von Oberflächen Simulation komplexer Geometrien...
Java: Objektorientierte Programmierung
FH-Hof Geometrie Richard Göbel. FH-Hof Aufbau des virtuellen Universums.
Java2D Richard Göbel.
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
Java: Programmierung grafischer Oberflächen
Java: Dynamische Datentypen
Einführung in die Programmierung von 3D-Grafiken Basis ist Java3D
Listen Richard Göbel.
Indirekte Adressierung
Licht und Schatten Richard Göbel.
FH-Hof Automatisches Erzeugen von Geometrie Richard Göbel.
FH-Hof Animation - Teil 1 Richard Göbel. FH-Hof Themen Darstellung der Geometrie ändern (Transformation, Appearance, etc.) Geometrie ändern (Morphing)
Java: Grundlagen der Sprache
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
FH-Hof Texturen Richard Göbel. FH-Hof Anwendungen von Texturen Darstellung von 2D-Bildern Gestaltung von Oberflächen Simulation komplexer Geometrien...
FH-Hof Java 2D - Kontext für Zeichenoperationen Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Ein Beispiel in Java.
Erweiterte Zuweisungskompatibilität
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Java 3D Carina Fleck Licht und Material.
Java3d „Licht und Material“
Java-Kurs Grafik Julian Drerup.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Programmieren mit JAVA
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
03 - Paint Das Zeichenprogramm EMMA Paint2 Aufgabenstellung Entwicklung eines ausschließlich in JAVA programmierten Graphikprogrammes. Vergleichsprodukte:
© Prof. Dr. H. Gläser, Graphische Datenverarbeitung Benutzer Interaktion Benutzer Interaktion (interaction): die virtuelle Welt reagiert auf Benutzer Eingaben.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Step by step zum JFrame 1 Zum JFrame Step by step by step by step by step by step by step by step by.
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
© 2006 MPohlig Grundkurs Informatik mit Java 1 JFrame-Vorlage Step by step by step by step by step by step by step by step by.
FH-Hof Konfiguration eines Universums Richard Göbel.
FH-Hof Licht Richard Göbel. FH-Hof Licht in Java3D - Basisideen Bereitstellung unterschiedlicher Lichtquellen Definition der Wirkung einer Beleuchtung.
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Java: Programmierung grafischer Oberflächen
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Verhalten von Objekten in der Szene
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
© 2005 Pohlig Informatik Jg. 11 mfH Michael Pohlig 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Java Programme nur ein bisschen objektorientiert.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Venusspiegel und Marsschild
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
 Präsentation transkript:

FH-Hof Java3D - Grundlagen Richard Göbel

FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe eines Renderer Der Renderer: ist kein Java-Programm nutzt Hardware-Unterstützung für die effiziente Darstellung von 3D Grafiken Die Geschwindigkeit der Darstellung ist weitgehend unabhängig von der Effizienz des Benutzerprogramms.

FH-Hof Szenengraph: Aufbau

FH-Hof Szenengraph: Darstellung Die Klasse JFrame mit einem Objekt der Klasse Canvas3D stellt einen Szenengraph dar. Ein Objekt der Klasse SimpleUniverse enthält eine Objekt der Klasse Locale sowie ein Objekt der Klasse ViewingPlatform. Dem Objekt der Klasse SimpleUniverse wird das Canvas3D-Objekt als Darstellungsbereich übergeben. Gruppen und Formen lassen sich mit addChild zu dem Universum hinzufügen.

FH-Hof Aufbau des Programms – Funktion main public class Cube extends Canvas3D {... public static void main(String[] args) { JFrame frame = new JFrame(); frame.setSize(200,200); frame.getContentPane().add(new Cube()); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); }}); frame.setVisible(true); }

FH-Hof Aufbau des Programms - Konstruktor public class Cube extends Canvas3D {... public Cube() { super(SimpleUniverse.getPreferredConfiguration()); SimpleUniverse u = new SimpleUniverse(this); u.getViewingPlatform().setNominalViewingTransform( ); BranchGroup scene = createSceneGraph(); u.addBranchGraph(scene); }... }

FH-Hof Aufbau des Programms - Szenengraph public class Cube extends Canvas3D {... public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); objRoot.addChild(new ColorCube(0.2)); objRoot.compile(); return objRoot; }... }

FH-Hof Transformationen: Konzept TransformGroup enthält alle Objekte, auf die eine Transformation angewendet wird. Die Art der Transformation wird durch eine Matrix der Klasse Transform3D definiert Belegung der Matrix zum Beispiel mit den folgenden Methoden: void setRotation(AxisAngle4d a1) void setScale(double scale) void setTranslation(Vector3d trans)

FH-Hof Transformationen: Beispiel TransformGroup trans = new TransformGroup(); objRoot.addChild(trans); trans.addChild(new ColorCube(0.2)); Transform3D m1 = new Transform3D(); m1.setRotation(new AxisAngle4d(0,1,0,Math.PI / 4)); trans.setTransform(m1);

FH-Hof Mauskontrolle BranchGroup objRoot = new BranchGroup(); TransformGroup trans = new TransformGroup(); objRoot.add(trans); trans.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE); MouseRotate mRot = new MouseRotate(trans); MouseTranslate mTrans = new MouseTranslate(trans); BoundingSphere bounds = new BoundingSphere(); mRot.setSchedulingBounds(bounds); mTrans.setSchedulingBounds(bounds); trans.addChild(mRot); trans.addChild(mTrans); trans.addChild(... );

FH-Hof Koordinaten des virtuellen Universums

FH-Hof Geometrische Primitive

FH-Hof Unterklassen von GeometryArray Einzelne Punkte ohne Verbindung lassen sich mit Hilfe eines PointArray speichern. Ein Objekt der Klasse LineArray speichert Paare von Punkten, wobei jeweils zwei aufeinander folgende Punkte mit einer Linie verbunden sind. Eine Menge von Dreiecken kann mit einem TriangleArray gespeichert werden. Hier besteht ein Dreieck aus jeweils drei aufeinander folgenden Punkten. In einem QuadArray werden vier aufeinander folgende Punkte als Viereck interpretiert. Ein GeometryStripArray enthält Linien oder Dreiecke, die gemeinsame Punkte enthalten.

FH-Hof Unterklassen GeometryStripArray

FH-Hof Inhalt eines GeometryArray Punkte der Geometrie Farben der Form, die zunächst den Punkten zugeordnet werden. Normal-Vektoren welche die Ausrichtung der Oberfläche festlegen (Beleuchtung). Information über die Abbildung eines Texturbildes auf die Oberfläche der Form.

FH-Hof Konstruktor für ein GeometryArray (int vertexCount, int vertexFormat) mit: vertexCount:Anzahl der Punkte vertexFormat:Enthaltene Informationen Deklaration der enthaltenen Information mit den folgenden Konstanten: COORDINATES NORMALS COLOR_3 oder COLOR_4 TEXTURE_COORDINATE_2 oder TEXTURE_COORDINATE_3 Beispiel: ta = new TriangleArray(12, TriangleArray.COORDINATES | TriangleArray.COLOR_3);

FH-Hof Methoden für ein GeometryArray setCoordinate(int index, PointXX coordinate) setCoordinates(int index, PointXX[] coordinates) setColor(int index, ColorXX color) setColors(int index, ColorXX[] colors) setNormal(int index, VectorXX normal) setNormals(int index, VectorXX[] normals)

FH-Hof Beispiel für eine Geometrie private Geometry testGeometry() { TriangleArray ta = new TriangleArray (3, TriangleArray.COORDINATES | TriangleArray.COLOR_3); ta.setCoordinate(0, new Point3f(0f,0f,0f)); ta.setCoordinate(1, new Point3f(1f,0f,0f)); ta.setCoordinate(2, new Point3f(0f,1f,0f)); Color3f red = new Color3f(1f,0f,0f); ta.setColor(0,red); ta.setColor(1,red); ta.setColor(2,red); return ta } Einbindung: new Shape3D(testGeometry())

FH-Hof Klassen für Punkte, Vektoren und Farben Aufbau eines Klassennamen: Typ des Objekts (Point, Vector oder Color). Anzahl der Komponenten (2, 3 oder 4) Datentyp der Komponenten (f für float, d für Double) Beispiele: Point3f Color4d

FH-Hof Appearance: Konzept Objekte der Klasse Appearance definieren die Darstellung einer Geometrie: Die Darstellung von Punkten: PointAttributes Darstellung von Linien:LineAttribute Darstellung von Polygonen: PolygonAttributes. Farbe: ColoringAttributes Transparenz: TransparencyAttributes Oberflächenmaterial:Material Texturen: Texture und TextureAttributes Weitere Attribute: RenderingAttributes.

FH-Hof Appearance - Beispiel für die Anwendung Appearance ap = new Appearance(); ap.setPolygonAttributes( new PolygonAttributes(PolygonAttributes.POLYGON_LINE, PolygonAttributes.CULL_BACK, 0)); ap.setLineAttributes( new LineAttributes(1f, LineAttributes.PATTERN_DASH, false)); trans.addChild(new Shape3D(testGeometry(),ap));

FH-Hof Appearance - Vorder- und Rückseite

FH-Hof Klassen für Geometrien von Basisformen Basisformen lassen sich mit entsprechenden Unterklassen der Klasse Group erzeugen:· Klasse Box: Quader Klasse Cone: Kegel Klasse Cylinder: Zylinder Klasse Sphere: Kugel Beispiel: Erzeugen eines Kegels trans.addChild( new Cone(0.2f, 0.6f, new Appearance()));

FH-Hof Geometrie für 2D-Texte Ein Objekt der Klasse Text2D erzeugt eine Unterklasse von Shape3D für einen Text: Text2D text2D = new Text2D("FH Hof", new Color3f(0.5f,0.5f,1f), "Helvetica", 48, Font.ITALIC);.addChild(text2D);

FH-Hof Geometrie für 3D-Texte - Ansatz Objekt der Klasse Font3D aus einem Font erzeugen Konstruktor der Klasse Font3D ein Objekt der Klasse FontExtrusion übergeben. Geometrie mit Hilfe eines Objekts der Klasse Text3D aus Font3D und Text erzeugen. Darstellung der Geometrie mit Hilfe eines Objekts der Klasse Shape3D.

FH-Hof Geometrie für 3D-Texte - Anweisungen Font font = new Font("Helvetica", Font.PLAIN, 2); Font3D font3D = new Font3D(font, new FontExtrusion()); Text3D textGeom = new Text3D(font3D, new String("FH Hof"), new Point3f(1f,0f,-5f));.addChild(new Shape3D(textGeom, new Appearance()));

FH-Hof Hintergrund setzen - Anweisungen Background backg = new Background(0.5f,0.5f,1f); // ggf. Geometry für Hintergrund setzen backg.setGeometry(... ); backg.setApplicationBounds( new BoundingSphere(new Point3d(), 100)); objRoot.addChild(backg);