Transcript Java 3D

Java 3D Introduction
http://www.hta-bi.bfh.ch/~rfs/pwf/java3/
Stefan Rufer
Assistant Computer Science Departement
[email protected]
Todays Contents



Start
Introduction to Computer Graphics
Java 3D Tutorial Chapters – Layout:



Technical Introduction
Application in Java 3D
Example Programs
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Start






Foreword
Installing Java 3D
Running Java 3D Programs
Warm-up
Course overview
References & Sources
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Start
Objectives



Appetizer for the Course.
Know how to compile and run Java 3D
programs.
Know where to search in case of
troubles or further interest.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Start
Foreword



Determine the correct color for every
pixel.
This course is programming oriented.
Why to learn Java 3D?



It is object oriented.
It is 3D.
It is fun.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Start
Installing Java 3D

School PCs have Java 3D installed


Make sure that JDK 1.2.2 or later has been
initialized (NAL -> Java -> Initialize ...).
The SUN environment does not include Java
3D per default
# Add some directories to your PATH
#original: PATH ${HOME}/bin:${PATH}:
PATH /tools/java/JDK-1.2-AND-Java3D-1.1/bin:${HOME}/bin:${PATH}:

Check web-page for details and
troubleshooting
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Start
Running Java 3D Programs

Copy source from intranet
>javac Program.java
>java Program

It is so simple – but IF... have a look on
the web page for troubleshooting (all
JARs at the right place, also in the
JRE?).
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Start
Warm-up

Simply let us try some examples...!
http://www.hta-bi.bfh.ch/~rfs/pwf/java3/
Chapter Start, paragraph Warm-up.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Date Subject
Remark
23.10.00 Start / Introduction to Computer Graphics
30.10.00 Hello World! / The Virtual Universe
Tutorial Chapter 1, 2
6.11.00 Transformations / SceneBuilder
13.11.00 Creating Geometry / Easier Content Creation
Tutorial Chapter 2, 3
20.11.00 Interaction
Tutorial Chapter 4
27.11.00 Animation
Start
Tutorial Chapter 5
4.12.00 Lights
Tutorial Chapter 6
11.12.00 Textures
Tutorial Chapter 7
Course
Overview
18.12.00 Spline, Ray-Tracing, Future
8.1.01 Project Work Kick-off
Project work by one, two or
three people. Proposals for
projects will be accepted.
15.1.01 Project Work
22.1.01 Project Work
29.1.01 Project Work
5.2.01 Project Work
12.2.01 Project Work
19.2.01 Project Work
26.2.01 Presentations of the Project Works
Stefan Holiday
Rufer, HTA
Biel, 2000
5.3.01
Java 3D – an Introduction
Start
References & Sources


SUN and intranet web pages, links
found in documentation.
Use the glossary, it makes live easier if
you know about what exactly you are
talking.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Intro to Computer Graphics





Why Java 3D
2D versus 3D
Color Models
Hardware
Java 3D Tutorial
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Introduction to Computer Graphics
Objectives


Understand some essential basics of
computer graphics like color models.
Get an idea of what hardware is
involved if doing computer graphics.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Introduction to Computer Graphics
Why Java 3D

3D-modelers like Art*lantis




3D-languages like Java 3D or OpenGL




Easy content creation
Pre-programmed „static“ behaviour
Many pre-defined shapes, extrusions, textures...
High degree of user interaction
Start on the „green field“
Create new 3D applications (CAD, Simulator, ...)
3D-renderers like PovRay

No interaction, only one picture
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Introduction to Computer Graphics
2D versus 3D

2D




R2 => R2
Simply two dimensional
picture on 2D-Screen.
3D



R3 => R2
Match three dimensional mathematical model to
two dimensional Screen.
A new approach are Holography techniques
R3 => R3 but that‘s maybe beyond the scope of
this course...
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Introduction to Computer Graphics
Color Models

RGB is the most most important color
model for computer graphics.





Additive system
Red, Green, Blue, 8bit each
Java 3D: each color has values 0..1
Application example: ColorSpace
Other systems: CMYK, HSB...
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Introduction to Computer Graphics
Hardware (1)

Graphic Cards minimize processor load by
executing graphic commands in hardware.



DirectX
OpenGL
Raster Screen have an x-y pixel array
(=raster) to display our graphics



CRT
LCD
Counterpart: Vector graphic devices such as
analog cathode-ray oscilloscopes.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Introduction to Computer Graphics
Hardware (2)
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Introduction to Computer Graphics
Java 3D Tutorial



Tutorial by SUN
Great (as usual, it is SUN...)
Use this and the API as your reference!
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
The Virtual Universe







Basics
Scene Graph
Locales
Content Branch
View Branch
Understanding MyUniverse
Recipe for a simple Program
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
The Virtual Universe
Objectives



Know what a virtual universe and a
scene graph is.
Understand the basic parts and
elements of a scene graph.
Know the basic recipe for a Java 3D
program.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
The Virtual Universe
Basics


A virtual universe can be seen as a 1:1
representation of our own universe.
Represent structures from astronomical to
subatomic.



Floating point 3D space: 2^256 (!!) for each x,y,z.
Decimal point for 1 meter at 2^128 -> incredible
precision at incredible extend.
There is one VU-instance only (Singleton).
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
The Virtual Universe
VirtualUniverse
Scene Graph (1)


Locale
Scene Graph is the graphical
representation of the objects
in our VU.
Directed Acyclic Graph (Tree)

Nodes, arcs, parents, childs,
leaves, references and other
Reference
objects.
NodeComponent
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Group
Link
Leaf
Other objects
The Virtual Universe
Scene Graph (2)


A Java 3D program may have more
objects than those in the scene graph.
A scene graph drawing is the correct
documentation for the 3D part of a
Java 3D program.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
The Virtual Universe
Scene Graph (3)

Basic parts of a
scene graph
myVirtualUniverse
myLocale
Content
Branch
Branch
Group
a3Dobject
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Locale(s)
Branch
Group
View
Branch
myViewPlatform
The Virtual Universe
Locales (1)



How to handle the huge extend of a
virtual universe efficiently?
Our virtual universe contains at least
one Locale.
The locale is a 3D-reference point inside
the virtual universe.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
The Virtual Universe
Locales (2)


Standard Locale resides at (0,0,0) in the VU.
We can have several Locales, eg:



One as reference point of the swiss coordinate
system (located in Bordeaux, France).
A second as the architects reference point of a
building plan.
The both are related, but depending on the point
of view it is more convenient (and precise) to
work with one or the other.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
The Virtual Universe
Content Branch (1)



Contains all „visible“ objects of our
scene.
Contains all transformations for those
objects (displacement, animation, ...).
We distinguish between group nodes
and leaf nodes (see following slide).
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
The Virtual Universe
Content Branch (2)

The most common
object types
Branch
Group
...
Transform
Group
...
Appearance
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Shape3D
The Virtual Universe
View Branch
The Canvas3D will be
inserted in our application or
applet -> most important!
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
The Virtual Universe
Recipe for a simple Program
1.
2.
3.
4.
Create a Frame & a
Canvas3D object.
Create a SimpleUniverse
object which gets a
reference to the Canvas3D.
Construct the content branch.
Insert the content branch into the
Locale of the SimpleUniverse.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
The Virtual Universe
Exercises

Check Web-Page, chapter
„Virtual Universe“
http://www.hta-bi.bfh.ch/~rfs/pwf/java3/
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Hello World






The Java 3D API
Finally: Hello World!
Source Code
Class Diagram of HelloJava3D
What happens when running?
Exercises
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Hello World
Objectives


Understand the high-level structure of
the APIs involved in a Java 3D program.
Understand the code of the
HelloJava3Da example line by line.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Hello World
The Java 3D API

Packages related to the Java 3D API:




Core classes:
Utility classes:
Math classes:
AWT classes:
Stefan Rufer, HTA Biel, 2000
javax.media.j3d
com.sun.j3d.utils
javax.vecmath
javax.swing
Java 3D – an Introduction
Hello World
Finally: Hello World!

Probably the most
simple Scene Graph 
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Hello World
Source Code
public class HelloJava3Da extends Applet {
public HelloJava3Da() {
setLayout(new BorderLayout());
Canvas3D canvas3D = new Canvas3D(null);
add("Center", canvas3D);
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform();
BranchGroup scene = createSceneGraph();
simpleU.addBranchGraph(scene);
}
public BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
objRoot.addChild(new ColorCube(0.4));
return objRoot;
}
public static void main(String[] args) {
Frame frame = new MainFrame(new HelloJava3Da(), 256, 256);
}
}
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Hello World
Class Diagram of HelloJava3D
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Hello World
What happens when running?
while (true) {
Process input
Perform Behaviours //none at the moment
Traverse scene graph and render visual objects
if (request to exit) break
}
Cleanup and exit
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Hello World
Exercises

Check Web-Page, chapter „Hello World“
http://www.hta-bi.bfh.ch/~rfs/pwf/java3/
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Creating Content









Geometic Utility Classes
Mathematical Classes
Geometry Classes
GeometryArray Classes
GeometryStrip Array Classes
Indexed Geometry
Appearance and Attributes
Point- + LineAttributes
PolygonAttributes
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Creating Content
Objectives


Get an overview on how to handle
polygones in Java 3D.
Know the most important attributes that
determine the look of a polygone.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 2-6
Creating Content
Geometric Utility Classes

Box
(2x2x2 m)

Cone
(Ø2m, height 2m)

Cylinder
(Ø2m, height 2m)

Sphere
(Ø2m)

Stefan Rufer, HTA Biel, 2000
Default color white
Java 3D – an Introduction
Creating Content
Tutorial Page 2-15
Mathematical Classes (1)


Tuples are simply pairs or triples of
numbers.
For each vertex there can be up to four
javax.vecmath objects:




Points for coordinates
Colors
Vectors for normals
TexCoords for texture coordinates
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Creating Content
Mathematical Classes (2)


Vectors: mostly used for normals and
position information in 3D-space.
Normals: determined using the right
hand (remember: we have a righthanded system).
P2
n
P0
P1
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Creating Content
Tutorial Page 2-20
Geometry Classes



What to do if our shape is not a box or
a cylinder?
Create Shape3D-object, use
setGeometry() method!
For a triangle:


Three-element array
One point per element
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 2-21
2-26
Creating Content
GeometryArray Classes



Most primitive form to create shapes:
Points or lines are one pixel wide per
default.
Colors are interpolated from vertex to
vertex if specified.
(see code page 2-24, line 9+10)
P0
Stefan Rufer, HTA Biel, 2000
P1
Java 3D – an Introduction
Creating Content
Tutorial Page 2-27
GeometryStripArray Classes


More convenient: share some vertices:
Example Yoyo: Ever tried to model a
Jumbo-Jet by hand? Often geometry is
generated by mathematical calculations.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Creating Content
Tutorial Page 2-27
Indexed Geometry

Best re-use of vertices but we lose
performance using the index array.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Creating Content
Tutorial Page 2-34
Appearance and Attributes

Appearance class does not specify the
appearance directrly but contains many
links to appearance objects:
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Creating Content
Tutorial Page 2-37
Point- + LineAttributes


Points and Lines are 1 pixel wide by
default. Zooming does not affect this.
Let‘s try to change:


Thikness of the line
Antialiasing
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Creating Content
Tutorial Page 2-38
2-42
PolygonAttributes

We can set the PolygonMode:




Fill: fill the interior of the polygones
Line: connect vertices with lines
(„Drahtigttermodell“)
Point: draw only points at the vertices
Face culling: Hide front, back or none of
the faces of a polygon.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Easier Content Creation





Class Loaders
Handle a bunch of objects
Text in 2D and 3D
Background
Bounding Leaf
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Easier Content Creation
Objectives


Be able to load and display non-Java 3D
objects in a scene.
Understand background and bounding
leaf and why one of the two is not
enough.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Easier Content Creation
Tutorial Page 3-2
Class Loaders

Load 3D scene files and create Java 3D
representations (branch graph).





Read and parse file
Create Java 3D objects
Return branch group object with all the scene
contents
Insert branch group in the scene
-> J3D API Demos:

..\ObjLoad\java ObjLoad ..\geometry\galleon.obj
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Easier Content Creation
Tutorial Page 3-7
Handle a bunch of points


First create a GeometryInfo object.
Now many operations can be performed
on this object (and on our data):




Generate Normals
„Stripifying“
„Compacting“
Example: GeometryInfoApp.java
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Easier Content Creation
Tutorial Page 3-13
3-16
Text in 2D and 3D


Text2D creates a rectangular polygone
and a texture on it.
Text3D creates geometry objects for the
text that have an extrusion.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Easier Content Creation
Tutorial Page 3-22
Background


Background can be a solid color, an
image and/or a geometry.
Background is infinitely far away, you
can not go or see what‘s behind.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Easier Content Creation
Bounding Leaf


Used for different classes: Light, Fog,
Behaviour or Background.
Only an intersection with the bounding
leaf of such an object makes it visible.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Animation





Interpolators
Alpha Object
Billboard
Level of Detail (LOD)
Morphing
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Animation
Objectives


Get an impression of the different forms
of animation.
Be able to animate objects using an
Interpolator and Alpha object.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 5-11
Animation
Interpolators


Change all important
3D-object data easily.
Interpolators do not
change the
corresponding value
automatically -> Alpha
object needed.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 5-7
Animation
Alpha Object (1)



Alpha objects generate events
distributed over time.
They are used as trigger events for the
interpolators.
Some of the possible wave-forms f(t):
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 5-7
Animation
Alpha Object (2)
AlphaAtOneDuration
TriggerTime PhaseDelayDuration
Stefan Rufer, HTA Biel, 2000
AlphaAtZeroDuration
Java 3D – an Introduction
Animation
Put it together
TransformGroup objRotate = new TransformGroup();
objRotate.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Alpha alpha = new Alpha ();
RotationInterpolator rotInt =
new RotationInterpolator (alpha, objRotate);
rotInt.setSchedulingBounds(bounds);
alpha
Trigger events
objRotate
rotInt
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 5-26
Animation
Billboard



Show complex (background) geometry,
e.g. trees.
Troubles with different views.
These objects are flat:
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 5-30
5-31
Animation
Level of Detail (LOD)



As closer you are as more details you
want to see -> LOD.
Several childs of a Switch node, choose
the right one.
Long developement time for creating
the objects with different detail levels.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 5-36
Animation
Morphing




„Interpolator for geometry“.
You have to define the key frames.
The Morph class will interpolate
between the key frames.
-> Try the Java 3D example
\jdk1.3\demo\java3d\Morphing\Morphing.java
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 5-36
Animation
Exercises

Find description on the web page
(chapter animation):
www.hta-bi.bfh.ch/~rfs/pwf/java3/
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Lights







Java 3D Lighting Model
Influence
Different Light Types
Mixing Lights
Material Objects
Other Coloring Possibilities
Shadows
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 6-2
Lights
Objectives



Understand the Java 3D lighting
system.
Know about the different ways to give a
color to an object.
Recall the theory about additive light
mixing.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 6-2
Lights
Java 3D Lighting Model

There are three different reflections:





Ambient (caused by ambient light)
Diffuse („normal“ reflection)
Specular (highlight reflections of polished
material)
No inter-object reflections in Java 3D.
Light sources are not visible itself.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 6-8
6-9
Lights
Influence



There is no warning for leaving light out
of a scene.
There is no warning for not setting a
light source its influencing bounds.
Some light types have a attenuation
setting.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 6-11 ff
Lights
Different Light Types

Ambient light
As if the sky was cloudy.

Directional light
For the virtual „sun“.

Point light
For virtual lamps.

Spot light
Virtual spot lamps.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 6-17
Lights
Mixing Light


Why does an object appear in a certain
color?
White sphere, red and blue light ->
result?
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 6-21
Lights
Material Object


Color settings of the material object
represent „reflection coefficients“.
Shininess is an interesting value.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Tutorial Page 6-23
Lights
Other Coloring Possibilities

No lights needed, but no „shiny“
effects:


ColoringAttributes
Per-vertex color (KickCan example: class
Floor).
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Lights
Shadows


There are no built-in shadows in Java
3D.
Shadows in the tutorial are created
using hand-made classes and
polygones.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Textures


Basic Principles
Create a Simple Texture
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Textures
Objectives


Know what a texture is and why we
need it.
Be able to program simple textures.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Textures
Basic Principles



Detailed surface structures are hard and
expensive to build in 3D -> Texture!
„Texel“ is „texture element“ -> one pixel
of a texture.
Texture mapping: Fit image to a given
geometry.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Textures
Create a Simple Texture



Load an image
String filename = "earth.jpg";
TextureLoader loader = new
TextureLoader(filename, this);
ImageComponent2D image = loader.getImage();
Create a texture
Texture2D texture = new
Texture2D(Texture.BASE_LEVEL, Texture.RGBA,
image.getWidth(), image.getHeight());
texture.setImage(0, image);
Create 3Dobject with
appearance
Appearance appear = new Appearance();
appear.setTexture(texture);
Stefan Rufer, HTA Biel, 2000
Sphere earth = new Sphere(1.0f,
Primitive.GENERATE_TEXTURE_COORDS, appear));
Java 3D – an Introduction
Project



Information Gathering
Set-up
Deliverables
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Project
Objectives



Apply all what you have learned.
Learn more of the Java 3D API and 3D
computer graphics.
Know what you want to do -> concept,
system design, ...
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Project
Information Gathering




Search the web, get ideas.
Do a brain storming or something
similar -> write down your ideas.
Form project groups.
Discuss your ideas so that you get
ready to start with a concept.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Project
Set-up


Participants of the project.
Discussed your idea with the teacher.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Project
Deliverables



The deliverables are: source and
documentation of the project.
Documentation as HTML page or paper.
Turn in source and documentation:
ZIP file by mail (or link for download if size
> 1MB)
or
 CD-ROM

Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
A Bit More...




Spline Functions
3D-modelling
Professional Rendering
POVRay Example
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
A Bit More…
Objectives



Get a little outlook on what happens
outside of Java 3D.
Have an idea of professional tools used
in computer graphics.
Hands-on experience with POVRay.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
A Bit More…
Spline Functions




Base: Spline Functions
Applications of Spline Functions in:
Spline Curves, Spline Surfaces
Advantages: Smooth surfaces (!)
Application in Java 3D:
com.sun.j3d.utils.behaviors.interpolators.TCBSplineInterpolator
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
A Bit More…
3D-modelling


LightWave (www.newtek.com)
ZOOM
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
A Bit More…
Professional Rendering



Rendering for films like Toy Story or Titanic is
done with rendering products.
Performance is far from real time but the
experience pretty close to real world.
Examples of Products:



PRMan (www.pixar.com)
BMRT (www.bmrt.org)
POVRay (www.povray.org)
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
A Bit More…
POVRay Example




Download POVRay from
ftp.hta-bi.bfh.ch (Windows Version)
Install locally
Create a ready-made scene
Play around
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Project
What to do?




A Paper describing a 3D computer
graphics related aspect.
A Java 3D program (little demo, game,
a start for a bigger project…).
A demo with an other 3D software
(PRMan, BRMT, PovRay).
A picture of a 3D-contest (e.g. PovRay).
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Project Presentations


Deliverables
Presentations!
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Project Presentations
Deliverables

Turn in source and documentation:
ZIP file by mail (or link for download)
or
 CD-ROM


Due Date: 2nd March 2001
[email protected]
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Project Presentations
Presentations!
1 Daniel Glauser
3D-Bomberman
2 Ramon Keller
3D-Schach
3 Nicolas Leuba
Fisch-Aquarium
4 Roger Mathys
Pascal Moser
5 Philippe Schnyder
Philippe Schoch
Markus Trachsel
Murmelbahn
6 Stefan Rufer
RenderMan / BMRT
Stefan Rufer, HTA Biel, 2000
3D-Würfel
Java 3D – an Introduction
Project RenderMan / BMRT



What is RenderMan?
What is BMRT?
What is Radiosity?
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Project RenderMan / BMRT
What is RenderMan?




Open interface by Pixar.
Interface for 3D-model rendering.
Provides extension possibilities for
custom shading and gadgets.
This is NOT an implementation.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Project RenderMan / BMRT
What is BMRT?



BMRT is a free 3D-renderer by
BlueMountain Corp.
BMRT is partly RenderMan compatible.
Contains various tools. Most important:

rgl: Simple, fast renderer for previews.

rendrib: High-end renderer providing ray-
tracing, radiosity, programmable shading…
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Project RenderMan / BMRT
What is Radiosity?




Imagine: Blue room with white chair 
chair appears a bit blue!
Compute diffuse, inter-object reflections
RayTracing uses AmbientLight to
simulate this  not too good.
Radiosity approximates diffuse, interobject reflections.
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction
Project RenderMan / BMRT
Radiosity examples
rgl
preview
rendrib
quality
Stefan Rufer, HTA Biel, 2000
Java 3D – an Introduction