/* * 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 showChangePoseList = new List(); List showChangePoseListTwo = new List(); List showOriginalPoseList = new List(); List showOriginalPoseListTwo = new List(); List showPoseRectList = new List(); public GameObject showPrefabs; public Transform showPointParent; public GameObject showRectfabs; private int poseCount = ZwnAmlogicHelperData.ZWN_POSE_KEY_POINTS_DIM_LEN; Dictionary poseData = new Dictionary(); Dictionary poseOriginalData = new Dictionary(); Dictionary poseWeightHeightData = new Dictionary(); Dictionary poseRectPointData = new Dictionary(); 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(); } /// /// 获取转换后的多个pose数据 /// void GetZeePosePointArray() { poseData = ZwnAmLogicSDK.GetPoseInfo(); } /// /// 获取原始的多个pose数据 /// void GetOriginalZeePosePointArray() { poseOriginalData = ZwnAmLogicSDK.GetOriginalPoseInfo(); } /// /// 获取多个pose的人像框的数据 /// void GetZeePoseRectArray() { poseRectPointData = ZwnAmLogicSDK.GetPoseRectInfo(); poseWeightHeightData = ZwnAmLogicSDK.GetPoseRectWeightHeightInfo(); } /// /// 显示转换后的多个pose数据(显示2个,最多显示10个) /// 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; } } } } /// /// 显示转换后的多个pose数据(显示2个,最多显示10个) /// 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; } } } } /// /// 显示pose的人像框的位置和大小 /// 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().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().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(); } }