From 3895beb6bbc6aaaaf167f1db99b7078506a83622 Mon Sep 17 00:00:00 2001 From: mm0zct Date: Tue, 26 Nov 2013 04:08:23 +0000 Subject: Added positional tracking?! perhaps, perhaps not.. to be tested -mm0zct --- ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui | 127 +++++++++++++++++++++ ftnoir_tracker_rift/ftnoir_tracker_rift.cpp | 22 +++- ftnoir_tracker_rift/ftnoir_tracker_rift.h | 4 +- ftnoir_tracker_rift/ftnoir_tracker_rift_dialog.cpp | 4 +- 4 files changed, 148 insertions(+), 9 deletions(-) (limited to 'ftnoir_tracker_rift') diff --git a/ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui b/ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui index e868a9c3..8250580d 100644 --- a/ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui +++ b/ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui @@ -150,9 +150,136 @@ + + + + + + + + + Enable Translation Axis + + + false + + + + + + + 0 + 0 + + + + TX: + + + + + + + + 0 + 0 + + + + + 20 + 16777215 + + + + Qt::LeftToRight + + + + + + + + + + + + + + 0 + 0 + + + + TY: + + + + + + + + 0 + 0 + + + + + 20 + 16777215 + + + + Qt::LeftToRight + + + + + + + + + + + 0 + 0 + + + + TZ: + + + + + + + + 0 + 0 + + + + + 20 + 16777215 + + + + Qt::LeftToRight + + + + + + + + + + + diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp index dd78bf9f..45c02cfb 100644 --- a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp +++ b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp @@ -88,11 +88,23 @@ bool Rift_Tracker::GiveHeadPoseData(double *data) if(newHeadPose[Yaw]<-deadzone)newHeadPose[Yaw]+= constant_drift; old_yaw=yaw; } -#if 0 - newHeadPose[TX] = acd.controllers[0].pos[0]/50.0f; - newHeadPose[TY] = acd.controllers[0].pos[1]/50.0f; - newHeadPose[TZ] = acd.controllers[0].pos[2]/50.0f; - +#if 1 + + double dt = 0.015; + + OVR::Vector3f acc = pSFusion->GetAcceleration(); + old_x = old_x*persistence + vx*dt + 0.5*(acc.x*acc.x); + vx = vx*persistence + acc.x*dt; + newHeadPose[TX] = old_x; + + old_y = old_y*persistence + vy*dt + 0.5*(acc.y*acc.y); + vy = vy*persistence + acc.y*dt; + newHeadPose[TY] = old_y; + + old_z = old_z*persistence + vz*dt + 0.5*(acc.z*acc.z); + vz = vz*persistence + acc.z*dt; + newHeadPose[TZ] = old_z; + if (bEnableX) { data[TX] = newHeadPose[TX]; } diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift.h b/ftnoir_tracker_rift/ftnoir_tracker_rift.h index b76d8d09..787f16b9 100644 --- a/ftnoir_tracker_rift/ftnoir_tracker_rift.h +++ b/ftnoir_tracker_rift/ftnoir_tracker_rift.h @@ -29,13 +29,13 @@ private: bool bEnableRoll; bool bEnablePitch; bool bEnableYaw; -#if 0 +#if 1 bool bEnableX; bool bEnableY; bool bEnableZ; #endif bool useYawSpring; - double old_yaw, constant_drift, persistence, deadzone; + double old_yaw, constant_drift, persistence, deadzone, old_x, old_y, old_z, vx, vy, vz; }; // Widget that has controls for FTNoIR protocol client-settings. diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift_dialog.cpp b/ftnoir_tracker_rift/ftnoir_tracker_rift_dialog.cpp index 2efefbb3..901a0192 100644 --- a/ftnoir_tracker_rift/ftnoir_tracker_rift_dialog.cpp +++ b/ftnoir_tracker_rift/ftnoir_tracker_rift_dialog.cpp @@ -112,7 +112,7 @@ void TrackerControls::loadSettings() { ui.chkEnableRoll->setChecked(iniFile.value ( "EnableRoll", 1 ).toBool()); ui.chkEnablePitch->setChecked(iniFile.value ( "EnablePitch", 1 ).toBool()); ui.chkEnableYaw->setChecked(iniFile.value ( "EnableYaw", 1 ).toBool()); -#if 0 +#if 1 ui.chkEnableX->setChecked(iniFile.value ( "EnableX", 1 ).toBool()); ui.chkEnableY->setChecked(iniFile.value ( "EnableY", 1 ).toBool()); ui.chkEnableZ->setChecked(iniFile.value ( "EnableZ", 1 ).toBool()); @@ -139,7 +139,7 @@ void TrackerControls::save() { iniFile.setValue ( "EnableRoll", ui.chkEnableRoll->isChecked() ); iniFile.setValue ( "EnablePitch", ui.chkEnablePitch->isChecked() ); iniFile.setValue ( "EnableYaw", ui.chkEnableYaw->isChecked() ); -#if 0 +#if 1 iniFile.setValue ( "EnableX", ui.chkEnableX->isChecked() ); iniFile.setValue ( "EnableY", ui.chkEnableY->isChecked() ); iniFile.setValue ( "EnableZ", ui.chkEnableZ->isChecked() ); -- cgit v1.2.3