Unigine::LeapMotion::Hand Struct
Header: | #include <LeapMotionInterface.h> |
Notice
LeapMotion plugin must be loaded.
Hands are the main entity tracked by the Leap Motion controller. The controller maintains an inner model of the human hand and validates the data from its sensors against this model. This allows the controller to track finger positions even when a finger is not completely visible.
Notice
The Leap Motion software matches the internal model against the existing data. In some cases, the software can make an incorrect match – for example, identifying a right hand as a left hand.
It is possible for movement or changes in position to be lost when a finger is behind or directly in front of the hand (from the point of view of the controller).
This structure represents a physical hand detected by the Leap and provides access to its attributes describing the hand position, orientation, and movement.
The structure has the following set of properties:
ID | ID of the hand. |
type | Hand type: 0 - for the left, 0 - for the right one. |
witdh | Width of the palm when the hand is in a flat position, in meters. |
is_valid | Indicates whether the hand contains valid tracking data (1). |
palm_position | Coordinates of the position of the palm. |
stabilized_palm_position | Coordinates of the modified palm position with some additional smoothing and stabilization applied. |
wrist_position | Coordinates of the position of the wrist. |
palm_velocity | Instantaneous velocity of the finger tip, in m/s. |
palm_normal | Coordinates of the normal vector to the palm. If a hand is flat, this vector will point downward, or “out” of the front surface of your palm. |
direction | Normalized direction from the palm position toward the fingers. |
basis | The orientation of the hand as a basis matrix. The basis is defined as follows:
Notice
Since the left hand is a mirror of the right hand, the basis matrix will be left-handed for left hands. You can change from right-hand to left-hand rule by multiplying the z basis vector by -1. |
arm | Arm of the hand. |
fingers | List of all fingers of the hand. |
Notice
The Hand structure is declared as follows:
All coordinates are relative to the origin of the Leap Motion coordinate system.
Source code (C++)
struct Hand
{
int id;
int type;
int is_valid;
float palm_width;
Unigine::Math::vec3 palm_position;
Unigine::Math::vec3 palm_stabilized_position;
Unigine::Math::vec3 wrist_position;
Unigine::Math::vec3 palm_velocity;
Unigine::Math::vec3 palm_normal;
Unigine::Math::vec3 direction;
Unigine::Math::mat4 basis;
Arm arm;
Unigine::Map<int, Finger> fingers;
};
Last update:
2020-01-14
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)