1 / 27

INTRODUCTION TO JAVA 3D

INTRODUCTION TO JAVA 3D. Martin Č adík Czech Technical University in Prague, Czech Republic. Content. Overview Scene graph Java 3D classes Simple application Describing objects Groups, transforms Behaviors, interpolators, picking Lighting, Sound. What Is Java3D?. API

matsu
Download Presentation

INTRODUCTION TO JAVA 3D

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. INTRODUCTION TO JAVA 3D Martin Čadík Czech Technical University in Prague, Czech Republic

  2. Content • Overview • Scene graph • Java 3D classes • Simple application • Describing objects • Groups, transforms • Behaviors, interpolators, picking • Lighting, Sound

  3. 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 • higher level API • objects instead of vertices • content instead of rendering process • scalable • scene graph - based

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

  5. Java3D Scene Graph • 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

  6. Java 3D 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

  7. Java 3D Classes • javax.media.j3d package javax.media.j3d.VirtualUniverse (java.lang.Object) Enumeration getAllLocales( ) javax.media.j3d.Locale VirtualUniverse getVirtualUniverse( ) void addBranchGraph( Branchgroup branchGroup ) removeBranchGraph( Branchgroup branchGroup ) void Enumeration getAllBranchGraphs( ) javax.media.j3d.SceneGraphObject Capabilities (read/write transforms, geometry coords...) javax.media.j3d.Node javax.media.j3d.NodeComponent

  8. Java 3D Classes javax.media.j3d.Node • Shapes, Groups, Sounds, Lights, etc. • parent node • location (local, VWorld transform) • bounding volume (automatical computation) javax.media.j3d.NodeComponent • attributes • Shape geometry, Shape appearance, Shape texture, etc. • javax.vecmath package javax.vecmath.Tuple3d Vector3d Point3d, Color3d, etc.

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

  10. Simple Java3D Application • Construct view branch • Canvas3D • SimpleUniverse • VirtualUniverse, Locale, BranchGroup, TransformGroup, ViewPlatform, View • Construct content branch • BranchGroup • TransformGroup • Shape3D, Light, Sound... • Behavior • SimpleApp3D • code

  11. Shape3D • Fundamental mean of describing object javax.media.j3d.Shape3D (Leaf) • Geometry void setGeometry(Geometry geometry) • Appearance void setAppearance(Appearance appearance)

  12. Geometry javax.media.j3d.Geometry (NodeComponent) • GeometryArray • LineArray, PointArray, TriangleArray, QuadArray • Indexed~ • Stripped versions • Text3D javax.media.j3d.Text3D • example • Raster • raster image

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

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

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

  16. Transforming • world coordinate system TransformGroup • new coordinate system relative to parent • transformation accumulate as graph is traversed Transform3D (Object) • 4 x 4 matrix of doubles - Matrix4d • translate, rotate, scale, shear • must be affine (no perspective) • helper methods • setIdentity, rotX.., setScale, setTranslation, setRotation, etc.

  17. Texture mapping • Appearance node Texture2D (abstract Texture (NodeComponent))- image textures, example Texture3D - volume textures • Texture format • Intensity • Luminance, Alpha • RGB, RGBA • TextureAttributes (NodeComponent) • Mode: Blend, Decal, Modulate, Replace • Transform • Perspective correction

  18. Behaviors javax.media.j3d.Behavior • code to run (processStimulus) • wakeup conditions • frame or milliseconds have elapsed • AWT event • transform change • collision, view platform or sensor is close • scheduling bounds • activation radius intersects scheduling bounds • runs only when necessary • common error - forgetting scheduling bounds

  19. 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 • transforms, colors, switches • Target (f.e. TransformGroup) PositionInterpolator, RotationInterpolator, ColorInterpolatorm, etc.

  20. Input devices • joysticks • 6DOF devices (Magellan, Ultrasonic tracker...) • buttons • real / virtual javax.media.j3d.InputDevice interface • implementation maps physical detectors onto Sensor object(process input, return Sensor) javax.media.j3d.Sensor (Object) • SensorRead object • time-stamp • 6DOF value, button state

  21. Picking features • selecting Shapes • interaction methods • designed for speed (Bounds) • Pick methods (Node) • take PickShape (PickPoint, PickRay, PickSegment) • return SceneGraph objects • f.e.: pickAll, pickAllSorted, pickClosest • example

  22. javax.media.j3d.Light 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 Lighting the environment

  23. javax.media.j3d.Sound Sounds triggered continuous Sound types background - BackgroundSound point - PointSound attenuated cone - ConeSound attenuated Sound properties sound data (MediaContainer) AIF, AU, WAV looping parameters playback priority scheduling bounds Sounds

  24. Misc • Background javax.media.j3d.Background • Fog • exponential, linear javax.media.j3d.Fog

  25. Acceleration • Performance Guide • capability bits • compilation • bounds, activation radius • geometry by reference • unordered rendering

  26. News • FastScript 3D • open source • web applets using Java3D via JavaScript and HTML • Java, Java3D required • fs.jar

  27. Java 3D Thank you for your attention

More Related