/* * File Name: ZwnAmlogicHolistic * 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 ZwnAmlogicHolistic : MonoBehaviour { private AndroidJavaClass javaClass; List showHolisticChangePoseList = new List(); List showHolisticChangeLeftHandList = new List(); List showHolisticChangeRightHnadList = new List(); List showHolisticChangeFaceList = new List(); List showHolisticOriginalPoseList = new List(); List showHolisticOriginalLeftHandList = new List(); List showHolisticOriginalRightHnadList = new List(); List showHolisticOriginalFaceList = new List(); public GameObject showPrefabs; public Transform showPointParent; List holisticPoseData = new List(); List holisticLeftHandData = new List(); List holisticRightHandData = new List(); List holisticFaceData = new List(); List holisticOriginalPoseData = new List(); List holisticOriginalLeftHandData = new List(); List holisticOriginalRightHandData = new List(); List holisticOriginalFaceData = new List(); 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.InitHolistic(ZwnAmlogicHelperData.landmarkType, ZwnAmlogicHelperData.trackNum, ZwnAmlogicHelperData.deviceType); if (ZwnAmlogicHelperData.initPersonPoseNum == 0) { ZwnAmLogicSDK.SetHolisticTrackFrameThreshold(30); ZwnAmLogicSDK.SetHolisticBodyLandmarkStatus(true); ZwnAmLogicSDK.SetHolisticFaceLandmarkStatus(true); ZwnAmLogicSDK.SetHolisticHandLandmarkNum(2); ZwnAmLogicSDK.SetHolisticSmoothnessStatus(true); } } if (ZwnAmlogicHelperData.initPersonPoseNum == 0) { ZwnAmlogicHelperData.isOpenCamera = false; GetHolisticPoseData(); GetHolisticLeftHandData(); GetHolisticRightHandData(); GetHolisticFaceData(); //GetOriginalHolisticPoseData(); //GetOriginalHolisticLeftHandData(); //GetOriginalHolisticRightHandData(); //GetOriginalHolisticFaceData(); } ShowHolisticChangePosePoint(); ShowHolisticChangeLeftHandPoint(); ShowHolisticChangeRightHandPoint(); ShowHolisticChangeFacePoint(); //ShowHolisticOriginalPosePoint(); //ShowHolisticOriginalLeftHandPoint(); //ShowHolisticOriginalRightHandPoint(); //ShowHolisticOriginalFacePoint(); } /// /// 获取转换后Holistic身体点 /// void GetHolisticPoseData() { holisticPoseData = ZwnAmLogicSDK.GetHolisticPoseInfo(); } /// /// 获取转换后Holistic左手点 /// void GetHolisticLeftHandData() { holisticLeftHandData = ZwnAmLogicSDK.GetHolisticLeftHandInfo(); } /// /// 获取转换后Holistic右手点 /// void GetHolisticRightHandData() { holisticRightHandData = ZwnAmLogicSDK.GetHolisticRightHandInfo(); } /// ///获取转换后脸部点 /// void GetHolisticFaceData() { holisticFaceData = ZwnAmLogicSDK.GetHolisticFaceInfo(); } /// /// 获取原始Holistic身体点 /// void GetOriginalHolisticPoseData() { holisticOriginalPoseData = ZwnAmLogicSDK.GetOriginalHolisticPoseInfo(); } /// /// 获取原始Holistic左手点 /// void GetOriginalHolisticLeftHandData() { holisticOriginalLeftHandData = ZwnAmLogicSDK.GetOriginalHolisticLeftHandInfo(); } /// /// 获取原始Holistic右手点 /// void GetOriginalHolisticRightHandData() { holisticOriginalRightHandData = ZwnAmLogicSDK.GetOriginalHolisticRightHandInfo(); } /// ///获取原始脸部点 /// void GetOriginalHolisticFaceData() { holisticOriginalFaceData = ZwnAmLogicSDK.GetOriginalHolisticFaceInfo(); } /// /// 显示Holistic的身体点转换后点的位置 /// public void ShowHolisticChangePosePoint() { if (holisticPoseData.Count > 0&& holisticPoseData != null) { for (int i = 0; i < holisticPoseData.Count; i++) { if (i >= showHolisticChangePoseList.Count) { GameObject go = Instantiate(showPrefabs); showHolisticChangePoseList.Add(go); go.transform.SetParent(showPointParent); go.transform.localScale = new Vector3(1, 1, 1); } showHolisticChangePoseList[i].transform.localPosition = holisticPoseData[i]; } } else { if (showHolisticChangePoseList.Count > 0) { for (int i = 0; i < showHolisticChangePoseList.Count; i++) { showHolisticChangePoseList[i].transform.localPosition = default_vec; } } } } /// /// 显示Holistic的左手转换后点的位置 /// public void ShowHolisticChangeLeftHandPoint() { if (holisticLeftHandData.Count > 0 && holisticLeftHandData != null) { for (int i = 0; i < holisticLeftHandData.Count; i++) { if (i >= showHolisticChangeLeftHandList.Count) { GameObject go = Instantiate(showPrefabs); showHolisticChangeLeftHandList.Add(go); go.transform.SetParent(showPointParent); go.transform.localScale = new Vector3(1, 1, 1); } showHolisticChangeLeftHandList[i].transform.localPosition = holisticLeftHandData[i]; } } else { if (showHolisticChangeLeftHandList.Count > 0) { for (int i = 0; i < showHolisticChangeLeftHandList.Count; i++) { showHolisticChangeLeftHandList[i].transform.localPosition = default_vec; } } } } /// /// 显示Holistic的右手转换后点的位置 /// public void ShowHolisticChangeRightHandPoint() { if (holisticRightHandData.Count > 0 && holisticRightHandData != null) { for (int i = 0; i < holisticRightHandData.Count; i++) { if (i >= showHolisticChangeRightHnadList.Count) { GameObject go = Instantiate(showPrefabs); showHolisticChangeRightHnadList.Add(go); go.transform.SetParent(showPointParent); go.transform.localScale = new Vector3(1, 1, 1); } showHolisticChangeRightHnadList[i].transform.localPosition = holisticRightHandData[i]; } } else { if (showHolisticChangeRightHnadList.Count > 0) { for (int i = 0; i < showHolisticChangeRightHnadList.Count; i++) { showHolisticChangeRightHnadList[i].transform.localPosition = default_vec; } } } } /// /// 显示Holistic的右手转换后点的位置 /// public void ShowHolisticChangeFacePoint() { if (holisticFaceData.Count > 0 && holisticFaceData != null) { for (int i = 0; i < holisticFaceData.Count; i++) { if (i >= showHolisticChangeFaceList.Count) { GameObject go = Instantiate(showPrefabs); showHolisticChangeFaceList.Add(go); go.transform.SetParent(showPointParent); go.transform.localScale = new Vector3(1, 1, 1); } showHolisticChangeFaceList[i].transform.localPosition = holisticFaceData[i]; } } else { if (showHolisticChangeFaceList.Count > 0) { for (int i = 0; i < showHolisticChangeFaceList.Count; i++) { showHolisticChangeFaceList[i].transform.localPosition = default_vec; } } } } /// /// 显示Holistic的身体点原始点的位置 /// public void ShowHolisticOriginalPosePoint() { if (holisticOriginalPoseData.Count > 0 && holisticOriginalPoseData != null) { for (int i = 0; i < holisticOriginalPoseData.Count; i++) { if (i >= showHolisticOriginalPoseList.Count) { GameObject go = Instantiate(showPrefabs); showHolisticOriginalPoseList.Add(go); go.transform.SetParent(showPointParent); go.transform.localScale = new Vector3(1, 1, 1); } showHolisticOriginalPoseList[i].transform.localPosition = holisticOriginalPoseData[i]; } } else { if (showHolisticOriginalPoseList.Count > 0) { for (int i = 0; i < showHolisticOriginalPoseList.Count; i++) { showHolisticOriginalPoseList[i].transform.localPosition = default_vec; } } } } /// /// 显示Holistic的左手原始点的位置 /// public void ShowHolisticOriginalLeftHandPoint() { if (holisticOriginalLeftHandData.Count > 0 && holisticOriginalLeftHandData != null) { for (int i = 0; i < holisticOriginalLeftHandData.Count; i++) { if (i >= showHolisticOriginalLeftHandList.Count) { GameObject go = Instantiate(showPrefabs); showHolisticOriginalLeftHandList.Add(go); go.transform.SetParent(showPointParent); go.transform.localScale = new Vector3(1, 1, 1); } showHolisticOriginalLeftHandList[i].transform.localPosition = holisticOriginalLeftHandData[i]; } } else { if (showHolisticOriginalLeftHandList.Count > 0) { for (int i = 0; i < showHolisticOriginalLeftHandList.Count; i++) { showHolisticOriginalLeftHandList[i].transform.localPosition = default_vec; } } } } /// /// 显示Holistic的右手转换后点的位置 /// public void ShowHolisticOriginalRightHandPoint() { if (holisticOriginalRightHandData.Count > 0 && holisticOriginalRightHandData != null) { for (int i = 0; i < holisticOriginalRightHandData.Count; i++) { if (i >= showHolisticOriginalRightHnadList.Count) { GameObject go = Instantiate(showPrefabs); showHolisticOriginalRightHnadList.Add(go); go.transform.SetParent(showPointParent); go.transform.localScale = new Vector3(1, 1, 1); } showHolisticOriginalRightHnadList[i].transform.localPosition = holisticOriginalRightHandData[i]; } } else { if (showHolisticOriginalRightHnadList.Count > 0) { for (int i = 0; i < showHolisticOriginalRightHnadList.Count; i++) { showHolisticOriginalRightHnadList[i].transform.localPosition = default_vec; } } } } /// /// 显示Holistic的右手转换后点的位置 /// public void ShowHolisticOriginalFacePoint() { if (holisticOriginalFaceData.Count > 0 && holisticOriginalFaceData != null) { for (int i = 0; i < holisticOriginalFaceData.Count; i++) { if (i >= showHolisticOriginalFaceList.Count) { GameObject go = Instantiate(showPrefabs); showHolisticOriginalFaceList.Add(go); go.transform.SetParent(showPointParent); go.transform.localScale = new Vector3(1, 1, 1); } showHolisticOriginalFaceList[i].transform.localPosition = holisticOriginalFaceData[i]; } } else { if (showHolisticOriginalFaceList.Count > 0) { for (int i = 0; i < showHolisticOriginalFaceList.Count; i++) { showHolisticOriginalFaceList[i].transform.localPosition = default_vec; } } } } private void OnDestroy() { ZwnAmLogicSDK.ReleaseZeePose(); ZwnAmLogicSDK.CloseCamera(); } }