/* * File Name: ZwnAmlogicDoublePose * 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 ZwnAmlogicDoublePose : MonoBehaviour { private AndroidJavaClass javaClass; //保存第一个转换后的 List showChangePoseList = new List(); List showChangePoseListTwo = new List(); public GameObject showPrefabs; public Transform showPointParent; public GameObject showRectfabs; private int poseCount = ZwnAmlogicHelperData.ZWN_POSE_KEY_POINTS_DIM_LEN; Dictionary poseTwoPeopleData = 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); ZwnAmLogicSDK.SetTwoPersonTrackInfo(1, 2); } } if (ZwnAmlogicHelperData.initPersonPoseNum == 0) { ZwnAmlogicHelperData.isOpenCamera = false; GetTwoPosePointArray(); } ShowChangePosePoint(); } /// /// 获取转换后的多个pose数据 /// void GetTwoPosePointArray() { poseTwoPeopleData = ZwnAmLogicSDK.GetTwoPersonTrackInfo(); } /// /// 显示转换后的多个pose数据(显示2个,最多显示10个) /// public void ShowChangePosePoint() { if (poseTwoPeopleData.Count > 0 && poseTwoPeopleData != null) { if (poseTwoPeopleData.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 = poseTwoPeopleData[0][i]; } } else if(poseTwoPeopleData.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 = poseTwoPeopleData[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 = poseTwoPeopleData[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; } } } } private void OnDestroy() { ZwnAmLogicSDK.ReleaseZeePose(); ZwnAmLogicSDK.CloseCamera(); } }