Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- hand_data Hands[MLHandTrackingHandType_Count] = {}; // position and rotation transform
- MLHandle hand_tracker_ = ML_INVALID_HANDLE;
- MLHandTrackingStaticData hand_static_data_ = {};
- MLHandTrackingData HandData = {};
- inline void InitializePerception()
- {
- MLPerceptionSettings perception_settings = {};
- UNWRAP_MLRESULT_FATAL(MLPerceptionInitSettings(&perception_settings));
- UNWRAP_MLRESULT_FATAL(MLPerceptionStartup(&perception_settings));
- }
- inline void HandTrackInit(void)
- {
- MLHandTrackingStaticDataInit(&hand_static_data_);
- UNWRAP_MLRESULT(MLHandTrackingCreate(&hand_tracker_));
- UNWRAP_MLRESULT_FATAL(MLHandTrackingGetStaticData(hand_tracker_, &hand_static_data_));
- }
- void OnHandUpdate(void)
- {
- MLHandTrackingData InternalData;
- MLHandTrackingDataInit(&InternalData);
- MLSnapshot *snapshot = nullptr;
- MLPerceptionGetSnapshot(&snapshot);
- ASSERT_MLRESULT(MLHandTrackingGetData(hand_tracker_, &InternalData));
- UpdateHand(snapshot, InternalData, MLHandTrackingHandType_Left);
- UpdateHand(snapshot, InternalData, MLHandTrackingHandType_Right);
- HandData = InternalData;
- MLPerceptionReleaseSnapshot(snapshot);
- }
- void UpdateHand(MLSnapshot *snapshot, const MLHandTrackingData &_HandData, MLHandTrackingHandType hand_type)
- {
- const MLHandTrackingHandState &hand_state = _HandData.hand_state[hand_type];
- bool hand_valid = hand_state.hand_confidence > 0;
- if (hand_valid)
- {
- for (uint8_t i = 0; i < MLHandTrackingStaticData_MaxKeyPoints; ++i)
- {
- if (hand_state.keypoints_mask[i])
- {
- MLTransform keypoint_transform;
- // This call is the issue.
- UNWRAP_MLRESULT(MLSnapshotGetTransform(snapshot, &GetHandFrameId(hand_type, i), &keypoint_transform));
- Hands[hand_type].HandTransform[i] = keypoint_transform;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment