// Function to send Msg to Linux void sendPos_polar(GameObject sound_sphere) { // x and z for plane, y is height float pos_x = sound_sphere.GetComponent <Transform> ().position.x; float pos_y = sound_sphere.GetComponent <Transform> ().position.y; float pos_z = sound_sphere.GetComponent <Transform> ().position.z; float vol = sound_sphere.GetComponent <Transform>().localScale.x; float rad = Mathf.Sqrt(pos_x * pos_x + pos_z * pos_z + (pos_y - 1.6f) * (pos_y - 1.6f)); float azi = Mathf.Atan2(pos_x, pos_z) * 180 / Mathf.PI; float ele = Mathf.Atan2(pos_y - 1.6f, Mathf.Sqrt(pos_x * pos_x + pos_z * pos_z)) * 180 / Mathf.PI; if (rad != 0f) { vol = vol / rad; } //Debug.Log(pos_x); //Debug.Log(pos_y); //Debug.Log(pos_z); //Debug.Log(vol); var msg_azi = new SharpOSC.OscMessage("/0x00/azi", azi); var msg_ele = new SharpOSC.OscMessage("/0x00/ele", ele); var msg_vol = new SharpOSC.OscMessage("/0x00/gain", vol); sender.Send(msg_azi); sender.Send(msg_ele); sender.Send(msg_vol); }
public string update_enter(Dictionary <string, object> parameters) { try { double dur = (double)parameters["dur"]; int state = (int)parameters["state"]; string label = (string)parameters["label"]; string scheme = (string)parameters["scheme"]; double time = (double)parameters["time"]; if (library == OSCLibrary.SharpOSC) { var message = new SharpOSC.OscMessage("/evnt", scheme, label, (Int32)(time * 1000), (Int32)(dur * 1000), (Int32)state, (Int32)0); sharposcclient.Send(message); } else { OscElement message = new OscElement("/evnt", scheme, label, (Int32)(time * 1000), (Int32)(dur * 1000), (Int32)state, (Int32)0); ventuzclient.Send(message); } } catch (Exception ex) { return(ex.ToString()); } return(null); }
public void sendMessages(UDPSender sender) { if (register.xPos_status) { sender.Send(x_OSC); } if (register.yPos_status) { sender.Send(y_OSC); } if (register.zPos_status) { sender.Send(z_OSC); } }
// Use this for initialization void Start() { var message = new SharpOSC.OscMessage("/note", 60, 100, 1000); var sender = new SharpOSC.UDPSender("127.0.0.1", 9000); sender.Send(message); }
public void Test() { var message = new SharpOSC.OscMessage(Address, Msg); var sender = new SharpOSC.UDPSender("127.0.0.1", 53001); sender.Send(message); }
public void sendOscMessage(string mess) { Debug.Log("sendOscMessage"); var message = new SharpOSC.OscMessage(mess); var sender = new SharpOSC.UDPSender("127.0.0.1", 9000); sender.Send(message); }
public static void SendGenerateFromScratch() { string dummy = "dummy"; var message = new SharpOSC.OscMessage("/something/generate_from_scratch", dummy); sender.Send(message); }
public override void OnFrame(Controller controller) { Frame currentFrame = controller.Frame(); currentTime = currentFrame.Timestamp; timeChanged = currentTime - previousTime; if (timeChanged > 1000) { if (!currentFrame.Hands.IsEmpty) { Finger finger = currentFrame.Fingers[0]; Screen screen = controller.LocatedScreens.ClosestScreenHit(finger); if (screen != null && screen.IsValid) { var tipVelocity = ( int )finger.TipVelocity.Magnitude; //if ( tipVelocity > 25 ) //{ var xScreenIntersect = screen.Intersect(finger, true).x; var yScreenIntersect = screen.Intersect(finger, true).y; if (xScreenIntersect.ToString() != "NaN") { var x = ( int )(xScreenIntersect * screen.WidthPixels); var y = ( int )(screen.HeightPixels - (yScreenIntersect * screen.HeightPixels)); Console.WriteLine("Screen intersect X: " + xScreenIntersect.ToString()); Console.WriteLine("Screen intersect Y: " + yScreenIntersect.ToString()); Console.WriteLine("Width pixels: " + screen.WidthPixels.ToString()); Console.WriteLine("Height pixels: " + screen.HeightPixels.ToString()); Console.WriteLine("\n"); Console.WriteLine("x: " + x.ToString()); Console.WriteLine("y: " + y.ToString()); Console.WriteLine("\n"); Console.WriteLine("Tip velocity: " + tipVelocity.ToString()); var message = new SharpOSC.OscMessage("/mouse", x, y, tipVelocity); var sender = new SharpOSC.UDPSender("127.0.0.1", 55555); sender.Send(message); //MouseCursor.MoveCursor( x, y ); Console.WriteLine("\n" + new String('=', 40) + "\n"); } //} } } } previousTime = currentTime; }
public void sendMessages(UDPSender messageSender) { if (register.x_distance_status) { messageSender.Send(xdistOSC); } if (register.y_distance_status) { messageSender.Send(ydistOSC); } if (register.z_distance_status) { messageSender.Send(zdistOSC); } if (register.xy_distance_status) { messageSender.Send(xydistOSC); } if (register.xz_distance_status) { messageSender.Send(xzdistOSC); } if (register.yz_distance_status) { messageSender.Send(yzdistOSC); } if (register.xyz_distance_status) { messageSender.Send(xyzdistOSC); } if (register.theta_status) { messageSender.Send(angleOSC); } }
// Function to send Msg to Linux void sendPos(GameObject pos_arr) { // x and z for plane, y is height float pos_x = pos_arr.GetComponent <Transform> ().position.x; float pos_y = pos_arr.GetComponent <Transform> ().position.y; float pos_z = pos_arr.GetComponent <Transform> ().position.z; float azi; float ele; //Debug.Log(pos_x); //Debug.Log(pos_y); //Debug.Log(pos_z); azi = Mathf.Atan2(pos_x, pos_z) * 180 / Mathf.PI; ele = Mathf.Atan2(pos_y - 1.6f, Mathf.Sqrt(pos_x * pos_x + pos_z * pos_z)) * 180 / Mathf.PI; var msg_azi = new SharpOSC.OscMessage("/0x00/azi", azi); var msg_ele = new SharpOSC.OscMessage("/0x00/ele", ele); var sender = new SharpOSC.UDPSender(IP_add, port); sender.Send(msg_azi); sender.Send(msg_ele); }
private void TransmitData(VideoPacket packet) { var message = new OscMessage("/test/1", ObjectToString(packet)); var udpSender = new UDPSender("127.0.0.1", 55555); udpSender.Send(message); }
/* Sends any unlabled markers out over OSC. Address Pattern: \unlabledMarker Format: String[4] MarkerID GlobalMarkerPosition.x GlobalMarkerPosition.y GlobalMarkerPosition.z */ private static void sendUnlabeledMarkers(Client MyClient, UDPSender sender) { // Get the unlabeled markers uint UnlabeledMarkerCount = MyClient.GetUnlabeledMarkerCount().MarkerCount; Console.WriteLine(" Unlabeled Markers ({0}):", UnlabeledMarkerCount); for (uint UnlabeledMarkerIndex = 0; UnlabeledMarkerIndex < UnlabeledMarkerCount; ++UnlabeledMarkerIndex) { // Get the global marker translation Output_GetUnlabeledMarkerGlobalTranslation _Output_GetUnlabeledMarkerGlobalTranslation = MyClient.GetUnlabeledMarkerGlobalTranslation(UnlabeledMarkerIndex); String[] msg = new String[4]; msg[0] = "UnlabledMarkerID: " + UnlabeledMarkerIndex + ""; msg[1] = "pos.x: " + _Output_GetUnlabeledMarkerGlobalTranslation.Translation[0].ToString(); msg[2] = "pos.y: " + _Output_GetUnlabeledMarkerGlobalTranslation.Translation[1].ToString(); msg[3] = "pos.z: " + _Output_GetUnlabeledMarkerGlobalTranslation.Translation[2].ToString(); var message = new SharpOSC.OscMessage("/unlabledMarker", msg); sender.Send(message); Console.WriteLine(" Marker #{0}: ({1}, {2}, {3})", UnlabeledMarkerIndex, _Output_GetUnlabeledMarkerGlobalTranslation.Translation[0], _Output_GetUnlabeledMarkerGlobalTranslation.Translation[1], _Output_GetUnlabeledMarkerGlobalTranslation.Translation[2]); } }
/* Sends rigid body data out over OSC. Address Pattern: \rigidBody Format: String[4] RigidBodyName GlobalPosition.x GlobalPosition.y GlobalPosition.z GlobalOrientation.qx GlobalOrientation.qy GlobalOrientation.qz GlobalOrientation.qw */ private static void sendRigidBodies(Client MyClient, UDPSender sender) { // Count the number of subjects uint SubjectCount = MyClient.GetSubjectCount().SubjectCount; for (uint SubjectIndex = 0; SubjectIndex < SubjectCount; ++SubjectIndex) { // Get the subject name string SubjectName = MyClient.GetSubjectName(SubjectIndex).SubjectName; Console.WriteLine(" Name: {0}", SubjectName); // Get the root segment string RootSegment = MyClient.GetSubjectRootSegmentName(SubjectName).SegmentName; Console.WriteLine(" Root Segment: {0}", RootSegment); //Get the static segment translation Output_GetSegmentGlobalTranslation _Output_GetSegmentGlobalTranslation = MyClient.GetSegmentGlobalTranslation(SubjectName, RootSegment); Console.WriteLine(" Global Translation: ({0},{1},{2}) {3}", _Output_GetSegmentGlobalTranslation.Translation[0], _Output_GetSegmentGlobalTranslation.Translation[1], _Output_GetSegmentGlobalTranslation.Translation[2], _Output_GetSegmentGlobalTranslation.Occluded); // Get the global segment rotation in quaternion co-ordinates Output_GetSegmentGlobalRotationQuaternion _Output_GetSegmentGlobalRotationQuaternion = MyClient.GetSegmentGlobalRotationQuaternion(SubjectName, RootSegment); Console.WriteLine(" Global Rotation Quaternion: ({0},{1},{2},{3}) {4}", _Output_GetSegmentGlobalRotationQuaternion.Rotation[0], _Output_GetSegmentGlobalRotationQuaternion.Rotation[1], _Output_GetSegmentGlobalRotationQuaternion.Rotation[2], _Output_GetSegmentGlobalRotationQuaternion.Rotation[3], _Output_GetSegmentGlobalRotationQuaternion.Occluded); String[] msg = new String[8]; msg[0] = "RigidBody Name: "+ SubjectName; msg[1] = "pos.x: " + _Output_GetSegmentGlobalTranslation.Translation[0].ToString(); msg[2] = "pos.y: " + _Output_GetSegmentGlobalTranslation.Translation[1].ToString(); msg[3] = "pos.z: " + _Output_GetSegmentGlobalTranslation.Translation[2].ToString(); msg[4] = "q.x: " + _Output_GetSegmentGlobalRotationQuaternion.Rotation[0].ToString(); msg[5] = "q.y: " + _Output_GetSegmentGlobalRotationQuaternion.Rotation[1].ToString(); msg[6] = "q.z: " + _Output_GetSegmentGlobalRotationQuaternion.Rotation[2].ToString(); msg[7] = "q.w: " + _Output_GetSegmentGlobalRotationQuaternion.Rotation[3].ToString(); // ignore dropped tracking frames if (_Output_GetSegmentGlobalTranslation.Translation[0] != 0 && _Output_GetSegmentGlobalTranslation.Translation[1] != 0 && _Output_GetSegmentGlobalTranslation.Translation[2] != 0 ) { var message = new SharpOSC.OscMessage("/rigidBody", msg); sender.Send(message); } } }
private static void sendLocalRotationQuaternion(Client MyClient, UDPSender sender) { // Count the number of subjects uint SubjectCount = MyClient.GetSubjectCount().SubjectCount; for (uint SubjectIndex = 0; SubjectIndex < SubjectCount; ++SubjectIndex) { // Get the subject name string SubjectName = MyClient.GetSubjectName(SubjectIndex).SubjectName; Console.WriteLine(" Name: {0}", SubjectName); // Get the root segment string RootSegment = MyClient.GetSubjectRootSegmentName(SubjectName).SegmentName; Console.WriteLine(" Root Segment: {0}", RootSegment); //Get the static segment translation Output_GetSegmentLocalRotationQuaternion Output = MyClient.GetSegmentLocalRotationQuaternion(SubjectName, RootSegment); Console.WriteLine(" LOCAL Rotation Quaternion: ({0},{1},{2},{3})", Output.Rotation[0], Output.Rotation[1], Output.Rotation[2], Output.Rotation[3]); String[] msg = new String[5]; msg[0] = "RigidBody Name: " + SubjectName; msg[1] = "q.x: " + Output.Rotation[0].ToString(); msg[2] = "q.y: " + Output.Rotation[1].ToString(); msg[3] = "q.z: " + Output.Rotation[2].ToString(); msg[4] = "q.w: " + Output.Rotation[3].ToString(); var message = new SharpOSC.OscMessage("/localQuat", msg); sender.Send(message); } }
/* Sends any labled markers out over OSC. Address Pattern: \labledMarker Format: String[5] MarkerID MarkerName GlobalMarkerPosition.x GlobalMarkerPosition.y GlobalMarkerPosition.z */ private static void sendLabledMarkers(Client MyClient, UDPSender sender) { // For each subject in the scene uint SubjectCount = MyClient.GetSubjectCount().SubjectCount; for (uint SubjectIndex = 0; SubjectIndex < SubjectCount; ++SubjectIndex) { // Get the subject name string SubjectName = MyClient.GetSubjectName(SubjectIndex).SubjectName; // Count the number of markers uint MarkerCount = MyClient.GetMarkerCount(SubjectName).MarkerCount; // for each marker in subject for (uint MarkerIndex = 0; MarkerIndex < MarkerCount; ++MarkerIndex) { // Get the marker name string MarkerName = MyClient.GetMarkerName(SubjectName, MarkerIndex).MarkerName; // Get the global marker translation Output_GetMarkerGlobalTranslation _Output_GetMarkerGlobalTranslation = MyClient.GetMarkerGlobalTranslation(SubjectName, MarkerName); String[] msg = new String[5]; msg[0] = "RigidBody Name: "+MarkerName; msg[1] = "MarkerID: " + MarkerIndex; msg[2] = "pos.x: " + _Output_GetMarkerGlobalTranslation.Translation[0].ToString(); msg[3] = "pos.y: " + _Output_GetMarkerGlobalTranslation.Translation[1].ToString(); msg[4] = "pos.z: " + _Output_GetMarkerGlobalTranslation.Translation[2].ToString(); // ignore dropped tracking locations if (_Output_GetMarkerGlobalTranslation.Translation[0] != 0 && _Output_GetMarkerGlobalTranslation.Translation[1] != 0 && _Output_GetMarkerGlobalTranslation.Translation[2] != 0) { var message = new SharpOSC.OscMessage("/labledMarker", msg); sender.Send(message); } Console.WriteLine(" Marker #{0}: {1} ({2}, {3}, {4}) {5}", MarkerIndex, MarkerName, _Output_GetMarkerGlobalTranslation.Translation[0], _Output_GetMarkerGlobalTranslation.Translation[1], _Output_GetMarkerGlobalTranslation.Translation[2], _Output_GetMarkerGlobalTranslation.Occluded); } } }
public static string receiveMsg(NetworkStream stream, TcpClient tcpClient, UDPSender sender) { string msgReceived = ""; // Create a byte array for the available bytes byte[] arrayBytesRequest = new byte[tcpClient.Available]; // Read the bytes from the stream int nRead = stream.Read(arrayBytesRequest, 0, arrayBytesRequest.Length); if (nRead > 0) { // Convert the byte array into a string string sMsgRequest = ASCIIEncoding.ASCII.GetString(arrayBytesRequest); Console.WriteLine("Msg from Robot: " + sMsgRequest); string sMsgAnswer = string.Empty; // set the key for the key/value pairs string key = ""; if (sMsgRequest.StartsWith("world")) key = "hello"; else if (sMsgRequest.StartsWith("p")) key = "target"; else if (sMsgRequest.StartsWith("[")) key = "joints"; else if (sMsgRequest.StartsWith("SET force")) key = "force"; else if (sMsgRequest.StartsWith("SET tcp force")) key = "tcp force"; // set the value for the key/value pairs if (key.Equals("hello")) { Console.WriteLine("Going to home position: hello " + sMsgRequest + "!"); // go to home position msgReceived = "going home"; } else if (key.Equals("target")) { int start = 2; msgReceived = sMsgRequest.Substring(2, sMsgRequest.Length - 1 - start); string[] coords = msgReceived.Split(','); if (coords.Length == 6) { float x = float.Parse(coords[0]); float y = float.Parse(coords[1]); float z = float.Parse(coords[2]); float rx = float.Parse(coords[3]); float ry = float.Parse(coords[4]); float rz = float.Parse(coords[5]); pose[0] = x; pose[1] = y; pose[2] = z; pose[3] = rx; pose[4] = ry; pose[5] = rz; // send pose over OSC String[] msg = new String[6]; msg[0] = "x: " + pose[0]; msg[1] = "y: " + pose[1]; msg[2] = "z: " + pose[2]; msg[3] = "rx: " + pose[3]; msg[4] = "ry: " + pose[4]; msg[5] = "rz: " + pose[5]; var message = new SharpOSC.OscMessage("/pose", msg); sender.Send(message); Console.WriteLine("Robot Pose: [" + x + ", " + y + ", " + z + ", " + rx + ", " + ry + ", " + rz + "]"); } else { msgReceived = "WTF: " + sMsgRequest; } } else if (key.Equals("joints")) { Console.WriteLine("Parsing joint pose: " + sMsgRequest); int start = 1; msgReceived = sMsgRequest.Substring(start, sMsgRequest.Length - 1 - start); string[] coords = msgReceived.Split(','); if (coords.Length == 6) { float x = float.Parse(coords[0]); float y = float.Parse(coords[1]); float z = float.Parse(coords[2]); float rx = float.Parse(coords[3]); float ry = float.Parse(coords[4]); float rz = float.Parse(coords[5]); joints[0] = x; joints[1] = y; joints[2] = z; joints[3] = rx; joints[4] = ry; joints[5] = rz; // send joints over OSC String[] msg = new String[6]; msg[0] = "base: " + pose[0]; msg[1] = "shoulder: " + pose[1]; msg[2] = "elbow: " + pose[2]; msg[3] = "wrist 1: " + pose[3]; msg[4] = "wrist 2: " + pose[4]; msg[5] = "wrist 3: " + pose[5]; var message = new SharpOSC.OscMessage("/joints", msg); sender.Send(message); Console.WriteLine("Robot Joint Positions: [" + x + ", " + y + ", " + z + ", " + rx + ", " + ry + ", " + rz + "]"); } else { msgReceived = "WTF: " + sMsgRequest; } } else if (key.Equals("force")) { Console.WriteLine("Parsing pose: " + sMsgRequest); int start = key.Length + 5; msgReceived = sMsgRequest.Substring(start, sMsgRequest.Length - 1 - start); force = float.Parse(msgReceived); // send force over OSC var message = new SharpOSC.OscMessage("/force", force); sender.Send(message); Console.WriteLine("Robot Force: {" + force + "}"); } else if (key.Equals("tcp force")) { Console.WriteLine("Parsing pose: " + sMsgRequest); int start = key.Length + 5; msgReceived = sMsgRequest.Substring(start, sMsgRequest.Length - 1 - start); tcpForce = float.Parse(msgReceived); // send TCP force over OSC var message = new SharpOSC.OscMessage("/TCPforce", tcpForce); sender.Send(message); Console.WriteLine("Robot TCP Force: {" + tcpForce + "}"); } else { // unkown command msgReceived = sMsgRequest; ///sendMsg(stream, "unknown command sent to robot: " + sMsgRequest); } } else if (tcpClient.Available == 0) { Console.WriteLine("Client closed the connection."); // No bytes read, and no bytes available, the client is closed. stream.Close(); } return msgReceived; }
static void Main(string[] args) { // OSC message/bundle callback handler. // In this example it just outputs all the sent responses and arguments to the console. HandleOscPacket packetCallback = delegate(OscPacket packet) { if (packet is OscMessage) { var message = packet as OscMessage; StringBuilder builder = new StringBuilder(); builder.AppendLine(message.Address); foreach (var argument in message.Arguments) { builder.AppendFormat(" {0} ", argument); } builder.AppendLine(); Console.WriteLine(builder.ToString()); } else if (packet is OscBundle) { StringBuilder builder = new StringBuilder(); var bundle = packet as OscBundle; foreach (var message in bundle.Messages) { builder.AppendLine(message.Address); foreach (var argument in message.Arguments) { builder.AppendFormat(" {0} ", argument); } builder.AppendLine(); Console.WriteLine(builder.ToString()); } } }; // Create a OSC message listener object, lets print out all qtm server replies in a callback method var listener = new UDPListener(55555, packetCallback); // Create a OSC message sender object var sender = new SharpOSC.UDPSender("127.0.0.1", 22225); // Connect sender.Send(new SharpOSC.OscMessage("/qtm", "connect", 55555)); // Ask for QTM version sender.Send(new SharpOSC.OscMessage("/qtm", "qtmversion")); // Ask for general camera system and 3d marker parameters (returned as xml) sender.Send(new SharpOSC.OscMessage("/qtm", "getparameters", "General", "3d")); // Start streaming of frames (just 3d and 6dof data) sender.Send(new SharpOSC.OscMessage("/qtm", "StreamFrames", "AllFrames", "3d", "6d")); // Pressing the escape key will stop streaming and disconnect from qtm while (true) { if (Console.KeyAvailable) { if (Console.ReadKey(false).Key == ConsoleKey.Escape) { break; } } } // Stop streaming sender.Send(new SharpOSC.OscMessage("/qtm", "StreamFrames", "Stop")); // Disconnect from qtm sender.Send(new SharpOSC.OscMessage("/qtm", "disconnect")); }
public void Sync() { label_status.Invoke((MethodInvoker)(() => label_status.Text = "Syncing")); foreach (KeyValuePair <string, string> vVar in voicemeeterVarNames) { oscSender.Send(new SharpOSC.OscMessage(vVar.Value, (float)vm.GetParam(vVar.Key))); oscSender.Send(new SharpOSC.OscMessage(vVar.Value + "/Text", (float)vm.GetParam(vVar.Key))); System.Threading.Thread.Sleep(5); //Console.WriteLine(vVar.Key + " - " + vVar.Value.ToString()); } for (int i = 0; i < 8; i++) { try { oscSender.Send(new SharpOSC.OscMessage("/Slider/" + i.ToString() + "/device/Text", vm.GetParam("Strip[" + i.ToString() + "].device"))); //Console.WriteLine((string)vm.GetParamString("Strip[" + i.ToString() + "].device")); } catch (System.Exception e) { Console.WriteLine("oops"); } } foreach (KeyValuePair <string, string> vVar in voicemeeterXYVarNames) { string value = vVar.Value; float tmpVarX = (float)vm.GetParam(vVar.Key + "_x"); float tmpVarY = (float)vm.GetParam(vVar.Key + "_y"); if (vVar.Key.Contains("fx")) { value = vVar.Value + "y"; } if (vVar.Key.Contains("Pan")) { //Console.WriteLine("PANNNN!!!!!!!!"); if (vVar.Key.Contains("5") || vVar.Key.Contains("6") || vVar.Key.Contains("7")) { //Console.WriteLine("5, 6, OR 7!!!!!!!!"); tmpVarY = ConvertRange((float)-0.5, (float)0.5, (float)-1, (float)1, tmpVarY); tmpVarX = ConvertRange((float)-0.5, (float)0.5, (float)-1, (float)1, tmpVarX); } else { //tmpVarX = ConvertRange((float)-0.5, (float)0.5, (float)0, (float)1, tmpVarX); tmpVarY = ConvertRange((float)0, (float)1, (float)-0.5, (float)0.5, tmpVarY); } } else { //tmpVarY = ConvertRange((float)-0.5, (float)0.5, (float)0, (float)1,tmpVarY); tmpVarY = ConvertRange((float)0, (float)1, (float)-0.5, (float)0.5, tmpVarY); } //if (voicemeeterXYVars[vVar.Key + "_x"] != tmpVarX || voicemeeterXYVars[vVar.Key + "_y"] != tmpVarY) //{ //voicemeeterXYVars[vVar.Key + "_x"] = tmpVarX; //voicemeeterXYVars[vVar.Key + "_y"] = tmpVarY; oscSender.Send(new SharpOSC.OscMessage(value, tmpVarY, tmpVarX)); oscSender.Send(new SharpOSC.OscMessage(value + "/Text", tmpVarY + " - " + tmpVarX)); System.Threading.Thread.Sleep(10); //Console.WriteLine(vVar.Key + " - " + value.ToString()); //} } label_status.Invoke((MethodInvoker)(() => label_status.Text = "")); }
// Update is called once per frame void Update() { Frame frame = controller.Frame(); Debug.Log("Frame Id: " + frame.Id); frameCount++; HandList hands = frame.Hands; for (int i = 0; i < hands.Count; i++) { Hand hand = hands[i]; Leap.Vector direction = hand.Direction; Leap.Vector palmNormal = hand.PalmNormal; Leap.Vector palmPosition = hand.PalmPosition; Leap.Vector handSpeed = hand.PalmVelocity; if (i == 0) { fdistanceDirection = direction.DistanceTo(fprevDirection); fdistancePalmPosition = palmPosition.DistanceTo(fprevPalmPosition); fdistancePalmNormal = palmNormal.DistanceTo(fprevPalmNormal); fdistanceHandVelocity = handSpeed.DistanceTo(fprevHandVelocity); fprevDirection = direction; fprevPalmNormal = palmNormal; fprevPalmPosition = palmPosition; fprevHandVelocity = handSpeed; } else if (i == 1) { sdistanceDirection = direction.DistanceTo(sprevDirection); sdistancePalmPosition = palmPosition.DistanceTo(sprevPalmPosition); sdistancePalmNormal = palmNormal.DistanceTo(sprevPalmNormal); sdistanceHandVelocity = handSpeed.DistanceTo(sprevHandVelocity); sprevDirection = direction; sprevPalmNormal = palmNormal; sprevPalmPosition = palmPosition; sprevHandVelocity = handSpeed; Debug.Log("first direction " + fdistanceDirection); Debug.Log("second direction " + sdistanceDirection); Debug.Log("Direction change = " + (fdistanceDirection - sdistanceDirection)); directionFile.WriteLine(""); directionFile.WriteLine("frame id: " + frame.Id); directionFile.WriteLine("Direction first: " + fdistanceDirection + " second: " + sdistanceDirection + " diff: " + (fdistanceDirection - sdistanceDirection)); directionFile.WriteLine("PalmPosition first: " + fdistancePalmPosition + " second: " + sdistancePalmPosition + " diff: " + (fdistancePalmPosition - sdistancePalmPosition)); directionFile.WriteLine("PalmNormal first: " + fdistancePalmNormal + " second: " + sdistancePalmNormal + " diff: " + (fdistancePalmNormal - sdistancePalmNormal)); directionFile.WriteLine("Velocity first: " + fdistanceHandVelocity + " second: " + sdistanceHandVelocity + " diff: " + (fdistanceHandVelocity - sdistanceHandVelocity)); directionFile.WriteLine(""); float directionChange = (fdistanceDirection - sdistanceDirection); float palmPositionChange = fdistancePalmPosition - sdistancePalmPosition; float palmNormalChange = fdistancePalmNormal - sdistancePalmNormal; float velocityChange = fdistanceHandVelocity - sdistanceHandVelocity; if (directionChange < 0.0f) { directionChange *= -1.0f; } if (palmPositionChange < 0.0f) { palmPositionChange *= -1.0f; } if (palmNormalChange < 0.0f) { palmNormalChange *= -1.0f; } if (velocityChange < 0.0f) { velocityChange *= -1.0f; } totalDistance += directionChange; totalPalmPosition += palmPositionChange; totalPalmNormal += palmNormalChange; totalVelocity += velocityChange; test_status = "Status:\n"; if (directionChange < 0.001) { test_status += "Direction OK\n"; } else { test_status += "Fix Direction\n"; } if (palmPositionChange < 1.0) { test_status += "PalmPosition OK\n"; } else { test_status += "Fix PalmPosition\n"; } if (palmNormalChange < 1.0) { test_status += "PalmNormal OK\n"; } else { test_status += "Fix PalmNormal\n"; } if (velocityChange < 1.0) { test_status += "Velocity OK\n"; } else { test_status += "Fix Velocity\n"; } float error = totalDistance * 2.0f + totalPalmNormal * 2.0f + totalVelocity + totalPalmPosition * 3.0f; error /= (4 * frameCount); var message = new SharpOSC.OscMessage("/hand/1", error); var sender = new SharpOSC.UDPSender("127.0.0.1", 55555); sender.Send(message); if (error > 5.0) { status_text.color = Color.red; test_status += "Not matching"; //source.PlayOneShot(buzzSound); } else { status_text.color = Color.green; test_status += "Matching"; //source.PlayOneShot(matchSound); } status_text.text = test_status; } } }