public class PickResult extends Object
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.
Modifier and Type | Field and Description |
---|---|
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 and Description |
---|
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
|
Modifier and Type | Method and Description |
---|---|
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.
|
String |
toString()
Returns String representation
|
public static final int SHAPE3D
getNode(int)
to return a
Shape3D
node from
the SceneGraphPath
.public static final int MORPH
getNode(int)
to return a
Morph
node from
the SceneGraphPath
.public static final int PRIMITIVE
getNode(int)
to return a
Primitive
node from
the SceneGraphPath
.public static final int LINK
getNode(int)
to return a
Link
node from
the SceneGraphPath
.public static final int GROUP
getNode(int)
to return a
Group
node from
the SceneGraphPath
.public static final int TRANSFORM_GROUP
getNode(int)
to return a
TransformGroup
node from
the SceneGraphPath
.public static final int BRANCH_GROUP
getNode(int)
to return a
BranchGroup
node from
the SceneGraphPath
.public static final int SWITCH
getNode(int)
to return a
Switch
node from
the SceneGraphPath
.public PickResult(SceneGraphPath sgp, PickShape ps)
sgp
- SceneGraphPath associated with this PickResultps
- The pickShape to intersect againstpublic PickResult(Node pn, Transform3D l2vw, PickShape ps)
pn
- The picked node.l2vw
- The local to VWorld transformation for the nodeps
- The PickShape to intersect againstIllegalArgumentException
- If the node is not a Morph or Shape3D.public SceneGraphPath getSceneGraphPath()
public Transform3D getLocalToVworld()
public GeometryArray getGeometryArray()
public GeometryArray[] getGeometryArrays()
public int numGeometryArrays()
public int numCompressedGeometryShape3Ds()
public Shape3D[] getCompressedGeometryShape3Ds()
public PickShape getPickShape()
public void setFirstIntersectOnly(boolean flag)
false
(all intersections are
found)public boolean getFirstPickEnable()
public int numIntersections()
public PickIntersection getIntersection(int index)
index
- the index numberpublic PickIntersection getClosestIntersection(Point3d pt)
pt
- the point to use for distance calculationspublic String toString()
public Node getObject()
public Node getNode(int flags)
flags
- the type of node we are interested inCopyright © 2016–2022 SciJava. All rights reserved.