void _getPose() { lock (thisLock) { while (!workFinished) { TrackedDevicePose_t[] allPoses = new TrackedDevicePose_t[OpenVR.k_unMaxTrackedDeviceCount]; vrSystem.GetDeviceToAbsoluteTrackingPose(ETrackingUniverseOrigin.TrackingUniverseStanding, 0, allPoses); var pose = allPoses[0]; if (pose.bPoseIsValid) { var absTracking = pose.mDeviceToAbsoluteTracking; var mat = new SteamVR_Utils.RigidTransform(absTracking); Debug.Log("Position: " + mat.pos + " Rotation: " + mat.rot.eulerAngles); dataManager.AddHeadPos(0.0f, mat.pos, mat.rot.eulerAngles); } } if (workFinished) { dataManager.WriteHeadPosData(); } } }
/** * Gets the position of the Vive headset at a predefined interval and adds that data point to the * head position data file for the current trial. */ void Tracking() { dataManager.AddHeadPos(Time.time, headPos.position, headPos.eulerAngles); dataManager.AddControllerPos(Time.time, controllerPos.position, controllerPos.eulerAngles); }