SlideShare uma empresa Scribd logo
1 de 49
241-302, Computer Engineering Lab II (3rd Year)



Introduction to Java 3D

Dr. Andrew Davison
WiG Lab Office, CoE
ad@fivedots.coe.psu.ac.th




  241-302 Comp. Eng. Lab II. Java 3D                1
Contents
•   1.      Java 3D Overview
•   2.      What is a Scene Graph?
•   3.      A Java 3D Skeleton
•   4.      Lighting a Scene
•   5.      Making a Background
•   6.      3D Shapes
•   7.      Shape Colour
•   8.      Transformations
•   9.      More Information
241-302 Comp. Eng. Lab II. Java 3D   2
1. Java 3D Overview
• A high-level API for building interactive 3D
  applications and applets
   – uses a scene graph to model/control the 3D scene



• Fast and efficient impl. on a variety of platforms
   – built on top of OpenGL and DirectX


• Other features:
      – object behaviors
      – user interaction
      – loaders for many 3D file formats
241-302 Comp. Eng. Lab II. Java 3D                      3
Some Application Areas

•   Scientific/Medical/Data visualization
•   Geographical information systems (GIS)
•   Computer-aided design (CAD)
•   Simulation
•   Computer-aided education (CAE)
•   Games
     – my interest!

241-302 Comp. Eng. Lab II. Java 3D           4
2. What is a Scene Graph?
• A scene graph is a tree-like data structure
   that stores, organizes, and renders 3D scene
   information (3D objects, materials, lights,
   behaviours).


• The scene graph makes 3D programming
   considerably easier than directly coding in
   OpenGL or DirectX.
241-302 Comp. Eng. Lab II. Java 3D                5
A Typical Scene Graph




Content Branch                           View Branch
   241-302 Comp. Eng. Lab II. Java 3D                           6
Scene Graph Symbols
Nodes and Node Components (objects)            Arcs (object relationships)


                              Group            Parent-child link
                              Leaf

                              Node Component     Reference

                              Other objects




241-302 Comp. Eng. Lab II. Java 3D                                           7
3. A Java 3D Skeleton

• All our Java 3D programs embed a scene
    inside a JPanel, which is part of a JFrame
        – this allows Swing GUI controls to be utilized
          along side the Java 3D panel (if necessary)


• We will develop an example called
    Checkers3D                       during the course of these slides
    .
241-302 Comp. Eng. Lab II. Java 3D                                       8
Checkers3D
• The scene consists of
  – a dark green and blue tiled
    surface (and red center)
  – labels along the X and Z axes
  – a blue background
  – a floating sphere lit from two different
    directions
  – the user (viewer) can move through the scene
    by moving the mouse
   241-302 Comp. Eng. Lab II. Java 3D              9
Checkers3D.java
    public class Checkers3D extends JFrame
    { public Checkers3D()
      { super("Checkers3D");
        Container c = getContentPane();
        c.setLayout( new BorderLayout() );
        WrapCheckers3D w3d = new WrapCheckers3D();
               // panel holding the 3D scene
        c.add(w3d, BorderLayout.CENTER);

    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        pack();
        setResizable(false);    // fixed size display
          setVisible(true);
      } // end of Checkers3D()

      public static void main(String[] args)
       { new Checkers3D(); }
    } // end of Checkers3D class
241-302 Comp. Eng. Lab II. Java 3D                      10
Scene Graph for Checkers3D


                                     view branch
                                     not shown




241-302 Comp. Eng. Lab II. Java 3D                 11
Building the Scene Graph

• The VirtualUniverse, Locale, and view
    branch graph often have the same structure
    across different applications
      – programmers usually create them with the
        SimpleUniverse utility class




241-302 Comp. Eng. Lab II. Java 3D                 12
WrapChecker3D Constructor
     private SimpleUniverse su;
     private BranchGroup sceneBG; // for content branch
     private BoundingSphere bounds;
              :

     public WrapCheckers3D()
     { setLayout( new BorderLayout() );
       setOpaque( false );
       setPreferredSize( new Dimension(PWIDTH,
   PHEIGHT));

        GraphicsConfiguration config =
               SimpleUniverse.getPreferredConfiguration();
        Canvas3D canvas3D = new Canvas3D(config);
        add("Center", canvas3D);
        canvas3D.setFocusable(true);
        canvas3D.requestFocus();

241-302 Comp. Eng. = new 3D
           su Lab II. Java SimpleUniverse(canvas3D);         13
createSceneGraph();
             initUserPosition();      // set user's viewpoint

             orbitControls(canvas3D);
                   // controls for moving the viewpoint

             su.addBranchGraph( sceneBG );

         } // end of WrapCheckers3D()




241-302 Comp. Eng. Lab II. Java 3D                              14
createSceneGraph()
         private void createSceneGraph()
         // initilise the scene below sceneBG
         {
           sceneBG = new BranchGroup();
           bounds = new BoundingSphere(new Point3d(0,0,0),
                                            BOUNDSIZE);

             lightScene();         // add the light
             addBackground();      // add the sky
             sceneBG.addChild( new CheckerFloor().getBG() );

                                     // add the floor

             floatingSphere();       // add the floating sphere

           sceneBG.compile();   // fix the scene
         } // end of createSceneGraph()
241-302 Comp. Eng. Lab II. Java 3D                                15
4. Lighting a Scene

• There are four types of lighting:
     –   ambient light
     –   directional light
     –   point light
     –   spotlight

• Any number of these can be added to a scene.
• A shape must be set up to reflect light (see later).
241-302 Comp. Eng. Lab II. Java 3D                       16
4.1. Ambient Light

• Ambient light has the same intensity
     in all locations and directions
      – used as a kind of 'background' lighting
        in many scenes




241-302 Comp. Eng. Lab II. Java 3D                17
4.2. Directional Light

• Provides light shining in one direction
      – often used to approximate the sun




241-302 Comp. Eng. Lab II. Java 3D          18
4.3. Point Light
• Light emitted from a point
      – the intensity changes with distance
      – often used to approximate light bulbs,
        candles, etc.




241-302 Comp. Eng. Lab II. Java 3D               19
4.4. SpotLight

• Adds direction and concentration to the
    PointLight




241-302 Comp. Eng. Lab II. Java 3D          20
4.5. lightScene() in WrapChecker3D
    private void lightScene()
    /* One ambient light, 2 directional lights */
    {
      Color3f white = new Color3f(1.0f, 1.0f, 1.0f);
      // Red, Green, Blue values in 0-1 range

         // Set up the ambient light
         AmbientLight ambientLightNode =
                           new AmbientLight(white);
         ambientLightNode.setInfluencingBounds(bounds);

         sceneBG.addChild(ambientLightNode);
               :
                                       Lights must be given
                                       bounds in which to
                                       operate.
241-302 Comp. Eng. Lab II. Java 3D                            21
// Set up the directional lights
              Vector3f light1Direction =
                    new Vector3f(-1.0f, -1.0f, -1.0f);
                        // (x,y,z) left, down, backwards

              Vector3f light2Direction =
                    new Vector3f(1.0f, -1.0f, 1.0f);
                       // (x,y,z) right, down, forwards
                    :

                                             +
                                                      -   z-axis

                                                                   x-axis
                                     -                        +
                                         +
                         viewer               -
                                             y-axis
241-302 Comp. Eng. Lab II. Java 3D                                          22
DirectionalLight light1 =
          new DirectionalLight(white, light1Direction);
       light1.setInfluencingBounds(bounds);
       sceneBG.addChild(light1);

       DirectionalLight light2 =
          new DirectionalLight(white, light2Direction);
       light2.setInfluencingBounds(bounds);
       sceneBG.addChild(light2);

  }      // end of lightScene()




241-302 Comp. Eng. Lab II. Java 3D                        23
5. Making a Background
         private void addBackground()
         // A blue sky
         { Background back = new Background();
           back.setApplicationBounds( bounds );
           back.setColor(0.17f, 0.65f, 0.92f);
                         // sky colour
           sceneBG.addChild( back );
         } // end of addBackground()

                                     A background can be a constant
                                     colour (as here), an image,
                                     or a geometry.


241-302 Comp. Eng. Lab II. Java 3D                                    24
6. 3D Shapes
• A 3D shape is defined as a Shape3D object.

• Each Shape3D object has
  two node components:
    – Geometry
       • made up of coordinates
         (vertices)

    – Appearance
       • e.g. colour, texture,
         transparency,
         material
 241-302 Comp. Eng. Lab II. Java 3D      continued   25
• There are several predefined shape classes
   in com.sun.j3d.utils.geometry:
     – Box, Sphere, Cone, Cylinder
        • we use Sphere in Checkers3D




• Usually these classes are insufficient, and a
   shape's geometry must be built by connectin
   g vertices.

241-302 Comp. Eng. Lab II. Java 3D                26
Building Geometry

• The GeometryArray class is the parent for
    several useful geometry subclasses




241-302 Comp. Eng. Lab II. Java 3D            27
7. Shape Colour
• You can specify a shape's colour in three
    ways:
      – in the shape's material
             •   used when the scene is illuminated (as here)

      – in the shape's colouring attributes
             •   used when the shape is unreflecting

      – in the vertices of the shape's geometry
             •   also for unreflecting shapes

241-302 Comp. Eng. Lab II. Java 3D                              28
Illuminating a Shape
• A shape will reflect light when:
    – the scene has lights
           •   set up in lightScene()

    – the shape has material information
           •   see the next few slides

    – the shape has a geometry containing normals
           •   done automatically in predefined shapes
               (Sphere, Box, etc.)

 241-302 Comp. Eng. Lab II. Java 3D                      29
Types of Shape Reflection

ambient                                   specular
reflection                                reflection
(blue here,                               (white)
but often set
to black)                                diffuse
                                         reflection
no shadow                                (blue)

                                        no reflection
                                        for the floor

   241-302 Comp. Eng. Lab II. Java 3D                   30
Material
• The Material is part of a shape's Appearance
   node component.


• The Material object specifies ambient,
   diffuse, specular, and emissive colors and a
   shininess value
     – emissive colour is a kind of glowing effect, but
       it does not illuminate other shapes

241-302 Comp. Eng. Lab II. Java 3D                        31
Creating a Material
    private void floatingSphere()
    // A shiny blue sphere located at (0,4,0)
    {
      // Create the blue appearance node
      Color3f black = new Color3f(0.0f, 0.0f, 0.0f);
      Color3f blue = new Color3f(0.3f, 0.3f, 0.8f);
      Color3f specular = new Color3f(0.9f, 0.9f,
  0.9f);

       Material blueMat =
        new Material(blue, black, blue, specular,25.0f)
  ;
          // ambient,emissive,diffuse,specular,shinines
  s
       blueMat.setLightingEnable( true );

           Appearance blueApp = new Appearance();
           blueApp.setMaterial(blueMat);
241-302 Comp. Eng. Lab II. Java 3D                        32
8. Transfomations
• A shape is transformed using a TranformGroup
  object.
• The three basic transformations:
   – translation: move the shape to a new location
   – rotation: rotate the shape around the X, Y, Z axes
   – scaling: resize the shape


• A TransformGroup object is initialised using
  Tranform3D                  objects.
 241-302 Comp. Eng. Lab II. Java 3D                       33
Translation
• Build a shape
      Shape3D myShape = new Shape3D(myGeo, myApp);

• Translation
      Transform3D t3d = new Transform3D();
      t3d.set( new Vector3d(2.0, 1.0, -2.0) );

• Create a transform group, set transform, add
    the shape
      TransformGroup tg = new TransformGroup(t3d);
      tg.addChild(myShape);




241-302 Comp. Eng. Lab II. Java 3D                   34
Rotation
• Build shape
      Shape3D myShape = new Shape3D(myGeo, myApp);


• Rotation (around z-axis)
      Transform3D t3d = new Transform3D();
      t3d.rotZ(0.785); // rotate by 45 degrees


• Create a transform group, set transform, add
    the shape
      TransformGroup tg = new TransformGroup(t3d);
      tg.addChild(myShape);



241-302 Comp. Eng. Lab II. Java 3D                   35
Scaling
• Build shape
      Shape3D myShape = new Shape3D(myGeo, myApp);

• Scaling by 1.75 in X, Y, and Z
      Transform3D t3d = new Transform3D();
      t3d.set(1.75);



• Create transform group, set transform, add
    the shape
      TransformGroup tg = new TransformGroup();
      tg.setTransform(t3d); // another way
      tg.addChild(myShape);


241-302 Comp. Eng. Lab II. Java 3D                   36
Composite Transformations
• Combine translations, rotations, and
    scaling.
    Methods:
      void setTranslation(
                     Vector3d vectorTranslation );
      void setRotation( AxisAngle4d axisangleAxis );
      void setRotation( Matrix3d matrixRotation );
      void setScale( double scaleFactor );




241-302 Comp. Eng. Lab II. Java 3D                     37
Positioning the Sphere
private void floatingSphere()
// blue sphere located at (0,4,0)
{
      :   // set up the blue material

     // position the sphere
     Transform3D t3d = new Transform3D();
     t3d.set( new Vector3f(0,4,0));
     TransformGroup tg = new TransformGroup(t3d);
     tg.addChild( new Sphere(2.0f, blueApp) );
              // set its radius and appearance

  sceneBG.addChild(tg);
} // end of floatingSphere()


241-302 Comp. Eng. Lab II. Java 3D                  38
9. More Information

• First install the latest version of Java:
          http://java.sun.com/javase/downloads/
      – get the latest JDK 6
             •   update 22
      – should be installed before Java 3D




241-302 Comp. Eng. Lab II. Java 3D                39
Java 3D Software and Docs
• Main site:
      https://java3d.dev.java.net/
• Download page
          https://java3d.dev.java.net/binary-builds.html


• Get the Java 3D 1.5 installer for your OS.
    e.g.
      – java3d-1_5_2-windows-i586.exe




241-302 Comp. Eng. Lab II. Java 3D              continued   40
• Test the installation
      – download HelloUniverse.java from
          http://fivedots.coe.psu.ac.th/Software.coe/
                               LAB/Java3D/

      – javac HelloUniverse.java
      – java HelloUniverse


      – you should see a rotating
        coloured cube


241-302 Comp. Eng. Lab II. Java 3D              continued   41
• Get the documentation:
      – it describes the core API and the utility classes


• Download the examples source code:
      – contains about 40 small-to-medium examples
      – a great help


• Download the Java 3D tutorial
      – http://java.sun.com/developer/
                        onlineTraining/java3d/



241-302 Comp. Eng. Lab II. Java 3D                          42
9.1 Resources here at CoE
• CoE Students can get Java and Java 3D
   from Aj. Somchai's excellent Java pages:
         http://java.coe.psu.ac.th/



• Java
         http://java.coe.psu.ac.th/RefImp.html#JavaSE

• Java 3D
         http://java.coe.psu.ac.th/RefImp.html#Java3D



241-302 Comp. Eng. Lab II. Java 3D              continued   43
• Java things to get:
      – JavaSE 6.0u20 SDK (WindowsFull)
• Java 3D things to get:
      – Java3D 1.5.2 installer (Windows)
      – Java3D 1.5.2
             •   API Document
             •   Examples



241-302 Comp. Eng. Lab II. Java 3D         44
Java 3D Books                          Both of these are
                                       in the CoE library,
                                       or available from me.
• Java 3D API Jump-Start
      – Aaron E. Walsh, Doug Gehringer
        Prentice Hall; 0-1303-4076-6, 2001


• Java 3D Programming
      – Daniel Selman
        Manning Pub.; 1-9301-1035-9; 2002
          http://www.manning.com/selman/


241-302 Comp. Eng. Lab II. Java 3D                continued    45
• The Java 3D chapters from my online book:
          http://fivedots.coe.psu.ac.th/~ad/jg/



• The complete Checkers3D application is
    explained in chapter 15:
          http://fivedots.coe.psu.ac.th/~ad/jg/ch8/




241-302 Comp. Eng. Lab II. Java 3D                    46
Java 3D Help

• Ask me!

• Forums:
  – http://www.java.net/forums/javadesktop/
           java-desktop-technologies/java-3d

  – http://www.javagaming.org/index.php/
                           board,14.0.html


  241-302 Comp. Eng. Lab II. Java 3D   continued   47
• Java 3D at Sun
          http://java.sun.com/products/java-media/3D/



• j3d.org
          http://www.j3d.org




241-302 Comp. Eng. Lab II. Java 3D              continued   48
• The Java 3D interest mailing list
          http://archives.java.sun.com/archives/
                             java3d-interest.html
          or
          http://www.mail-archive.com/
                       java3d-interest@java.sun.com/



• comp.lang.java.3d newsgroup
          http://groups.google.com/groups?
                             group=comp.lang.java.3d




241-302 Comp. Eng. Lab II. Java 3D                     49

Mais conteúdo relacionado

Mais procurados

SwiftGirl20170904 - Apple Map
SwiftGirl20170904 - Apple MapSwiftGirl20170904 - Apple Map
SwiftGirl20170904 - Apple MapHsiaoShan Chang
 
CG OpenGL line & area-course 3
CG OpenGL line & area-course 3CG OpenGL line & area-course 3
CG OpenGL line & area-course 3fungfung Chen
 
Automatic Classification Satellite images for weather Monitoring
Automatic Classification Satellite images for weather MonitoringAutomatic Classification Satellite images for weather Monitoring
Automatic Classification Satellite images for weather Monitoringguest7782414
 
CS 354 Project 2 and Compression
CS 354 Project 2 and CompressionCS 354 Project 2 and Compression
CS 354 Project 2 and CompressionMark Kilgard
 
Build Your Own 3D Scanner: 3D Scanning with Swept-Planes
Build Your Own 3D Scanner: 3D Scanning with Swept-PlanesBuild Your Own 3D Scanner: 3D Scanning with Swept-Planes
Build Your Own 3D Scanner: 3D Scanning with Swept-PlanesDouglas Lanman
 
Opensource gis development - part 5
Opensource gis development - part 5Opensource gis development - part 5
Opensource gis development - part 5Andrea Antonello
 
SSII2018企画: センシングデバイスの多様化と空間モデリングの未来
SSII2018企画: センシングデバイスの多様化と空間モデリングの未来SSII2018企画: センシングデバイスの多様化と空間モデリングの未来
SSII2018企画: センシングデバイスの多様化と空間モデリングの未来SSII
 
Introduction to MapKit
Introduction to MapKitIntroduction to MapKit
Introduction to MapKitRob C
 
Computer Graphics Practical
Computer Graphics PracticalComputer Graphics Practical
Computer Graphics PracticalNeha Sharma
 
The Technology behind Shadow Warrior, ZTG 2014
The Technology behind Shadow Warrior, ZTG 2014The Technology behind Shadow Warrior, ZTG 2014
The Technology behind Shadow Warrior, ZTG 2014Jarosław Pleskot
 
CS 354 Viewing Stuff
CS 354 Viewing StuffCS 354 Viewing Stuff
CS 354 Viewing StuffMark Kilgard
 
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15Jarosław Pleskot
 
CG OpenGL 3D object representations-course 8
CG OpenGL 3D object representations-course 8CG OpenGL 3D object representations-course 8
CG OpenGL 3D object representations-course 8fungfung Chen
 
On the Impossibility of Batch Update for Cryptographic Accumulators
On the Impossibility of Batch Update for Cryptographic AccumulatorsOn the Impossibility of Batch Update for Cryptographic Accumulators
On the Impossibility of Batch Update for Cryptographic AccumulatorsPhilippe Camacho, Ph.D.
 
STATE SPACE GENERATION FRAMEWORK BASED ON BINARY DECISION DIAGRAM FOR DISTRIB...
STATE SPACE GENERATION FRAMEWORK BASED ON BINARY DECISION DIAGRAM FOR DISTRIB...STATE SPACE GENERATION FRAMEWORK BASED ON BINARY DECISION DIAGRAM FOR DISTRIB...
STATE SPACE GENERATION FRAMEWORK BASED ON BINARY DECISION DIAGRAM FOR DISTRIB...csandit
 

Mais procurados (20)

SwiftGirl20170904 - Apple Map
SwiftGirl20170904 - Apple MapSwiftGirl20170904 - Apple Map
SwiftGirl20170904 - Apple Map
 
RMI Fundamentals
RMI FundamentalsRMI Fundamentals
RMI Fundamentals
 
CG OpenGL line & area-course 3
CG OpenGL line & area-course 3CG OpenGL line & area-course 3
CG OpenGL line & area-course 3
 
Automatic Classification Satellite images for weather Monitoring
Automatic Classification Satellite images for weather MonitoringAutomatic Classification Satellite images for weather Monitoring
Automatic Classification Satellite images for weather Monitoring
 
CS 354 Project 2 and Compression
CS 354 Project 2 and CompressionCS 354 Project 2 and Compression
CS 354 Project 2 and Compression
 
Build Your Own 3D Scanner: 3D Scanning with Swept-Planes
Build Your Own 3D Scanner: 3D Scanning with Swept-PlanesBuild Your Own 3D Scanner: 3D Scanning with Swept-Planes
Build Your Own 3D Scanner: 3D Scanning with Swept-Planes
 
Opensource gis development - part 5
Opensource gis development - part 5Opensource gis development - part 5
Opensource gis development - part 5
 
SSII2018企画: センシングデバイスの多様化と空間モデリングの未来
SSII2018企画: センシングデバイスの多様化と空間モデリングの未来SSII2018企画: センシングデバイスの多様化と空間モデリングの未来
SSII2018企画: センシングデバイスの多様化と空間モデリングの未来
 
Introduction to OpenCV
Introduction to OpenCVIntroduction to OpenCV
Introduction to OpenCV
 
Introduction to MapKit
Introduction to MapKitIntroduction to MapKit
Introduction to MapKit
 
Computer Graphics Practical
Computer Graphics PracticalComputer Graphics Practical
Computer Graphics Practical
 
Java fx 3d
Java fx 3dJava fx 3d
Java fx 3d
 
The Technology behind Shadow Warrior, ZTG 2014
The Technology behind Shadow Warrior, ZTG 2014The Technology behind Shadow Warrior, ZTG 2014
The Technology behind Shadow Warrior, ZTG 2014
 
CS 354 Viewing Stuff
CS 354 Viewing StuffCS 354 Viewing Stuff
CS 354 Viewing Stuff
 
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
 
CG OpenGL 3D object representations-course 8
CG OpenGL 3D object representations-course 8CG OpenGL 3D object representations-course 8
CG OpenGL 3D object representations-course 8
 
Swift Map
Swift MapSwift Map
Swift Map
 
On the Impossibility of Batch Update for Cryptographic Accumulators
On the Impossibility of Batch Update for Cryptographic AccumulatorsOn the Impossibility of Batch Update for Cryptographic Accumulators
On the Impossibility of Batch Update for Cryptographic Accumulators
 
STATE SPACE GENERATION FRAMEWORK BASED ON BINARY DECISION DIAGRAM FOR DISTRIB...
STATE SPACE GENERATION FRAMEWORK BASED ON BINARY DECISION DIAGRAM FOR DISTRIB...STATE SPACE GENERATION FRAMEWORK BASED ON BINARY DECISION DIAGRAM FOR DISTRIB...
STATE SPACE GENERATION FRAMEWORK BASED ON BINARY DECISION DIAGRAM FOR DISTRIB...
 
Iphone course 2
Iphone course 2Iphone course 2
Iphone course 2
 

Destaque

Learn to 3D Print Right Now
Learn to 3D Print Right NowLearn to 3D Print Right Now
Learn to 3D Print Right NowShawn Grimes
 
WT-4071, GPU accelerated 3D graphics for Java, by Kevin Rushforth, Chien Yang...
WT-4071, GPU accelerated 3D graphics for Java, by Kevin Rushforth, Chien Yang...WT-4071, GPU accelerated 3D graphics for Java, by Kevin Rushforth, Chien Yang...
WT-4071, GPU accelerated 3D graphics for Java, by Kevin Rushforth, Chien Yang...AMD Developer Central
 
JavaOne Automatizando sua casa usando Java, JAVAME, JAVAFX e Open Source Hard...
JavaOne Automatizando sua casa usando Java, JAVAME, JAVAFX e Open Source Hard...JavaOne Automatizando sua casa usando Java, JAVAME, JAVAFX e Open Source Hard...
JavaOne Automatizando sua casa usando Java, JAVAME, JAVAFX e Open Source Hard...Globalcode
 
3D PPT Final Pitch 081315
3D PPT Final Pitch 0813153D PPT Final Pitch 081315
3D PPT Final Pitch 081315TRIMAX
 
Java: Introduction to Arrays
Java: Introduction to ArraysJava: Introduction to Arrays
Java: Introduction to ArraysTareq Hasan
 
Loops Basics
Loops BasicsLoops Basics
Loops BasicsMushiii
 
14. Defining Classes
14. Defining Classes14. Defining Classes
14. Defining ClassesIntro C# Book
 
Array in c language
Array in c languageArray in c language
Array in c languagehome
 
17. Trees and Graphs
17. Trees and Graphs17. Trees and Graphs
17. Trees and GraphsIntro C# Book
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 

Destaque (15)

Learn to 3D Print Right Now
Learn to 3D Print Right NowLearn to 3D Print Right Now
Learn to 3D Print Right Now
 
WT-4071, GPU accelerated 3D graphics for Java, by Kevin Rushforth, Chien Yang...
WT-4071, GPU accelerated 3D graphics for Java, by Kevin Rushforth, Chien Yang...WT-4071, GPU accelerated 3D graphics for Java, by Kevin Rushforth, Chien Yang...
WT-4071, GPU accelerated 3D graphics for Java, by Kevin Rushforth, Chien Yang...
 
JavaOne Automatizando sua casa usando Java, JAVAME, JAVAFX e Open Source Hard...
JavaOne Automatizando sua casa usando Java, JAVAME, JAVAFX e Open Source Hard...JavaOne Automatizando sua casa usando Java, JAVAME, JAVAFX e Open Source Hard...
JavaOne Automatizando sua casa usando Java, JAVAME, JAVAFX e Open Source Hard...
 
3D PPT Final Pitch 081315
3D PPT Final Pitch 0813153D PPT Final Pitch 081315
3D PPT Final Pitch 081315
 
Arrays in java
Arrays in javaArrays in java
Arrays in java
 
Java: Introduction to Arrays
Java: Introduction to ArraysJava: Introduction to Arrays
Java: Introduction to Arrays
 
Loops Basics
Loops BasicsLoops Basics
Loops Basics
 
Arrays in Java
Arrays in JavaArrays in Java
Arrays in Java
 
14. Defining Classes
14. Defining Classes14. Defining Classes
14. Defining Classes
 
08. Numeral Systems
08. Numeral Systems08. Numeral Systems
08. Numeral Systems
 
Arrays
ArraysArrays
Arrays
 
Array in c language
Array in c languageArray in c language
Array in c language
 
Arrays in java
Arrays in javaArrays in java
Arrays in java
 
17. Trees and Graphs
17. Trees and Graphs17. Trees and Graphs
17. Trees and Graphs
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 

Semelhante a Java3 d 1

Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Takao Wada
 
Embed the nasa world wind java sdk in eclipse
Embed the nasa world wind java sdk in eclipseEmbed the nasa world wind java sdk in eclipse
Embed the nasa world wind java sdk in eclipseMohammad Fajar
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingCS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingMark Kilgard
 
Deep dive into deeplearn.js
Deep dive into deeplearn.jsDeep dive into deeplearn.js
Deep dive into deeplearn.jsKai Sasaki
 
World wind java sdk in progess
World wind java sdk in progessWorld wind java sdk in progess
World wind java sdk in progessRaffaele de Amicis
 
Advanced Game Development with the Mobile 3D Graphics API
Advanced Game Development with the Mobile 3D Graphics APIAdvanced Game Development with the Mobile 3D Graphics API
Advanced Game Development with the Mobile 3D Graphics APITomi Aarnio
 
Trident International Graphics Workshop 2014 4/5
Trident International Graphics Workshop 2014 4/5Trident International Graphics Workshop 2014 4/5
Trident International Graphics Workshop 2014 4/5Takao Wada
 
Forge - DevCon 2016: Visual Reporting with Connected Design Data
Forge - DevCon 2016: Visual Reporting with Connected Design DataForge - DevCon 2016: Visual Reporting with Connected Design Data
Forge - DevCon 2016: Visual Reporting with Connected Design DataAutodesk
 
GEE Intro 2018.pptx
GEE Intro 2018.pptxGEE Intro 2018.pptx
GEE Intro 2018.pptxGorgorGIS
 
GPU Accelerated Domain Decomposition
GPU Accelerated Domain DecompositionGPU Accelerated Domain Decomposition
GPU Accelerated Domain DecompositionRichard Southern
 
CUDA Tutorial 01 : Say Hello to CUDA : Notes
CUDA Tutorial 01 : Say Hello to CUDA : NotesCUDA Tutorial 01 : Say Hello to CUDA : Notes
CUDA Tutorial 01 : Say Hello to CUDA : NotesSubhajit Sahu
 
Java card and flow layout
Java card and flow layoutJava card and flow layout
Java card and flow layoutshiprashakya2
 
GL Shading Language Document by OpenGL.pdf
GL Shading Language Document by OpenGL.pdfGL Shading Language Document by OpenGL.pdf
GL Shading Language Document by OpenGL.pdfshaikhshehzad024
 
Ddp Cs3.0 Solar System
Ddp Cs3.0 Solar SystemDdp Cs3.0 Solar System
Ddp Cs3.0 Solar Systemboonzaai
 
Introducing AlloyUI DiagramBuilder
Introducing AlloyUI DiagramBuilderIntroducing AlloyUI DiagramBuilder
Introducing AlloyUI DiagramBuilderEduardo Lundgren
 
Unconventional webapps with gwt:elemental & html5
Unconventional webapps with gwt:elemental & html5Unconventional webapps with gwt:elemental & html5
Unconventional webapps with gwt:elemental & html5firenze-gtug
 

Semelhante a Java3 d 1 (20)

Games 3 dl4-example
Games 3 dl4-exampleGames 3 dl4-example
Games 3 dl4-example
 
Learn Java 3D
Learn Java 3D Learn Java 3D
Learn Java 3D
 
Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5
 
Embed the nasa world wind java sdk in eclipse
Embed the nasa world wind java sdk in eclipseEmbed the nasa world wind java sdk in eclipse
Embed the nasa world wind java sdk in eclipse
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingCS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and Culling
 
Deep dive into deeplearn.js
Deep dive into deeplearn.jsDeep dive into deeplearn.js
Deep dive into deeplearn.js
 
World wind java sdk in progess
World wind java sdk in progessWorld wind java sdk in progess
World wind java sdk in progess
 
Advanced Game Development with the Mobile 3D Graphics API
Advanced Game Development with the Mobile 3D Graphics APIAdvanced Game Development with the Mobile 3D Graphics API
Advanced Game Development with the Mobile 3D Graphics API
 
Trident International Graphics Workshop 2014 4/5
Trident International Graphics Workshop 2014 4/5Trident International Graphics Workshop 2014 4/5
Trident International Graphics Workshop 2014 4/5
 
Forge - DevCon 2016: Visual Reporting with Connected Design Data
Forge - DevCon 2016: Visual Reporting with Connected Design DataForge - DevCon 2016: Visual Reporting with Connected Design Data
Forge - DevCon 2016: Visual Reporting with Connected Design Data
 
CGLabLec6.pptx
CGLabLec6.pptxCGLabLec6.pptx
CGLabLec6.pptx
 
GEE Intro 2018.pptx
GEE Intro 2018.pptxGEE Intro 2018.pptx
GEE Intro 2018.pptx
 
GPU Accelerated Domain Decomposition
GPU Accelerated Domain DecompositionGPU Accelerated Domain Decomposition
GPU Accelerated Domain Decomposition
 
CUDA Tutorial 01 : Say Hello to CUDA : Notes
CUDA Tutorial 01 : Say Hello to CUDA : NotesCUDA Tutorial 01 : Say Hello to CUDA : Notes
CUDA Tutorial 01 : Say Hello to CUDA : Notes
 
Java card and flow layout
Java card and flow layoutJava card and flow layout
Java card and flow layout
 
GL Shading Language Document by OpenGL.pdf
GL Shading Language Document by OpenGL.pdfGL Shading Language Document by OpenGL.pdf
GL Shading Language Document by OpenGL.pdf
 
Ddp Cs3.0 Solar System
Ddp Cs3.0 Solar SystemDdp Cs3.0 Solar System
Ddp Cs3.0 Solar System
 
Introducing AlloyUI DiagramBuilder
Introducing AlloyUI DiagramBuilderIntroducing AlloyUI DiagramBuilder
Introducing AlloyUI DiagramBuilder
 
NvFX GTC 2013
NvFX GTC 2013NvFX GTC 2013
NvFX GTC 2013
 
Unconventional webapps with gwt:elemental & html5
Unconventional webapps with gwt:elemental & html5Unconventional webapps with gwt:elemental & html5
Unconventional webapps with gwt:elemental & html5
 

Java3 d 1

  • 1. 241-302, Computer Engineering Lab II (3rd Year) Introduction to Java 3D Dr. Andrew Davison WiG Lab Office, CoE ad@fivedots.coe.psu.ac.th 241-302 Comp. Eng. Lab II. Java 3D 1
  • 2. Contents • 1. Java 3D Overview • 2. What is a Scene Graph? • 3. A Java 3D Skeleton • 4. Lighting a Scene • 5. Making a Background • 6. 3D Shapes • 7. Shape Colour • 8. Transformations • 9. More Information 241-302 Comp. Eng. Lab II. Java 3D 2
  • 3. 1. Java 3D Overview • A high-level API for building interactive 3D applications and applets – uses a scene graph to model/control the 3D scene • Fast and efficient impl. on a variety of platforms – built on top of OpenGL and DirectX • Other features: – object behaviors – user interaction – loaders for many 3D file formats 241-302 Comp. Eng. Lab II. Java 3D 3
  • 4. Some Application Areas • Scientific/Medical/Data visualization • Geographical information systems (GIS) • Computer-aided design (CAD) • Simulation • Computer-aided education (CAE) • Games – my interest! 241-302 Comp. Eng. Lab II. Java 3D 4
  • 5. 2. What is a Scene Graph? • A scene graph is a tree-like data structure that stores, organizes, and renders 3D scene information (3D objects, materials, lights, behaviours). • The scene graph makes 3D programming considerably easier than directly coding in OpenGL or DirectX. 241-302 Comp. Eng. Lab II. Java 3D 5
  • 6. A Typical Scene Graph Content Branch View Branch 241-302 Comp. Eng. Lab II. Java 3D 6
  • 7. Scene Graph Symbols Nodes and Node Components (objects) Arcs (object relationships) Group Parent-child link Leaf Node Component Reference Other objects 241-302 Comp. Eng. Lab II. Java 3D 7
  • 8. 3. A Java 3D Skeleton • All our Java 3D programs embed a scene inside a JPanel, which is part of a JFrame – this allows Swing GUI controls to be utilized along side the Java 3D panel (if necessary) • We will develop an example called Checkers3D during the course of these slides . 241-302 Comp. Eng. Lab II. Java 3D 8
  • 9. Checkers3D • The scene consists of – a dark green and blue tiled surface (and red center) – labels along the X and Z axes – a blue background – a floating sphere lit from two different directions – the user (viewer) can move through the scene by moving the mouse 241-302 Comp. Eng. Lab II. Java 3D 9
  • 10. Checkers3D.java public class Checkers3D extends JFrame { public Checkers3D() { super("Checkers3D"); Container c = getContentPane(); c.setLayout( new BorderLayout() ); WrapCheckers3D w3d = new WrapCheckers3D(); // panel holding the 3D scene c.add(w3d, BorderLayout.CENTER); setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); pack(); setResizable(false); // fixed size display setVisible(true); } // end of Checkers3D() public static void main(String[] args) { new Checkers3D(); } } // end of Checkers3D class 241-302 Comp. Eng. Lab II. Java 3D 10
  • 11. Scene Graph for Checkers3D view branch not shown 241-302 Comp. Eng. Lab II. Java 3D 11
  • 12. Building the Scene Graph • The VirtualUniverse, Locale, and view branch graph often have the same structure across different applications – programmers usually create them with the SimpleUniverse utility class 241-302 Comp. Eng. Lab II. Java 3D 12
  • 13. WrapChecker3D Constructor private SimpleUniverse su; private BranchGroup sceneBG; // for content branch private BoundingSphere bounds; : public WrapCheckers3D() { setLayout( new BorderLayout() ); setOpaque( false ); setPreferredSize( new Dimension(PWIDTH, PHEIGHT)); GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas3D = new Canvas3D(config); add("Center", canvas3D); canvas3D.setFocusable(true); canvas3D.requestFocus(); 241-302 Comp. Eng. = new 3D su Lab II. Java SimpleUniverse(canvas3D); 13
  • 14. createSceneGraph(); initUserPosition(); // set user's viewpoint orbitControls(canvas3D); // controls for moving the viewpoint su.addBranchGraph( sceneBG ); } // end of WrapCheckers3D() 241-302 Comp. Eng. Lab II. Java 3D 14
  • 15. createSceneGraph() private void createSceneGraph() // initilise the scene below sceneBG { sceneBG = new BranchGroup(); bounds = new BoundingSphere(new Point3d(0,0,0), BOUNDSIZE); lightScene(); // add the light addBackground(); // add the sky sceneBG.addChild( new CheckerFloor().getBG() ); // add the floor floatingSphere(); // add the floating sphere sceneBG.compile(); // fix the scene } // end of createSceneGraph() 241-302 Comp. Eng. Lab II. Java 3D 15
  • 16. 4. Lighting a Scene • There are four types of lighting: – ambient light – directional light – point light – spotlight • Any number of these can be added to a scene. • A shape must be set up to reflect light (see later). 241-302 Comp. Eng. Lab II. Java 3D 16
  • 17. 4.1. Ambient Light • Ambient light has the same intensity in all locations and directions – used as a kind of 'background' lighting in many scenes 241-302 Comp. Eng. Lab II. Java 3D 17
  • 18. 4.2. Directional Light • Provides light shining in one direction – often used to approximate the sun 241-302 Comp. Eng. Lab II. Java 3D 18
  • 19. 4.3. Point Light • Light emitted from a point – the intensity changes with distance – often used to approximate light bulbs, candles, etc. 241-302 Comp. Eng. Lab II. Java 3D 19
  • 20. 4.4. SpotLight • Adds direction and concentration to the PointLight 241-302 Comp. Eng. Lab II. Java 3D 20
  • 21. 4.5. lightScene() in WrapChecker3D private void lightScene() /* One ambient light, 2 directional lights */ { Color3f white = new Color3f(1.0f, 1.0f, 1.0f); // Red, Green, Blue values in 0-1 range // Set up the ambient light AmbientLight ambientLightNode = new AmbientLight(white); ambientLightNode.setInfluencingBounds(bounds); sceneBG.addChild(ambientLightNode); : Lights must be given bounds in which to operate. 241-302 Comp. Eng. Lab II. Java 3D 21
  • 22. // Set up the directional lights Vector3f light1Direction = new Vector3f(-1.0f, -1.0f, -1.0f); // (x,y,z) left, down, backwards Vector3f light2Direction = new Vector3f(1.0f, -1.0f, 1.0f); // (x,y,z) right, down, forwards : + - z-axis x-axis - + + viewer - y-axis 241-302 Comp. Eng. Lab II. Java 3D 22
  • 23. DirectionalLight light1 = new DirectionalLight(white, light1Direction); light1.setInfluencingBounds(bounds); sceneBG.addChild(light1); DirectionalLight light2 = new DirectionalLight(white, light2Direction); light2.setInfluencingBounds(bounds); sceneBG.addChild(light2); } // end of lightScene() 241-302 Comp. Eng. Lab II. Java 3D 23
  • 24. 5. Making a Background private void addBackground() // A blue sky { Background back = new Background(); back.setApplicationBounds( bounds ); back.setColor(0.17f, 0.65f, 0.92f); // sky colour sceneBG.addChild( back ); } // end of addBackground() A background can be a constant colour (as here), an image, or a geometry. 241-302 Comp. Eng. Lab II. Java 3D 24
  • 25. 6. 3D Shapes • A 3D shape is defined as a Shape3D object. • Each Shape3D object has two node components: – Geometry • made up of coordinates (vertices) – Appearance • e.g. colour, texture, transparency, material 241-302 Comp. Eng. Lab II. Java 3D continued 25
  • 26. • There are several predefined shape classes in com.sun.j3d.utils.geometry: – Box, Sphere, Cone, Cylinder • we use Sphere in Checkers3D • Usually these classes are insufficient, and a shape's geometry must be built by connectin g vertices. 241-302 Comp. Eng. Lab II. Java 3D 26
  • 27. Building Geometry • The GeometryArray class is the parent for several useful geometry subclasses 241-302 Comp. Eng. Lab II. Java 3D 27
  • 28. 7. Shape Colour • You can specify a shape's colour in three ways: – in the shape's material • used when the scene is illuminated (as here) – in the shape's colouring attributes • used when the shape is unreflecting – in the vertices of the shape's geometry • also for unreflecting shapes 241-302 Comp. Eng. Lab II. Java 3D 28
  • 29. Illuminating a Shape • A shape will reflect light when: – the scene has lights • set up in lightScene() – the shape has material information • see the next few slides – the shape has a geometry containing normals • done automatically in predefined shapes (Sphere, Box, etc.) 241-302 Comp. Eng. Lab II. Java 3D 29
  • 30. Types of Shape Reflection ambient specular reflection reflection (blue here, (white) but often set to black) diffuse reflection no shadow (blue) no reflection for the floor 241-302 Comp. Eng. Lab II. Java 3D 30
  • 31. Material • The Material is part of a shape's Appearance node component. • The Material object specifies ambient, diffuse, specular, and emissive colors and a shininess value – emissive colour is a kind of glowing effect, but it does not illuminate other shapes 241-302 Comp. Eng. Lab II. Java 3D 31
  • 32. Creating a Material private void floatingSphere() // A shiny blue sphere located at (0,4,0) { // Create the blue appearance node Color3f black = new Color3f(0.0f, 0.0f, 0.0f); Color3f blue = new Color3f(0.3f, 0.3f, 0.8f); Color3f specular = new Color3f(0.9f, 0.9f, 0.9f); Material blueMat = new Material(blue, black, blue, specular,25.0f) ; // ambient,emissive,diffuse,specular,shinines s blueMat.setLightingEnable( true ); Appearance blueApp = new Appearance(); blueApp.setMaterial(blueMat); 241-302 Comp. Eng. Lab II. Java 3D 32
  • 33. 8. Transfomations • A shape is transformed using a TranformGroup object. • The three basic transformations: – translation: move the shape to a new location – rotation: rotate the shape around the X, Y, Z axes – scaling: resize the shape • A TransformGroup object is initialised using Tranform3D objects. 241-302 Comp. Eng. Lab II. Java 3D 33
  • 34. Translation • Build a shape Shape3D myShape = new Shape3D(myGeo, myApp); • Translation Transform3D t3d = new Transform3D(); t3d.set( new Vector3d(2.0, 1.0, -2.0) ); • Create a transform group, set transform, add the shape TransformGroup tg = new TransformGroup(t3d); tg.addChild(myShape); 241-302 Comp. Eng. Lab II. Java 3D 34
  • 35. Rotation • Build shape Shape3D myShape = new Shape3D(myGeo, myApp); • Rotation (around z-axis) Transform3D t3d = new Transform3D(); t3d.rotZ(0.785); // rotate by 45 degrees • Create a transform group, set transform, add the shape TransformGroup tg = new TransformGroup(t3d); tg.addChild(myShape); 241-302 Comp. Eng. Lab II. Java 3D 35
  • 36. Scaling • Build shape Shape3D myShape = new Shape3D(myGeo, myApp); • Scaling by 1.75 in X, Y, and Z Transform3D t3d = new Transform3D(); t3d.set(1.75); • Create transform group, set transform, add the shape TransformGroup tg = new TransformGroup(); tg.setTransform(t3d); // another way tg.addChild(myShape); 241-302 Comp. Eng. Lab II. Java 3D 36
  • 37. Composite Transformations • Combine translations, rotations, and scaling. Methods: void setTranslation( Vector3d vectorTranslation ); void setRotation( AxisAngle4d axisangleAxis ); void setRotation( Matrix3d matrixRotation ); void setScale( double scaleFactor ); 241-302 Comp. Eng. Lab II. Java 3D 37
  • 38. Positioning the Sphere private void floatingSphere() // blue sphere located at (0,4,0) { : // set up the blue material // position the sphere Transform3D t3d = new Transform3D(); t3d.set( new Vector3f(0,4,0)); TransformGroup tg = new TransformGroup(t3d); tg.addChild( new Sphere(2.0f, blueApp) ); // set its radius and appearance sceneBG.addChild(tg); } // end of floatingSphere() 241-302 Comp. Eng. Lab II. Java 3D 38
  • 39. 9. More Information • First install the latest version of Java: http://java.sun.com/javase/downloads/ – get the latest JDK 6 • update 22 – should be installed before Java 3D 241-302 Comp. Eng. Lab II. Java 3D 39
  • 40. Java 3D Software and Docs • Main site: https://java3d.dev.java.net/ • Download page https://java3d.dev.java.net/binary-builds.html • Get the Java 3D 1.5 installer for your OS. e.g. – java3d-1_5_2-windows-i586.exe 241-302 Comp. Eng. Lab II. Java 3D continued 40
  • 41. • Test the installation – download HelloUniverse.java from http://fivedots.coe.psu.ac.th/Software.coe/ LAB/Java3D/ – javac HelloUniverse.java – java HelloUniverse – you should see a rotating coloured cube 241-302 Comp. Eng. Lab II. Java 3D continued 41
  • 42. • Get the documentation: – it describes the core API and the utility classes • Download the examples source code: – contains about 40 small-to-medium examples – a great help • Download the Java 3D tutorial – http://java.sun.com/developer/ onlineTraining/java3d/ 241-302 Comp. Eng. Lab II. Java 3D 42
  • 43. 9.1 Resources here at CoE • CoE Students can get Java and Java 3D from Aj. Somchai's excellent Java pages: http://java.coe.psu.ac.th/ • Java http://java.coe.psu.ac.th/RefImp.html#JavaSE • Java 3D http://java.coe.psu.ac.th/RefImp.html#Java3D 241-302 Comp. Eng. Lab II. Java 3D continued 43
  • 44. • Java things to get: – JavaSE 6.0u20 SDK (WindowsFull) • Java 3D things to get: – Java3D 1.5.2 installer (Windows) – Java3D 1.5.2 • API Document • Examples 241-302 Comp. Eng. Lab II. Java 3D 44
  • 45. Java 3D Books Both of these are in the CoE library, or available from me. • Java 3D API Jump-Start – Aaron E. Walsh, Doug Gehringer Prentice Hall; 0-1303-4076-6, 2001 • Java 3D Programming – Daniel Selman Manning Pub.; 1-9301-1035-9; 2002 http://www.manning.com/selman/ 241-302 Comp. Eng. Lab II. Java 3D continued 45
  • 46. • The Java 3D chapters from my online book: http://fivedots.coe.psu.ac.th/~ad/jg/ • The complete Checkers3D application is explained in chapter 15: http://fivedots.coe.psu.ac.th/~ad/jg/ch8/ 241-302 Comp. Eng. Lab II. Java 3D 46
  • 47. Java 3D Help • Ask me! • Forums: – http://www.java.net/forums/javadesktop/ java-desktop-technologies/java-3d – http://www.javagaming.org/index.php/ board,14.0.html 241-302 Comp. Eng. Lab II. Java 3D continued 47
  • 48. • Java 3D at Sun http://java.sun.com/products/java-media/3D/ • j3d.org http://www.j3d.org 241-302 Comp. Eng. Lab II. Java 3D continued 48
  • 49. • The Java 3D interest mailing list http://archives.java.sun.com/archives/ java3d-interest.html or http://www.mail-archive.com/ java3d-interest@java.sun.com/ • comp.lang.java.3d newsgroup http://groups.google.com/groups? group=comp.lang.java.3d 241-302 Comp. Eng. Lab II. Java 3D 49