void Update()
        {
            if (sending)
            {
                switch (ubitrackEvent)
                {
                case UbitrackEventType.Push:
                {
                    SimplePosition3D simplePos3D = new SimplePosition3D();
                    Vector3          output      = Vector3.zero;
                    UbiMeasurementUtils.coordsysemChange(sendPos, ref output);
                    simplePos3D.x         = output.x;
                    simplePos3D.y         = output.y;
                    simplePos3D.z         = output.z;
                    simplePos3D.timestamp = UbiMeasurementUtils.getUbitrackTimeStamp();
                    m_poseReciever.receivePosition3D(simplePos3D);
                    if (once)
                    {
                        this.enabled = false;
                    }
                    break;
                }

                case UbitrackEventType.Pull:
                default:
                    break;
                }
            }
        }
        internal static SimplePose getGameObjectPose(UbitrackRelativeToUnity relative, GameObject go)
        {
            SimplePose pose = new SimplePose();
            Vector3    pos  = new Vector3();
            Quaternion rot  = new Quaternion();

            switch (relative)
            {
            case UbitrackRelativeToUnity.Local:
            {
                UbiMeasurementUtils.coordsysemChange(go.transform.localPosition, ref pos);
                UbiMeasurementUtils.coordsysemChange(go.transform.localRotation, ref rot);
                break;
            }

            case UbitrackRelativeToUnity.World:
            {
                UbiMeasurementUtils.coordsysemChange(go.transform.position, ref pos);
                UbiMeasurementUtils.coordsysemChange(go.transform.rotation, ref rot);
                break;
            }

            default:
                break;
            }
            pose.tx = pos.x;
            pose.ty = pos.y;
            pose.tz = pos.z;

            pose.rx = rot.x;
            pose.ry = rot.y;
            pose.rz = rot.z;
            pose.rw = rot.w;
            return(pose);
        }
        public void send(ulong timestamp)
        {
            SimplePosition3D simplePos3D = new SimplePosition3D();
            Vector3          output      = Vector3.zero;

            UbiMeasurementUtils.coordsysemChange(sendPos, ref output);
            simplePos3D.x         = output.x;
            simplePos3D.y         = output.y;
            simplePos3D.z         = output.z;
            simplePos3D.timestamp = timestamp;
            m_poseReciever.receivePosition3D(simplePos3D);
            if (once)
            {
                this.enabled = false;
            }
        }
Beispiel #4
0
        private void ReceiveData()
        {
            client = new UdpClient(port);
            while (m_keepRunning)
            {
                try
                {
                    IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0);

                    byte[] data = client.Receive(ref anyIP);



                    // Bytes mit der UTF8-Kodierung in das Textformat kodieren.

                    string text = Encoding.UTF8.GetString(data);

                    Debug.Log(text);

                    string[] words = text.Split(' ');


                    Quaternion q = new Quaternion(float.Parse(words[12]),
                                                  float.Parse(words[13]),
                                                  float.Parse(words[14]),
                                                  float.Parse(words[15]));
                    Vector3 t = new Vector3(float.Parse(words[18]),
                                            float.Parse(words[19]),
                                            float.Parse(words[20]));

                    m_newData = new Pose();
                    UbiMeasurementUtils.coordsysemChange(t, ref m_newData.pos);
                    UbiMeasurementUtils.coordsysemChange(q, ref m_newData.rot);
                }

                catch (Exception err)

                {
                    Debug.Log(err.ToString());
                }
            }
            client.Close();
        }
        public static Pose readErrorPoseAsPoseFromString(string input)
        {
            char[] splitter = { ' ' };

            NumberFormatInfo nfi = new CultureInfo("en-US", false).NumberFormat;

            nfi.NumberDecimalSeparator = ".";



            string[] strList = input.Split(splitter);
            Pose     result  = new Pose();

            Vector3    pos = new Vector3(float.Parse(strList[0 + 16], nfi), float.Parse(strList[1 + 16], nfi), float.Parse(strList[2 + 16], nfi));
            Quaternion rot = new Quaternion(float.Parse(strList[0 + 10], nfi), float.Parse(strList[1 + 10], nfi), float.Parse(strList[2 + 10], nfi), float.Parse(strList[3 + 10], nfi));

            UbiMeasurementUtils.coordsysemChange(pos, ref result.pos);
            UbiMeasurementUtils.coordsysemChange(rot, ref result.rot);
            return(result);
        }