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 } }
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); } }
/* 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(); }
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); } }
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; } }
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; }
/// <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; }
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); }
/* 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); } }
/* 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); }
/* Tracker event handler */ private void FusionTrackerChanged(object sender, TrackerChangeEventArgs e) { trkTimeStamp = e.Time.ToLocalTime(); quat = e.Orientation; }