3Gear Systems SDK  v0.9.34
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties
Classes | Enumerations | Functions
Package ThreeGear

Classes

class  BasicMessage
 The most basic form of the hand tracking message includes a type, which hand was updated, and the position and rotational frame of each hand. The hand rotation is specified as a quaternion (x,y,z,w). More...
 
class  BimanualPinchMessage
 Messages relating to simultaneous or individual pinching More...
 
class  CalibrationMessage
 Message that indicates the progress of calibrating the user's hand scale. More...
 
class  HandState
 Structure holding the position, rotational frame and other information relevant to the state of the hand. More...
 
class  HandTrackingMessage
 Base class for all hand-tracking messages / events. More...
 
class  OpenCVCamera
 A class representing the intrinsic/extrinsic parameters of the depth camera. More...
 
class  PinchMessage
 Messages relating to pressing, releasing, dragging and moving of each hand. More...
 
class  PointMessage
 Messages related to pointing with the index finger. More...
 
class  PoseMessage
 Message that exposes the hand skeleton information for both hands. More...
 
class  UserMessage
 Message that exposes the user name and skinning information for the user's calibrated hands. More...
 
class  WelcomeMessage
 A message sent upon connecting to the server, indicating the server and protocol version. More...
 

Enumerations

enum  MessageType {
  WELCOME, USER, POSE, PRESSED,
  DRAGGED, RELEASED, MOVED, SIMULTANEOUSLY_PRESSED,
  INDIVIDUALLY_PRESSED, SIMULTANEOUSLY_RELEASED, INDIVIDUALLY_RELEASED, DRAGGED_BIMANUAL,
  POINT, CALIBRATION
}
 Used to determine what type of message received. More...
 
enum  HandPose {
  HAND_CURLED = 0, HAND_ELL = 1, HAND_OKAY = 2, HAND_PINCH = 3,
  HAND_POINTING = 4, HAND_RELAXEDOPEN = 5, HAND_SPREAD = 6
}
 Hand pose indices used for the PoseMessage.HandPoseConfidences scores. More...
 
enum  Hand { LEFT = 0, RIGHT = 1, BOTH = 2 }
 Used for disambiguating which hand a message refers to (some messages can refer to both). More...
 
enum  JointFrameIndex {
  ROOT_JOINT = 0, WRIST_JOINT, THUMB_PROXIMAL, THUMB_INTERMEDIATE,
  THUMB_DISTAL, INDEX_PROXIMAL, INDEX_INTERMEDIATE, INDEX_DISTAL,
  MIDDLE_PROXIMAL, MIDDLE_INTERMEDIATE, MIDDLE_DISTAL, RING_PROXIMAL,
  RING_INTERMEDIATE, RING_DISTAL, PINKY_PROXIMAL, PINKY_INTERMEDIATE,
  PINKY_DISTAL
}
 Indices for JointFrames in PoseMessage. More...
 
enum  FingerDOF {
  THUMB_CMC_AA = 0, THUMB_CMC_FE, THUMB_MCP, THUMB_IP,
  INDEX_MCP_AA, INDEX_MCP_FE, INDEX_PIP, MIDDLE_MCP_AA,
  MIDDLE_MCP_FE, MIDDLE_PIP, RING_MCP_AA, RING_MCP_FE,
  RING_PIP, PINKY_MCP_AA, PINKY_MCP_FE, PINKY_PIP
}
 Degrees of freedom of the hand model, as reported by the ThreeGear.PoseMessage.FingerDOFs function. More...
 

Functions

delegate void MessageHandler (HandTrackingMessage message)
 A delegate for receiving hand update events. More...
 
delegate void ErrorHandler (string errMsg)
 A delegate for receiving error message. More...
 

Enumeration Type Documentation

Degrees of freedom of the hand model, as reported by the ThreeGear.PoseMessage.FingerDOFs function.

Each of these is a rotation in radians that measures how far the corresponding finger is bent from its rest pose. For flexion/extension joints, positive angles indicate flexion while negative angles indicate extension.

We recommend using these joint angles for detecting gestures of the form "finger X is bending." If you need to know the global position/orientation of the hand, you'll need to use the joint frames returned by HandTrackingClient::PoseMessage::getJointFrames instead.

For more details on the hand model, consult the hand model docs.

Enumerator
THUMB_CMC_AA 

Thumb carpal-metacarpal joint, adduction/abduction

THUMB_CMC_FE 

Thumb carpal-metacarpal joint, flexion/extension

THUMB_MCP 

Thumb metacarpal-phalangeal joint, flexion/extension

THUMB_IP 

Thumb interphalangeal joint, flexion/extension

INDEX_MCP_AA 

Index finger metacarpal-phalangeal joint, adduction/abduction

INDEX_MCP_FE 

Index finger metacarpal-phalangeal joint, flexion/extension

INDEX_PIP 

Index finger proximal interphalangeal joint, flexion/extension

MIDDLE_MCP_AA 

Middle finger metacarpal-phalangeal joint, adduction/abduction

MIDDLE_MCP_FE 

Middle finger metacarpal-phalangeal joint, flexion/extension

MIDDLE_PIP 

Middle finger proximal interphalangeal joint, flexion/extension

RING_MCP_AA 

Ring finger metacarpal-phalangeal joint, adduction/abduction

RING_MCP_FE 

Ring finger metacarpal-phalangeal joint, flexion/extension

RING_PIP 

Ring finger proximal interphalangeal joint, flexion/extension

PINKY_MCP_AA 

Pinky finger metacarpal-phalangeal joint, adduction/abduction

PINKY_MCP_FE 

Pinky finger metacarpal-phalangeal joint, flexion/extension

PINKY_PIP 

Pinky finger proximal interphalangeal joint, flexion/extension

Used for disambiguating which hand a message refers to (some messages can refer to both).

Enumerator
LEFT 

The left hand.

RIGHT 

The right hand.

BOTH 

Both hands; reserved for messages (like BimanualPinchMessages) that affect both hands.

Hand pose indices used for the PoseMessage.HandPoseConfidences scores.

Enumerator
HAND_CURLED 

The hand curled up, ready to pinch.

HAND_ELL 

The sign language "L" shape.

HAND_OKAY 

The "okay" symbol; thumb and index touching and other three fingers spread.

HAND_PINCH 

Thumb and forefinger touching.

HAND_POINTING 

Index finger point.

HAND_RELAXEDOPEN 

What we consider a "neutral" pose, with fingers slightly curled.

HAND_SPREAD 

All five fingers spread.

Indices for JointFrames in PoseMessage.

These are the frames returned by ThreeGear.PoseMessage.JointFrames, and used for skinning. We recommend using these if you need to locate points in 3D space or define 3D frames; if you want to recognize gestures of the form "finger X is bending" we recommend using the FingerDOF instead.

The most stable frame is the one defined by the metacarpals (here, the WRIST_JOINT). If you need a 3D frame for something, we recommend using this one.

For more details on the hand model, consult the hand model docs.

Enumerator
ROOT_JOINT 

The frame of the user's forearm (this is where the hand model is rooted).

WRIST_JOINT 

The frame of the back of the hand (anatomically, this is the frame of the carpals).

THUMB_PROXIMAL 

Thumb proximal frame, refers to the thumb metacarpal bone.

THUMB_INTERMEDIATE 

Thumb intermediate frame, refers to the thumb proximal phalange.

THUMB_DISTAL 

Thumb distal frame, refers to the thumb distal phalange.

INDEX_PROXIMAL 

Index finger proximal frame, refers to the proximal phalange.

INDEX_INTERMEDIATE 

Index finger intermediate frame, refers to the intermediate phalange.

INDEX_DISTAL 

Index finger distal frame, refers to the distal phalange.

MIDDLE_PROXIMAL 

Middle finger proximal frame, refers to the proximal phalange.

MIDDLE_INTERMEDIATE 

Middle finger intermediate frame, refers to the intermediate phalange.

MIDDLE_DISTAL 

Middle finger distal frame, refers to the distal phalange.

RING_PROXIMAL 

Ring finger proximal frame, refers to the proximal phalange.

RING_INTERMEDIATE 

Ring finger intermediate frame, refers to the intermediate phalange.

RING_DISTAL 

Ring finger distal frame, refers to the distal phalange.

PINKY_PROXIMAL 

Pinky finger proximal frame, refers to the proximal phalange.

PINKY_INTERMEDIATE 

Pinky finger intermediate frame, refers to the intermediate phalange.

PINKY_DISTAL 

Pinky finger distal frame, refers to the distal phalange.

Used to determine what type of message received.

In particular, this can be used to disambiguate between messages that are different but have the same C# type, such as the various PinchMessage varieties (PRESSED, RELEASED, etc.)

Enumerator
WELCOME 

The WelcomeMessage provides server and protocol versions.

USER 

The UserMessage provides the user profile name and skinning information of each hand.

POSE 

The PoseMessage provides full skeleton and finger-tip information of each hand.

PRESSED 

User pressed index and thumb together. Type of PinchMessage.

DRAGGED 

User moved hand while holding a pinch. Type of PinchMessage.

RELEASED 

User released the pinch. Type of PinchMessage.

MOVED 

User moved without pinching. Type of PinchMessage.

SIMULTANEOUSLY_PRESSED 

User pinched thumb and index finger of both hands at (approximately) the same time. Type of BimanualPinchMessage.

INDIVIDUALLY_PRESSED 

User pinched thumb and index finger of one hand (compare to SIMULTANEOUSLY_PRESSED). Type of BimanualPinchMessage.

SIMULTANEOUSLY_RELEASED 

User released thumb and index finger of both hands at the same time. Type of BimanualPinchMessage.

INDIVIDUALLY_RELEASED 

User released thumb and index finger of one hand (compare to SIMULTANEOUSLY_RELEASED). Type of BimanualPinchMessage.

DRAGGED_BIMANUAL 

User moved hands while both were pinching. Type of BimanualPinchMessage.

POINT 

The PointMessage provides the pointing information of the index finger.

CALIBRATION 

The CalibrationMessage provides information about the hand scale calibration.

Function Documentation

delegate void ThreeGear.ErrorHandler ( string  errMsg)

A delegate for receiving error message.

Parameters
errMsg
delegate void ThreeGear.MessageHandler ( HandTrackingMessage  message)

A delegate for receiving hand update events.

Parameters
message