Esempio n. 1
0
 private void client_PositionChanged(object sender, TrackerChangeEventArgs e)
 {
     if (e.Sensor == watchedSensor)
     {
         //TODO: Update the feedback based parameters here, will need a invoke for any GUI stuff
     }
 }
Esempio n. 2
0
        private void PositionChanged(object sender, TrackerChangeEventArgs e)
        {
            try
            {
                //TODO: Support user defined sensor index or autodetect
                if (e.Sensor == 0)
                {
                    RawPosition = new Vector3D(
                        -e.Position.X,
                        -e.Position.Z,
                        e.Position.Y);

                    RawRotation = new System.Windows.Media.Media3D.Quaternion(
                        e.Orientation.Y,
                        e.Orientation.W,
                        -e.Orientation.X,
                        e.Orientation.Z);

                    UpdatePositionAndRotation();
                }
            }
            catch (Exception exc)
            {
                Logger.Instance.Error(exc.Message, exc);
            }
        }
 private static void TestHMDChanged(object sender, TrackerChangeEventArgs e)
 {
     if (e.Sensor == HMDTrackerID)
     {
         Console.WriteLine("HMD position {0}", e.Position);
     }
 }
Esempio n. 4
0
        /* Tracker update event handler */
        private void PhaseSpaceTrackerChanged(object sender, TrackerChangeEventArgs e)
        {
            int i = e.Sensor;

            pos[i]       = e.Position;
            quat[i]      = e.Orientation;
            timeStamp[i] = e.Time.ToLocalTime();
        }
Esempio n. 5
0
 private void client_PositionChanged(object sender, TrackerChangeEventArgs e)
 {
     if (e.Sensor == watchedSensor)
     {
         //TODO: Does the feedback position need to be written to the GUI?
         server.feedbackPosition = (System.Windows.Media.Media3D.Point3D)e.Position;
         System.Diagnostics.Debug.WriteLine("Position: " + server.feedbackPosition.Value.X + ", " + server.feedbackPosition.Value.Y + ", " + server.feedbackPosition.Value.Z);
     }
 }
Esempio n. 6
0
 private void client_PositionChanged(object sender, TrackerChangeEventArgs e)
 {
     if (e.Sensor == watchedSensor)
     {
         server.feedbackPosition = (System.Windows.Media.Media3D.Point3D)e.Position;
         updateAudioBeamAngles(server.feedbackPosition.Value);
         System.Diagnostics.Debug.WriteLine("Position: " + server.feedbackPosition.Value.X + ", " + server.feedbackPosition.Value.Y + ", " + server.feedbackPosition.Value.Z);
     }
 }
 private void TrackerStateChanged(object sender, TrackerChangeEventArgs e)
 {
     if (e.Sensor == HMDTrackerID)
     {
         _hmd.Position    = ToXNA(e.Position);
         _hmd.Orientation = ToXNA(e.Orientation);
         _hmd.Time        = e.Time;
         IsConnected      = true;
     }
 }
Esempio n. 8
0
        private void client_PositionChanged(object sender, TrackerChangeEventArgs e)
        {
            //If we try and pass a new skeleton for every tracker update we recieve, we'll spend way too much time and memory creating new skeleton objects
            //Therefore, this will only update the last skeleton object and the last skeleton data will be passed at regular time intervals
            Joint newJoint = new Joint();

            newJoint.utcTime = DateTime.UtcNow;  //We can't be sure if a specific VRPN server is using utc or local time, so we will grab our own time instead of using VRPNs
            JointMapping map = GetJointMapFromChannel(e.Sensor);

            newJoint.JointType     = map.joint;
            newJoint.Position      = new Point3D(e.Position.X, e.Position.Y, e.Position.Z);
            newJoint.Orientation   = e.Orientation;
            newJoint.TrackingState = TrackingState.Tracked;

            lastSkeleton.skeleton[map.joint] = newJoint;
        }
Esempio n. 9
0
        /// <summary>
        /// Updates the VRPN tracker whenever it changes position
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"> Information about the object tracked</param>
        private void PositionChanged(object sender, TrackerChangeEventArgs e)
        {
            //We convert movement to millimeters.

            _position = new Microsoft.Xna.Framework.Vector3((float)e.Position.X, (float)e.Position.Y, (float)e.Position.Z);
            _xpos     = (float)e.Position.X;
            _ypos     = (float)e.Position.Y;
            _zpos     = (float)e.Position.Z;

            // tools inverts e.Orientation.Z for packetizing/sending, so invert it back
            _orientation = new Microsoft.Xna.Framework.Quaternion((float)e.Orientation.X, (float)e.Orientation.Y, (float)e.Orientation.Z, (float)e.Orientation.W);
            Vector3Helper.QuaternionToEuler(e.Orientation.X, e.Orientation.Y, e.Orientation.Z, e.Orientation.W,
                                            out _yaw, out _pitch, out _roll);
            _pitch *= -1;

            Matrix.CreateFromQuaternion(ref _orientation, out worldTransform);
            worldTransform.Translation = _position;
        }
Esempio n. 10
0
        private void PositionChanged(object sender, TrackerChangeEventArgs e)
        {
            try
            {
                //TODO: Support user defined sensor index or autodetect
                if (e.Sensor == 0)
                {
                    RawPosition = new Vector3D(
                        -e.Position.X,
                        -e.Position.Z,
                        e.Position.Y);

                    RawRotation = new System.Windows.Media.Media3D.Quaternion(
                        e.Orientation.Y,
                        e.Orientation.W,
                        -e.Orientation.X,
                        e.Orientation.Z);

                    UpdatePositionAndRotation();
                }
            }
            catch(Exception exc)
            {
                Logger.Instance.Error(exc.Message, exc);
            }
        }
 private void TrackerStateChanged(object sender, TrackerChangeEventArgs e)
 {
     if (e.Sensor == HMDTrackerID)
     {
         _hmd.Position = ToXNA(e.Position);
         _hmd.Orientation = ToXNA(e.Orientation);
         _hmd.Time = e.Time;
         IsConnected = true;
     }
 }
 private static void TestHMDChanged(object sender, TrackerChangeEventArgs e)
 {
     if (e.Sensor == HMDTrackerID)
         Console.WriteLine("HMD position {0}", e.Position);
 }
Esempio n. 13
0
 /* Analog event handler */
 private void TrackerChanged(object sender, TrackerChangeEventArgs e)
 {
     Vrpn.TrackerRemote trackerSender = (Vrpn.TrackerRemote) sender;
     if (remotes.isPresent(trackerSender))
      {
         TrackerEvent trackerEvent = new TrackerEvent(this.remotes[trackerSender].Name);
         trackerEvent.Sensor = e.Sensor;
         trackerEvent.Position = new EventHandlerUtils.Vector3((float)e.Position.X,
             (float)e.Position.Y,
             (float)e.Position.Z);
         trackerEvent.Orientation = new EventHandlerUtils.Quaternion((float)e.Orientation.X,
             (float)e.Orientation.Y,
             (float)e.Orientation.Z,
             (float)e.Orientation.W);
         trackerEvent.Time = e.Time;
         Console.WriteLine("Tracker: " + trackerEvent);
         this.SendEvent(trackerSender, trackerEvent);
      }
      else
      {
          trackerSender.PositionChanged -= new Vrpn.TrackerChangeEventHandler(this.TrackerChanged);
      }
 }
Esempio n. 14
0
        private void client_PositionChanged(object sender, TrackerChangeEventArgs e)
        {
            //If we try and pass a new skeleton for every tracker update we recieve, we'll spend way too much time and memory creating new skeleton objects
            //Therefore, this will only update the last skeleton object and the last skeleton data will be passed at regular time intervals
            Joint newJoint = new Joint();
            newJoint.utcTime = DateTime.UtcNow;  //We can't be sure if a specific VRPN server is using utc or local time, so we will grab our own time instead of using VRPNs
            JointMapping map = GetJointMapFromChannel(e.Sensor);
            newJoint.JointType = map.joint;
            newJoint.Position = new Point3D(e.Position.X, e.Position.Y, e.Position.Z);
            newJoint.Orientation = e.Orientation;
            newJoint.TrackingState = TrackingState.Tracked;

            lastSkeleton.skeleton[map.joint] = newJoint;
        }
Esempio n. 15
0
 /* Tracker update event handler */
 private void OculusRiftTrackerChanged(object sender, TrackerChangeEventArgs e)
 {
     quat      = e.Orientation;
     timeStamp = e.Time.ToLocalTime();
 }
 static void PositionChanged(object sender, TrackerChangeEventArgs e)
 {
     Console.WriteLine("{0} {1} {2}", e.Time.ToLocalTime(), e.Sensor, e.Position);
 }
Esempio n. 17
0
 static void PositionChanged(object sender, TrackerChangeEventArgs e)
 {
     Console.WriteLine("{0} {1} {2}", e.Time.ToLocalTime(), e.Sensor, e.Position);
 }
Esempio n. 18
0
 /* Tracker event handler */
 private void FusionTrackerChanged(object sender, TrackerChangeEventArgs e)
 {
     trkTimeStamp = e.Time.ToLocalTime();
     quat         = e.Orientation;
 }
Esempio n. 19
0
 private void client_PositionChanged(object sender, TrackerChangeEventArgs e)
 {
     if (e.Sensor == watchedSensor)
     {
         //TODO: Does the feedback position need to be written to the GUI?
         server.feedbackPosition = (System.Windows.Media.Media3D.Point3D)e.Position;
         System.Diagnostics.Debug.WriteLine("Position: " + server.feedbackPosition.Value.X + ", " + server.feedbackPosition.Value.Y + ", " + server.feedbackPosition.Value.Z);
     }
 }