From 726875b0b40f8a43ae5ca763667dc707e84f39aa Mon Sep 17 00:00:00 2001 From: mm0zct Date: Sat, 19 Oct 2013 18:36:19 +0100 Subject: added todo and virtual function in tracker base class --- TODO.txt | 2 ++ ftnoir_tracker_base/ftnoir_tracker_base.h | 1 + 2 files changed, 3 insertions(+) diff --git a/TODO.txt b/TODO.txt index 6e1c48b0..ef4dc10e 100644 --- a/TODO.txt +++ b/TODO.txt @@ -9,6 +9,8 @@ Rift tracker could do with positional estimation using intertial sensors. Rift could do with a return-yaw-to-centre hotkey that's not the global all-axis option. Hydra is really just a hack just now, could be improved a lot. + + Add per-tracker hotkey support 20131005 sh what do you think about boost 1.54 for property maps -> qsettings? also, boost concepts diff --git a/ftnoir_tracker_base/ftnoir_tracker_base.h b/ftnoir_tracker_base/ftnoir_tracker_base.h index cb83aea3..8b720620 100644 --- a/ftnoir_tracker_base/ftnoir_tracker_base.h +++ b/ftnoir_tracker_base/ftnoir_tracker_base.h @@ -44,6 +44,7 @@ struct ITracker virtual ~ITracker() = 0; virtual void StartTracker( QFrame* frame ) = 0; virtual bool GiveHeadPoseData(double *data) = 0; + virtual void HotkeyCallback(unsigned int *) = 0; }; inline ITracker::~ITracker() { } -- cgit v1.2.3 From adfe6cfe1e1fb3d580248788d8f1b239ddd41f7f Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 20 Oct 2013 20:34:29 +0200 Subject: add kbd shortcut for quitting the software Signed-off-by: Stanislaw Halik --- facetracknoir/facetracknoir.cpp | 6 +++++- facetracknoir/facetracknoir.h | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/facetracknoir/facetracknoir.cpp b/facetracknoir/facetracknoir.cpp index 1d531229..48bca959 100644 --- a/facetracknoir/facetracknoir.cpp +++ b/facetracknoir/facetracknoir.cpp @@ -102,7 +102,8 @@ FaceTrackNoIR::FaceTrackNoIR(QWidget *parent, Qt::WindowFlags flags) : pSecondTrackerDialog(NULL), pProtocolDialog(NULL), pFilterDialog(NULL), - looping(false) + looping(false), + kbd_quit(QKeySequence("Ctrl+Q"), this) { ui.setupUi(this); setFixedSize(size()); @@ -171,6 +172,9 @@ FaceTrackNoIR::FaceTrackNoIR(QWidget *parent, Qt::WindowFlags flags) : connect(&keyCenter, SIGNAL(activated()), this, SLOT(shortcutRecentered())); connect(&keyToggle, SIGNAL(activated()), this, SLOT(shortcutToggled())); #endif + + connect(&kbd_quit, SIGNAL(activated()), this, SLOT(exit())); + kbd_quit.setEnabled(true); } /** destructor stops the engine and quits the faceapi **/ diff --git a/facetracknoir/facetracknoir.h b/facetracknoir/facetracknoir.h index c5b2dc01..491274c8 100644 --- a/facetracknoir/facetracknoir.h +++ b/facetracknoir/facetracknoir.h @@ -38,6 +38,7 @@ #include #include #include +#include #if !defined(_WIN32) # include "qxt-mini/QxtGlobalShortcut" #else @@ -123,6 +124,7 @@ private: QList dlopen_filters; QList dlopen_trackers; QList dlopen_protocols; + QShortcut kbd_quit; #ifndef _WIN32 void bind_keyboard_shortcut(QxtGlobalShortcut& key, const QString label, QSettings& iniFile); -- cgit v1.2.3 From 732644b87e4fbc999170d13f6cda179113d3940b Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 20 Oct 2013 20:34:45 +0200 Subject: needless fun with main for layout Signed-off-by: Stanislaw Halik --- facetracknoir/facetracknoir.ui | 1325 +++++++++++++++++++++++----------------- 1 file changed, 772 insertions(+), 553 deletions(-) diff --git a/facetracknoir/facetracknoir.ui b/facetracknoir/facetracknoir.ui index 5bda6067..7ef41537 100644 --- a/facetracknoir/facetracknoir.ui +++ b/facetracknoir/facetracknoir.ui @@ -142,7 +142,7 @@ 120 - 40 + 60 203 97 @@ -163,33 +163,29 @@ - Qt::AlignJustify|Qt::AlignVCenter + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - false + true - - - - true - - - - 65536 - 65536 - - - - false - - - Y - - - - - + + QLayout::SetMaximumSize + + + 2 + + + 2 + + + 2 + + + 6 + + + true @@ -214,16 +210,19 @@ false + + 5 + 5 - QLCDNumber::Filled + QLCDNumber::Flat - - + + true @@ -248,16 +247,45 @@ false + + 5 + 5 - QLCDNumber::Filled + QLCDNumber::Flat - - + + + + + 65536 + 65536 + + + + roll + + + + + + + + 65536 + 65536 + + + + pitch + + + + + true @@ -282,16 +310,19 @@ false + + 5 + 5 - QLCDNumber::Filled + QLCDNumber::Flat - - + + true @@ -304,21 +335,26 @@ false - - Z + + QFrame::NoFrame - - - - - - - 65536 - 65536 - + + QFrame::Plain - - pitch + + 1 + + + false + + + 5 + + + 5 + + + QLCDNumber::Flat @@ -348,11 +384,14 @@ false + + 5 + 5 - QLCDNumber::Filled + QLCDNumber::Flat @@ -364,21 +403,37 @@ 65536 + + + 9 + + X - - + + + + true + 65536 65536 + + + 9 + + + + false + - roll + Y @@ -408,16 +463,19 @@ false + + 5 + 5 - QLCDNumber::Filled + QLCDNumber::Flat - - + + true @@ -427,26 +485,16 @@ 65536 - - false - - - QFrame::NoFrame - - - QFrame::Plain - - - 1 + + + 9 + - + false - - 5 - - - QLCDNumber::Filled + + Z @@ -468,9 +516,9 @@ - 10 - 40 - 90 + 20 + 50 + 81 100 @@ -499,7 +547,7 @@ 350 370 191 - 80 + 91 @@ -524,7 +572,7 @@ Qt::AlignCenter - false + true false @@ -583,7 +631,7 @@ 580 - 470 + 460 171 38 @@ -621,7 +669,7 @@ - 120 + 98 24 @@ -629,9 +677,9 @@ - 350 + 130 36 - 371 + 651 20 @@ -649,7 +697,7 @@ 350 - 262 + 270 191 91 @@ -676,7 +724,7 @@ Qt::AlignCenter - false + true false @@ -732,9 +780,9 @@ 350 - 70 + 60 191 - 83 + 91 @@ -759,7 +807,7 @@ Qt::AlignCenter - false + true false @@ -811,21 +859,15 @@ - + - 20 - 420 - 321 - 131 + 130 + 10 + 651 + 25 - - - 0 - 0 - - 0 @@ -838,266 +880,226 @@ 65536 + + + + + + + + 600 + 240 + 124 + 117 + + + + + 65536 + 65536 + + + + + true + + - Raw data + Axis inversion + + + Qt::AlignCenter + true + + false - + + + QLayout::SetMinAndMaxSize + 6 - + 65536 65536 + + Qt::RightToLeft + + + background:none; + - TX + Yaw - - - true - + 65536 65536 - - false - - - QFrame::NoFrame - - - 0 - - - 0 - - - false + + Qt::RightToLeft - - 5 + + background:none; - - QLCDNumber::Flat + + TX - - + + 65536 65536 - - yaw - - - - - - - true - - - - 65536 - 65536 - + + Qt::RightToLeft false - - QFrame::NoFrame - - - 0 - - - 0 - - - false - - - 5 - - - QLCDNumber::Flat - - - - - - - - 65536 - 65536 - + + background:none; - TY + Pitch - - - true - + 65536 65536 - - false - - - QFrame::NoFrame - - - 0 - - - 0 - - - false - - - 5 - - - QLCDNumber::Flat + + Qt::RightToLeft - - - - - - - 65536 - 65536 - + + background:none; - pitch + TY - - - - true - + + 65536 65536 - - false - - - QFrame::NoFrame - - - 0 - - - 0 - - - false - - - 5 - - - QLCDNumber::Flat + + Qt::RightToLeft - - - - - - - 65536 - 65536 - + + background:none; - TZ + Roll - - - true - + 65536 65536 - - false - - - QFrame::NoFrame - - - 0 - - - 0 - - - false + + Qt::RightToLeft - - 5 + + background:none; - - QLCDNumber::Flat + + TZ - - + + + + + + 350 + 160 + 191 + 91 + + + + + 0 + 0 + + + + + 65536 + 65536 + + + + Auxiliary tracker + + + Qt::AlignCenter + + + true + + + false + + + + QLayout::SetDefaultConstraint + + + 65536 65536 - - roll + + + + + -1 + + + 42 - - + + true @@ -1107,38 +1109,26 @@ 65536 - - false - - - QFrame::NoFrame - - - 0 - - - 0 - - - false + + Change tracker settings - - 5 + + - - QLCDNumber::Flat + + Settings - + 350 - 10 - 371 - 25 + 470 + 190 + 65 @@ -1153,274 +1143,14 @@ 65536 - - + + GO! - - - - - 600 - 240 - 124 - 117 - - - - - 65536 - 65536 - - - - - true - - - - Axis inversion - - - Qt::AlignCenter - - - false - - - false - - - - QLayout::SetMinAndMaxSize - - - 6 - - - - - - 65536 - 65536 - - - - Qt::RightToLeft - - - background:none; - - - Yaw - - - - - - - - 65536 - 65536 - - - - Qt::RightToLeft - - - background:none; - - - TX - - - - - - - - 65536 - 65536 - - - - Qt::RightToLeft - - - false - - - background:none; - - - Pitch - - - - - - - - 65536 - 65536 - - - - Qt::RightToLeft - - - background:none; - - - TY - - - - - - - - 65536 - 65536 - - - - Qt::RightToLeft - - - background:none; - - - Roll - - - - - - - - 65536 - 65536 - - - - Qt::RightToLeft - - - background:none; - - - TZ - - - - - - - - - 350 - 180 - 191 - 83 - - - - - 0 - 0 - - - - - 65536 - 65536 - - - - Auxiliary tracker - - - Qt::AlignCenter + + Qt::AlignCenter - false - - - false - - - - QLayout::SetDefaultConstraint - - - - - - 65536 - 65536 - - - - - - - -1 - - - 42 - - - - - - - true - - - - 65536 - 65536 - - - - Change tracker settings - - - - - - Settings - - - - - - - - - 350 - 470 - 190 - 65 - - - - - 0 - 0 - - - - - 65536 - 65536 - - - - GO! - - - Qt::AlignCenter + true @@ -1476,7 +1206,7 @@ 580 - 420 + 410 171 38 @@ -1506,7 +1236,7 @@ Edit the Keyboard and mouse shortcuts - Shortcuts + Keys @@ -1514,7 +1244,7 @@ - 24 + 98 24 @@ -1546,6 +1276,9 @@ Qt::AlignCenter + + true + QLayout::SetDefaultConstraint @@ -1637,6 +1370,492 @@ + + + + 30 + 420 + 131 + 111 + + + + Raw translation + + + Qt::AlignBottom|Qt::AlignHCenter + + + true + + + + QLayout::SetMaximumSize + + + QFormLayout::FieldsStayAtSizeHint + + + QFormLayout::DontWrapRows + + + Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft + + + Qt::AlignBottom|Qt::AlignHCenter + + + 6 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 65536 + 65536 + + + + TX + + + + + + + true + + + + 0 + 0 + + + + + 65536 + 65536 + + + + + 12 + + + + false + + + QFrame::NoFrame + + + 0 + + + 0 + + + false + + + 4 + + + QLCDNumber::Flat + + + + + + + + 0 + 0 + + + + + 65536 + 65536 + + + + TY + + + + + + + true + + + + 0 + 0 + + + + + 65536 + 65536 + + + + + 12 + + + + false + + + QFrame::NoFrame + + + 0 + + + 0 + + + false + + + 4 + + + QLCDNumber::Flat + + + + + + + + 0 + 0 + + + + + 65536 + 65536 + + + + TZ + + + + + + + true + + + + 0 + 0 + + + + + 65536 + 65536 + + + + + 12 + + + + false + + + QFrame::NoFrame + + + 0 + + + 0 + + + false + + + 4 + + + QLCDNumber::Flat + + + + + + + + + 190 + 420 + 131 + 111 + + + + Raw rotation + + + Qt::AlignBottom|Qt::AlignHCenter + + + true + + + + QLayout::SetMaximumSize + + + QFormLayout::FieldsStayAtSizeHint + + + QFormLayout::DontWrapRows + + + Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft + + + Qt::AlignBottom|Qt::AlignHCenter + + + 6 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 65536 + 65536 + + + + yaw + + + + + + + true + + + + 0 + 0 + + + + + 65536 + 65536 + + + + + 12 + + + + false + + + QFrame::NoFrame + + + 0 + + + 0 + + + false + + + 4 + + + QLCDNumber::Flat + + + + + + + + 0 + 0 + + + + + 65536 + 65536 + + + + pitch + + + + + + + true + + + + 0 + 0 + + + + + 65536 + 65536 + + + + + 12 + + + + false + + + QFrame::NoFrame + + + 0 + + + 0 + + + false + + + 4 + + + QLCDNumber::Flat + + + + + + + + 0 + 0 + + + + + 65536 + 65536 + + + + roll + + + + + + + true + + + + 0 + 0 + + + + + 65536 + 65536 + + + + + 12 + + + + false + + + QFrame::NoFrame + + + 0 + + + 0 + + + false + + + 4 + + + QLCDNumber::Flat + + + + + lcdNumRotZ + label_8 + label_7 + lcdNumRotY + lcdNumRotX + label_9 + -- cgit v1.2.3 From 5048961fa205ecebb2cea4f8d68d51dfbe993189 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Mon, 21 Oct 2013 21:10:23 +0200 Subject: Rift: avoid leaks, reformat --- ftnoir_tracker_rift/ftnoir_tracker_rift.cpp | 129 ++++++++++++++-------------- 1 file changed, 66 insertions(+), 63 deletions(-) diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp index ab694108..e94b9d03 100644 --- a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp +++ b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp @@ -11,33 +11,36 @@ using namespace OVR; Rift_Tracker::Rift_Tracker() { - bEnableRoll = true; - bEnablePitch = true; - bEnableYaw = true; + bEnableRoll = true; + bEnablePitch = true; + bEnableYaw = true; #if 0 - bEnableX = true; - bEnableY = true; - bEnableZ = true; + bEnableX = true; + bEnableY = true; + bEnableZ = true; #endif - should_quit = false; + should_quit = false; } Rift_Tracker::~Rift_Tracker() { - System::Destroy(); + pSensor.Clear(); + pHMD.Clear(); + pManager.Clear(); + System::Destroy(); } /* void controller_manager_setup_callback( sixenseUtils::ControllerManager::setup_step step ) { - QMessageBox::warning(0,"OpenTrack Info", "controller manager callback",QMessageBox::Ok,QMessageBox::NoButton); - if( sixenseUtils::getTheControllerManager()->isMenuVisible() ) { - // Ask the controller manager what the next instruction string should be. - std::string controller_manager_text_string = sixenseUtils::getTheControllerManager()->getStepString(); - QMessageBox::warning(0,"OpenTrack Info", controller_manager_text_string.c_str(),QMessageBox::Ok,QMessageBox::NoButton); - // We could also load the supplied controllermanager textures using the filename: sixenseUtils::getTheControllerManager()->getTextureFileName(); + QMessageBox::warning(0,"OpenTrack Info", "controller manager callback",QMessageBox::Ok,QMessageBox::NoButton); + if( sixenseUtils::getTheControllerManager()->isMenuVisible() ) { + // Ask the controller manager what the next instruction string should be. + std::string controller_manager_text_string = sixenseUtils::getTheControllerManager()->getStepString(); + QMessageBox::warning(0,"OpenTrack Info", controller_manager_text_string.c_str(),QMessageBox::Ok,QMessageBox::NoButton); + // We could also load the supplied controllermanager textures using the filename: sixenseUtils::getTheControllerManager()->getTextureFileName(); - } + } }*/ void Rift_Tracker::StartTracker(QFrame* videoFrame) @@ -48,33 +51,33 @@ void Rift_Tracker::StartTracker(QFrame* videoFrame) // Startup the Oculus SDK device handling, use the first Rift sensor we find. // System::Init(Log::ConfigureDefaultLog(LogMask_All)); - auto ptr_manager = DeviceManager::Create(); - if (ptr_manager != nullptr) - { - pManager = *ptr_manager; - DeviceEnumerator enumerator = pManager->EnumerateDevices(); - if (enumerator.IsAvailable()) - { - auto ptr_hmd = enumerator.CreateDevice(); - - if (ptr_hmd != nullptr) - { - pHMD = *ptr_hmd; - auto ptr_sensor = pHMD->GetSensor(); - if (ptr_sensor != 0) - pSensor = *ptr_sensor; - } + auto ptr_manager = DeviceManager::Create(); + if (ptr_manager != nullptr) + { + pManager = *ptr_manager; + DeviceEnumerator enumerator = pManager->EnumerateDevices(); + if (enumerator.IsAvailable()) + { + auto ptr_hmd = enumerator.CreateDevice(); + + if (ptr_hmd != nullptr) + { + pHMD = *ptr_hmd; + auto ptr_sensor = pHMD->GetSensor(); + if (ptr_sensor != 0) + pSensor = *ptr_sensor; + } - if (pSensor){ - SFusion.reset(new OVR::SensorFusion()); - SFusion->AttachToSensor(pSensor); - }else{ - QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to find Rift tracker",QMessageBox::Ok,QMessageBox::NoButton); - } - //isCalibrated = false; - //MagCal.BeginAutoCalibration(SFusion); - } - } + if (pSensor){ + SFusion.reset(new OVR::SensorFusion()); + SFusion->AttachToSensor(pSensor); + }else{ + QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to find Rift tracker",QMessageBox::Ok,QMessageBox::NoButton); + } + //isCalibrated = false; + //MagCal.BeginAutoCalibration(SFusion); + } + } } @@ -82,22 +85,22 @@ bool Rift_Tracker::GiveHeadPoseData(double *data) { if (SFusion != nullptr) { Quatf hmdOrient = SFusion->GetOrientation(); - float newHeadPose[6]; - + float newHeadPose[6]; + float yaw = 0.0f; float pitch = 0.0f; float roll = 0.0f; hmdOrient.GetEulerAngles(&yaw, &pitch , &roll); - newHeadPose[Yaw] = yaw; + newHeadPose[Yaw] = yaw; newHeadPose[Pitch] =pitch; newHeadPose[Roll] = roll; #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 (bEnableX) { + 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 (bEnableX) { data[TX] = newHeadPose[TX]; } if (bEnableY) { @@ -117,7 +120,7 @@ bool Rift_Tracker::GiveHeadPoseData(double *data) data[Roll] = newHeadPose[Roll] * 57.295781f; } } - return pHMD.GetPtr() != NULL; + return pHMD.GetPtr() != NULL; } @@ -126,24 +129,24 @@ bool Rift_Tracker::GiveHeadPoseData(double *data) // void Rift_Tracker::loadSettings() { - qDebug() << "FTNoIR_Tracker::loadSettings says: Starting "; - QSettings settings("opentrack"); // Registry settings (in HK_USER) + qDebug() << "FTNoIR_Tracker::loadSettings says: Starting "; + QSettings settings("opentrack"); // Registry settings (in HK_USER) - QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/settings/default.ini" ).toString(); - QSettings iniFile( currentFile, QSettings::IniFormat ); // Application settings (in INI-file) + QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/settings/default.ini" ).toString(); + QSettings iniFile( currentFile, QSettings::IniFormat ); // Application settings (in INI-file) - qDebug() << "FTNoIR_Tracker::loadSettings says: iniFile = " << currentFile; + qDebug() << "FTNoIR_Tracker::loadSettings says: iniFile = " << currentFile; - iniFile.beginGroup ( "Rift" ); - bEnableRoll = iniFile.value ( "EnableRoll", 1 ).toBool(); - bEnablePitch = iniFile.value ( "EnablePitch", 1 ).toBool(); - bEnableYaw = iniFile.value ( "EnableYaw", 1 ).toBool(); + iniFile.beginGroup ( "Rift" ); + bEnableRoll = iniFile.value ( "EnableRoll", 1 ).toBool(); + bEnablePitch = iniFile.value ( "EnablePitch", 1 ).toBool(); + bEnableYaw = iniFile.value ( "EnableYaw", 1 ).toBool(); #if 0 - bEnableX = iniFile.value ( "EnableX", 1 ).toBool(); - bEnableY = iniFile.value ( "EnableY", 1 ).toBool(); - bEnableZ = iniFile.value ( "EnableZ", 1 ).toBool(); + bEnableX = iniFile.value ( "EnableX", 1 ).toBool(); + bEnableY = iniFile.value ( "EnableY", 1 ).toBool(); + bEnableZ = iniFile.value ( "EnableZ", 1 ).toBool(); #endif - iniFile.endGroup (); + iniFile.endGroup (); } -- cgit v1.2.3 From 7e659504cb12541a571c042d01838d5c72b11bb2 Mon Sep 17 00:00:00 2001 From: mm0zct Date: Mon, 21 Oct 2013 22:12:36 +0100 Subject: fixed Rift tracker for libovr SDK 0.2.5 --- ftnoir_tracker_rift/ftnoir_tracker_rift.cpp | 65 +++++++++++++---------------- ftnoir_tracker_rift/ftnoir_tracker_rift.h | 11 +++-- 2 files changed, 34 insertions(+), 42 deletions(-) diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp index e94b9d03..7fade51c 100644 --- a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp +++ b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp @@ -6,9 +6,6 @@ using namespace OVR; -//used to turn on the re-centre spring effect -//#define OPENTRACK_RIFT_RECENTRE_SPRING - Rift_Tracker::Rift_Tracker() { bEnableRoll = true; @@ -20,71 +17,67 @@ Rift_Tracker::Rift_Tracker() bEnableZ = true; #endif should_quit = false; + pManager = NULL; + pHMD = NULL; + pSensor = NULL; + pSFusion = NULL; } Rift_Tracker::~Rift_Tracker() { - pSensor.Clear(); - pHMD.Clear(); - pManager.Clear(); + pSensor->Release(); + delete pSFusion; + pHMD->Release(); + pManager->Release(); System::Destroy(); } -/* -void controller_manager_setup_callback( sixenseUtils::ControllerManager::setup_step step ) { - - QMessageBox::warning(0,"OpenTrack Info", "controller manager callback",QMessageBox::Ok,QMessageBox::NoButton); - if( sixenseUtils::getTheControllerManager()->isMenuVisible() ) { - // Ask the controller manager what the next instruction string should be. - std::string controller_manager_text_string = sixenseUtils::getTheControllerManager()->getStepString(); - QMessageBox::warning(0,"OpenTrack Info", controller_manager_text_string.c_str(),QMessageBox::Ok,QMessageBox::NoButton); - // We could also load the supplied controllermanager textures using the filename: sixenseUtils::getTheControllerManager()->getTextureFileName(); - } -}*/ void Rift_Tracker::StartTracker(QFrame* videoFrame) { - //QMessageBox::warning(0,"FaceTrackNoIR Notification", "Tracking loading settings...",QMessageBox::Ok,QMessageBox::NoButton); + loadSettings(); // // Startup the Oculus SDK device handling, use the first Rift sensor we find. // System::Init(Log::ConfigureDefaultLog(LogMask_All)); - auto ptr_manager = DeviceManager::Create(); - if (ptr_manager != nullptr) + pManager = DeviceManager::Create(); + if (pManager != NULL) { - pManager = *ptr_manager; DeviceEnumerator enumerator = pManager->EnumerateDevices(); if (enumerator.IsAvailable()) { - auto ptr_hmd = enumerator.CreateDevice(); + pHMD = enumerator.CreateDevice(); - if (ptr_hmd != nullptr) + if (pHMD != NULL) { - pHMD = *ptr_hmd; - auto ptr_sensor = pHMD->GetSensor(); - if (ptr_sensor != 0) - pSensor = *ptr_sensor; + pSensor = pHMD->GetSensor(); + }else{ + QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to find Rift tracker",QMessageBox::Ok,QMessageBox::NoButton); } if (pSensor){ - SFusion.reset(new OVR::SensorFusion()); - SFusion->AttachToSensor(pSensor); + pSFusion = new OVR::SensorFusion(); + pSFusion->Reset(); + pSFusion->AttachToSensor(pSensor); }else{ - QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to find Rift tracker",QMessageBox::Ok,QMessageBox::NoButton); + QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to create Rift sensor",QMessageBox::Ok,QMessageBox::NoButton); } - //isCalibrated = false; - //MagCal.BeginAutoCalibration(SFusion); + + }else{ + QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to find Rift tracker",QMessageBox::Ok,QMessageBox::NoButton); } - } + }else{ + QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to start Rift tracker",QMessageBox::Ok,QMessageBox::NoButton); + } } bool Rift_Tracker::GiveHeadPoseData(double *data) { - if (SFusion != nullptr) { - Quatf hmdOrient = SFusion->GetOrientation(); + if (pSFusion != NULL) { + Quatf hmdOrient = pSFusion->GetOrientation(); float newHeadPose[6]; float yaw = 0.0f; @@ -120,7 +113,7 @@ bool Rift_Tracker::GiveHeadPoseData(double *data) data[Roll] = newHeadPose[Roll] * 57.295781f; } } - return pHMD.GetPtr() != NULL; + return pHMD != NULL; } diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift.h b/ftnoir_tracker_rift/ftnoir_tracker_rift.h index 34742d6c..970a64a2 100644 --- a/ftnoir_tracker_rift/ftnoir_tracker_rift.h +++ b/ftnoir_tracker_rift/ftnoir_tracker_rift.h @@ -22,11 +22,10 @@ protected: private: static bool isInitialised; - OVR::Ptr pManager; - OVR::Ptr pHMD; - OVR::Ptr pSensor; - std::unique_ptr SFusion; - // Magnetometer calibration and yaw correction + OVR::DeviceManager* pManager; + OVR::HMDDevice* pHMD; + OVR::SensorDevice* pSensor; + OVR::SensorFusion* pSFusion; bool bEnableRoll; bool bEnablePitch; bool bEnableYaw; @@ -35,7 +34,7 @@ private: bool bEnableY; bool bEnableZ; #endif - QMutex mutex; + }; // Widget that has controls for FTNoIR protocol client-settings. -- cgit v1.2.3 From 52cb9e157db8823dc8318ce2df79fac837413e7f Mon Sep 17 00:00:00 2001 From: mm0zct Date: Mon, 21 Oct 2013 22:20:10 +0100 Subject: stupid git being a pain, I don't want this change to appear in lib-ovr branch --- ftnoir_tracker_base/ftnoir_tracker_base.h | 1 - 1 file changed, 1 deletion(-) diff --git a/ftnoir_tracker_base/ftnoir_tracker_base.h b/ftnoir_tracker_base/ftnoir_tracker_base.h index 84629547..cb83aea3 100644 --- a/ftnoir_tracker_base/ftnoir_tracker_base.h +++ b/ftnoir_tracker_base/ftnoir_tracker_base.h @@ -44,7 +44,6 @@ struct ITracker virtual ~ITracker() = 0; virtual void StartTracker( QFrame* frame ) = 0; virtual bool GiveHeadPoseData(double *data) = 0; -// virtual void HotkeyCallback(unsigned int *) = 0; }; inline ITracker::~ITracker() { } -- cgit v1.2.3