Re: Java 3D to PNG file?
"Robert Dale" <[email protected]>
| Newsgroups | gmane.org.user-groups.trijug.juglist |
|---|---|
| Message-ID | <[email protected]> |
Much in the same way you save a 2D image to a file... http://java.sun.com/docs/books/tutorial/2d/images/saveimage.html Then apply that to 3D... Canvas3D.setOffScreeBuffer(ImageComponent2D buffer); // render image ... On Sat, May 3, 2008 at 12:50 PM, Richard O. Hammer <[email protected]> wrote: > I am creating a scene using the Java3D API. I want to write this > picture into a PNG file rather than display it in a Window. How can I > do this? > > I am starting with the class below, HelloJava3Db, distributed by Sun > with their 3D tutorial. It makes a picture of a colored cube and shows > it in a Window (Frame or Applet). But I can't figure out how to write > that picture into an image file. > > I've been looking for routes using Canvas, java.awt.image.BufferedImage > and javax.imageio.ImageIO, but have not found the trick yet. > > Thank you, > Rich Hammer > > > > /* Copyright (c) 1996-2000 Sun Microsystems, Inc. All Rights Reserved. > blah, blah > */ > > import java.applet.Applet; > import java.awt.BorderLayout; > import java.awt.GraphicsConfiguration; > > import javax.media.j3d.BranchGroup; > import javax.media.j3d.Canvas3D; > import javax.media.j3d.Transform3D; > import javax.media.j3d.TransformGroup; > > import com.sun.j3d.utils.applet.MainFrame; > import com.sun.j3d.utils.geometry.ColorCube; > import com.sun.j3d.utils.universe.SimpleUniverse; > > // HelloJava3Db renders a single, rotated cube. > > public class HelloJava3Db extends Applet { > public BranchGroup createSceneGraph() { > // Create the root of the branch graph > BranchGroup objRoot = new BranchGroup(); > > // rotate object has composited transformation matrix > Transform3D rotate = new Transform3D(); > Transform3D tempRotate = new Transform3D(); > > rotate.rotX(Math.PI / 4.0d); > tempRotate.rotY(Math.PI / 5.0d); > rotate.mul(tempRotate); > > TransformGroup objRotate = new TransformGroup(rotate); > > objRoot.addChild(objRotate); > objRotate.addChild(new ColorCube(0.4)); > // Let Java 3D perform optimizations on this scene graph. > objRoot.compile(); > > return objRoot; > } // end of CreateSceneGraph method of HelloJava3Db > > // Create a simple scene and attach it to the virtual universe > > public HelloJava3Db() { > setLayout(new BorderLayout()); > GraphicsConfiguration config = > SimpleUniverse.getPreferredConfiguration(); > > Canvas3D canvas3D = new Canvas3D(config); > add("Center", canvas3D); > > BranchGroup scene = createSceneGraph(); > > // SimpleUniverse is a Convenience Utility class > SimpleUniverse simpleU = new SimpleUniverse(canvas3D); > > // This will move the ViewPlatform back a bit so the > // objects in the scene can be viewed. > simpleU.getViewingPlatform().setNominalViewingTransform(); > > simpleU.addBranchGraph(scene); > } // end of HelloJava3Db (constructor) > > // The following allows this to be run as an application > // as well as an applet > > public static void main(String[] args) { > new MainFrame(new HelloJava3Db(), 256, 256); > } // end of main (method of HelloJava3Db) > > } // end of class HelloJava3Db > > _______________________________________________ > Juglist mailing list > [email protected] > http://trijug.org/mailman/listinfo/juglist_trijug.org > -- Robert Dale