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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.