summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ftnoir_tracker_rift/ftnoir_tracker_rift.cpp129
1 files 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<HMDDevice> enumerator = pManager->EnumerateDevices<HMDDevice>();
- 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<HMDDevice> enumerator = pManager->EnumerateDevices<HMDDevice>();
+ 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<Axis_Y, Axis_X, Axis_Z>(&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 ();
}