// ***********declare these variables in class where canvas3D lives ***** //J3D stuff public InteractiveCanvas3D canvas3D; public SimpleUniverse simpleUniv; private Transform3D viewingTransform; private TransformGroup viewingTransformGroup; public static Point3d viewersLocation; public static Point3d gazePoint; //point viewer is looking at // and initialize as follows: viewingTransformGroup = simpleUniv.getViewingPlatform().getViewPlatformTransform(); viewingTransform = new Transform3D(); //called to update viewer's location and gaze: // *********************** UpdateViewerGeometryJ3D public void UpdateViewerGeometryJ3D() { Point3d eye = viewersLocation; Point3d center = gazePoint; Vector3d up = upDir; viewingTransform.lookAt(eye, center, up); viewingTransform.invert(); viewingTransformGroup.setTransform(viewingTransform);
TransformGroup viewingTransformGroup = simpleUniv.getViewingPlatform().getViewPlatformTransform(); Transform3D viewingTransform = new Transform3D(); Point3d eye = viewersLocation; Point3d center = gazePoint; Vector3d up = new Vector3d(0,1,0); //assumes +y-axis points up viewingTransform.lookAt(eye, center, up); viewingTransform.invert(); viewingTransformGroup.setTransform(viewingTransform);
Transform3D lookAt = new Transform3D(); lookAt.lookAt( new Point3d( 0.0, 0.0, 1.0 ) , new Point3d( 0.0, 0.0, 0.0 ) , new Vector3d( 0.0, 1.0, 0.0) ); lookAt.invert();
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas3d = new Canvas3D(config); // Manually create the viewing platform so that we can customize it ViewingPlatform viewingPlatform = new ViewingPlatform(); // **** This is the part I was missing: Activation radius viewingPlatform.getViewPlatform().setActivationRadius(300f); // Set the view position back far enough so that we can see things TransformGroup viewTransform = viewingPlatform.getViewPlatformTransform(); Transform3D t3d = new Transform3D(); // Note: Now the large value works t3d.lookAt(new Point3d(0,0,150), new Point3d(0,0,0), new Vector3d(0,1,0)); t3d.invert(); viewTransform.setTransform(t3d); // Set back clip distance so things don't disappear Viewer viewer = new Viewer(canvas3d); View view = viewer.getView(); view.setBackClipDistance(300); SimpleUniverse universe = new SimpleUniverse(viewingPlatform, viewer);
Transform3D t3d = new Transform3D(); t3d.lookAt(from, to, v); t3d.invert(); viewTransform.setTransform(t3d);