Unigine::LeapMotion::Bone Struct
Header: | #include <LeapMotionInterface.h> |
LeapMotion plugin must be loaded.
This structure represents a bone of a finger and has the following set of properties:
type | Bone type. One of the Bone::TYPE_* values. |
length | Length of the bone, in meters. |
witdh | Width of the bone, in meters. |
is_valid | Indicates whether the bone contains valid tracking data (1). |
prev_joint | Coordinates of the end of the bone, closest to the wrist (proximal). |
next_joint | Coordinates of the end of the bone, closest to the finger tip (distal). |
center | Coordinates of the center of the bone. |
direction | Normalized direction of the bone from wrist to tip. |
basis | Orthonormal basis vectors for the bone as a Matrix. Basis vectors specify the orientation of the bone:
The bases provided for the right hand use the right-hand rule; those for the left hand use the left-hand rule. Thus, the positive direction of the x-basis is to the right for the right hand and to the left for the left hand. You can change from right-hand to left-hand rule by multiplying the z basis vector by -1. You can use the basis vectors for such purposes as measuring complex finger poses and skeletal animation. Converting the basis vectors directly into a quaternion representation is not mathematically valid. If you use quaternions, create them from the derived rotation matrix not directly from the bases. |
All coordinates are relative to the origin of the Leap Motion coordinate system.
struct Bone
{
int type;
float length;
float width;
int is_valid;
Unigine::Math::vec3 prev_joint;
Unigine::Math::vec3 next_joint;
Unigine::Math::vec3 center;
Unigine::Math::vec3 direction;
Unigine::Math::mat4 basis;
};
Last update:
2020-01-14
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)