ZwnAmlogicPose.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. /*
  2. * File Name: ZwnAmlogicPose
  3. * Author: Guan B
  4. * Version: 1.0.0
  5. * Data: 2022.04.08
  6. * Des: 调用SDK接口Demo
  7. * Other: Zeewain
  8. */
  9. using System.Collections;
  10. using System.Collections.Generic;
  11. using UnityEngine;
  12. using UnityEngine.UI;
  13. using System.Diagnostics;
  14. public class ZwnAmlogicPose : MonoBehaviour
  15. {
  16. private AndroidJavaClass javaClass;
  17. List<GameObject> showBestChangePoseList = new List<GameObject>();
  18. List<GameObject> showOriginalBestChangePoseList = new List<GameObject>();
  19. List<GameObject> showRectPoseList = new List<GameObject>();
  20. public GameObject showPrefabs;
  21. public Transform showPointParent;
  22. public GameObject showRectfabs;
  23. private int poseCount = ZwnAmlogicHelperData.ZWN_POSE_KEY_POINTS_DIM_LEN;
  24. List<Vector3> poseBestData = new List<Vector3>();
  25. List<Vector3> poseOriginalBestData = new List<Vector3>();
  26. Vector2 poseWeightHeightData;
  27. Vector3 poseRectPointData;
  28. Vector3 default_vec = new Vector3(-Screen.width, -Screen.height, 0);
  29. private void Start()
  30. {
  31. javaClass = new AndroidJavaClass("com.zee.unity.UnityHelper");
  32. ZwnAmLogicSDK.InitAndroidJavaClass(javaClass);
  33. }
  34. private void Update()
  35. {
  36. if (ZwnAmlogicHelperData.isCanOpenCamera)
  37. {
  38. ZwnAmlogicHelperData.isCanOpenCamera = false;
  39. ZwnAmLogicSDK.OpenCamera(ZwnAmlogicHelperData.cameraId);
  40. }
  41. if (ZwnAmlogicHelperData.isOpenCamera)
  42. {
  43. ZwnAmlogicHelperData.initPersonPoseNum = ZwnAmLogicSDK.InitPersonPose(ZwnAmlogicHelperData.landmarkType, ZwnAmlogicHelperData.trackNum, ZwnAmlogicHelperData.deviceType, ZwnAmlogicHelperData.isuseBestPose);
  44. if (ZwnAmlogicHelperData.initPersonPoseNum == 0)
  45. {
  46. ZwnAmLogicSDK.SetUseBestPose(true);
  47. ZwnAmLogicSDK.SetPoseTrackFrameThreshold(30);
  48. ZwnAmLogicSDK.SetPoseSmoothnessStatus(true);
  49. }
  50. }
  51. if (ZwnAmlogicHelperData.initPersonPoseNum == 0)
  52. {
  53. ZwnAmlogicHelperData.isOpenCamera = false;
  54. GetZeePoseBestPointData();
  55. GetZeePoseBestRectData();
  56. //GetOriginalZeePoseBestPointData();
  57. }
  58. ShowBestChangePoint();
  59. ShowBestRectPint();
  60. //ShowOriginalBestPoint();
  61. }
  62. /// <summary>
  63. /// 获取转换后BestPose方法
  64. /// </summary>
  65. void GetZeePoseBestPointData()
  66. {
  67. poseBestData = ZwnAmLogicSDK.GetBestPoseTrackInfo();
  68. }
  69. /// <summary>
  70. /// 获取原始点BestPose方法
  71. /// </summary>
  72. void GetOriginalZeePoseBestPointData()
  73. {
  74. poseOriginalBestData = ZwnAmLogicSDK.GetOriginalBestPoseTrackInfo();
  75. }
  76. /// <summary>
  77. ///获取转换后BestPose人像框的位置和大小
  78. /// </summary>
  79. void GetZeePoseBestRectData()
  80. {
  81. poseRectPointData = ZwnAmLogicSDK.GetBestPoseRectInfo();
  82. poseWeightHeightData = ZwnAmLogicSDK.GetBestPoseRectWeightHeightInfo();
  83. }
  84. /// <summary>
  85. /// 显示Best方法转换后点的位置
  86. /// </summary>
  87. public void ShowBestChangePoint()
  88. {
  89. if (poseBestData.Count > 0 && poseBestData != null)
  90. {
  91. for (int i = 0; i < poseBestData.Count; i++)
  92. {
  93. if (i >= showBestChangePoseList.Count)
  94. {
  95. GameObject go = Instantiate(showPrefabs);
  96. showBestChangePoseList.Add(go);
  97. go.transform.SetParent(showPointParent);
  98. go.transform.localScale = new Vector3(1, 1, 1);
  99. }
  100. showBestChangePoseList[i].transform.localPosition = poseBestData[i];
  101. }
  102. }
  103. else
  104. {
  105. if (showBestChangePoseList.Count > 0)
  106. {
  107. for (int i = 0; i < showBestChangePoseList.Count; i++)
  108. {
  109. showBestChangePoseList[i].transform.localPosition = default_vec;
  110. }
  111. }
  112. }
  113. }
  114. /// <summary>
  115. /// 显示Best方法原始点的位置
  116. /// </summary>
  117. public void ShowOriginalBestPoint()
  118. {
  119. if (poseOriginalBestData.Count > 0 && poseOriginalBestData != null)
  120. {
  121. for (int i = 0; i < poseOriginalBestData.Count; i++)
  122. {
  123. if (i >= showOriginalBestChangePoseList.Count)
  124. {
  125. GameObject go = Instantiate(showPrefabs);
  126. showOriginalBestChangePoseList.Add(go);
  127. go.transform.SetParent(showPointParent);
  128. go.transform.localScale = new Vector3(1, 1, 1);
  129. }
  130. showOriginalBestChangePoseList[i].transform.localPosition = poseOriginalBestData[i];
  131. }
  132. }
  133. else
  134. {
  135. if (showOriginalBestChangePoseList.Count > 0)
  136. {
  137. for (int i = 0; i < showOriginalBestChangePoseList.Count; i++)
  138. {
  139. showOriginalBestChangePoseList[i].transform.localPosition = default_vec;
  140. }
  141. }
  142. }
  143. }
  144. /// <summary>
  145. ///显示Best的人像框的位置和大小
  146. /// </summary>
  147. public void ShowBestRectPint()
  148. {
  149. for (int i = 0; i < 1; i++)
  150. {
  151. if (i >= showRectPoseList.Count)
  152. {
  153. GameObject go = Instantiate(showRectfabs);
  154. showRectPoseList.Add(go);
  155. go.transform.SetParent(showPointParent);
  156. go.transform.localScale = new Vector3(1, 1, 1);
  157. }
  158. showRectPoseList[i].transform.localPosition = poseRectPointData;
  159. showRectPoseList[i].GetComponent<RectTransform>().sizeDelta = poseWeightHeightData;
  160. }
  161. }
  162. private void OnDestroy()
  163. {
  164. ZwnAmLogicSDK.ReleaseZeePose();
  165. ZwnAmLogicSDK.CloseCamera();
  166. }
  167. }