public void matchFaceWithBody(FaceFrameSource[] faceFrameSources, FaceFrameResult[] faceFrameResults, FaceProcessor faceProcessor) { foreach (var body in bodies) { if (!body.IsTracked) { continue; } int i = getBodyIndex(body); //Debug.Print("Body {0} comes with ID {1}", i, body.TrackingId); if (faceFrameSources[i].IsTrackingIdValid) { // check if we have valid face frame results //Debug.Print("Source Valid {0}", i); if (faceFrameResults[i] != null) { //Debug.Print("Result Valid {0}", i); int pitch, yaw, roll; faceProcessor.ExtractFaceRotationInDegrees(faceFrameResults[i].FaceRotationQuaternion, out pitch, out yaw, out roll); eManager.users[faceFrameSources[i].TrackingId].headPitch = pitch; eManager.users[faceFrameSources[i].TrackingId].headYaw = yaw; eManager.users[faceFrameSources[i].TrackingId].headRoll = roll; } else { eManager.users[faceFrameSources[i].TrackingId].headPitch = 1000; eManager.users[faceFrameSources[i].TrackingId].headYaw = 1000; eManager.users[faceFrameSources[i].TrackingId].headRoll = 1000; } if (eManager.HasEngaged && eManager.Engager.body.TrackingId == faceFrameSources[i].TrackingId) { //Debug.Print("Engager: {0}", eManager.Engager.body.TrackingId); eManager.setTrackerFaceOrientation(faceFrameSources[i].TrackingId); } } else { faceFrameSources[i].TrackingId = bodies[i].TrackingId; } } }
//private EngagerTracker eTracker; public void start() { //eTracker = new EngagerTracker(); eManager = new EngagementManager(); man = new Manipulator(); //recogniser = new GestureRecogniser(); bodyProcessor = new BodyProcessor(drawer, eManager); faceProcessor = new FaceProcessor(); ffsDic = new Dictionary<FaceFrameSource, int>(); CoordinateConverter.Sensor = sensor; bodyCount = sensor.BodyFrameSource.BodyCount; readBodyFrame(); readFaceFrame(); }