[X3D-Public] X3D Picking component review
Don Brutzman
brutzman at nps.edu
Wed Nov 21 10:24:43 PST 2012
On today's call we did a "deep dive" into picking component semantics.
Several clarifications follow, including proposed addition of a new field to resolve ambiguous semantics.
Comments welcome, especially by browser implementers.
38.3.1 X3DPickableObject
http://www.web3d.org/files/specifications/19775-1/V3.3/Part01/components/picking.html#X3DPickableObject
38.3.2 X3DPickSensorNode
http://www.web3d.org/files/specifications/19775-1/V3.3/Part01/components/picking.html#X3DPickSensorNode
http://www.web3d.org/membership/login/mantis/view.php?id=572
=====================================================================================================
For consistency throughout the interface and node field signatures, use comma , instead of inclusive-or | character for separating values of MFString array.
This style rule should be checked and applied throughout the specification.
Specification comment for this component:
MFString [in,out] objectType "ALL" ["ALL", "NONE", "TERRAIN", ...]
=====================================================================================================
The semantics of the objectType field do not appear to be fully clear and deserve further attention.
We also need to be careful to achieve matching pickee/picker semantics for X3DPickableObject and X3DPickSensorNode interfaces.
Example use case: a user might want to pick two sets of objects that they have separately labeled as "TERRAIN" and "ROAD" at one time. Alternatively, they might want a bridge and so look for "ROAD" but not allow "TERRAIN" matches.
Therefore we need semantics that clearly allow a combination of values.
Suggested sentences for addition follow.
======================================================
For X3DPickableObject and X3DPickSensorNode:
- The value "NONE" overrides the presence of any other string values in this objectType field, thereby disabling picking for this node.
======================================================
For X3DPickSensorNode:
- Presence of the "ALL" value indicates that all pickable objectTypes defined within a pickTarget are eligible.
EXAMPLE
objectType ["ALL" "TERRAIN" "ROAD"] includes all geometry identified as pickable in a pickTarget, including "TERRAIN" and "ROAD" (and perhaps "WATER", if defined).
objectType ["TERRAIN" "ROAD"] only includes the two named sets of pickable geometry, "TERRAIN" and "ROAD".
=====================================================================================================
Discovered issue: nature of X3DPickSensorNode pick matching. Suggested specification prose follows.
SFString [in,out] matchCriterion "MATCH_ANY" ["MATCH_ANY" | "MATCH_EVERY" | "MATCH_ONLY_ONE"]
The matchCriterion field defines whether the X3DPickSensorNode pick is matching one or more objectType value(s), as follows.
* "MATCH_ANY" means that any match of objectType values is acceptable
* "MATCH_EVERY" means that every objectType label in the X3DPickSensorNode shall match an objectType label in the X3DPickableObject
* "MATCH_ONLY_ONE" means that one and only one objectType label can match
=====================================================================================================
all the best, Don
--
Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu
Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman
More information about the X3D-Public
mailing list