230 likes | 368 Views
Java3D. Overview Scene graph Java 3D classes Describing objects Groups, transforms Behaviors, interpolators Lighting. What is Java3D . API Applications or Applets “Write once, run anywhere” platform independent (IBM AIX, HP-UX, Linux, SGI IRIX, Solaris/Sparc, Windows)
E N D
Java3D • Overview • Scene graph • Java 3D classes • Describing objects • Groups, transforms • Behaviors, interpolators • Lighting
What is Java3D • API • Applications or Applets • “Write once, run anywhere” • platform independent (IBM AIX, HP-UX, Linux, SGI IRIX, Solaris/Sparc, Windows) • display environments • scalable • scene graph-based
Java JRE SDK Java 3D JRE SDK OpenGL DirectX Code examples in distribution Applications scientific visualization, animation, web design, simulations, virtual world construction (CAVE), training, games, design automation Java3D – Overview
VirtualUniverse to contain all 3D data typically one per application SimpleUniverse Locale object View describes how to view 3D content multiple views per universe View Platform (movable) Content Branch describes 3D content Java3D Scene Graph
Java3D renderer • Canvas 3D • surface onto which a View renders • one canvas per view • there can be multiple canvases per app while (true) { Process input if (exit request)break Check for collisions Perform behaviors Start playing sounds Traverse scene graph and render objects } Cleanup
Java3D classes • javax.media.j3d package • javax.media.j3d.VirtualUniverse • Enumeration getAllLocales( ) • javax.media.j3d.Locale • VirtualUniverse getVirtualUniverse( ) • void addBranchGraph( Branchgroup branchGroup ) • void removeBranchGraph( Branchgroup branchGroup ) • Enumeration getAllBranchGraphs( ) • javax.media.j3d.SceneGraphObject
Java3D classes • javax.media.j3d.Node • Shapes, Groups, Sounds, Lights, etc. • parent node • location • bounding volume • javax.media.j3d.NodeComponent • attributes • Shape geometry, Shape appearance, Shape texture, etc.
Java3D classes • javax.vecmath package • javax.vecmath.Tuple3d • Vector3d • Point3d, Color3d, etc.
Coordinate System, Elements • Coordinate system • Right-handed • +X is to the right • +Y is up • +Z is towards the viewer • Angles in radians • Distance in meters • Elements in a Geometry • Coordinates • Normals • Colors • TextureCoordinates
Simple Java3D application • Construct view branch • Canvas3D • SimpleUniverse • VirtualUniverse, Locale, BranchGroup, TransformGroup, ViewPlatform, View • Construct content branch • BranchGroup • TransformGroup • Shape3D, Light, Sound... • Behavior
Shape3D • Fundamental mean of describing object • javax.media.j3d.Shape3D (Leaf) • Geometry • void setGeometry(Geometry geometry) • Appearance • void setAppearance(Appearance appearance)
Geometry javax.media.j3d.Geometry (NodeComponent) • GeometryArray • LineArray, PointArray, TriangleArray, QuadArray • Indexed~ • Text3D • Raster • raster image
Appearance javax.media.j3d.Appearance (NodeComponent) • Specifies how to render Geometry sibling • Color (intrinsic) and shading (flat, Gouraud) • ColoringAttributes • Material • Transparency • TransparencyAttributes • Line, point, polygon attributes • LineAttributes, PointAttributes, PolygonAttributes • Rendering control • Texture mapping
Loader creates scene graph elements from a file com.sun.j3d.loaders only the interface included in Java 3D Usage import loader create loader object Scene variable load file insert Scene into the scene graph Available loaders 3DS, COB, DEM, DXF, IOB, LWS, NFF, OBJ, PDB, PLAY, SLD, VRT, VTK, WRL Loading content
Grouping • exactly one parent, arbitrary children javax.media.j3d.Group (Node) BranchGroup,OrderedGroup, SharedGroup (Link), Switch, TransformGroup • child rendering order determines Java 3D • can perform sorting for better rendering efficiency • BranchGroups • can be attached to Locale -->it makes it live --> constrains by capabilities • can be compiled
Transforming • TransformGroup • new coordinate system relative to parent • Transform3D (Object) • Transform3D describes translation, rotation, and scaling • A transform may be built from and represented by a 4x4 matrix, or by helper utility methods • TransformGroup creates a new coordinate system for its children, transformed by a Transform3D object • All children are rendered. Rendering is done in any order to allow for optimal rendering paths and parallelism in the rendering process.
Behaviors • javax.media.j3d.Behavior • code to run (processStimulus) • wakeup conditions • frame or milliseconds have elapsed • AWT event • transform change • collision • scheduling bounds • activation radius intersects scheduling bounds • runs only when necessary • common error - forgetting scheduling bounds
Interpolators • javax.media.j3d.Interpolator • simple behaviors • vary a parameter from starting to ending value • Time-to-Alpha mapping (Alpha (Object) <0,1>) • Alpha-to-Value mapping • Target (TransformGroup) PositionInterpolator, PositionPathInterpolator, ColorInterpolator, etc.
Lighting the environment • Types of lights • ambient - AmbientLight • directional - DirectionalLight • point - PointLight • attenuation • spot – SpotLight • Light attributes • on/off • color • bounding volume and scope • by default universal scope • again: common error - forgetting scheduling bounds
Misc • Much more • Fog • Sound • FastScript3D • etc
Summary – Building blocks • Reading data from input files • Creation of a Java3D scene • Simple geometry • Interaction • Animation • Lights and textures • Advanced modelling
References • 1998 SUN presentation: http://java.sun.com/products/java-media/3D/collateral/presentation/ • Java3D 1.3 API documentation: http://java.sun.com/products/java-media/3D/forDevelopers/J3D_1_3_API/j3dapi/index.html • Java3D latest release page: http://java.sun.com/products/java-media/3D/index.jsp • A Java3D tutorial: http://www.j3d.org/tutorials/raw_j3d/ • Yet another tutorial: http://www.acm.org/crossroads/xrds5-2/ovp52.html Thanks to Martin Cadik from CTU in Prague.