setVisible canvas3D bug

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

setVisible canvas3D bug

plocatel_
Hello,
I am porting my Java application from java3D 1.5.2, on Windows everything is OK, but I have a problem with Mac OS X 10.8.4.
First, I had a problem with the position of the canvas3D element, I solved this problem with the topic "Mac Canvas3D location bug".
But now I have a problem with the visibility of the Canvas3D element:
My application is composed of 3 tabs, each tab contains 2 or 3 canvas3D, and all the canvas are still displayed.
I try also to hide useless canvas by using the setVisible method, moving them out of the screen or resizing them with a 0px width but nothing work. The canvas are always displayed.

So how can I fix this problem of visible/hidden canvas ?

Thank you for your help and sorry for my bad English.

Paul.

To reproduce :

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.GraphicsConfigTemplate3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.swing.JApplet;
import javax.swing.JButton;

import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;

public class Canvas3DVisibleTest extends JApplet{

    JApplet applet;
    public Canvas3DVisibleTest (JApplet applet) {
        this.applet = applet;
    }
   
    public void init() {
       
        // Create a simple scene with a rotated color cube
        BranchGroup root = new BranchGroup();
        Transform3D rotation = new Transform3D();
        rotation.rotX(Math.PI / 9);
        TransformGroup rotationGroup = new TransformGroup(rotation);
        root.addChild(rotationGroup);
        rotationGroup.addChild(new ColorCube(0.5f));
       
        GraphicsConfiguration config = GraphicsEnvironment
                .getLocalGraphicsEnvironment().getDefaultScreenDevice()
                .getBestConfiguration(new GraphicsConfigTemplate3D());
        final Canvas3D canvas3D = new Canvas3D(config);
        canvas3D.setBackground(new Color(0,0,0));
        canvas3D.setSize(100, 100);
        SimpleUniverse universe = new SimpleUniverse(canvas3D);
        universe.getViewingPlatform().setNominalViewingTransform();
        universe.addBranchGraph(root);

       
        JButton button = new JButton("Visible / Hidden");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                canvas3D.setVisible(! canvas3D.isVisible());
            }
        });
       
        applet.setLayout(new FlowLayout());
        applet.add(canvas3D);
        applet.add(button);
    }
}
Reply | Threaded
Open this post in threaded view
|

Re: setVisible canvas3D bug

gouessej
Administrator
Hi

I think the creator of Sweet Home 3D already mentioned this problem. Which build do you use?
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: setVisible canvas3D bug

plocatel_
Java3D : version 1.6.0-pre8 official
jogl :  version 2.1.0, based on: branch master commit 8363df5da5794faf10478789954992cef0c0d50f