ZwnAmlogicDoublePose.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /*
  2. * File Name: ZwnAmlogicDoublePose
  3. * Author: Guan B
  4. * Version: 1.0.0
  5. * Data: 2022.04.08
  6. * Des: 调用SDK接口Demo(pose 多人模块)
  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 ZwnAmlogicDoublePose : MonoBehaviour
  15. {
  16. private AndroidJavaClass javaClass;
  17. //保存第一个转换后的
  18. List<GameObject> showChangePoseList = new List<GameObject>();
  19. List<GameObject> showChangePoseListTwo = 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. Dictionary<int, Vector3[]> poseTwoPeopleData = new Dictionary<int, Vector3[]>();
  25. Vector3 default_vec = new Vector3(-Screen.width, -Screen.height, 0);
  26. int nMaxCount = 2;
  27. private void Start()
  28. {
  29. javaClass = new AndroidJavaClass("com.zee.unity.UnityHelper");
  30. ZwnAmLogicSDK.InitAndroidJavaClass(javaClass);
  31. }
  32. private void Update()
  33. {
  34. if (ZwnAmlogicHelperData.isCanOpenCamera)
  35. {
  36. ZwnAmlogicHelperData.isCanOpenCamera = false;
  37. ZwnAmLogicSDK.OpenCamera(ZwnAmlogicHelperData.cameraId);
  38. }
  39. if (ZwnAmlogicHelperData.isOpenCamera)
  40. {
  41. ZwnAmlogicHelperData.initPersonPoseNum = ZwnAmLogicSDK.InitPersonPose(ZwnAmlogicHelperData.landmarkType, ZwnAmlogicHelperData.trackNum, ZwnAmlogicHelperData.deviceType, ZwnAmlogicHelperData.isuseBestPose);
  42. if (ZwnAmlogicHelperData.initPersonPoseNum == 0)
  43. {
  44. ZwnAmLogicSDK.SetUseBestPose(false);
  45. ZwnAmLogicSDK.SetPoseTrackFrameThreshold(30);
  46. ZwnAmLogicSDK.SetTwoPersonTrackInfo(1, 2);
  47. }
  48. }
  49. if (ZwnAmlogicHelperData.initPersonPoseNum == 0)
  50. {
  51. ZwnAmlogicHelperData.isOpenCamera = false;
  52. GetTwoPosePointArray();
  53. }
  54. ShowChangePosePoint();
  55. }
  56. /// <summary>
  57. /// 获取转换后的多个pose数据
  58. /// </summary>
  59. void GetTwoPosePointArray()
  60. {
  61. poseTwoPeopleData = ZwnAmLogicSDK.GetTwoPersonTrackInfo();
  62. }
  63. /// <summary>
  64. /// 显示转换后的多个pose数据(显示2个,最多显示10个)
  65. /// </summary>
  66. public void ShowChangePosePoint()
  67. {
  68. if (poseTwoPeopleData.Count > 0 && poseTwoPeopleData != null)
  69. {
  70. if (poseTwoPeopleData.Count == 1)
  71. {
  72. if (showChangePoseListTwo.Count > 0)
  73. {
  74. for (int i = 0; i < showChangePoseListTwo.Count; i++)
  75. {
  76. showChangePoseListTwo[i].transform.localPosition = default_vec;
  77. }
  78. }
  79. for (int i = 0; i < poseCount; i++)
  80. {
  81. if (i >= showChangePoseList.Count)
  82. {
  83. GameObject go = Instantiate(showPrefabs);
  84. showChangePoseList.Add(go);
  85. go.transform.SetParent(showPointParent);
  86. go.transform.localScale = new Vector3(1, 1, 1);
  87. }
  88. showChangePoseList[i].transform.localPosition = poseTwoPeopleData[0][i];
  89. }
  90. }
  91. else if(poseTwoPeopleData.Count == 2)
  92. {
  93. for (int i = 0; i < poseCount; i++)
  94. {
  95. if (i >= showChangePoseList.Count)
  96. {
  97. GameObject go = Instantiate(showPrefabs);
  98. showChangePoseList.Add(go);
  99. go.transform.SetParent(showPointParent);
  100. go.transform.localScale = new Vector3(1, 1, 1);
  101. }
  102. showChangePoseList[i].transform.localPosition = poseTwoPeopleData[0][i];
  103. }
  104. for (int i = 0; i < poseCount; i++)
  105. {
  106. if (i >= showChangePoseListTwo.Count)
  107. {
  108. GameObject go = Instantiate(showPrefabs);
  109. showChangePoseListTwo.Add(go);
  110. go.transform.SetParent(showPointParent);
  111. go.transform.localScale = new Vector3(1, 1, 1);
  112. }
  113. showChangePoseListTwo[i].transform.localPosition = poseTwoPeopleData[1][i];
  114. }
  115. }
  116. }
  117. else
  118. {
  119. if (showChangePoseList.Count > 0)
  120. {
  121. for (int i = 0; i < showChangePoseList.Count; i++)
  122. {
  123. showChangePoseList[i].transform.localPosition = default_vec;
  124. }
  125. }
  126. if (showChangePoseListTwo.Count > 0)
  127. {
  128. for (int i = 0; i < showChangePoseListTwo.Count; i++)
  129. {
  130. showChangePoseListTwo[i].transform.localPosition = default_vec;
  131. }
  132. }
  133. }
  134. }
  135. private void OnDestroy()
  136. {
  137. ZwnAmLogicSDK.ReleaseZeePose();
  138. ZwnAmLogicSDK.CloseCamera();
  139. }
  140. }