Skip to main content

Auki::Ur::HandTracker

Ur provides real-time tracking of 3D hand poses from monocular RGB video in mobile phones.

Public Classes

Name
structCalibrationReport
Data structure used report information about the current calibration process in the `StartCalibration callback.
structCalibrationState

Public Types

Name
enum classCalibrationStatus { NOT_CALIBRATED, CALIBRATING, CALIBRATED, MANUAL_CALIBRATION}
Enum with the possible Handtracker's calibration states.
enum classCalibrationStatusReport { FAILURE_NO_PLANE, FAILURE_NO_HAND, FAILURE_NO_MEASUREMENTS, CALIBRATION_PROGRESS, CALIBRATION_FINISHED}
Enum used to report calibration state during calibration.

Public Functions

Name
HandTrackerGetInstance()
Returns the instance of the HandTracker (singleton).
voidSetARSystem(ARSession arSession, Camera arCamera, ARRaycastManager arRaycastManager)
Pass along the AR state the client app is using. It is required to call this method with valid parameters before starting HandTracker.
voidStartCalibration(Action< CalibrationReport > progressReport, bool showUI =false)
Starts the HandTracker's calibration process. A delegate can be used to get progress report from the calibration process.
CalibrationStatusGetCalibrationStatus()
Query the calibration status of HandTracker.
CalibrationStateGetCalibrationState()
Returns the HandTracker's current CalibrationState. Make sure the calibration status is CALIBRATED before relying on this state.
voidSetCalibrateState(CalibrationState calibrationState)
Sets the HansTracker's current CalibrationState. After this call, the calibration status will be set to MANUAL_CALIBRATION to reflect the fact that the calibration state was restored from a previous session.
boolStart(int numHands =1, long updateIntervalInMilliseconds =0)
Begins tracking hand(s).
voidStop()
Stops tracking hand(s).
voidShowHandMesh()
Displays debug GameObjects on tracked hand landmarks.
voidHideHandMesh()
Hides debug GameObjects on tracked hand landmarks.
voidUpdate()
Processes camera frames to track hands. Needs to be invoked in the game loop.
float[]Get3DLandmarks()
Gets a list of hand landmarks.
float[]GetTranslations()
Gets the global translation of the hand(s).

Public Attributes

Name
const intLandmarksCount
Number of landmarks per hand.
const intTranslationsCount
Number of translations.
Action< float[], float[], int[], float[]>OnUpdate
Callback returning estimated landmarks, their translations, right-handedness and confidence scores.

Public Types Documentation

enum CalibrationStatus

EnumeratorValueDescription
NOT_CALIBRATED
CALIBRATING
CALIBRATED
MANUAL_CALIBRATION

Enum with the possible Handtracker's calibration states.

enum CalibrationStatusReport

EnumeratorValueDescription
FAILURE_NO_PLANE
FAILURE_NO_HAND
FAILURE_NO_MEASUREMENTS
CALIBRATION_PROGRESS
CALIBRATION_FINISHED

Enum used to report calibration state during calibration.

FAILURE_NO_PLANE is reported when no plane trackable can be found. FAILURE_NO_HAND is reported when hand is not detected. FAILURE_NO_MEASUREMENTS is reported when no measurements (or not enough measurements) where taken. This could be due to user moving the device too fast, making it impossible to take reliable measurements. CALIBRATION_PROGRESS is reported during the calibration process whenever enough measurements have been taken from one of the required depth interval. CALIBRATION_FINISHED is reported when there are sample measurements for all depth intervals and a calibration value was found.

Public Functions Documentation

function GetInstance

static HandTracker GetInstance()

Returns the instance of the HandTracker (singleton).

Return: HandTracker object

function SetARSystem

void SetARSystem(
ARSession arSession,
Camera arCamera,
ARRaycastManager arRaycastManager
)

Pass along the AR state the client app is using. It is required to call this method with valid parameters before starting HandTracker.

Parameters:

  • arSession The ARSession in use by the client app.
  • arCamera The Camera attached to the ARSession
  • arRaycastManager The ARRaycastManager in use by the client app.

function StartCalibration

void StartCalibration(
Action< CalibrationReport > progressReport,
bool showUI =false
)

Starts the HandTracker's calibration process. A delegate can be used to get progress report from the calibration process.

Parameters:

  • progressReport Delegate to be called with calibration progress report.
  • showUI If true, a debug internal UI will be displayed to drive the calibration process. Default is false.

function GetCalibrationStatus

CalibrationStatus GetCalibrationStatus()

Query the calibration status of HandTracker.

Return: A CalibrationStatus

function GetCalibrationState

CalibrationState GetCalibrationState()

Returns the HandTracker's current CalibrationState. Make sure the calibration status is CALIBRATED before relying on this state.

Return: A CalibrationState

function SetCalibrateState

void SetCalibrateState(
CalibrationState calibrationState
)

Sets the HansTracker's current CalibrationState. After this call, the calibration status will be set to MANUAL_CALIBRATION to reflect the fact that the calibration state was restored from a previous session.

function Start

bool Start(
int numHands =1,
long updateIntervalInMilliseconds =0
)

Begins tracking hand(s).

Parameters:

  • numHands Number hands to track
  • updateIntervalInMilliseconds Tracking update interval

Return: true if tracking starts successfully, false if it doesn't

function Stop

void Stop()

Stops tracking hand(s).

function ShowHandMesh

void ShowHandMesh()

Displays debug GameObjects on tracked hand landmarks.

function HideHandMesh

void HideHandMesh()

Hides debug GameObjects on tracked hand landmarks.

function Update

void Update()

Processes camera frames to track hands. Needs to be invoked in the game loop.

function Get3DLandmarks

float[] Get3DLandmarks()

Gets a list of hand landmarks.

Return: An array of floats with each 3 representing the x, y & z-components of a hand landmark

function GetTranslations

float[] GetTranslations()

Gets the global translation of the hand(s).

Return: An array of floats with each 3 representing the x, y & z-components of a hand translation

Public Attributes Documentation

variable LandmarksCount

static const int LandmarksCount = 21;

Number of landmarks per hand.

A landmark is a 3D vector that holds the local translation for each hand bone joint.

variable TranslationsCount

static const int TranslationsCount = 1;

Number of translations.

For each hand there is a translation, an additional 3D vector (x, y, z), which contains the global translation of the hand in camera space which all hand landmarks should be displaced with to get the landmarks in AR camera space.

variable OnUpdate

Action< float[], float[], int[], float[]> OnUpdate;

Callback returning estimated landmarks, their translations, right-handedness and confidence scores.

The landmark & translation arrays contain consecutive floats which represent the x, y & z-components of a 3D vector.