Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe."—  Präsentation transkript:

1 FH-Hof Java3D - Grundlagen Richard Göbel

2 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.

3 FH-Hof Szenengraph: Aufbau

4 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.

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

6 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); }... }

7 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; }... }

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

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

10 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(... );

11 FH-Hof Koordinaten des virtuellen Universums

12 FH-Hof Geometrische Primitive

13 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.

14 FH-Hof Unterklassen GeometryStripArray

15 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.

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

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

18 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())

19 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

20 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.

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

22 FH-Hof Appearance - Vorder- und Rückseite

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

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

25 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.

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

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


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

Ähnliche Präsentationen


Google-Anzeigen