/* * File Name: ZwnAmlogicPose * Author: Guan B * Version: 1.0.0 * Data: 2022.04.08 * Des: 调用SDK接口Demo * Other: Zeewain */ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System.Diagnostics; public class ZwnAmlogicPose : MonoBehaviour { private AndroidJavaClass javaClass; List showBestChangePoseList = new List(); List showOriginalBestChangePoseList = new List(); List showRectPoseList = new List(); public GameObject showPrefabs; public Transform showPointParent; public GameObject showRectfabs; private int poseCount = ZwnAmlogicHelperData.ZWN_POSE_KEY_POINTS_DIM_LEN; List poseBestData = new List(); List poseOriginalBestData = new List(); Vector2 poseWeightHeightData; Vector3 poseRectPointData; Vector3 default_vec = new Vector3(-Screen.width, -Screen.height, 0); 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(true); ZwnAmLogicSDK.SetPoseTrackFrameThreshold(30); ZwnAmLogicSDK.SetPoseSmoothnessStatus(true); } } if (ZwnAmlogicHelperData.initPersonPoseNum == 0) { ZwnAmlogicHelperData.isOpenCamera = false; GetZeePoseBestPointData(); GetZeePoseBestRectData(); //GetOriginalZeePoseBestPointData(); } ShowBestChangePoint(); ShowBestRectPint(); //ShowOriginalBestPoint(); } /// /// 获取转换后BestPose方法 /// void GetZeePoseBestPointData() { poseBestData = ZwnAmLogicSDK.GetBestPoseTrackInfo(); } /// /// 获取原始点BestPose方法 /// void GetOriginalZeePoseBestPointData() { poseOriginalBestData = ZwnAmLogicSDK.GetOriginalBestPoseTrackInfo(); } /// ///获取转换后BestPose人像框的位置和大小 /// void GetZeePoseBestRectData() { poseRectPointData = ZwnAmLogicSDK.GetBestPoseRectInfo(); poseWeightHeightData = ZwnAmLogicSDK.GetBestPoseRectWeightHeightInfo(); } /// /// 显示Best方法转换后点的位置 /// public void ShowBestChangePoint() { if (poseBestData.Count > 0 && poseBestData != null) { for (int i = 0; i < poseBestData.Count; i++) { if (i >= showBestChangePoseList.Count) { GameObject go = Instantiate(showPrefabs); showBestChangePoseList.Add(go); go.transform.SetParent(showPointParent); go.transform.localScale = new Vector3(1, 1, 1); } showBestChangePoseList[i].transform.localPosition = poseBestData[i]; } } else { if (showBestChangePoseList.Count > 0) { for (int i = 0; i < showBestChangePoseList.Count; i++) { showBestChangePoseList[i].transform.localPosition = default_vec; } } } } /// /// 显示Best方法原始点的位置 /// public void ShowOriginalBestPoint() { if (poseOriginalBestData.Count > 0 && poseOriginalBestData != null) { for (int i = 0; i < poseOriginalBestData.Count; i++) { if (i >= showOriginalBestChangePoseList.Count) { GameObject go = Instantiate(showPrefabs); showOriginalBestChangePoseList.Add(go); go.transform.SetParent(showPointParent); go.transform.localScale = new Vector3(1, 1, 1); } showOriginalBestChangePoseList[i].transform.localPosition = poseOriginalBestData[i]; } } else { if (showOriginalBestChangePoseList.Count > 0) { for (int i = 0; i < showOriginalBestChangePoseList.Count; i++) { showOriginalBestChangePoseList[i].transform.localPosition = default_vec; } } } } /// ///显示Best的人像框的位置和大小 /// public void ShowBestRectPint() { for (int i = 0; i < 1; i++) { if (i >= showRectPoseList.Count) { GameObject go = Instantiate(showRectfabs); showRectPoseList.Add(go); go.transform.SetParent(showPointParent); go.transform.localScale = new Vector3(1, 1, 1); } showRectPoseList[i].transform.localPosition = poseRectPointData; showRectPoseList[i].GetComponent().sizeDelta = poseWeightHeightData; } } private void OnDestroy() { ZwnAmLogicSDK.ReleaseZeePose(); ZwnAmLogicSDK.CloseCamera(); } }