Facetracking manager is the component that deals with head and face tracking.
상속: UnityEngine.MonoBehaviour
예제 #1
0
        //----------------------------------- end of public functions --------------------------------------//
        void Start()
        {
            try
            {
                // get sensor data
                KinectManager kinectManager = KinectManager.Instance;
                if (kinectManager && kinectManager.IsInitialized())
                {
                    sensorData = kinectManager.GetSensorData();
                }

                if (sensorData == null || sensorData.sensorInterface == null)
                {
                    throw new Exception("Face tracking cannot be started, because KinectManager is missing or not initialized.");
                }

                if (debugText != null)
                {
                    debugText.GetComponent<GUIText>().text = "Please, wait...";
                }

                // ensure the needed dlls are in place and face tracking is available for this interface
                bool bNeedRestart = false;
                if (sensorData.sensorInterface.IsFaceTrackingAvailable(ref bNeedRestart))
                {
                    if (bNeedRestart)
                    {
                        KinectInterop.RestartLevel(gameObject, "FM");
                        return;
                    }
                }
                else
                {
                    string sInterfaceName = sensorData.sensorInterface.GetType().Name;
                    throw new Exception(sInterfaceName + ": Face tracking is not supported!");
                }

                // Initialize the face tracker
                if (!sensorData.sensorInterface.InitFaceTracking(getFaceModelData, displayFaceRect))
                {
                    throw new Exception("Face tracking could not be initialized.");
                }

                instance = this;
                isFacetrackingInitialized = true;

                //DontDestroyOnLoad(gameObject);

                if (debugText != null)
                {
                    debugText.GetComponent<GUIText>().text = "Ready.";
                }
            }
            catch (DllNotFoundException ex)
            {
                Debug.LogError(ex.ToString());
                if (debugText != null)
                    debugText.GetComponent<GUIText>().text = "Please check the Kinect and FT-Library installations.";
            }
            catch (Exception ex)
            {
                Debug.LogError(ex.ToString());
                if (debugText != null)
                    debugText.GetComponent<GUIText>().text = ex.Message;
            }
        }
예제 #2
0
        void OnDestroy()
        {
            if (isFacetrackingInitialized && sensorData != null && sensorData.sensorInterface != null)
            {
                // finish face tracking
                sensorData.sensorInterface.FinishFaceTracking();
            }

            //		// clean up
            //		Resources.UnloadUnusedAssets();
            //		GC.Collect();

            isFacetrackingInitialized = false;
            instance = null;
        }