import java.awt.BorderLayout; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.media.j3d.BranchGroup; import javax.media.j3d.Canvas3D; import javax.vecmath.Point3d; import com.sun.j3d.utils.geometry.ColorCube; import com.sun.j3d.utils.picking.PickResult; import com.sun.j3d.utils.picking.PickTool; import com.sun.j3d.utils.universe.SimpleUniverse; @SuppressWarnings("serial") public class PickToolTest extends Frame { // ############################################ // Change this from false to true for testing: // ############################################ private static final boolean IS_OFFSCREEN = true; // ############################################ protected PickTool a_Picker = null; public PickToolTest() { setLayout(new BorderLayout()); setSize(1024, 768); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }); //////////////////////////////////// Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration(), IS_OFFSCREEN); if(!IS_OFFSCREEN) { add(canvas3D, BorderLayout.CENTER); } BranchGroup scene = new BranchGroup(); scene.addChild(new ColorCube(0.5)); a_Picker = new PickTool(scene); a_Picker.setMode(PickTool.GEOMETRY_INTERSECT_INFO); SimpleUniverse uni = new SimpleUniverse(canvas3D); uni.getViewingPlatform().setNominalViewingTransform(); uni.addBranchGraph(scene); //////////////////////////////////// } public void pickCube() { Point3d startPoint = new Point3d(0,0,+1000); Point3d endPoint = new Point3d(0,0,-1000); a_Picker.setShapeSegment(startPoint, endPoint); PickResult[] pickResults = a_Picker.pickAllSorted(); System.out.println("Pick results for IS_OFFSET="+IS_OFFSCREEN+":\n"); System.out.println(pickResults); } public static void main(String[] args) { System.setProperty("sun.awt.noerasebackground", "true"); // needed due to a AWT repaint bug System.out.println("############"); System.out.println("PickToolTest"); System.out.println("############"); PickToolTest test = new PickToolTest(); test.setVisible(true); test.pickCube(); System.out.println("\n############"); } }