Hi, I have a behavior problem in my program. I implemented variations of PickTranslateBehavior & PickRotateBehavior and they worked fine, until I changed from a SimpleUniverse to my own custom one in order to allow for multiple 'viewports'. I will show a segment of the 'before' & 'after' code, if anyone could help I would appreciate it very much. Regards, Ben BEFORE ................. GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); c = new Canvas3D(config); scene = createSceneGraph(); u = new SimpleUniverse(c); viewPlatform = u.getViewingPlatform(); orbit = new OrbitBehavior(c); orbit.setSchedulingBounds(infiniteBounds); ................. public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup();
behavior1 = new MyPickTranslateBehavior(objRoot, c, infiniteBounds); objRoot.addChild(behavior1); AFTER GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); c = new Canvas3D[numViews]; u = new BasicUniverse(numViews); scene = createSceneGraph(); for(int s = 0; s < numViews; s++) { c[s] = new Canvas3D(config); } u.addBranchGraph(u.setupView(c[0], viewTransform1)); u.addBranchGraph(u.setupView(c[1], viewTransform2)); orbit = new OrbitBehavior(c[0]); //doesnt work anymore orbit.setSchedulingBounds(infiniteBounds); ................. public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); behavior1 = new MyPickTranslateBehavior(objRoot, c[0], infiniteBounds); //doesnt work anymore objRoot.addChild(behavior1); // THE BASIC UNIVERSE SOURCE CODE public class BasicUniverse extends Object implements Constants { VirtualUniverse universe; ViewPlatform viewPlatform; TransformGroup[] transformGroup; Locale locale; View view; int currentCanvas = 0; public BasicUniverse(int numCanvases) { universe = new VirtualUniverse(); locale = new Locale(universe); transformGroup = new TransformGroup[numCanvases]; } public BranchGroup setupView(Canvas3D extCanvas, Transform3D t){ viewPlatform = new ViewPlatform(); view = new View(); view.addCanvas3D(extCanvas); view.setPhysicalBody(new PhysicalBody()); view.setPhysicalEnvironment(new PhysicalEnvironment()); view.setBackClipDistance(5000); view.attachViewPlatform(viewPlatform); transformGroup[currentCanvas] = new TransformGroup(); transformGroup[currentCanvas].setCapability(TransformGroup.ALLOW_TRANSFORM_READ); transformGroup[currentCanvas].setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); transformGroup[currentCanvas].setTransform(t); transformGroup[currentCanvas].addChild(viewPlatform); BranchGroup toReturn = new BranchGroup(); toReturn.addChild(transformGroup[currentCanvas]); currentCanvas++; return toReturn; } public void addBranchGraph(BranchGroup bg) { locale.addBranchGraph(bg); } public void setView(Transform3D t, int canvas) { transformGroup[canvas].setTransform(t); } public Transform3D getViewTransform(int canvas){ Transform3D temp = new Transform3D(); transformGroup[canvas].getTransform(temp); return temp; } public void setViewBehavior(Behavior b) { // am i on the right track???? //viewPlatform.setViewPlatformBehavior(b); } public View getView() { return view; } } Any queries, dont hesitate to ask, basically if i debug on picking i just get nullpointerexceptions now, which i assume means it isnt finding the shape, i have highlighted where the problem is. Any ideas, anyone??? Thanks