//code sample of getting gestures from xtr3d engine. These gestures are defined inside SamplePoses.xml private void MyGestureFrameReadyEventHandler(object sender, GesturesFrameReadyEventArgs e) { // Opening the received frame using (var gesturesFrame = e.OpenFrame() as GesturesFrame) { if (gesturesFrame != null) { BaseGesture[] gestures = gesturesFrame.FirstSkeletonGestures(); foreach (BaseGesture gesture in gestures) { Debug.Log("GestureID : " + gesture.ID); switch(gesture.ID) { case 1: inStroke = true; break; case 2: if(inStroke) { inStroke = false; OnOneStrokeCompeted(); } break; default: break; } } } } }
//code sample of getting gestures from xtr3d engine. These gestures are defined inside SamplePoses.xml private void MyGestureFrameReadyEventHandler(object sender, GesturesFrameReadyEventArgs e) { // Opening the received frame using (var gesturesFrame = e.OpenFrame() as GesturesFrame) { lock (gesturesSB) { // Generate gestures text if (gesturesSB.Length > 0) gesturesSB.Remove (0, gesturesSB.Length - 1); if (gesturesFrame != null) { BaseGesture[] gestures = gesturesFrame.FirstSkeletonGestures(); foreach (BaseGesture gesture in gestures) { // Update messages for gesture if (!gestureMessages.ContainsKey(gesture.ID)) { gestureMessages.Add(gesture.ID, new GestureMessage(gesture.Description)); } gestureMessages [gesture.ID].timeToLiveCounter = gestureTypeDelay [gesture.Type]; switch (gesture.Type) { case BaseGesture.GestureType.HEAD_POSITION: { HeadPositionGesture headPositionGesture = gesture as HeadPositionGesture; gestureMessages [gesture.ID].Text = gesture.Description + " " + headPositionGesture.RegionIndex; break; } case BaseGesture.GestureType.WINGS: { WingsGesture wingsGesture = gesture as WingsGesture; gestureMessages [gesture.ID].Text = gesture.Description + " " + wingsGesture.ArmsAngle; break; } } } if (SdkManager.IsDebugRun) { LogGestures(gestures, gesturesFrame.FrameKey.FrameNumberKey); } } // Generate gestures text foreach (int id in gestureMessages.Keys) { if (gestureMessages[id].timeToLiveCounter > 0) { gesturesSB.AppendFormat("{0} - {1}\n" , id, gestureMessages[id].Text); gestureMessages[id].timeToLiveCounter--; } } } } }
//code sample of getting gestures from xtr3d engine. These gestures are defined inside SamplePoses.xml private void MyGesturesFrameReady(object sender, GesturesFrameReadyEventArgs e) { // Opening the received frame using (var gesturesFrame = e.OpenFrame() as GesturesFrame) { if (gesturesFrame != null) { StringBuilder logLine = new StringBuilder(); logLine.AppendFormat("Gestures frame: {0}, contains {1} gestures\n", gesturesFrame.FrameKey, gesturesFrame.FirstSkeletonGestures().Length); int gestureCounter = 0; foreach (BaseGesture gesture in gesturesFrame.FirstSkeletonGestures()) { string additionalGestureData = ""; // Update messages for gesture if (!gestureMessages.ContainsKey(gesture.ID)) { gestureMessages.Add(gesture.ID, new GestureMessage(gesture.Description)); } gestureMessages[gesture.ID].timeToLiveCounter = gestureTypeToDelay[gesture.Type]; switch (gesture.Type) { case BaseGesture.GestureType.HEAD_POSITION: { HeadPositionGesture headPositionGesture = gesture as HeadPositionGesture; gestureMessages[gesture.ID].text = gesture.Description + " " + headPositionGesture.RegionIndex; additionalGestureData = " (" + headPositionGesture.RegionIndex + ")"; break; } case BaseGesture.GestureType.WINGS: { WingsGesture wingsGesture = gesture as WingsGesture; gestureMessages[gesture.ID].text = gesture.Description + " " + wingsGesture.ArmsAngle; additionalGestureData = " (" + wingsGesture.ArmsAngle + ")"; break; } default: break; } logLine.AppendFormat("{0}. Gesture id: {1} - {2}{3}\n", gestureCounter, gesture.ID, gesture.Description, additionalGestureData); gestureCounter++; } Debug.Log(logLine); } // Generate gestures text detectedGesturesStreamString = new StringBuilder(); foreach (int id in gestureMessages.Keys) { if (gestureMessages[id].timeToLiveCounter > 0) { detectedGesturesStreamString.AppendFormat("{0} - {1}\n", id, gestureMessages[id].text); gestureMessages[id].timeToLiveCounter--; } } } }
private void MyRecognitionFrameReadyEventHandler(object sender, GesturesFrameReadyEventArgs e) { // Opening the received frame using (var gesturesFrame = e.OpenFrame() as GesturesFrame) { GesturesText.Text = ""; if (gesturesFrame != null) { StringBuilder gesturesString = new StringBuilder(); gesturesString.AppendFormat("Gestures frame: {0}, contains {1} gestures", gesturesFrame.FrameKey.FrameNumberKey, gesturesFrame.FirstSkeletonGestures().Length); Console.WriteLine(gesturesString); int i = 0; foreach (BaseGesture gesture in gesturesFrame.FirstSkeletonGestures()) { // Update messages for gesture if (!gestureMessages.ContainsKey(gesture.ID)) { gestureMessages.Add(gesture.ID, new GestureMessage(gesture.Description)); } gestureMessages[gesture.ID].timeToLiveCounter = gestureTypeToDelay[gesture.Type]; switch (gesture.Type) { case BaseGesture.GestureType.HEAD_POSITION: { HeadPositionGesture headPositionGesture = gesture as HeadPositionGesture; gestureMessages[gesture.ID].text = gesture.Description + " (" + headPositionGesture.RegionIndex + ")"; break; } case BaseGesture.GestureType.WINGS: { WingsGesture wingsGesture = gesture as WingsGesture; gestureMessages[gesture.ID].text = gesture.Description + " (" + wingsGesture.ArmsAngle + ")"; break; } } Console.WriteLine("{0}. Gesture id: {1} - {2}", i, gesture.ID, gestureMessages[gesture.ID].text);//written to console for automatic tests i++; } } // Generate gestures text GesturesText.Text = ""; foreach (int id in gestureMessages.Keys) { if (gestureMessages[id].timeToLiveCounter > 0) { GesturesText.Text += id + " - " + gestureMessages[id].text; GesturesText.Text += "\r\n"; gestureMessages[id].timeToLiveCounter--; } } } }
private void HandleGestureEvent(GesturesFrameReadyEventArgs gesturesFrameReadyEventArgs) { //TODO Send Gesture }
private void MyRecognitionFrameReadyEventHandler(object sender, GesturesFrameReadyEventArgs e) { // Opening the received frame using (var gesturesFrame = e.OpenFrame() as GesturesFrame) { GesturesText.Text = ""; if (gesturesFrame != null) { StringBuilder gesturesString = new StringBuilder(); gesturesString.AppendFormat("Gestures frame: {0}, contains {1} gestures", gesturesFrame.FrameKey.FrameNumberKey, gesturesFrame.FirstSkeletonGestures().Length); Console.WriteLine(gesturesString); int i = 0; foreach (BaseGesture gesture in gesturesFrame.FirstSkeletonGestures()) { // Update messages for gesture if (!gestureMessages.ContainsKey(gesture.ID)) { gestureMessages.Add(gesture.ID, new GestureMessage(gesture.Description)); } gestureMessages[gesture.ID].timeToLiveCounter = gestureTypeToDelay[gesture.Type]; switch (gesture.Type) { case BaseGesture.GestureType.HEAD_POSITION: { HeadPositionGesture headPositionGesture = gesture as HeadPositionGesture; gestureMessages[gesture.ID].text = gesture.Description + " (" + headPositionGesture.RegionIndex+ ")"; break; } case BaseGesture.GestureType.WINGS: { WingsGesture wingsGesture = gesture as WingsGesture; gestureMessages[gesture.ID].text = gesture.Description + " (" + wingsGesture.ArmsAngle + ")"; break; } } Console.WriteLine("{0}. Gesture id: {1} - {2}", i, gesture.ID, gestureMessages[gesture.ID].text);//written to console for automatic tests i++; } } // Generate gestures text GesturesText.Text = ""; foreach (int id in gestureMessages.Keys) { if (gestureMessages[id].timeToLiveCounter > 0) { GesturesText.Text += id + " - " + gestureMessages[id].text; GesturesText.Text += "\r\n"; gestureMessages[id].timeToLiveCounter--; } } } }