[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

38.3.2 X3DPickSensorNode



 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.


   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