diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2015-10-29 10:34:44 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2015-10-29 10:34:44 +0100 |
commit | 5049312cc8847f5bd8cc9cf32dd42e39ae0bb1f5 (patch) | |
tree | 983894ee8303c8d271182c6e52f0d4770cdf3ce2 /ftnoir_tracker_rift | |
parent | b0fbe9605b47437d06694a747e607a1b9558c8b3 (diff) |
support rift 0.2.5, 0.4.2, 0.8.0
Issue: #263
Diffstat (limited to 'ftnoir_tracker_rift')
-rw-r--r-- | ftnoir_tracker_rift/ftnoir_rift.qrc | 7 | ||||
-rw-r--r-- | ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui | 176 | ||||
-rw-r--r-- | ftnoir_tracker_rift/ftnoir_tracker_rift.cpp | 71 | ||||
-rw-r--r-- | ftnoir_tracker_rift/ftnoir_tracker_rift.h | 60 | ||||
-rw-r--r-- | ftnoir_tracker_rift/ftnoir_tracker_rift_dialog.cpp | 26 | ||||
-rw-r--r-- | ftnoir_tracker_rift/images/medium.png | bin | 5764 -> 0 bytes | |||
-rw-r--r-- | ftnoir_tracker_rift/images/rift_medium.png | bin | 5764 -> 0 bytes | |||
-rw-r--r-- | ftnoir_tracker_rift/images/rift_small.png | bin | 1212 -> 0 bytes | |||
-rw-r--r-- | ftnoir_tracker_rift/images/rift_tiny.png | bin | 624 -> 0 bytes | |||
-rw-r--r-- | ftnoir_tracker_rift/images/small.png | bin | 1212 -> 0 bytes | |||
-rw-r--r-- | ftnoir_tracker_rift/images/tiny.png | bin | 624 -> 0 bytes |
11 files changed, 0 insertions, 340 deletions
diff --git a/ftnoir_tracker_rift/ftnoir_rift.qrc b/ftnoir_tracker_rift/ftnoir_rift.qrc deleted file mode 100644 index cd174fc4..00000000 --- a/ftnoir_tracker_rift/ftnoir_rift.qrc +++ /dev/null @@ -1,7 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>images/rift_medium.png</file> - <file>images/rift_small.png</file> - <file>images/rift_tiny.png</file> - </qresource> -</RCC> diff --git a/ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui b/ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui deleted file mode 100644 index 20c8f00b..00000000 --- a/ftnoir_tracker_rift/ftnoir_rift_clientcontrols.ui +++ /dev/null @@ -1,176 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>UIRiftControls</class> - <widget class="QWidget" name="UIRiftControls"> - <property name="windowModality"> - <enum>Qt::NonModal</enum> - </property> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>218</width> - <height>200</height> - </rect> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="windowTitle"> - <string>Oculus Rift tracker settings FaceTrackNoIR</string> - </property> - <property name="windowIcon"> - <iconset> - <normaloff>images/FaceTrackNoIR.png</normaloff>images/FaceTrackNoIR.png</iconset> - </property> - <property name="layoutDirection"> - <enum>Qt::LeftToRight</enum> - </property> - <property name="autoFillBackground"> - <bool>false</bool> - </property> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="0"> - <widget class="QGroupBox" name="groupBox"> - <property name="title"> - <string>Yaw spring</string> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QCheckBox" name="yawSpring"> - <property name="text"> - <string>Enable</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Persistence</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QDoubleSpinBox" name="persistence"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>23</height> - </size> - </property> - <property name="decimals"> - <number>5</number> - </property> - <property name="minimum"> - <double>0.900000000000000</double> - </property> - <property name="maximum"> - <double>1.000000000000000</double> - </property> - <property name="singleStep"> - <double>0.001000000000000</double> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Constant drift</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QDoubleSpinBox" name="constantDrift"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>23</height> - </size> - </property> - <property name="decimals"> - <number>5</number> - </property> - <property name="minimum"> - <double>0.000100000000000</double> - </property> - <property name="maximum"> - <double>0.100000000000000</double> - </property> - <property name="singleStep"> - <double>0.001000000000000</double> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>Deadzone</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QDoubleSpinBox" name="deadzone"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>23</height> - </size> - </property> - <property name="decimals"> - <number>5</number> - </property> - <property name="maximum"> - <double>0.100000000000000</double> - </property> - <property name="singleStep"> - <double>0.010000000000000</double> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="1" column="0"> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> - <slots> - <slot>startEngineClicked()</slot> - <slot>stopEngineClicked()</slot> - <slot>cameraSettingsClicked()</slot> - </slots> -</ui> diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp b/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp deleted file mode 100644 index 74208272..00000000 --- a/ftnoir_tracker_rift/ftnoir_tracker_rift.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright: "i couldn't care less what anyone does with the 5 lines of code i wrote" - mm0zct */ -#include "ftnoir_tracker_rift.h" -#include "opentrack/plugin-api.hpp" -#include "OVR_CAPI.h" -#include "Kernel/OVR_Math.h" -#include <cstdio> - -using namespace OVR; - -Rift_Tracker::Rift_Tracker() : old_yaw(0), hmd(nullptr) -{ -} - -Rift_Tracker::~Rift_Tracker() -{ - ovrHmd_Destroy(hmd); - ovr_Shutdown(); -} - -void Rift_Tracker::start_tracker(QFrame*) -{ - ovr_Initialize(); - hmd = ovrHmd_Create(0); - if (hmd) - { - ovrHmd_ConfigureTracking(hmd, ovrTrackingCap_Orientation | ovrTrackingCap_MagYawCorrection | ovrTrackingCap_Position, ovrTrackingCap_Orientation); - } - else - { - // XXX need change ITracker et al api to allow for failure reporting - // this qmessagebox doesn't give any relevant details either -sh 20141012 - QMessageBox::warning(0,"FaceTrackNoIR Error", "Unable to start Rift tracker",QMessageBox::Ok,QMessageBox::NoButton); - } -} - - -void Rift_Tracker::data(double *data) -{ - if (hmd) - { - ovrHSWDisplayState hsw; - if (ovrHmd_GetHSWDisplayState(hmd, &hsw), hsw.Displayed) - ovrHmd_DismissHSWDisplay(hmd); - ovrTrackingState ss = ovrHmd_GetTrackingState(hmd, 0); - if(ss.StatusFlags & ovrStatus_OrientationTracked) { - auto pose = ss.HeadPose.ThePose; - Quatf quat = pose.Orientation; - float yaw, pitch, roll; - quat.GetEulerAngles<Axis_Y, Axis_X, Axis_Z>(&yaw, &pitch, &roll); - // XXX TODO move to core - if (s.useYawSpring) - { - yaw = old_yaw*s.persistence + (yaw-old_yaw); - if(yaw > s.deadzone) - yaw -= s.constant_drift; - if(yaw < -s.deadzone) - yaw += s.constant_drift; - old_yaw=yaw; - } - constexpr double d2r = 57.295781; - data[Yaw] = yaw * -d2r; - data[Pitch] = pitch * d2r; - data[Roll] = roll * d2r; - data[TX] = pose.Position.x * -1e2; - data[TY] = pose.Position.y * 1e2; - data[TZ] = pose.Position.z * 1e2; - } - } -} - -OPENTRACK_DECLARE_TRACKER(Rift_Tracker, TrackerControls, FTNoIR_TrackerDll) diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift.h b/ftnoir_tracker_rift/ftnoir_tracker_rift.h deleted file mode 100644 index f4458413..00000000 --- a/ftnoir_tracker_rift/ftnoir_tracker_rift.h +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once -#include "ui_ftnoir_rift_clientcontrols.h" -#include <QMessageBox> -#include <QWaitCondition> -#include <cmath> -#include "opentrack/plugin-api.hpp" -#include "OVR.h" -#include <memory> -#include "opentrack/options.hpp" -using namespace options; - -struct settings : opts { - value<bool> useYawSpring; - value<double> constant_drift, persistence, deadzone; - settings() : - opts("Rift"), - useYawSpring(b, "yaw-spring", false), - constant_drift(b, "constant-drift", 0.000005), - persistence(b, "persistence", 0.99999), - deadzone(b, "deadzone", 0.02) - {} -}; - -class Rift_Tracker : public ITracker -{ -public: - Rift_Tracker(); - ~Rift_Tracker() override; - void start_tracker(QFrame *) override; - void data(double *data) override; -private: - double old_yaw; - ovrHmd hmd; - settings s; -}; - -class TrackerControls: public ITrackerDialog -{ - Q_OBJECT -public: - TrackerControls(); - - void register_tracker(ITracker *) {} - void unregister_tracker() {} - -private: - Ui::UIRiftControls ui; - settings s; -private slots: - void doOK(); - void doCancel(); -}; - -class FTNoIR_TrackerDll : public Metadata -{ -public: - QString name() { return QString("Oculus Rift DK2 -- HMD"); } - QIcon icon() { return QIcon(":/images/rift_tiny.png"); } -}; - diff --git a/ftnoir_tracker_rift/ftnoir_tracker_rift_dialog.cpp b/ftnoir_tracker_rift/ftnoir_tracker_rift_dialog.cpp deleted file mode 100644 index 6c8e9cd7..00000000 --- a/ftnoir_tracker_rift/ftnoir_tracker_rift_dialog.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "ftnoir_tracker_rift.h" -#include "opentrack/plugin-api.hpp" - -TrackerControls::TrackerControls() -{ - ui.setupUi( this ); - - connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK())); - connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel())); - - tie_setting(s.constant_drift, ui.constantDrift); - tie_setting(s.deadzone, ui.deadzone); - tie_setting(s.persistence, ui.persistence); - tie_setting(s.useYawSpring, ui.yawSpring); -} - -void TrackerControls::doOK() { - s.b->save(); - this->close(); -} - -void TrackerControls::doCancel() { - s.b->reload(); - close(); -} - diff --git a/ftnoir_tracker_rift/images/medium.png b/ftnoir_tracker_rift/images/medium.png Binary files differdeleted file mode 100644 index a5ba49e7..00000000 --- a/ftnoir_tracker_rift/images/medium.png +++ /dev/null diff --git a/ftnoir_tracker_rift/images/rift_medium.png b/ftnoir_tracker_rift/images/rift_medium.png Binary files differdeleted file mode 100644 index a5ba49e7..00000000 --- a/ftnoir_tracker_rift/images/rift_medium.png +++ /dev/null diff --git a/ftnoir_tracker_rift/images/rift_small.png b/ftnoir_tracker_rift/images/rift_small.png Binary files differdeleted file mode 100644 index 3f18080c..00000000 --- a/ftnoir_tracker_rift/images/rift_small.png +++ /dev/null diff --git a/ftnoir_tracker_rift/images/rift_tiny.png b/ftnoir_tracker_rift/images/rift_tiny.png Binary files differdeleted file mode 100644 index 76fe0f58..00000000 --- a/ftnoir_tracker_rift/images/rift_tiny.png +++ /dev/null diff --git a/ftnoir_tracker_rift/images/small.png b/ftnoir_tracker_rift/images/small.png Binary files differdeleted file mode 100644 index 3f18080c..00000000 --- a/ftnoir_tracker_rift/images/small.png +++ /dev/null diff --git a/ftnoir_tracker_rift/images/tiny.png b/ftnoir_tracker_rift/images/tiny.png Binary files differdeleted file mode 100644 index 76fe0f58..00000000 --- a/ftnoir_tracker_rift/images/tiny.png +++ /dev/null |