Here is a simple test case.  Two cubes, the view that you see when the
program is loaded shows the far cube rendered BEFORE the close one.
Please let me know what is going on.
There are two files: RenderProblem.java and cubes.wrl.
Sorry for the weird manipulators.

RenderProblem.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import java.io.*;
import java.util.*;
import javax.swing.*;

import com.sun.j3d.loaders.ParsingErrorException;
import com.sun.j3d.loaders.IncorrectFormatException;
import com.sun.j3d.loaders.Scene;

import com.sun.j3d.utils.behaviors.mouse.*;
//import com.sun.j3d.loaders.*;
import com.sun.j3d.loaders.vrml97.*;
//import com.sun.j3d.loaders.vrml97.impl.*;

// Java3dTree:
// import the package
// place the j3dtree.jar file in the classpath
import com.tornadolabs.j3dtree.*;

import java.net.*;

public class RenderProblem extends JPanel {
 Canvas3D c;
 Java3dTree m_J3dTree = null;

 SimpleUniverse u;
    public BranchGroup createSceneGraph()
 {
 m_J3dTree = new Java3dTree();

 // Create the root of the branch graph
 BranchGroup objRoot = new BranchGroup();

 TransformGroup objTrans = new TransformGroup();
 objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
 objRoot.addChild(objTrans);

 VrmlLoader vrmlloader = new VrmlLoader(VrmlLoader.LOAD_ALL);

 Scene s = null;
 try {
     s = vrmlloader.load("cubes.wrl");
     BranchGroup sbg = s.getSceneGroup();
     Hashtable hash = s.getNamedObjects();
     sbg.setCapability(Group.ALLOW_CHILDREN_READ);
     objTrans.addChild(sbg);
 }
 catch (FileNotFoundException e) {
     System.err.println(e);
     System.exit(1);
 }
 catch (ParsingErrorException e) {
     System.err.println(e);
     System.exit(1);
 }
 catch (IncorrectFormatException e) {
     System.err.println(e);
     System.exit(1);
 }
 BoundingSphere bounds =
     new BoundingSphere(new Point3d(0.0,0.0,0.0), 500.0);

        TransformGroup btg = u.getViewingPlatform().getViewPlatformTransform();
 MouseRotate behavior = new MouseRotate();//MouseBehavior.INVERT_INPUT);
   behavior.setTransformGroup(objTrans);
   objTrans.addChild(behavior);
   behavior.setSchedulingBounds(bounds);

   MouseZoom behavior2 = new MouseZoom(MouseBehavior.INVERT_INPUT);
   behavior2.setTransformGroup(btg);

   objTrans.addChild(behavior2);
   behavior2.setSchedulingBounds(bounds);

   MouseTranslate behavior3 = new MouseTranslate(MouseBehavior.INVERT_INPUT);
   behavior3.setTransformGroup(btg);
   objTrans.addChild(behavior3);
   behavior3.setSchedulingBounds(bounds);

   objRoot.setCapability(Group.ALLOW_CHILDREN_READ);
   m_J3dTree.recursiveApplyCapability( objRoot );

   Background background = new Background(1.f,1.f,1.f);
   background.setApplicationBounds(bounds);
   objRoot.addChild(background);

   DirectionalLight dl = new DirectionalLight(new Color3f(1.f,1.f,1.f),new 
Vector3f(0.f,0.f,-1.f));
   dl.setInfluencingBounds(bounds);
   BranchGroup newbg = new BranchGroup();
   newbg.addChild(dl);
   u.getViewingPlatform().getViewPlatformTransform().addChild(newbg);
   objRoot.compile();

   return objRoot;
 }

    public RenderProblem(int w, int h) {
 setLayout(new BorderLayout());
 // BoxLayout boxlayout=new BoxLayout(this,BoxLayout.Y_AXIS);
 // setLayout(boxlayout);
        GraphicsConfiguration config =
           SimpleUniverse.getPreferredConfiguration();

 c = new Canvas3D(config);
 c.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

 add("Center",c);
 ViewingPlatform vp = new ViewingPlatform();
 vp.setCapability(Group.ALLOW_CHILDREN_READ);
 vp.getViewPlatformTransform().setCapability(Group.ALLOW_CHILDREN_READ);
 u = new SimpleUniverse(vp, new Viewer(c));
 u.getCanvas().getView().setBackClipDistance(100.);
 u.getCanvas().getView().setFrontClipDistance(.000001);
 Transform3D trans = new Transform3D();
 trans.lookAt(new Point3d(8.,1.,-1.),new Point3d(0.,0.,0.), new Vector3d(0.,1.,0.));
 trans.invert();
        u.getViewingPlatform().getViewPlatformTransform().setTransform(trans);
 BranchGroup scene = createSceneGraph();
 u.addBranchGraph(scene);
     m_J3dTree.updateNodes( u );
    }

    public static void main(String[] args) {
 JPopupMenu.setDefaultLightWeightPopupEnabled(false);
        JFrame frame = new JFrame("Structure Diagram");
        frame.setSize(new Dimension(256, 512));
        final JPanel panel = new RenderProblem(256,512);
        frame.getContentPane().add(panel);
        frame.show();
    }
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cubes.wrl
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#VRML V2.0 utf8

WorldInfo {
  title "crazy_cube"
}

DEF BKG Background
{
    skyColor [ 0.490 0.690 0.000 ]
}


Viewpoint {
   position 0 0 8
   orientation 0 1 0 0
   fieldOfView 0.4
}

Transform {
   children [
      DEF CUBE_TRANSFORM Transform {
  children [
     DEF blaine Shape {
        appearance Appearance {
    material DEF CUBE_COLOR Material {
       diffuseColor 1.0 0.0 0.0
  specularColor 0.3 0.3 0.3

    }
        }
        geometry Box {
    size 1.5 1.5 1.5
        }
     }
    ]
      }
 Transform {
  translation 5 0 0
  children [
  USE blaine
  ]
 }
     ]
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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