No Slide Title

Download Report

Transcript No Slide Title

INTRODUCTION TO JAVA 3D
Martin Čadík
Czech Technical University in Prague, Czech Republic
department of computer science
and engineering
Content

Overview

Scene graph

Java 3D classes

Simple application

Describing objects

Groups, transforms

Behaviors, interpolators, picking

Lighting, Sound
November 27, 2002
(2)
department of computer science
and engineering
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
November 27, 2002
(3)
department of computer science
and engineering
Java3D - Overview

Java

Applications
– JRE
– SDK

– scientific visualization,
animation, web design,
simulations, virtual world
construction (CAVE), training,
games, design automation
Java 3D
– JRE
– SDK
– OpenGL
– DirectX

Code examples in
distribution
November 27, 2002
(4)
department of computer science
and engineering
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
November 27, 2002
(5)
department of computer science
and engineering
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
}
November 27, 2002
(6)
department of computer science
and engineering
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
November 27, 2002
(7)
department of computer science
and engineering
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.
November 27, 2002
(8)
department of computer science
and engineering
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
November 27, 2002
(9)
department of computer science
and engineering
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
November 27, 2002
(10)
department of computer science
and engineering
Shape3D

Fundamental mean of describing object
javax.media.j3d.Shape3D (Leaf)

Geometry
void setGeometry(Geometry geometry)

Appearance
void setAppearance(Appearance appearance)
November 27, 2002
(11)
department of computer science
and engineering
Geometry
javax.media.j3d.Geometry (NodeComponent)

GeometryArray
– LineArray, PointArray, TriangleArray, QuadArray
– Indexed~
– Stripped versions

Text3D
javax.media.j3d.Text3D
– example

Raster
– raster image
November 27, 2002
(12)
department of computer science
and engineering
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
November 27, 2002
(13)
department of computer science
and engineering
Loading content

Loader

Available loaders
– creates scene graph elements
from a file
com.sun.j3d.loaders
– 3DS, COB, DEM, DXF, IOB,
LWS, NFF, OBJ, PDB, PLAY,
SLD, VRT, VTK, WRL
– only the interface included in
Java 3D

Usage
–
–
–
–
–
import loader
create loader object
Scene variable
load file
insert Scene into the scene
graph
November 27, 2002
(14)
department of computer science
and engineering
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
November 27, 2002
(15)
department of computer science
and engineering
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.
November 27, 2002
(16)
department of computer science
and engineering
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
November 27, 2002
(17)
department of computer science
and engineering
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
November 27, 2002
(18)
department of computer science
and engineering
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.
November 27, 2002
(19)
department of computer science
and engineering
Input devices
–
–
–
–
joysticks
6DOF devices (Magellan, Ultrasonic tracker...)
buttons
real / virtual
javax.media.j3d.InputDevice interface
– implementation maps physical detectors onto
(process input, return Sensor)
Sensor
object
javax.media.j3d.Sensor (Object)
– SensorRead
object
• time-stamp
• 6DOF value, button state
November 27, 2002
(20)
department of computer science
and engineering
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
November 27, 2002
(21)
department of computer science
and engineering
Lighting the environment
javax.media.j3d.Light


Light attributes
– on/off
– color
– bounding volume and scope
Types of lights
– ambient - AmbientLight
– directional - DirectionalLight
– point - PointLight
• by default universal scope
– again: common error - forgetting
scheduling bounds
• attenuation
– spot - SpotLight
November 27, 2002
(22)
department of computer science
and engineering
Sounds
javax.media.j3d.Sound


Sound properties
– sound data
Sounds
• AIF, AU, WAV
– triggered
– continuous

(MediaContainer)
– looping parameters
– playback priority
– scheduling bounds
Sound types
– background - BackgroundSound
– point - PointSound
• attenuated
– cone - ConeSound
• attenuated
November 27, 2002
(23)
department of computer science
and engineering
Misc

Background
javax.media.j3d.Background

Fog
– exponential, linear
javax.media.j3d.Fog
November 27, 2002
(24)
department of computer science
and engineering
Acceleration

Performance Guide
–
–
–
–
–
capability bits
compilation
bounds, activation radius
geometry by reference
unordered rendering
November 27, 2002
(25)
department of computer science
and engineering
News

FastScript 3D
–
–
–
–
open source
web applets using Java3D via JavaScript and HTML
Java, Java3D required
fs.jar
November 27, 2002
(26)
department of computer science
and engineering
Java 3D
Thank you
for your attention
November 27, 2002
(27)
department of computer science
and engineering