void Update()
{
if (isFacetrackingInitialized)
{
KinectManager kinectManager = KinectManager.Instance;
if (kinectManager && kinectManager.IsInitialized())
{
primaryUserID = kinectManager.GetUserIdByIndex(playerIndex);
}
// update the face tracker
if (sensorData.sensorInterface.UpdateFaceTracking())
{
// estimate the tracking state
isTrackingFace = sensorData.sensorInterface.IsFaceTracked(primaryUserID);
// get the facetracking parameters
if (isTrackingFace)
{
lastFaceTrackedTime = Time.realtimeSinceStartup;
// get face rectangle
//bGotFaceRect = sensorData.sensorInterface.GetFaceRect(primaryUserID, ref faceRect);
// get head position
bGotHeadPos = sensorData.sensorInterface.GetHeadPosition(primaryUserID, ref headPos);
// get head rotation
bGotHeadRot = sensorData.sensorInterface.GetHeadRotation(primaryUserID, ref headRot);
// get the animation units
bGotAU = sensorData.sensorInterface.GetAnimUnits(primaryUserID, ref dictAU);
// get the shape units
bGotSU = sensorData.sensorInterface.GetShapeUnits(primaryUserID, ref dictSU);
if (faceModelMesh != null && faceModelMesh.activeInHierarchy)
{
// apply model vertices to the mesh
if (!bFaceModelMeshInited)
{
CreateFaceModelMesh();
}
}
if (getFaceModelData)
{
UpdateFaceModelMesh();
}
}
else if ((Time.realtimeSinceStartup - lastFaceTrackedTime) <= faceTrackingTolerance)
{
// allow tolerance in tracking
isTrackingFace = true;
}
if (faceModelMesh != null && bFaceModelMeshInited)
{
faceModelMesh.SetActive(isTrackingFace);
}
}
}
}