summaryrefslogtreecommitdiffstats
path: root/src/PickTest/IntersectInfoBehavior.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/PickTest/IntersectInfoBehavior.java')
-rw-r--r--src/PickTest/IntersectInfoBehavior.java251
1 files changed, 0 insertions, 251 deletions
diff --git a/src/PickTest/IntersectInfoBehavior.java b/src/PickTest/IntersectInfoBehavior.java
deleted file mode 100644
index e0cdb2c..0000000
--- a/src/PickTest/IntersectInfoBehavior.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * $RCSfile$
- *
- * Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any
- * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
- * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
- * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
- * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
- * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
- * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR
- * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
- * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
- * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
- * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed, licensed or
- * intended for use in the design, construction, operation or
- * maintenance of any nuclear facility.
- *
- * $Revision$
- * $Date$
- * $State$
- */
-
-import java.awt.*;
-import java.awt.event.*;
-import java.util.*;
-import javax.media.j3d.*;
-import javax.vecmath.*;
-import com.sun.j3d.utils.pickfast.*;
-import com.sun.j3d.utils.geometry.*;
-
-/**
- * Class: IntersectInfoBehavior
- *
- * Description: Used to respond to mouse pick and drag events
- * in the 3D window. Displays information about the pick.
- *
- * Version: 1.0
- *
- */
-public class IntersectInfoBehavior extends Behavior {
-
- float size;
- PickCanvas pickCanvas;
- PickInfo[] pickInfoArr;
- Appearance oldlook, redlookwf, redlook, greenlook, bluelook;
- Node oldNode = null;
- GeometryArray oldGeom = null;
- Color3f redColor = new Color3f (1.0f, 0.0f, 0.0f);
- TransformGroup[] sphTrans = new TransformGroup [6];
- Sphere[] sph = new Sphere [6];
- Transform3D spht3 = new Transform3D();
-
- public IntersectInfoBehavior(Canvas3D canvas3D, BranchGroup branchGroup,
- float size) {
- pickCanvas = new PickCanvas(canvas3D, branchGroup);
- pickCanvas.setTolerance(5.0f);
- pickCanvas.setMode(PickInfo.PICK_GEOMETRY);
- pickCanvas.setFlags(PickInfo.LOCAL_TO_VWORLD | PickInfo.CLOSEST_GEOM_INFO);
- this.size = size;
- // Create an Appearance.
- redlook = new Appearance();
- Color3f objColor = new Color3f(0.5f, 0.0f, 0.0f);
- Color3f black = new Color3f(0.0f, 0.0f, 0.0f);
- Color3f white = new Color3f(1.0f, 1.0f, 1.0f);
- redlook.setMaterial(new Material(objColor, black, objColor, white, 50.0f));
- redlook.setCapability (Appearance.ALLOW_MATERIAL_WRITE);
-
- redlookwf = new Appearance ();
- redlookwf.setMaterial(new Material(objColor, black, objColor, white, 50.0f));
- PolygonAttributes pa = new PolygonAttributes();
- pa.setPolygonMode(pa.POLYGON_LINE);
- pa.setCullFace(pa.CULL_NONE);
- redlookwf.setPolygonAttributes(pa);
-
- oldlook = new Appearance();
- objColor = new Color3f(1.0f, 1.0f, 1.0f);
- oldlook.setMaterial(new Material(objColor, black, objColor, white, 50.0f));
-
- greenlook = new Appearance();
- objColor = new Color3f(0.0f, 0.8f, 0.0f);
- greenlook.setMaterial(new Material(objColor, black, objColor, white, 50.0f));
- bluelook = new Appearance();
- objColor = new Color3f(0.0f, 0.0f, 0.8f);
- bluelook.setMaterial(new Material(objColor, black, objColor, white, 50.0f));
- for (int i=0;i<6;i++) {
- switch (i) {
- case 0:
- sph[i] = new Sphere(size*1.15f, redlook);
- break;
- case 1:
- sph[i] = new Sphere(size*1.1f, greenlook);
- break;
- default:
- sph[i] = new Sphere(size, bluelook);
- break;
- }
- sph[i].setPickable (false);
- sphTrans[i] = new TransformGroup ();
- sphTrans[i].setCapability (TransformGroup.ALLOW_TRANSFORM_READ);
- sphTrans[i].setCapability (TransformGroup.ALLOW_TRANSFORM_WRITE);
-
- // Add sphere, transform
- branchGroup.addChild (sphTrans[i]);
- sphTrans[i].addChild (sph[i]);
- }
- }
-
- public void initialize() {
- wakeupOn (new WakeupOnAWTEvent(MouseEvent.MOUSE_PRESSED));
- }
-
- public void processStimulus (Enumeration criteria) {
- WakeupCriterion wakeup;
- AWTEvent[] event;
- int eventId;
-
- while (criteria.hasMoreElements()) {
- wakeup = (WakeupCriterion) criteria.nextElement();
- if (wakeup instanceof WakeupOnAWTEvent) {
- event = ((WakeupOnAWTEvent)wakeup).getAWTEvent();
- for (int i=0; i<event.length; i++) {
- eventId = event[i].getID();
- if (eventId == MouseEvent.MOUSE_PRESSED) {
- int x = ((MouseEvent)event[i]).getX();
- int y = ((MouseEvent)event[i]).getY();
- pickCanvas.setShapeLocation(x, y);
-
- pickInfoArr = pickCanvas.pickAllSorted();
- // Use this to do picking benchmarks
- /*
- long start = System.currentTimeMillis();
- for (int l=0;l<2;l++) {
- if (l == 0) System.out.print ("BOUNDS: ");
- if (l == 1) System.out.print ("GEOMETRY: ");
-
- for (int k=0;k<1000;k++) {
- if (l == 0) {
- pickCanvas.setMode(PickTool.BOUNDS);
- pickResult = pickCanvas.pickAllSorted();
- }
- if (l == 1) {
- pickCanvas.setMode(PickTool.GEOMETRY);
- pickResult = pickCanvas.pickAllSorted();
- }
- }
- long delta = System.currentTimeMillis() - start;
- System.out.println ("\t"+delta+" ms / 1000 picks");
- }
- */
- if (pickInfoArr != null) {
-
- // Get closest intersection results
- Transform3D l2vw = pickInfoArr[0].getLocalToVWorld();
- PickInfo.IntersectionInfo[] iInfoArr = pickInfoArr[0].getIntersectionInfos();
- PickIntersection pi = new PickIntersection(l2vw, iInfoArr[0]);
-
- // Safe to assume the return geometry is of GeometryArray type.
- GeometryArray curGeomArray = (GeometryArray) iInfoArr[0].getGeometry();
-
- // Position sphere at intersection point
- Vector3d v = new Vector3d();
- Point3d intPt = pi.getPointCoordinatesVW();
- v.set(intPt);
- spht3.setTranslation (v);
- sphTrans[0].setTransform (spht3);
-
- // Position sphere at closest vertex
- Point3d closestVert = pi.getClosestVertexCoordinatesVW();
- v.set(closestVert);
- spht3.setTranslation (v);
- sphTrans[1].setTransform (spht3);
-
- Point3d []ptw = pi.getPrimitiveCoordinatesVW();
- Point3d []pt = pi.getPrimitiveCoordinates();
- int []coordidx = pi.getPrimitiveCoordinateIndices();
- Point3d ptcoord = new Point3d();
- for (int k=0;k<pt.length;k++) {
- v.set(ptw[k]);
- spht3.setTranslation (v);
- sphTrans[k+2].setTransform (spht3);
- }
-
- // Get interpolated color (if available)
- Color4f iColor4 = null;
- Color3f iColor = null;
- Vector3f iNormal = null;
-
- if (curGeomArray != null) {
- int vf = curGeomArray.getVertexFormat();
-
- if (((vf &
- (GeometryArray.COLOR_3 |
- GeometryArray.COLOR_4)) != 0) &&
- (null != (iColor4 =
- pi.getPointColor()))) {
- iColor =
- new Color3f(iColor4.x, iColor4.y, iColor4.z);
-
- // Change the point's color
- redlook.setMaterial(new Material(iColor, new Color3f (0.0f, 0.0f, 0.0f), iColor, new Color3f(1.0f, 1.0f, 1.0f), 50.0f));
- }
- if (((vf & GeometryArray.NORMALS) != 0) &&
- (null != (iNormal =
- pi.getPointNormal()))) {
- System.out.println ("Interpolated normal: "+iNormal);
- }
- }
-
- System.out.println ("=============");
- System.out.println ("Coordinates of intersection pt:"+intPt);
- System.out.println ("Coordinates of vertices: ");
- for (int k=0;k<pt.length;k++) {
- System.out.println (k + ":" + ptw[k].x + " " + ptw[k].y + " " + ptw[k].z);
- }
- System.out.println ("Closest vertex: "+closestVert);
- if (iColor != null) {
- System.out.println ("Interpolated color: "+iColor);
- }
- if (iNormal != null) {
- System.out.println ("Interpolated normal: "+iNormal);
- }
- }
- }
- }
- }
- }
- wakeupOn (new WakeupOnAWTEvent(MouseEvent.MOUSE_PRESSED));
- }
-}