| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 |
- /*
- * File Name: ZwnAmlogicManyPose
- * Author: Guan B
- * Version: 1.0.0
- * Data: 2022.04.08
- * Des: 调用SDK接口Demo(pose 多人模块)
- * Other: Zeewain
- */
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- using System.Diagnostics;
- public class ZwnAmlogicManyPose : MonoBehaviour
- {
- private AndroidJavaClass javaClass;
- //保存第一个转换后的
- List<GameObject> showChangePoseList = new List<GameObject>();
- List<GameObject> showChangePoseListTwo = new List<GameObject>();
- List<GameObject> showOriginalPoseList = new List<GameObject>();
- List<GameObject> showOriginalPoseListTwo = new List<GameObject>();
- List<GameObject> showPoseRectList = new List<GameObject>();
- public GameObject showPrefabs;
- public Transform showPointParent;
- public GameObject showRectfabs;
- private int poseCount = ZwnAmlogicHelperData.ZWN_POSE_KEY_POINTS_DIM_LEN;
- Dictionary<int, Vector3[]> poseData = new Dictionary<int, Vector3[]>();
- Dictionary<int, Vector3[]> poseOriginalData = new Dictionary<int, Vector3[]>();
- Dictionary<int, Vector2> poseWeightHeightData = new Dictionary<int, Vector2>();
- Dictionary<int, Vector3> poseRectPointData = new Dictionary<int, Vector3>();
- Vector3 default_vec = new Vector3(-Screen.width, -Screen.height, 0);
- int nMaxCount = 2;
- private void Start()
- {
- javaClass = new AndroidJavaClass("com.zee.unity.UnityHelper");
- ZwnAmLogicSDK.InitAndroidJavaClass(javaClass);
- }
- private void Update()
- {
- if (ZwnAmlogicHelperData.isCanOpenCamera)
- {
- ZwnAmlogicHelperData.isCanOpenCamera = false;
- ZwnAmLogicSDK.OpenCamera(ZwnAmlogicHelperData.cameraId);
- }
- if (ZwnAmlogicHelperData.isOpenCamera)
- {
- ZwnAmlogicHelperData.initPersonPoseNum = ZwnAmLogicSDK.InitPersonPose(ZwnAmlogicHelperData.landmarkType, ZwnAmlogicHelperData.trackNum, ZwnAmlogicHelperData.deviceType, ZwnAmlogicHelperData.isuseBestPose);
- if (ZwnAmlogicHelperData.initPersonPoseNum == 0)
- {
- ZwnAmLogicSDK.SetUseBestPose(false);
- ZwnAmLogicSDK.SetPoseTrackFrameThreshold(30);
- }
- }
- if (ZwnAmlogicHelperData.initPersonPoseNum == 0)
- {
- ZwnAmlogicHelperData.isOpenCamera = false;
- GetZeePosePointArray();
- GetZeePoseRectArray();
- //GetOriginalZeePosePointArray();
- }
- ShowChangePosePoint();
- ShowZeePoseRectPoint();
- //ShowOriginalPosePoint();
-
- }
- /// <summary>
- /// 获取转换后的多个pose数据
- /// </summary>
- void GetZeePosePointArray()
- {
- poseData = ZwnAmLogicSDK.GetPoseInfo();
- }
- /// <summary>
- /// 获取原始的多个pose数据
- /// </summary>
- void GetOriginalZeePosePointArray()
- {
- poseOriginalData = ZwnAmLogicSDK.GetOriginalPoseInfo();
- }
- /// <summary>
- /// 获取多个pose的人像框的数据
- /// </summary>
- void GetZeePoseRectArray()
- {
- poseRectPointData = ZwnAmLogicSDK.GetPoseRectInfo();
- poseWeightHeightData = ZwnAmLogicSDK.GetPoseRectWeightHeightInfo();
- }
- /// <summary>
- /// 显示转换后的多个pose数据(显示2个,最多显示10个)
- /// </summary>
- public void ShowChangePosePoint()
- {
- if (poseData.Count > 0 && poseData != null)
- {
- if (poseData.Count == 1)
- {
- if (showChangePoseListTwo.Count > 0)
- {
- for (int i = 0; i < showChangePoseListTwo.Count; i++)
- {
- showChangePoseListTwo[i].transform.localPosition = default_vec;
- }
- }
- for (int i = 0; i < poseCount; i++)
- {
- if (i >= showChangePoseList.Count)
- {
- GameObject go = Instantiate(showPrefabs);
- showChangePoseList.Add(go);
- go.transform.SetParent(showPointParent);
- go.transform.localScale = new Vector3(1, 1, 1);
- }
- showChangePoseList[i].transform.localPosition = poseData[0][i];
- }
- }
- else if(poseData.Count == 2)
- {
- for (int i = 0; i < poseCount; i++)
- {
- if (i >= showChangePoseList.Count)
- {
- GameObject go = Instantiate(showPrefabs);
- showChangePoseList.Add(go);
- go.transform.SetParent(showPointParent);
- go.transform.localScale = new Vector3(1, 1, 1);
- }
- showChangePoseList[i].transform.localPosition = poseData[0][i];
- }
- for (int i = 0; i < poseCount; i++)
- {
- if (i >= showChangePoseListTwo.Count)
- {
- GameObject go = Instantiate(showPrefabs);
- showChangePoseListTwo.Add(go);
- go.transform.SetParent(showPointParent);
- go.transform.localScale = new Vector3(1, 1, 1);
- }
- showChangePoseListTwo[i].transform.localPosition = poseData[1][i];
- }
- }
- }
- else
- {
- if (showChangePoseList.Count > 0)
- {
- for (int i = 0; i < showChangePoseList.Count; i++)
- {
- showChangePoseList[i].transform.localPosition = default_vec;
- }
- }
- if (showChangePoseListTwo.Count > 0)
- {
- for (int i = 0; i < showChangePoseListTwo.Count; i++)
- {
- showChangePoseListTwo[i].transform.localPosition = default_vec;
- }
- }
- }
- }
- /// <summary>
- /// 显示转换后的多个pose数据(显示2个,最多显示10个)
- /// </summary>
- public void ShowOriginalPosePoint()
- {
- if (poseOriginalData.Count > 0 && poseOriginalData != null)
- {
- if (poseOriginalData.Count == 1)
- {
- if (showOriginalPoseListTwo.Count > 0)
- {
- for (int i = 0; i < showOriginalPoseListTwo.Count; i++)
- {
- showOriginalPoseListTwo[i].transform.localPosition = default_vec;
- }
- }
- for (int i = 0; i < poseCount; i++)
- {
- if (i >= showOriginalPoseList.Count)
- {
- GameObject go = Instantiate(showPrefabs);
- showOriginalPoseList.Add(go);
- go.transform.SetParent(showPointParent);
- go.transform.localScale = new Vector3(1, 1, 1);
- }
- showOriginalPoseList[i].transform.localPosition = poseOriginalData[0][i];
- }
- }
- else if (poseOriginalData.Count == 2)
- {
- for (int i = 0; i < poseCount; i++)
- {
- if (i >= showOriginalPoseList.Count)
- {
- GameObject go = Instantiate(showPrefabs);
- showOriginalPoseList.Add(go);
- go.transform.SetParent(showPointParent);
- go.transform.localScale = new Vector3(1, 1, 1);
- }
- showOriginalPoseList[i].transform.localPosition = poseOriginalData[0][i];
- }
- for (int i = 0; i < poseCount; i++)
- {
- if (i >= showOriginalPoseListTwo.Count)
- {
- GameObject go = Instantiate(showPrefabs);
- showOriginalPoseListTwo.Add(go);
- go.transform.SetParent(showPointParent);
- go.transform.localScale = new Vector3(1, 1, 1);
- }
- showOriginalPoseListTwo[i].transform.localPosition = poseOriginalData[1][i];
- }
- }
- }
- else
- {
- if (showOriginalPoseList.Count > 0)
- {
- for (int i = 0; i < showOriginalPoseList.Count; i++)
- {
- showOriginalPoseList[i].transform.localPosition = default_vec;
- }
- }
- if (showOriginalPoseListTwo.Count > 0)
- {
- for (int i = 0; i < showOriginalPoseListTwo.Count; i++)
- {
- showOriginalPoseListTwo[i].transform.localPosition = default_vec;
- }
- }
- }
- }
- /// <summary>
- /// 显示pose的人像框的位置和大小
- /// </summary>
- public void ShowZeePoseRectPoint()
- {
- if(poseRectPointData.Count> 0 && poseRectPointData != null)
- {
- if(poseRectPointData.Count == 1)
- {
- if (showPoseRectList.Count > 0)
- {
- for (int i = 0; i < showPoseRectList.Count; i++)
- {
- showPoseRectList[i].transform.localPosition = default_vec;
- }
- }
- for (int i = 0; i < 1; i++)
- {
- if (i >= showPoseRectList.Count)
- {
- GameObject go = Instantiate(showRectfabs);
- showPoseRectList.Add(go);
- go.transform.SetParent(showPointParent);
- go.transform.localScale = new Vector3(1, 1, 1);
- }
- showPoseRectList[i].transform.localPosition = poseRectPointData[i];
- showPoseRectList[i].GetComponent<RectTransform>().sizeDelta = poseWeightHeightData[i];
- }
- }
- else if(poseRectPointData.Count == 2)
- {
- for (int i = 0; i < 2; i++)
- {
- if (i >= showPoseRectList.Count)
- {
- GameObject go = Instantiate(showRectfabs);
- showPoseRectList.Add(go);
- go.transform.SetParent(showPointParent);
- go.transform.localScale = new Vector3(1, 1, 1);
- }
- showPoseRectList[i].transform.localPosition = poseRectPointData[i];
- showPoseRectList[i].GetComponent<RectTransform>().sizeDelta = poseWeightHeightData[i];
- }
- }
-
- }
- else
- {
- if (showPoseRectList.Count > 0)
- {
- for (int i = 0; i < showPoseRectList.Count; i++)
- {
- showPoseRectList[i].transform.localPosition = default_vec;
- }
- }
- }
- }
- private void OnDestroy()
- {
- ZwnAmLogicSDK.ReleaseZeePose();
- ZwnAmLogicSDK.CloseCamera();
- }
- }
|