fh-hof java3d - grundlagen richard göbel. fh-hof java3d konzept erzeugung eines szenengraphen als...
TRANSCRIPT
![Page 1: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/1.jpg)
FH-Hof
Java3D - Grundlagen
Richard Göbel
![Page 2: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/2.jpg)
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.
![Page 3: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/3.jpg)
FH-Hof
Szenengraph: Aufbau
VirtualUniverse Objekt
Locale Objekte
Group Objekte
Shape3D Objekte
![Page 4: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/4.jpg)
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.
![Page 5: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/5.jpg)
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); }}
![Page 6: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/6.jpg)
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); } . . .}
![Page 7: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/7.jpg)
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;
}
. . .
}
![Page 8: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/8.jpg)
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)
![Page 9: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/9.jpg)
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);
![Page 10: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/10.jpg)
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( . . . );
![Page 11: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/11.jpg)
FH-Hof
Koordinaten des virtuellen Universums
Y
X
Z
DarstellungsflächeBeobachter Szene
![Page 12: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/12.jpg)
FH-Hof
Geometrische Primitive
Punkt Linie Dreieck Viereck (Quad)
![Page 13: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/13.jpg)
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.
![Page 14: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/14.jpg)
FH-Hof
Unterklassen GeometryStripArray
LineStripArray TriangleStripArray TriangleFanArray
0
1
3
2
0
1
2
3 5
4
6
7
1
2 3
0
4
![Page 15: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/15.jpg)
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.
![Page 16: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/16.jpg)
FH-Hof
Konstruktor für ein GeometryArray
<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);
![Page 17: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/17.jpg)
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)
![Page 18: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/18.jpg)
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())
![Page 19: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/19.jpg)
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
![Page 20: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/20.jpg)
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.
![Page 21: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/21.jpg)
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));
![Page 22: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/22.jpg)
FH-Hof
Appearance- Vorder- und Rückseite
0
1
2
0
1
2
3 5
4
6
7
![Page 23: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/23.jpg)
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()));
![Page 24: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/24.jpg)
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);
<Gruppe>.addChild(text2D);
![Page 25: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/25.jpg)
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.
![Page 26: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/26.jpg)
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));
<Gruppe>.addChild(new Shape3D(textGeom,
new Appearance()));
![Page 27: FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe](https://reader035.vdocuments.site/reader035/viewer/2022081602/55204d6449795902118ba5a5/html5/thumbnails/27.jpg)
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);