The gestureCapture COMP records movement and then displays the curves as (1) rendered lines and/or (2) a dot following the curves and/or (3) free-hand drawn shapes. The outputs of
gestureCapture are (a) the rendered image, (b) a SOP containing all paths as polygonal lines, (c) a CHOP containing the merged lines and (d) number of lines. Internally you can access a CHOP and a SOP for every gesture recorded.
By default you click and draw on the panel. It uses the x and y position of the cursor over the component, plus the left-click mouse button state to start/run capturing each gesture. Random colors are artificially added via the Color page to illustrate that any channels can be recorded with the positions.
Undo deletes the last curve. Clear deletes them all.
To record your own input channels, put any set of channels in input 1 of this component, for instance, the channels from an HTC Vive controller. If you have channels named
tz scaled in the XY range -1 to +1, you will see the paths in the default viewer (
tz is overriden internally so you will have to remove it from
In the second input, attach an on/off "select" channel to start, run and end the capturing of the gesture. It can be a keyboard key, MIDI button or controller button or some motion threshold.
In the third input you can optionally send a “clear all lines” channel to signal to remove all lines. In the fourth input you can send a “undo” channel to signal to remove the last line drawn. Alternately you can clear and undo using the Clear and Undo pulse parameters.
For every frame while recording a gesture, a keyframe is generated for every incoming channel. Recording as keyframes enables the recorded data to be better smoothed. Some parameters on the Gesture page set the threshold of motion, affecting whether keyframes are created or not. With a non-zero threhold, when the motion is deemed still, it will not add new keyframes. Channel groups like
tz has their own threshold of motion vs stillness, and you can set thresholds for other sets of channels.
Each gesture is stored as a component at
line2... It outputs 3 CHOPs and a SOP:
out3- SOP - the smoothed gesture as a polygonal line.
out2- CHOP - the smoothed and generated channels. It contains 18 channels including channels that compute the gesture speed, velocity, direction and distance travelled, which can be readily used by your applications.
out4- CHOP - the length of time of the gesture, in seconds.
To watch the data while it is being gathered and processed, press the Keys and Chans buttons in the
gestureCapture panel to see floating data viewers.
The number of lines is stored in
ipar.Gesture.Nlines and output to
out3. (The max of the CHOP output's
lineindex channel also indicates how many lines there are.)
The SOP has a '
width' attribute and is rendered with the Line MAT.
Note: This component is set up by default to use '
u' and '
v' from the panel, '
select' from the panel left-click. '
tz' is set to 0, and random colors are artificially added. remove
sero_color or replace them if you wish.
Dot page: The moving dot (controlled from the Dot page) is
gestureCapture/dotCycle1, an example of moving objects by sampling the gesture curves.
PolyFill page: You can also draw closed shapes by turning on Render Fill in the PolyFill page. Simple smoothing so no Illustrator quality here.
Parameters - Control Page
Help - Opens this page.
Version - Current version of this COMP.
Width - This value is the width of the stroke. This value is in pixels.
Blur - The amount of blur in pixels.
Clear - Clears all lines.
Undo - Clears the last line drawn.
Threshold Xlate Speed
Threshold Rotate Speed
Resample by Edge Length
Resamplelength - Forces the length of each stroke to be the value set in the “Edge Length” parameter.
Edgelength - The length of each stroke.
Keep Last Edge Point
Keeplast - Turning off this parameter will remove the ends of strokes that are less than the value in the ‘Edge Length’ parameter.
- Input 0: in1 -
- Input 1: in2 -
- Input 2: in3 -
- Input 3: in4 -
- Output 0 -
- Output 1 -
- Output 2 -