java important point(java 3D)



The Joy of Java 3D
by Greg Hopkins
Copyright © 2001
Introduction
Java 3D is an addition to Java for displaying three-dimensional graphics. Programs written in Java 3D can be run on several different types of computer and over the internet.
The Java 3D class library provides a simpler interface than most other graphics libraries, but has enough capabilities to produce good games and animation. Java 3D builds on existing technology such as DirectX and OpenGL so the programs do not run as slowly as you might expect. Also, Java 3D can incorporate objects created by 3D modeling packages like TrueSpace and VRML models.
This tutorial is an introduction to Java 3D. Examples lead you through the basic methods for producing 3D images and animation. You do not need to have any knowledge of 3D graphics or Java 3D to learn from this tutorial, but it will help if you have a basic understanding of the Java programming language. Programming in three dimensions can seem complicated because of the amount of jargon and the mathematics involved, this tutorial will keep things as simple as possible.
Please help to improve this tutorial for future readers by reporting any mistakes you find or suggesting improvements to editor@java3d.org.
Installing and Running Java 3D
The software you need to use Java 3D is available free from Sun Microsystems at http://java.sun.com/.
Sun often releases new versions so it is better to look at their site than rely on this document to find what you need. You will have to register as a member of "Java Developer Connection" to download some of the files.
At time of writing the newest version of Java itself (1.3) was at http://java.sun.com/j2se/ and the current version of the Java 3D extension (1.2.1) was athttp://java.sun.com/products/java-media/3D/. Netscape and Internet Explorer both require you to download plug-ins if you want to use up-to-date versions of Java and Java3D, the plug-in can be found at http://java.sun.com/products/plugin/.
Once you have installed Java and Java 3D you can compile programs using the command:
javac FileName.java
And run them using:
java FileName
The FileName should always be the same as the name of the class defined in that file. In some versions of Java 3D you may get a message about a null graphics configuration, but you can just ignore this.
Getting Started - Your First Program
The following program shows you the basic steps needed to display 3D objects.
  1. Create a virtual universe to contain your scene.
  2. Create a data structure to contain a group of objects.
  3. Add an object to the group
  4. Position the viewer so that they are looking at the object
  5. Add the group of objects to the universe

http://www.java3d.org/Image1.jpg
Look at the Hello3d() constructor and you will see the five lines that perform each of these steps. The program displays a glowing cube, the viewer is looking directly at the red face of the cube, so what you actually see is a red square on a black background

import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.geometry.ColorCube;
import javax.media.j3d.BranchGroup;
public class Hello3d {
public Hello3d()
{
   SimpleUniverse universe = new SimpleUniverse();
   BranchGroup group = new BranchGroup();
   group.addChild(new ColorCube(0.3));
   universe.getViewingPlatform().setNominalViewingTransform();
   universe.addBranchGraph(group);
}
public static void main( String[] args ) {
   new Hello3d();
}
} // end of class Hello3d
The import statements at the beginning of this program use various parts of Java 3D, so compiling and running this program is a good test that you have installed Java 3D correctly.
Lighting up the World
OK, the first example was a good start, but was it 3D? If you dont think a square qualifies as three-dimensional, you are going to need to add some lights to your universe. The way the light falls on an object provides us with the shading that helps us see shapes in three dimensions
The next example illustrates how to display a ball lit by a red light:

http://www.java3d.org/Image2.jpg
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
public class Ball {
public Ball() {
   // Create the universe
   SimpleUniverse universe = new SimpleUniverse();
   // Create a structure to contain objects
   BranchGroup group = new BranchGroup();
   // Create a ball and add it to the group of objects
   Sphere sphere = new Sphere(0.5f);
   group.addChild(sphere);
   // Create a red light that shines for 100m from the origin
   Color3f light1Color = new Color3f(1.8f, 0.1f, 0.1f);
   BoundingSphere bounds =
   new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
   Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);
   DirectionalLight light1
      = new DirectionalLight(light1Color, light1Direction);
   light1.setInfluencingBounds(bounds);
   group.addChild(light1);
   // look towards the ball
   universe.getViewingPlatform().setNominalViewingTransform();
   // add the group of objects to the Universe
   universe.addBranchGraph(group);
}
public static void main(String[] args) { new Ball(); }
}
The sphere we created is white (the default), it appears red because of the colored light. Since it is a DirectionalLight, we also have to specify how far the light shines and in what direction. In the example, the light shines for 100 meters from the origin and the direction is to the right, down and into the screen (this is defined by the vector: 4.0 right, -7.0 down, and -12.0 into the screen).
You can also create an AmbientLight which will produce a directionless light, or a SpotLight if you want to focus on a particular part of your scene. A combination of a strong directional light and a weaker ambient light gives a natural-looking appearance to your scene. Java 3D lights do not produce shadows.

Comments