This is good ! --- "H. Ding" <[EMAIL PROTECTED]> escreveu: > Hi Alessandro and Ben, > > I have fixed the problem. Later I will post the code. > > Thanks a lot for your help. :) > > Ding > > > > Hi Alessandro, > > > > Thanks a lot. I did combine the several images/icons to be one now. > > > > When I use this code to modify the sample code, it suppose to work. And I > > can compile, but once run, show the: > > > > "Exception in thread "Thread-2" java.lang.NullPointerException" > > > > I think the problem is here: "texBufferedImage" should be the combined > > image which is retured from the main(). > > > > Texture tex = new TextureLoader(java.awt.image.BufferedImage > > texBufferedImage).getTexture(); > > > > According to the TextureLoader, it should be able to construct the object > > through the "texBufferedImage", right ? > > > > Below is the code: > > =========================================================================== > > import java.awt.font.*; > > import java.awt.geom.*; > > import java.awt.image.*; > > import java.io.*; > > import java.net.*; > > import javax.imageio.*; > > import javax.swing.*; > > > > import java.applet.Applet; > > import java.awt.*; > > import java.awt.event.*; > > import com.sun.j3d.utils.applet.MainFrame; > > import com.sun.j3d.utils.universe.*; > > import com.sun.j3d.utils.image.TextureLoader; > > import com.sun.j3d.utils.geometry.Box; > > import javax.media.j3d.*; > > import javax.vecmath.*; > > > > public class TextureImage extends Applet { > > > > private java.net.URL texImage = null; > > // new added > > private BufferedImage texBufferedImage = null; > > ImageComponent2D ic; > > private SimpleUniverse u = null; > > > > public BranchGroup createSceneGraph() { > > // Create the root of the branch graph > > BranchGroup objRoot = new BranchGroup(); > > > > // Create the transform group node and initialize it to the > > // identity. Enable the TRANSFORM_WRITE capability so that > > // our behavior code can modify it at runtime. Add it to the > > // root of the subgraph. > > TransformGroup objTrans = new TransformGroup(); > > objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); > > objRoot.addChild(objTrans); > > > > // Create appearance object for textured cube > > Appearance app = new Appearance(); > > // Texture tex = new TextureLoader(texImage, this).getTexture(); > > Texture tex = new TextureLoader(java.awt.image.BufferedImage > > texBufferedImage).getTexture(); > > // Added new one > > > > //ImageComponent2D ic = new ImageComponent2D(ImageComponent.FORMAT_RGB, > > texBufferedImage); > > //ImageComponent2D ic = null ; > > // ic.set(texBufferedImage); > > > > > > > > //Texture2D myTexture = new Texture2D(); > > // myTexture.setImage(0, imgtest02); > > // app.setTexture(myTexture); > > > > app.setTexture(tex); > > TextureAttributes texAttr = new TextureAttributes(); > > texAttr.setTextureMode(TextureAttributes.MODULATE); > > app.setTextureAttributes(texAttr); > > > > // Create textured cube and add it to the scene graph. > > Box textureCube = new Box(0.4f, 0.4f, 0.4f, > > Box.GENERATE_TEXTURE_COORDS, app); > > objTrans.addChild(textureCube); > > > > // Create a new Behavior object that will perform the desired > > // operation on the specified transform object and add it into > > // the scene graph. > > Transform3D yAxis = new Transform3D(); > > Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE, > > 0, 0, > > 4000, 0, 0, > > 0, 0, 0); > > > > RotationInterpolator rotator = > > new RotationInterpolator(rotationAlpha, objTrans, yAxis, > > 0.0f, (float) Math.PI*2.0f); > > BoundingSphere bounds = > > new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); > > rotator.setSchedulingBounds(bounds); > > objTrans.addChild(rotator); > > > > // Have Java 3D perform optimizations on this scene graph. > > objRoot.compile(); > > > > return objRoot; > > } > > > > public TextureImage() { > > } > > > > // public TextureImage(java.net.URL url) { > > // texImage = url; > > // } > > > > // New added > > public TextureImage(BufferedImage img) { > > texBufferedImage = img; > > > > ImageComponent2D ic = new ImageComponent2D(ImageComponent.FORMAT_RGB, > > texBufferedImage); > > // BufferedImage imgtest = ic.getImage(); > > BufferedImage imgtest = null; > > > > if (imgtest == null) > > { > > System.out.println("I am here"); > > } ; > > imgtest = ic.getImage(); > > if (imgtest == null) > > { > > System.out.println("not get the image to here"); > > } > > else{ > > System.out.println("then get the image to here"); > > } > > ; > > } > > // public BufferedImage TextureBufferedImage(BufferedImage img) { > > // texBufferedImage = img; > > // } > > > > public void init() { > > if (texImage == null) { > > // the path to the image for an applet > > try { > > texImage = new java.net.URL(getCodeBase().toString() + > > "../images/1.jpg"); > > } > > catch (java.net.MalformedURLException ex) { > > System.out.println(ex.getMessage()); > > System.exit(1); > > } > > } > > setLayout(new BorderLayout()); > > GraphicsConfiguration config = > > SimpleUniverse.getPreferredConfiguration(); > > > > Canvas3D c = new Canvas3D(config); > > add("Center", c); > > > > // Create a simple scene and attach it to the virtual universe > > BranchGroup scene = createSceneGraph(); > > u = new SimpleUniverse(c); > > > > // This will move the ViewPlatform back a bit so the > > // objects in the scene can be viewed. > > u.getViewingPlatform().setNominalViewingTransform(); > > > > u.addBranchGraph(scene); > > } > > > > public void destroy() { > > u.cleanup(); > > } > > > > // > > // The following allows TextureImage to be run as an application > > // as well as an applet > > // > > // public static void main(String[] args) { > > public static void main(String[] args) throws IOException { > > java.net.URL url = null; > > if (args.length > 0) { > > try { > > url = new java.net.URL("file:" + args[0]); > > } > > catch (java.net.MalformedURLException ex) { > > System.out.println(ex.getMessage()); > > System.exit(1); > > } > === message truncated ===
Yahoo! Mail - Com 250MB de espaço. Abra sua conta! http://mail.yahoo.com.br/ =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff JAVA3D-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".