## com.sun.j3d.utils.picking
Class PickResult

    java.lang.Object
      com.sun.j3d.utils.picking.PickResult

    public class PickResult

extends java.lang.Object

Stores information about a pick hit. Detailed information about the pick and each intersection of the PickShape with the picked Node can be inquired. The PickResult is constructed with basic information and more detailed information is generated as needed. The additional information is only available if capability bits on the scene graph Nodes are set properly; `PickTool.setCapabilties(Node, int)` can be used to ensure correct capabilites are set. Inquiring data which is not available due to capabilties not being set will generate a `CapabilityNotSet` exception.

A PickResult can be used to calculate intersections on Node which is not part of a live scene graph using the constructor which takes a local to VWorld transformation for the Node.

Pick hits on TriangleStrip primitives will store the triangle points in the PickIntersection with the verticies in counter-clockwise order. For triangles which start with an odd numbered vertex this will be the the opposite of the order of the points in the TriangleStrip. This way the triangle in the PickIntersection will display the same was as the triangle in the strip.

If the Shape3D being picked has multiple geometry arrays, the arrays are stored in the PickResult and referred to by a geometry index.

If the Shape3D refers to a CompressedGeometry, the geometry is decompressed into an array of Shape3D nodes which can be inquired. The geometry NodeComponents for the Shape3D nodes are stored and used as if the Shape3D had multiple geometries. If there are multiple CompressedGeometries on the Shape3D, the decompressed Shape3Ds and GeometryArrays will be stored sequentially.

The intersection point for Morph nodes cannot be calculated using the displayed geometry due to limitations in the current Java3D core API (the current geometry of the the Morph cannot be inquired). Instead the geometry at index 0 in the Morph is used. This limitation may be eliminated in a future release of Java3D.

Field Summary
`static int` `BRANCH_GROUP` Flag to pass to `getNode(int)` to return a `BranchGroup` node from the `SceneGraphPath`.
`static int` `GROUP` Flag to pass to `getNode(int)` to return a `Group` node from the `SceneGraphPath`.
`static int` `LINK` Flag to pass to `getNode(int)` to return a `Link` node from the `SceneGraphPath`.
`static int` `MORPH` Flag to pass to `getNode(int)` to return a `Morph` node from the `SceneGraphPath`.
`static int` `PRIMITIVE` Flag to pass to `getNode(int)` to return a `Primitive` node from the `SceneGraphPath`.
`static int` `SHAPE3D` Flag to pass to `getNode(int)` to return a `Shape3D` node from the `SceneGraphPath`.
`static int` `SWITCH` Flag to pass to `getNode(int)` to return a `Switch` node from the `SceneGraphPath`.
`static int` `TRANSFORM_GROUP` Flag to pass to `getNode(int)` to return a `TransformGroup` node from the `SceneGraphPath`.

Constructor Summary
`PickResult(Node pn, Transform3D l2vw, PickShape ps)` Construct a PickResult using the Node and localToVWorld transform
`PickResult(SceneGraphPath sgp, PickShape ps)` Construct a PickResult using a SceneGraphPath

Method Summary
`PickIntersection` `getClosestIntersection(Point3d pt)` Gets the PickIntersection in this PickResult that is closest to a point
`Shape3D[]` `getCompressedGeometryShape3Ds()` Get the array of Shape3Ds that came from decompressing a CompressedGeometry on the picked node.
`boolean` `getFirstPickEnable()` Return the "first intersection only" value.
`GeometryArray` `getGeometryArray()` Get the GeometryArray at index 0 for the picked node
`GeometryArray[]` `getGeometryArrays()` Get the array of GeometryArrays for the picked node
`PickIntersection` `getIntersection(int index)` Returns a specific PickIntersection object
`Transform3D` `getLocalToVworld()` Get the localToVworld transform for the Node
`Node` `getNode(int flags)` Get the first node of a certain type up the SceneGraphPath
`Node` `getObject()` Get the picked node
`PickShape` `getPickShape()` Get the PickShape used for intersections
`SceneGraphPath` `getSceneGraphPath()` Get the SceneGraphPath.
`int` `numCompressedGeometryShape3Ds()` Get the number of Shape3Ds that came from decompressing a CompressedGeometry on the picked node.
`int` `numGeometryArrays()` Get the number of GeometryArrays for the picked node
`int` `numIntersections()` Returns the number of PickIntersections in the PickResult.
`void` `setFirstIntersectOnly(boolean flag)` Set the PickResult to find only the first intersection of the PickShape with the Node.
`java.lang.String` `toString()` Returns String representation

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### SHAPE3D

    public static final int SHAPE3D

  Flag to pass to `getNode(int)` to return a `Shape3D` node from the `SceneGraphPath`.

  See Also:
    Constant Field Values

### MORPH

    public static final int MORPH

  Flag to pass to `getNode(int)` to return a `Morph` node from the `SceneGraphPath`.

  See Also:
    Constant Field Values

### PRIMITIVE

    public static final int PRIMITIVE

  Flag to pass to `getNode(int)` to return a `Primitive` node from the `SceneGraphPath`.

  See Also:
    Constant Field Values

### LINK

    public static final int LINK

  Flag to pass to `getNode(int)` to return a `Link` node from the `SceneGraphPath`.

  See Also:
    Constant Field Values

### GROUP

    public static final int GROUP

  Flag to pass to `getNode(int)` to return a `Group` node from the `SceneGraphPath`.

  See Also:
    Constant Field Values

### TRANSFORM_GROUP

    public static final int TRANSFORM_GROUP

  Flag to pass to `getNode(int)` to return a `TransformGroup` node from the `SceneGraphPath`.

  See Also:
    Constant Field Values

### BRANCH_GROUP

    public static final int BRANCH_GROUP

  Flag to pass to `getNode(int)` to return a `BranchGroup` node from the `SceneGraphPath`.

  See Also:
    Constant Field Values

### SWITCH

    public static final int SWITCH

  Flag to pass to `getNode(int)` to return a `Switch` node from the `SceneGraphPath`.

  See Also:
    Constant Field Values

Constructor Detail

### PickResult

    public PickResult(SceneGraphPath sgp,
                      PickShape ps)

  Construct a PickResult using a SceneGraphPath

  Parameters:
    `sgp` - SceneGraphPath associated with this PickResult
    `ps` - The pickShape to intersect against

### PickResult

    public PickResult(Node pn,
                      Transform3D l2vw,
                      PickShape ps)

  Construct a PickResult using the Node and localToVWorld transform

  Parameters:
    `pn` - The picked node.
    `l2vw` - The local to VWorld transformation for the node
    `ps` - The PickShape to intersect against
  Throws:
    `java.lang.IllegalArgumentException` - If the node is not a Morph or Shape3D.

Method Detail

### getSceneGraphPath

    public SceneGraphPath getSceneGraphPath()

  Get the SceneGraphPath. This will be null if the non SceneGraphPath constructor was used.

### getLocalToVworld

    public Transform3D getLocalToVworld()

  Get the localToVworld transform for the Node

### getGeometryArray

    public GeometryArray getGeometryArray()

  Get the GeometryArray at index 0 for the picked node

### getGeometryArrays

    public GeometryArray[] getGeometryArrays()

  Get the array of GeometryArrays for the picked node

### numGeometryArrays

    public int numGeometryArrays()

  Get the number of GeometryArrays for the picked node

### numCompressedGeometryShape3Ds

    public int numCompressedGeometryShape3Ds()

  Get the number of Shape3Ds that came from decompressing a CompressedGeometry on the picked node.

### getCompressedGeometryShape3Ds

    public Shape3D[] getCompressedGeometryShape3Ds()

  Get the array of Shape3Ds that came from decompressing a CompressedGeometry on the picked node.

### getPickShape

    public PickShape getPickShape()

  Get the PickShape used for intersections

### setFirstIntersectOnly

    public void setFirstIntersectOnly(boolean flag)

  Set the PickResult to find only the first intersection of the PickShape with the Node. The default is `false` (all intersections are found)

### getFirstPickEnable

    public boolean getFirstPickEnable()

  Return the "first intersection only" value.

### numIntersections

    public int numIntersections()

  Returns the number of PickIntersections in the PickResult.

  Returns:
    the number of intersections

### getIntersection

    public PickIntersection getIntersection(int index)

  Returns a specific PickIntersection object

  Parameters:
    `index` - the index number
  Returns:
    the PickIntersection referenced by the index number

### getClosestIntersection

    public PickIntersection getClosestIntersection(Point3d pt)

  Gets the PickIntersection in this PickResult that is closest to a point

  Parameters:
    `pt` - the point to use for distance calculations
  Returns:
    the closest PickIntersection object

### toString

    public java.lang.String toString()

  Returns String representation

  Overrides:
    `toString` in class `java.lang.Object`
  Returns:
    string representation of this object

### getObject

    public Node getObject()

  Get the picked node

### getNode

    public Node getNode(int flags)

  Get the first node of a certain type up the SceneGraphPath

  Parameters:
    `flags` - the type of node we are interested in
  Returns:
    a Node object

Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.