Java 3D

Werbung
Java 3D
Linien, Flächen und Objekte
Axel Bartsch, Okt. 2002
Virtual World Koordinaten System
Grundlagen zur Definition visueller Objekte
Shape3D – Unterklasse der Leaf-Klasse
Eigenschaften des visuellen Objektes sind
in NodeComponent Objekten gespeichert
Optional ist ein Appearance Objekt
zugeordnet
Klassenhierarchie
javax
javax.media.j3d
javax.vecmath
SceneGraphObject
Tuple*
NodeComponent
Point*
Appearence
Node
Leaf
Shape3D
Vector*
Color*
Geometry
GeometryArray
Color Cube - Klasse
Konstrukturen
n
n
ColorCube()
ColorCube(double scale)
Beispiel
1. public BranchGroup createSceneGraph() {
2. // Create the root of the branch graph
3. BranchGroup objRoot = new BranchGroup();
4.
5. // Create a simple shape leaf node, add it to the scene graph.
6. // ColorCube is a Convenience Utility class
7. objRoot.addChild(new ColorCube(0.4));
8.
9. return objRoot;
10. } // end of createSceneGraph method
Geometric Utility Klassen - Box
Kreiert einen Kasten
Kantenlänge jeweils 2 Meter
Zentrum im Ursprung
Box Konstruktoren
n
n
Box() – Default Box
Box(float xdim, float ydim, float
zdim, Appearance appearance)
Geometric Utility Klassen - Cone
Kreiert einen Kegel
Radius: 1.0 – Höhe: 2.0
Zentrum der verdrängten Raums
ist im Ursprung
Cone Konstruktoren
n
n
Cone() – Default Cone
Cone(float radius,
Appearance appearance)
Geometric Utility Klassen - Cylinder
Kreiert einen Zylinder
Radius: 1.0 – Höhe: 2.0
Zentrum der zentralen Achsen
ist im Ursprung
Cylinder Konstruktoren
n
n
n
Cylinder() – Default Cylinder
Cylinder(float radius, float height)
Cylinder(float radius, float height,
Appearance appearance)
Geometric Utility Klassen - Sphere
Kreiert einen Kugel
Radius: 1.0
Zentrum ist im Ursprung
Sphere Konstruktoren
n
n
n
Sphere() – Default Sphere
Sphere(float radius)
Sphere(float radius,
Appearance appearance)
Weiteres zu Geometrischen Primitiven
Keine zugewiesene Farbe sondern…
n
Referenz zu Appearance node Komponente
Ohne Appearance node – Farbe Weiss
Anzahl Polygone auch änderbar, jedoch
meistens nicht notwendig
Mathematische Klassen
Punkte – Point*
Farben – Color*
Vektoren (Normalen) – Vector*
Textur Koordinaten – TextCoord*
Geometrische (Sub) Klassen
Drei Kategorien von Geometrie Subklassen
n
n
n
Nicht-Indizierte Punkt-Basierte Geometrie
Indizierte Punkt-Basierte Geometrie
Andere Visuelle Objekte (Text3D…)
GeometryArray Klasse
Nicht indizierte Punkt-Basierte Geometrie
Festlegung von Punkten, Linien und
Polygonen
Zusätzliche Arrays für Farben,
Oberflächen Normalen oder Textur
Koordinaten
Entwicklungsweg …. Drei Schritte …..
Schritt 1 - Konstruktion
GeometryArray(int vertexCount, int vertexFormat)
VertexFormat
n
COORDINATES:
Spezifiziert die Koordinaten. Muss gesetzt sein.
n
NORMALS:
Spezifiziert die Normalen
n
COLOR_3:
Spezifiziert die Farben (ohne Transparenz)
n
COLOR_4:
Spezifiziert die Farben (mit Transparenz)
n
TEXTURE_COORDINATE_2:
Spezifiziert die 2D Textur Koordinaten
n
TEXTURE_COORDINATE_3:
Spezifiziert die 3D Textur Koordinaten
Schritt 2 – „Füllen mit Daten“
void setCoordinate(int index,
float[] coordinate)
void setColor(int index,
float[] color)
void setNormal(int index,
float[] normal)
void setTextureCoordinate(int
index, float[] texCoord)
Schritt 3 - Instanzieren
Instanzieren des GeometryArray Objektes
durch ein neues Shape3D Objekt.
Beispiele GeometryArray
PointArray
LineArray
TriangleArray
QuadArray
PointArray(int vertexCount, int vertexFormat)
LineArray(int vertexCount, int vertexFormat)
TriangleArray(int vertexCount, int vertexFormat)
QuadArray(int vertexCount, int vertexFormat)
GeometryStripArray Klasse
Wiederbenutzung von Punkten (vertices)
à Bessere rendering Performance
LineStripArray
TriangleStripArray
TriangleFanArray
IndexedGeometryArray
Appearence und Attribute
PointAttributes
LineAttributes
PolygonAttributes
ColoringAttributes
TransparencyAttributes
RenderingAttributes
Material
TextureAttributes
Texture
TexCoordGeneration
Appearance default Werte
Appearance object
Default value
color
white (1, 1, 1)
texture environment mode
TEXENV_REPLACE
texture environment color
white (1, 1, 1)
depth test enable
true
shade model
SHADE_GOURAUD
polygon mode
POLYGON_FILL
transparency enable
false
transparency mode
FASTEST
cull face
CULL_BACK
point size
1.0
line width
1.0
point antialiasing enable
false
line antialiasing enable
false
Eigene Visual Object Klassen
1. public class VisualObject extends Shape3D{
2.
3. private Geometry voGeometry;
4. private Appearance voAppearance;
5.
6. // create Shape3D with geometry and appearance
7. // the geometry is created in method createGeometry
8. // the appearance is created in method createAppearance
9. public VisualObject() {
10.
11. voGeometry = createGeometry();
12. voAppearance = createAppearance();
13. this.setGeometry(voGeometry);
14. this.setAppearance(voAppearance);
15. }
16.
Getting Started with the Java 3D API Chapter 2. Creating Geometry
17. private Geometry createGeometry() {
18. // code to create default geometry of visual object
19. }
20.
21. private Appearance createAppearance () {
22. // code to create default appearance of visual object
23. }
24.
25. } // end of class VisualObject
Herunterladen