Whenever the VRGestureRecognizer is called without a string indicating a custom Gesture-Data directory, it assumes the directory "gesture_dir", in which it will find a file named "gesture.dat" containing in the first line the number of features listed in this file. This is followed by a list of names of features each on on line. The spelling of these features has to be exactly the same as that of the actual gesture-data-files. These are named with the extension .dat so that a gesture named "select" in the gesture.dat file would have a file "select.dat" associated with it and in the same directory as the gesture.dat file.
Each gesture-data-file has four columns and a row for each feature that the system uses. In the columns are listed (from left to right):
Minimum, Maximum, Average & normalised Standard Deviation.
e.g.
1221.332 1258.312 1234.323 0.0343The current system doesn't make use of the Min and Max values. It relies on error-minimisation using the average value to make its judgment. The normalised standard deviation is used as an indication of how good a feature recognises a particular gesture. The validator also makes use of the average value and the normalised standard deviation to examine if two gestures lie too close on the value-line for a given feature.
When selecting gestures for a new system several factors have to be taken into account:
- Consistency
When learning the gesture or gathering data for the evaluator, it has to be seen to it, that successive iterations of the same gesture are done with as little alteration as possible.
- Selecting the right gesture
New gestures can easily be tested with the VRGestureRecognizer without having been implemented yet. As a rule of thumb: If by inspection the different features return similar values for successive iterations of the gesture (e.g. Feature0 returns {12.3,13.1,12.8,...}, Feature2 returns (103.2,105.1,103.9,...} and so on), then the features will reliably identify the gesture. Care has still to be taken not to select several gesture with the same featurevalues.
- Thinking like a machine
The system has a limited set of features it can identify in a gesture. It is useful to understand these features to be able to select gestures efficiently. A "kinky" feature for example can determine how many edges or "kinks" are in a gesture. Selecting gestures that only differ by curvature would be a poor choice. This principle also applies when using the system as an input-device: When executing different gestures care should be taken to stress the features of a particular gesture.
A complete list of the deafult gestures (used for testing) can be found below... The black arrows indicate the starting direction or general direction of the gesture. This is important seeing as even though the regocnition process is independent of rotation and scale of the gestures some features are not independent of orientation (e.g. drawing a circle clock-wise or anti-clock-wise). A desciption of the gesture can be found in the middle column and and example of how it may be used in the right-most column.
![]() |
"ARROW" This gesture is almost identical to the Cross |
![]() |
![]() |
"CIRCLES" This gesture has recognition rates of |
![]() |
![]() |
"CROSS" This gesture is a difficult one to |
![]() |
![]() |
"HILL" The Hill was introduced to show |
![]() |
![]() |
"SELECT" In the new system Select has come |
![]() |
![]() |
"SCRIBBLE" The Scribble feature is in the midfield |
![]() |
![]() |
"TICK" Being one of the more reliable |