// // CLASS // ExRaster - illustrate use of rasters // // LESSON // Add a Raster node to place an image on the screen based upon // a transformed 3D coordinate // // AUTHOR // Michael J. Bailey / San Diego Supercomputer Center // import java.awt.*; import java.awt.event.*; import java.lang.*; import java.net.*; import javax.media.j3d.*; import javax.vecmath.*; import com.sun.j3d.utils.geometry.*; import com.sun.j3d.utils.image.*; public class ExRaster extends Example { // nodes that can be updated via a menu: private Shape3D sh = null; // the 3D shape private TextureLoader texLoader = null; // to load the image private ImageComponent2D ic = null; // the image component private Raster raster = null; // the raster object // Build the scene: public Group buildScene() { // Turn on the headlight setHeadlightEnable( true ); // Build the scene root Group scene = new Group(); // Create application bounds BoundingSphere worldBounds = new BoundingSphere( new Point3d( 0.0, 0.0, 0.0 ), // Center 1000.0 ); // Extent raster = new Raster( ); raster.setPosition( new Point3f( 1.f, 0.f, 0.f ) ); raster.setType( Raster.RASTER_COLOR ); raster.setOffset( 0, 0 ); raster.setSize( 256, 256 ); raster.setImage( ic ); sh = new Shape3D( raster, new Appearance() ); scene.addChild( sh ); Appearance app0 = new Appearance( ); Material mat0 = new Material(); mat0.setAmbientColor( 0.8f, 0.4f, 0.2f ); mat0.setDiffuseColor( 0.8f, 0.4f, 0.2f ); mat0.setSpecularColor( 0.0f, 0.0f, 0.f ); app0.setMaterial( mat0 ); Transform3D t3d = new Transform3D( ); t3d.setTranslation( new Vector3f( 0.f, 0.f, 0.f ) ); TransformGroup tg0 = new TransformGroup( t3d ); Sphere sph0 = new Sphere( 0.5f, Primitive.GENERATE_NORMALS, 16, app0 ); tg0.addChild( sph0 ); scene.addChild( tg0 ); t3d = new Transform3D( ); t3d.setTranslation( new Vector3f( 1.f, 0.f, 0.f ) ); tg0 = new TransformGroup( t3d ); sph0 = new Sphere( 0.5f, Primitive.GENERATE_NORMALS, 16, app0 ); tg0.addChild( sph0 ); scene.addChild( tg0 ); t3d = new Transform3D( ); t3d.setTranslation( new Vector3f( 1.f, -1.f, 0.f ) ); tg0 = new TransformGroup( t3d ); sph0 = new Sphere( 0.5f, Primitive.GENERATE_NORMALS, 16, app0 ); tg0.addChild( sph0 ); scene.addChild( tg0 ); t3d = new Transform3D( ); t3d.setTranslation( new Vector3f( 0.f, -1.f, 0.f ) ); tg0 = new TransformGroup( t3d ); sph0 = new Sphere( 0.5f, Primitive.GENERATE_NORMALS, 16, app0 ); tg0.addChild( sph0 ); scene.addChild( tg0 ); return scene; } // // Main (if invoked as an application) // public static void main( String[] args ) { ExRaster ex = new ExRaster(); ex.initialize( args ); ex.buildUniverse(); ex.showFrame(); } // // Initialize the GUI (application and applet) // public void initialize( String[] args ) { // Initialize the window, menubar, etc. super.initialize( args ); exampleFrame.setTitle( "Java 3D Raster Example" ); // Preload the image texLoader = new TextureLoader( "earth.jpg", this); ic = texLoader.getImage(); if( ic == null ) { System.err.println( "Cannot load 'earth.jpg'" ); } } // // Handle checkboxes // public void itemStateChanged( ItemEvent event ) { Object src = event.getSource(); // Handle all other checkboxes super.itemStateChanged( event ); } }