Sorry..I have to take it all back...I double checked my code and I must have
been thinking about something else or I was just too stupid to double check
correctly...you guess which it was  :)

Anyway, I noticed that the definite reason for the "refresh" issue is that
fact that I have multiple Canvas3D windows (I have 4). Does anyone have any
example code of using a VirtualUniverse (not SimpleUniverse) too do at least
2 Canvas3D windows together?  I think I'm doing it correctly but who
knows...I did notice that having just 2 windows caused a problem so having 4
causes an even bigger problem....and so example code would be great help.
This is what I do for making my Canvas3d objects:

/////////////////////////////////////////////////////////////////////

    // 1 - Create Canvas3D object.
Canvas3D canvas3D = new Canvas3D
SimpleUniverse.getPreferredConfiguration());
Canvas3D second_canvas3D = new
Canvas3D(SimpleUniverse.getPreferredConfiguration());
Canvas3D third_canvas3D  = new
Canvas3D(SimpleUniverse.getPreferredConfiguration());
Canvas3D fourth_canvas3D = new Canvas3D
SimpleUniverse.getPreferredConfiguration());

canvas3D.setDoubleBufferEnable(true);
second_canvas3D.setDoubleBufferEnable(true);
third_canvas3D.setDoubleBufferEnable(true);
fourth_canvas3D.setDoubleBufferEnable(true);

    // 2 - Create a VirtualUniverse object.
    VirtualUniverse universe = new VirtualUniverse();

    // 3 - Create a Locale object, attaching it to the VirtualUniverse
object.
    Locale locale = new Locale(universe);

    // 4 - Create a view branch graph.
      // a - create a View object.
      View view = new View();
      View view2 = new View();
      View view3 = new View();
      View view4 = new View();

      // b - create a ViewPlatform object.
      viewplatform = new ViewPlatform();
      viewplatform2 = new ViewPlatform();
      viewplatform3 = new ViewPlatform();
      viewplatform4 = new ViewPlatform();

      // c - Create a PhysicalBody object.
      PhysicalBody physicalbody = new PhysicalBody();
      PhysicalBody physicalbody2 = new PhysicalBody();
      PhysicalBody physicalbody3 = new PhysicalBody();
      PhysicalBody physicalbody4 = new PhysicalBody();

      // d - create a PhysicalEnvironment object.
      PhysicalEnvironment physicalenvironment = new PhysicalEnvironment();
      PhysicalEnvironment physicalenvironment2 = new PhysicalEnvironment();
      PhysicalEnvironment physicalenvironment3 = new PhysicalEnvironment();
      PhysicalEnvironment physicalenvironment4 = new PhysicalEnvironment();


    // 5 - Contruct content branch graph(s)
    BranchGroup scene = new BranchGroup();

      // Draw the stuff in the scene
      scene = createSceneGraph();

      //  e - attach objects to View object.
      view.attachViewPlatform(viewplatform);
      view.setPhysicalBody(physicalbody);
      view.setPhysicalEnvironment(physicalenvironment);
      view.addCanvas3D(canvas3D);

        view2.attachViewPlatform(viewplatform2);
        view2.setPhysicalBody(physicalbody2);
        view2.setPhysicalEnvironment(physicalenvironment2);
        view2.addCanvas3D(second_canvas3D);

        view3.attachViewPlatform(viewplatform3);
        view3.setPhysicalBody(physicalbody3);
        view3.setPhysicalEnvironment(physicalenvironment3);
        view3.addCanvas3D(third_canvas3D);

        view4.attachViewPlatform(viewplatform4);
        view4.setPhysicalBody(physicalbody4);
        view4.setPhysicalEnvironment(physicalenvironment4);
        view4.addCanvas3D(fourth_canvas3D);

      // Set the viewplatform to the scene
      scene.addChild(viewplatform);

      // Set the view clip planes
      view.setBackClipDistance( 3000.0 );
      view.setFrontClipDistance( 0.001 );
        view2.setBackClipDistance( 300000.0 );
        view2.setFrontClipDistance( 0.1 );
        view3.setBackClipDistance( 300000.0 );
        view3.setFrontClipDistance( 0.1 );
        view4.setBackClipDistance( 3000.0 );
        view4.setFrontClipDistance( 0.001 );

    // 6 - Compile branch graph(s)
    // doing in scene..

    // 7 - Insert subgraphs into the Locale
    locale.addBranchGraph(scene);



    //
    // FINAL - add the canvases to the main panel so that the original
    //         canvas is in the biggest window, and the other three canvases
    //         are in 3 side windows.
    this.setLayout(new BorderLayout());

    JPanel mainpanel = new JPanel(new BorderLayout());
    JPanel viewpanel2 = new JPanel(new BorderLayout());

    mainpanel.add("Center", canvas3D);
    mainpanel.setBorder(BorderFactory.createEtchedBorder());

      viewpanel2.setPreferredSize(new Dimension(300,400));
      viewpanel2.setLayout(new GridLayout(3,0));
      viewpanel2.add(second_canvas3D);
      viewpanel2.add(third_canvas3D);
       viewpanel2.add(fourth_canvas3D);

    this.add(mainpanel, BorderLayout.CENTER);

      this.add(viewpanel2,BorderLayout.EAST);




/////////////////////////////////////////////////////////////////////










Mario





-----Original Message-----
From: ZACZEK, MARIUSZ P. (JSC-DM) (NASA)
To: [EMAIL PROTECTED]
Sent: 11/17/2002 5:57 PM
Subject: [JAVA3D] extending Canvas3D

I'm having trouble with extending a Canvas3d...I've attached the code
where
I
extend the Canvas3D...I removed all my preRender() postSwap(), etc code
and
I
get the same effect as with having just the code below. Basically what
happens is that my Canvas3D and SWING seems to have problems ONLY if I
extend the
Canvas3D as I do below....I've attached a picture to show you the
effect.
This
effect is noticable if I move the window off screen and bring it back.
The
SWING
portion does not redraw for a few seconds (typically 5-10) ... on
another
computer
I had a "paint smudge effect" instead of a simple white space as I show
in
this picture.
Basically the same thing happens but instead of being white space the
swing
side looks
like someone smudged it up...(hope that makes sense).

One thing though, if I simply use a Canvas3D (i.e. canvas3D = new
Canvas3D(Simple....)
I have absolutely NO problems....NONE. Refreshes right away without any
issue.
Only if I try to extend the Canvas3D do I have problems. Also, the
Canvas
actually is
also unusable for the 5-10 seconds because when I move the window around
I
can't
move anything in the canvas around.

Does anyone have any suggestions??? Am I missing something when I
declare
the SpecialCanvas
and extend the Canvas3D???

I'm trying to use this extended canvas so I can overwrite the preRender,
postSwap, etc
routines for doing Overlays....they work great if I don't move the
window
around
but If I move it then it gets screwed up...also, it does NOT get
affected if
I open
a window on top of my Java Program...you know, if I move Explorer or
Netscape over
on top of the window it still is ok...only has problems when I move the
window itself.

Please give me all of your suggestions....

I'm using the latest Java3d api, but I believe I'm using the Java 2D
1.3...did not upgrade
to the new one because I had problems.

Thanks,

Mario

////////////////////////////////////////////////////////////////////////
////
////
  canvas3D  = new
SpecialCanvas3D(SimpleUniverse.getPreferredConfiguration());

////////////////////////////////////////////////////////////////////////
////
////
private class SpecialCanvas3D extends Canvas3D {

    private J3DGraphics2D graphics2D;

    public SpecialCanvas3D(GraphicsConfiguration graphicsConfiguration)
{
      super(graphicsConfiguration);
    }

    public SpecialCanvas3D(GraphicsConfiguration graphicsConfiguration,
                           boolean offScreen) {
      super(graphicsConfiguration, offScreen);
    }

}
////////////////////////////////////////////////////////////////////////
////
////


   Mario

Mariusz Zaczek
NASA - Johnson Space Center
Automated Vehicles and Orbit Analysis / DM35
Flight Design and Dynamics Division
Mission Operations Directorate
Bldg: 30A     Room: 3048B

Disclaimer: "The opinions, observations and comments expressed in my
email
                   are strictly my own and do not necessarily reflect
those
of NASA."

 <<test.jpg>>

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