Hi Kelvin,
First of all thanks for accepting and filing bug#4632388.  Secondly,
I filed a couple of reports in Sun's Bug Database in late December
and since then haven't heard anything from Sun.  So I though maybe
it's a good idea to post reports to this mailing list.

Thanks,
-Oleg Pariser  @  NASA-JPL Multimission Image Processing Lab
[EMAIL PROTECTED]

>Date: Thu, 20 Dec 2001 17:23:54 -0800 (PST)
>From: "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
>To: [EMAIL PROTECTED]
>Subject: Your Report: J3DGraphics.drawAndFlushImage(...) is ignoring
>GraphicsContext3D.setStereoMode()
>X-IM-Review-ID: 137628
>Status: O
>
>  ************************************************
>Your report has been assigned an internal review ID of: 137628
>
>This review ID is NOT visible on the "Java Developer Connection" (JDC).
>
>dateCreated: Thu Dec 20 18:23:52 MST 2001
>type: bug
>cust_name: Oleg Pariser
>cust_email: [EMAIL PROTECTED]
>jdcid: opariser
>status: Waiting
>category: java3d
>subcategory: other
>company: Jet Propulsion Laboratory
>release: 1.2.1
>hardware: sun4
>OSversion: sol2.7
>priority: 4
>synopsis: J3DGraphics.drawAndFlushImage(...) is ignoring
>GraphicsContext3D.setStereoMode()
>description: FULL PRODUCT VERSION :
>java version "1.4.0-beta3"
>Java(TM) 2 Runtime Environment, Standard Edition (build
>1.4.0-beta3-b84)
>Java HotSpot(TM) Client VM (build 1.4.0-beta3-b84, mixed
>mode)
>
>FULL OPERATING SYSTEM VERSION :
>SunOS monolith 5.7 Generic_106541-16 sun4u sparc
>SUNW,Ultra-5_10
>
>
>
>EXTRA RELEVANT SYSTEM CONFIGURATION :
>Java 3D(TM) 1.3 Beta 1
>Java Advanced Imaging(JAI) v1.1.1
>
>A DESCRIPTION OF THE PROBLEM :
>In Immidiate mode, J3DGraphics2D.drawAndFlushImage(...) is
>ignoring
>GraphicsContext3D.setStereoMode(GraphicsContext3D.STEREO_LEFT)
>setting and renders to both eyes(i.e. stereoMode
>STEREO_BOTH).  What is interesting, if I set stereoMode to
>STEREO_LEFT, then call GraphicsContext3D.draw(...), then
>call J3DGraphics2D.drawAndFlushImage(...), the result is
>correct: image is drawn only to left eye.
>But if I set stereoMode to STEREO_LEFT and call
>J3DGraphics2D.drawAndFlushImage(...) *without* calling
>GraphicsContext3D.draw(...) first, the image gets drawn to
>both eyes.
>
>P.S. In describing the problem I used STEREO_LEFT, but the
>same is applicable to STEREO_RIGHT
>
>STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
>1.Compile and run submitted test program which requires two
>imageFileNames to run.
>2. Notice that images gets rendered to both eyes, even
>though the expected result is image#1 rendered to
>STEREO_LEFT and image#2 rendered to STEREO_RIGHT
>
>EXPECTED VERSUS ACTUAL BEHAVIOR :
>Expected result: After calling
>GraphicsContext3D.setStereoMode(GraphicsContext3D.STEREO_LEFT)
>J3DGraphics2D.drawAndFlushImage(...) renders only in left
>eye.
>Actual result: J3DGraphics2D.drawAndFlushImage(...) renders
>in both eyes.
>
>This bug can be reproduced always.
>
>---------- BEGIN SOURCE ----------
>import java.awt.*;
>import java.awt.image.*;
>import java.awt.color.*;
>import javax.vecmath.*;
>import javax.media.j3d.*;
>import com.sun.j3d.utils.universe.SimpleUniverse;
>import javax.swing.event.*;
>import java.awt.event.*;
>import javax.media.j3d.*;
>import javax.media.jai.*;
>import com.sun.media.jai.codec.ImageCodec;
>import com.sun.j3d.utils.geometry.ColorCube;
>import java.awt.image.renderable.*;
>import java.io.*;
>import javax.swing.*;
>
>public class StereoCanvas extends Canvas3D {
>
>     //Properties
>
>     private GraphicsContext3D     _gc3D;
>     private J3DGraphics2D         _j3DG2D;
>     private BufferedImage         _imageLeft;
>     private BufferedImage         _imageRight;
>
>     public StereoCanvas(GraphicsConfiguration config,
>                       BufferedImage imageLeft,
>                       BufferedImage imageRight)
>     {
>       super(config);
>
>       _imageLeft = imageLeft;
>       _imageRight = imageRight;
>       //Make sure that stereo is enabled
>       setStereoEnable(true);
>       //Stop the renderer, since we use immediate mode rendering.
>       stopRenderer();
>       // Create a simple scene and attach it to the virtual
>universe
>               SimpleUniverse universe = new SimpleUniverse(this);
>
>         // This will move the ViewPlatform back a bit so the
>         // objects in the scene can be viewed.
>
>universe.getViewingPlatform().setNominalViewingTransform();
>     }
>
>     public void paint(Graphics g)
>     {
>       super.paint(g);
>       if(_gc3D == null || _j3DG2D == null) {
>
>           setDoubleBufferEnable(false);
>
>           _gc3D = getGraphicsContext3D();
>           _gc3D.setBufferOverride(true);
>           _gc3D.setAppearance(new Appearance());
>           _gc3D.setBackground(new Background(new
>Color3f(Color.black)));
>
>       }
>       _gc3D.setStereoMode(GraphicsContext3D.STEREO_BOTH);
>       _j3DG2D = getGraphics2D();
>       _gc3D.clear();
>       _j3DG2D.flush(true);
>
>
>       _gc3D.setStereoMode(GraphicsContext3D.STEREO_LEFT);
>       //If the line below uncommented then this test program
>       //runs correctly
>       //_gc3D.draw(new ColorCube(0.01));
>       _j3DG2D.drawAndFlushImage(_imageLeft, 0, 0, null);
>       _gc3D.setStereoMode(GraphicsContext3D.STEREO_RIGHT);
>       //If the line below uncommented then this test program
>       //runs correctly
>       //_gc3D.draw(new ColorCube(0.01));
>       _j3DG2D.drawAndFlushImage(_imageRight, 0, 0, null);
>
>       _gc3D.flush(true);
>
>     }
>
>     /**
>      * This function simply calls paint(Graphics g) which is
>different
>      * from parent's implementation
>      */
>     public void update(Graphics g)
>     {
>       paint(g);
>     }
>
>     public static void main(String[] argv)
>     {
>       if(argv.length != 2) {
>           System.out.println("Usage: java StereoCanvas
>imageLeftFileName imageRightFileName");
>       }
>       GraphicsConfigTemplate3D template = new
>GraphicsConfigTemplate3D();
>       template.setStereo(GraphicsConfigTemplate.REQUIRED) ;
>       GraphicsConfiguration config
>                     =
>GraphicsEnvironment.getLocalGraphicsEnvironment().
>
>getDefaultScreenDevice().getBestConfiguration(template);
>       PlanarImage imageLeft = JAI.create("fileload", argv[0]);
>       PlanarImage imageRight = JAI.create("fileload", argv[1]);
>       StereoCanvas myCanvas3D =
>           new StereoCanvas(config,
>                            imageLeft.getAsBufferedImage(),
>                            imageRight.getAsBufferedImage());
>
>       JFrame jFrame = new JFrame();
>       jFrame.getContentPane().setLayout(new BorderLayout());
>
>               jFrame.getContentPane().add(myCanvas3D,
>BorderLayout.CENTER);
>
>       jFrame.pack();
>       jFrame.setSize(200, 300);
>       jFrame.setVisible(true);
>     }
>}
>
>---------- END SOURCE ----------
>
>CUSTOMER WORKAROUND :
>Set stereoMode to STEREO_LEFT and call
>GraphicsContext3D.draw(...) before calling
>J3DGraphics2D.drawAndFlushImage(...)
>workaround:
>comments: (company - Jet Propulsion Laboratory , email -
>[EMAIL PROTECTED])


--

===========================================================================
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".

Reply via email to