Guest User

Untitled

a guest
Nov 10th, 2022
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.09 KB | None | 0 0
  1. hand_data Hands[MLHandTrackingHandType_Count] = {}; // position and rotation transform
  2.         MLHandle hand_tracker_ = ML_INVALID_HANDLE;
  3.         MLHandTrackingStaticData hand_static_data_ = {};
  4.         MLHandTrackingData HandData = {};
  5.  
  6. inline void InitializePerception()
  7. {
  8.         MLPerceptionSettings perception_settings = {};
  9.         UNWRAP_MLRESULT_FATAL(MLPerceptionInitSettings(&perception_settings));
  10.         UNWRAP_MLRESULT_FATAL(MLPerceptionStartup(&perception_settings));
  11. }
  12.  
  13.  inline void HandTrackInit(void)
  14.         {
  15.             MLHandTrackingStaticDataInit(&hand_static_data_);
  16.             UNWRAP_MLRESULT(MLHandTrackingCreate(&hand_tracker_));
  17.             UNWRAP_MLRESULT_FATAL(MLHandTrackingGetStaticData(hand_tracker_, &hand_static_data_));
  18.         }
  19.  
  20.   void OnHandUpdate(void)
  21.     {
  22.         MLHandTrackingData InternalData;
  23.         MLHandTrackingDataInit(&InternalData);
  24.         MLSnapshot *snapshot = nullptr;
  25.         MLPerceptionGetSnapshot(&snapshot);
  26.  
  27.         ASSERT_MLRESULT(MLHandTrackingGetData(hand_tracker_, &InternalData));
  28.         UpdateHand(snapshot, InternalData, MLHandTrackingHandType_Left);
  29.         UpdateHand(snapshot, InternalData, MLHandTrackingHandType_Right);
  30.         HandData = InternalData;
  31.         MLPerceptionReleaseSnapshot(snapshot);
  32.     }
  33.  
  34.  void UpdateHand(MLSnapshot *snapshot, const MLHandTrackingData &_HandData, MLHandTrackingHandType hand_type)
  35.     {
  36.         const MLHandTrackingHandState &hand_state = _HandData.hand_state[hand_type];
  37.         bool hand_valid = hand_state.hand_confidence > 0;
  38.         if (hand_valid)
  39.         {
  40.             for (uint8_t i = 0; i < MLHandTrackingStaticData_MaxKeyPoints; ++i)
  41.             {
  42.                 if (hand_state.keypoints_mask[i])
  43.                 {
  44.                     MLTransform keypoint_transform;
  45.                     // This call is the issue.
  46.                     UNWRAP_MLRESULT(MLSnapshotGetTransform(snapshot, &GetHandFrameId(hand_type, i), &keypoint_transform));
  47.                     Hands[hand_type].HandTransform[i] = keypoint_transform;
  48.                 }
  49.             }
  50.         }
  51.      }
  52.  
  53.  
Advertisement
Add Comment
Please, Sign In to add comment