java 3d - hs-fulda.de · // create a simple shape leaf node, add it to the scene graph. 6. //...
TRANSCRIPT
Java 3DJava 3DLinien, Flächen und ObjekteLinien, Flächen und Objekte
Axel Bartsch, Okt. 2002Axel Bartsch, Okt. 2002
VirtualVirtual World Koordinaten SystemWorld Koordinaten System
Grundlagen zur Definition visueller ObjekteGrundlagen zur Definition visueller Objekte
Shape3D Shape3D –– Unterklasse der Unterklasse der LeafLeaf--KlasseKlasseEigenschaften des visuellen Objektes sind Eigenschaften des visuellen Objektes sind in in NodeComponentNodeComponent Objekten gespeichertObjekten gespeichertOptional ist ein Optional ist ein AppearanceAppearance Objekt Objekt zugeordnet zugeordnet
KlassenhierarchieKlassenhierarchiejavax
javax.vecmathjavax.media.j3d
Node
SceneGraphObject
Leaf
Shape3D
NodeComponent
Geometry
GeometryArray
Tuple*
Appearence
Point*
Vector*
Color*
Color Color CubeCube -- KlasseKlasse
KonstrukturenKonstrukturennn ColorCubeColorCube()()nn ColorCube(doubleColorCube(double scalescale))
BeispielBeispiel1. public BranchGroup createSceneGraph() {2. // Create the root of the branch graph3. BranchGroup objRoot = new BranchGroup();4.5. // Create a simple shape leaf node, add it to the scene graph.6. // ColorCube is a Convenience Utility class7. objRoot.addChild(new ColorCube(0.4));8.9. return objRoot;10. } // end of createSceneGraph method
GeometricGeometric Utility Klassen Utility Klassen -- BoxBox
Kreiert einen KastenKreiert einen KastenKantenlänge jeweils 2 MeterKantenlänge jeweils 2 MeterZentrum im UrsprungZentrum im UrsprungBox Box KonstruktorenKonstruktorennn Box()Box() –– Default BoxDefault Boxnn Box(floatBox(float xdimxdim, float , float ydimydim, float , float zdimzdim, Appearance , Appearance appearanceappearance))
GeometricGeometric Utility Klassen Utility Klassen -- ConeCone
Kreiert einen KegelKreiert einen KegelRadius: 1.0 Radius: 1.0 –– Höhe: 2.0Höhe: 2.0Zentrum der verdrängten RaumsZentrum der verdrängten Raumsist im Ursprungist im UrsprungConeCone KonstruktorenKonstruktorennn ConeCone()() –– Default Default ConeConenn Cone(floatCone(float radius, radius,
Appearance Appearance appearanceappearance))
GeometricGeometric Utility Klassen Utility Klassen -- CylinderCylinder
Kreiert einen ZylinderKreiert einen ZylinderRadius: 1.0 Radius: 1.0 –– Höhe: 2.0Höhe: 2.0Zentrum der zentralen AchsenZentrum der zentralen Achsenist im Ursprungist im UrsprungCylinderCylinder KonstruktorenKonstruktorennn CylinderCylinder()() –– Default Default CylinderCylindernn Cylinder(floatCylinder(float radius, float height)radius, float height)nn Cylinder(floatCylinder(float radius, float height,radius, float height,
Appearance Appearance appearanceappearance))
GeometricGeometric Utility Klassen Utility Klassen -- SphereSphere
Kreiert einen KugelKreiert einen KugelRadius: 1.0 Radius: 1.0 Zentrum ist im UrsprungZentrum ist im UrsprungSphereSphere KonstruktorenKonstruktorennn SphereSphere()() –– Default Default SphereSpherenn SphereSphere(float radius)(float radius)nn SphereSphere(float radius,(float radius,
Appearance appearance)Appearance appearance)
Weiteres zu Geometrischen PrimitivenWeiteres zu Geometrischen Primitiven
Keine zugewiesene Farbe sondern…Keine zugewiesene Farbe sondern…nn Referenz zu Referenz zu AppearanceAppearance nodenode KomponenteKomponente
Ohne Ohne AppearanceAppearance nodenode –– Farbe Farbe WeissWeissAnzahl Polygone auch änderbar, jedoch Anzahl Polygone auch änderbar, jedoch meistens nicht notwendigmeistens nicht notwendig
Mathematische KlassenMathematische Klassen
Punkte Punkte –– Point*Point*Farben Farben –– Color*Color*Vektoren (Normalen) Vektoren (Normalen) –– Vector*Vector*Textur Koordinaten Textur Koordinaten –– TextCoordTextCoord**
Geometrische (Geometrische (SubSub) Klassen) Klassen
Drei Kategorien von Geometrie SubklassenDrei Kategorien von Geometrie Subklassen
nn NichtNicht--Indizierte PunktIndizierte Punkt--Basierte GeometrieBasierte Geometrienn Indizierte PunktIndizierte Punkt--Basierte GeometrieBasierte Geometrienn Andere Visuelle Objekte (Text3D…)Andere Visuelle Objekte (Text3D…)
GeometryArrayGeometryArray KlasseKlasse
Nicht indizierte PunktNicht indizierte Punkt--Basierte GeometrieBasierte GeometrieFestlegung von Punkten, Linien und Festlegung von Punkten, Linien und PolygonenPolygonenZusätzliche Arrays für Farben, Zusätzliche Arrays für Farben, Oberflächen Normalen oder Textur Oberflächen Normalen oder Textur KoordinatenKoordinaten
Entwicklungsweg …. Drei Schritte …..Entwicklungsweg …. Drei Schritte …..
Schritt 1 Schritt 1 -- KonstruktionKonstruktionGeometryArray(intGeometryArray(int vertexCountvertexCount, , intint vertexFormatvertexFormat))
VertexFormatVertexFormatnn COORDINATES:COORDINATES:
SpezifiziertSpezifiziert die die KoordinatenKoordinaten. Muss . Muss gesetztgesetzt seinsein. . nn NORMALS:NORMALS:
SpezifiziertSpezifiziert die die NormalenNormalennn COLOR_3:COLOR_3:
SpezifiziertSpezifiziert die die FarbenFarben ((ohneohne TransparenzTransparenz) ) nn COLOR_4:COLOR_4:
SpezifiziertSpezifiziert die die FarbenFarben ((mitmit TransparenzTransparenz) ) nn TEXTURE_COORDINATE_2:TEXTURE_COORDINATE_2:
SpezifiziertSpezifiziert die 2D die 2D TexturTextur KoordinatenKoordinatennn TEXTURE_COORDINATE_3: TEXTURE_COORDINATE_3:
SpezifiziertSpezifiziert die 3D die 3D TexturTextur KoordinatenKoordinaten
Schritt 2 Schritt 2 –– „Füllen mit Daten“„Füllen mit Daten“
void void setCoordinate(intsetCoordinate(int index, index, float[] coordinate)float[] coordinate)
void void setColor(intsetColor(int index, index, float[] float[] colorcolor))
void void setNormal(intsetNormal(int index, index, float[] normal)float[] normal)
void void setTextureCoordinate(intsetTextureCoordinate(intindex, float[] index, float[] texCoordtexCoord))
Schritt 3 Schritt 3 -- InstanzierenInstanzieren
InstanzierenInstanzieren des des GeometryArrayGeometryArray Objektes Objektes durch ein neues Shape3D Objekt.durch ein neues Shape3D Objekt.
Beispiele Beispiele GeometryArrayGeometryArray
PointArrayPointArray LineArrayLineArray TriangleArrayTriangleArray QuadArrayQuadArray
PointArray(intPointArray(int vertexCountvertexCount, , intint vertexFormatvertexFormat))LineArray(intLineArray(int vertexCountvertexCount, , intint vertexFormatvertexFormat))TriangleArray(intTriangleArray(int vertexCountvertexCount, , intint vertexFormatvertexFormat))QuadArray(intQuadArray(int vertexCountvertexCount, , intint vertexFormatvertexFormat))
GeometryStripArrayGeometryStripArray KlasseKlasse
Wiederbenutzung von Punkten (Wiederbenutzung von Punkten (verticesvertices))àà Bessere Bessere renderingrendering PerformancePerformance
LineStripArrayLineStripArray TriangleStripArrayTriangleStripArray TriangleFanArrayTriangleFanArray
IndexedGeometryArrayIndexedGeometryArray
AppearenceAppearence und Attributeund Attribute
PointAttributesPointAttributesLineAttributesLineAttributesPolygonAttributesPolygonAttributesColoringAttributesColoringAttributesTransparencyAttributesTransparencyAttributesRenderingAttributesRenderingAttributesMaterialMaterialTextureAttributesTextureAttributesTextureTextureTexCoordGenerationTexCoordGeneration
AppearanceAppearance defaultdefault WerteWerte
falseline antialiasing enable
falsepoint antialiasing enable
1.0line width
1.0point size
CULL_BACKcull face
FASTESTtransparency mode
falsetransparency enable
POLYGON_FILLpolygon mode
SHADE_GOURAUDshade model
truedepth test enable
white (1, 1, 1)texture environment color
TEXENV_REPLACEtexture environment mode
white (1, 1, 1)color
Default valueAppearance object
Eigene Visual Eigene Visual ObjectObject KlassenKlassen1. public class VisualObject extends Shape3D{2.3. private Geometry voGeometry;4. private Appearance voAppearance;5.6. // create Shape3D with geometry and appearance7. // the geometry is created in method createGeometry8. // the appearance is created in method createAppearance9. 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 Geometry17. private Geometry createGeometry() {18. // code to create default geometry of visual object19. }20.21. private Appearance createAppearance () {22. // code to create default appearance of visual object23. }24.25. } // end of class VisualObject