diff options
51 files changed, 1200 insertions, 421 deletions
diff --git a/FaceTrackNoIR.suo b/FaceTrackNoIR.suo Binary files differindex a06a2728..b394dbf3 100644 --- a/FaceTrackNoIR.suo +++ b/FaceTrackNoIR.suo diff --git a/FaceTrackNoIR/ClientFiles/CFS3/Readme.txt b/FaceTrackNoIR/ClientFiles/CFS3/Readme.txt new file mode 100644 index 00000000..141daa27 --- /dev/null +++ b/FaceTrackNoIR/ClientFiles/CFS3/Readme.txt @@ -0,0 +1,27 @@ +FaceTrackNoIR for
+
+ * Combat Flight Simulator 3 (also works for Over Flanders Fields)
+ * Wings of War
+ * NASCAR Racing Season 2003
+ * Colin McRae Rally 4
+ * Race Driver 2
+ * F1 Challenge
+ * Richard Burns Rally
+
+FaceTrackNoIR was made compatible with these programs with the help of the functions TrackIR provides in the dll TIRViews.dll.
+This dll can be downloaded from the TrackIR website: http://www.naturalpoint.com/trackir/06-support/support-download-software-and-manuals.html
+
+To make the functions work, copy the dll in the FaceTrackNoIR installation folder. Then tick the 'use TIRViews.dll' checkbox for the 'fake TrackIR' game protocol.
+
+Please let us know if you like the program, if you have ideas for improvements or any questions you might have.
+
+
+
+The FaceTrackNoIR team:
+
+Wim Vriend
+Ron Hendriks
+
+
+
+Disclaimer: For usage of 3rd party software like FlightGear, the FaceTrackNoIR team is not responsible. Use it at your own risk.
\ No newline at end of file diff --git a/FaceTrackNoIR/ClientFiles/CFS3/TIRViews.dll b/FaceTrackNoIR/ClientFiles/CFS3/TIRViews.dll Binary files differnew file mode 100644 index 00000000..a1fb306f --- /dev/null +++ b/FaceTrackNoIR/ClientFiles/CFS3/TIRViews.dll diff --git a/FaceTrackNoIR/ClientFiles/FS2002 and FS2004/FSUIPC.dll b/FaceTrackNoIR/ClientFiles/FS2002 and FS2004/FSUIPC.dll Binary files differnew file mode 100644 index 00000000..264d14c5 --- /dev/null +++ b/FaceTrackNoIR/ClientFiles/FS2002 and FS2004/FSUIPC.dll diff --git a/FaceTrackNoIR/Debug/BuildLog.htm b/FaceTrackNoIR/Debug/BuildLog.htm Binary files differindex 41cc6d85..8e1ff11f 100644 --- a/FaceTrackNoIR/Debug/BuildLog.htm +++ b/FaceTrackNoIR/Debug/BuildLog.htm diff --git a/FaceTrackNoIR/Debug/FTTypes.obj b/FaceTrackNoIR/Debug/FTTypes.obj Binary files differdeleted file mode 100644 index 62cf1bef..00000000 --- a/FaceTrackNoIR/Debug/FTTypes.obj +++ /dev/null diff --git a/FaceTrackNoIR/Debug/listener.obj b/FaceTrackNoIR/Debug/listener.obj Binary files differdeleted file mode 100644 index 5838ffa6..00000000 --- a/FaceTrackNoIR/Debug/listener.obj +++ /dev/null diff --git a/FaceTrackNoIR/Debug/main.obj b/FaceTrackNoIR/Debug/main.obj Binary files differindex 8c10111b..606d4b13 100644 --- a/FaceTrackNoIR/Debug/main.obj +++ b/FaceTrackNoIR/Debug/main.obj diff --git a/FaceTrackNoIR/Debug/moc_sound.obj b/FaceTrackNoIR/Debug/moc_sound.obj Binary files differdeleted file mode 100644 index c93b19e7..00000000 --- a/FaceTrackNoIR/Debug/moc_sound.obj +++ /dev/null diff --git a/FaceTrackNoIR/Debug/moc_widget.obj b/FaceTrackNoIR/Debug/moc_widget.obj Binary files differdeleted file mode 100644 index aa0040c8..00000000 --- a/FaceTrackNoIR/Debug/moc_widget.obj +++ /dev/null diff --git a/FaceTrackNoIR/Debug/mt.dep b/FaceTrackNoIR/Debug/mt.dep index e3b3d65c..406f9682 100644 --- a/FaceTrackNoIR/Debug/mt.dep +++ b/FaceTrackNoIR/Debug/mt.dep @@ -1 +1 @@ -Manifest resource last updated at 19:09:04.43 on do 30-12-2010
+Manifest resource last updated at 21:57:49.28 on ma 03-01-2011
diff --git a/FaceTrackNoIR/Debug/sound.obj b/FaceTrackNoIR/Debug/sound.obj Binary files differdeleted file mode 100644 index fa304681..00000000 --- a/FaceTrackNoIR/Debug/sound.obj +++ /dev/null diff --git a/FaceTrackNoIR/Debug/tracker.obj b/FaceTrackNoIR/Debug/tracker.obj Binary files differindex 2c70374a..f6e3d396 100644 --- a/FaceTrackNoIR/Debug/tracker.obj +++ b/FaceTrackNoIR/Debug/tracker.obj diff --git a/FaceTrackNoIR/Debug/widget.obj b/FaceTrackNoIR/Debug/widget.obj Binary files differdeleted file mode 100644 index fd60acb1..00000000 --- a/FaceTrackNoIR/Debug/widget.obj +++ /dev/null diff --git a/FaceTrackNoIR/FGServer.cpp b/FaceTrackNoIR/FGServer.cpp index dfcb3d21..a149a776 100644 --- a/FaceTrackNoIR/FGServer.cpp +++ b/FaceTrackNoIR/FGServer.cpp @@ -101,7 +101,7 @@ quint16 senderPort; // qDebug() << "FGServer::writePendingDatagrams says: bytes send =" << no_bytes << sizeof( double );
}
else {
- qDebug() << "FGServer::writePendingDatagrams says: nothing send!";
+ qDebug() << "FGServer::writePendingDatagrams says: nothing sent!";
}
//
diff --git a/FaceTrackNoIR/FSUIPCServer.cpp b/FaceTrackNoIR/FSUIPCServer.cpp new file mode 100644 index 00000000..3006b430 --- /dev/null +++ b/FaceTrackNoIR/FSUIPCServer.cpp @@ -0,0 +1,308 @@ +/********************************************************************************
+* FSUIPCServer FSUIPCServer is the Class, that communicates headpose-data *
+* to games, using the FSUIPC.dll. *
+* *
+* Copyright (C) 2010 Wim Vriend (Developing) *
+* Ron Hendriks (Testing and Research) *
+* *
+* This program is free software; you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the *
+* Free Software Foundation; either version 3 of the License, or (at your *
+* option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but *
+* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
+* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along *
+* with this program; if not, see <http://www.gnu.org/licenses/>. *
+* *
+********************************************************************************/
+/*
+ Modifications (last one on top):
+ 20101224 - WVR: Base class is no longer inheriting QThread. sendHeadposeToGame
+ is called from run() of Tracker.cpp
+*/
+#include "FSUIPCServer.h"
+#include <QFileDialog>
+
+/** constructor **/
+FSUIPCServer::FSUIPCServer() {
+
+ loadSettings();
+ ProgramName = "Microsoft FS2004";
+
+ prevPosX = 0.0f;
+ prevPosY = 0.0f;
+ prevPosZ = 0.0f;
+ prevRotX = 0.0f;
+ prevRotY = 0.0f;
+ prevRotZ = 0.0f;
+
+}
+
+/** destructor **/
+FSUIPCServer::~FSUIPCServer() {
+
+ //
+ // Free the DLL
+ //
+ FSUIPCLib.unload();
+}
+
+//
+// Update Headpose in Game.
+//
+void FSUIPCServer::sendHeadposeToGame() {
+DWORD result;
+TFSState pitch;
+TFSState yaw;
+TFSState roll;
+WORD FSZoom;
+
+ qDebug() << "FSUIPCServer::run() says: started!";
+
+ //
+ // Init. the FSUIPC offsets (derived from Free-track...)
+ //
+ pitch.Control = 66503;
+ yaw.Control = 66504;
+ roll.Control = 66505;
+
+ //
+ // Only do this when the data has changed. This way, the HAT-switch can be used when tracking is OFF.
+ //
+ if ((prevPosX != virtPosX) || (prevPosY != virtPosY) || (prevPosZ != virtPosZ) ||
+ (prevRotX != virtRotX) || (prevRotY != virtRotY) || (prevRotZ != virtRotZ)) {
+ //
+ // Open the connection
+ //
+ FSUIPC_Open(SIM_ANY, &result);
+
+ //
+ // Check the FS-version
+ //
+ if (((result == FSUIPC_ERR_OK) || (result == FSUIPC_ERR_OPEN)) &&
+ ((FSUIPC_FS_Version == SIM_FS2K2) || (FSUIPC_FS_Version == SIM_FS2K4))) {
+// qDebug() << "FSUIPCServer::run() says: FSUIPC opened succesfully";
+ //
+ // Write the 4! DOF-data to FS. Only rotations and zoom are possible.
+ //
+ pitch.Value = scale2AnalogLimits(virtRotX, -180, 180);
+ FSUIPC_Write(0x3110, 8, &pitch, &result);
+
+ yaw.Value = scale2AnalogLimits(virtRotY, -180, 180);
+ FSUIPC_Write(0x3110, 8, &yaw, &result);
+
+ roll.Value = scale2AnalogLimits(virtRotZ, -180, 180);
+ FSUIPC_Write(0x3110, 8, &roll, &result);
+
+ FSZoom = (WORD) (64/50) * virtPosZ + 64;
+ FSUIPC_Write(0x832E, 2, &FSZoom, &result);
+
+ //
+ // Write the data, in one go!
+ //
+ FSUIPC_Process(&result);
+ if (result == FSUIPC_ERR_SENDMSG) {
+ FSUIPC_Close(); //timeout (1 second) so assume FS closed
+ }
+ }
+ }
+
+ prevPosX = virtPosX;
+ prevPosY = virtPosY;
+ prevPosZ = virtPosZ;
+ prevRotX = virtRotX;
+ prevRotY = virtRotY;
+ prevRotZ = virtRotZ;
+
+}
+
+//
+// Check if the Client DLL exists and load it (to test it), if so.
+// Returns 'true' if all seems OK.
+//
+bool FSUIPCServer::checkServerInstallationOK()
+{
+ qDebug() << "FSUIPCCheckClientDLL says: Starting Function";
+
+ //
+ // Load the DLL.
+ //
+ FSUIPCLib.setFileName( LocationOfDLL );
+ if (FSUIPCLib.load() != true) {
+ qDebug() << "FSUIPCCheckClientDLL says: Error loading FSUIPC DLL";
+ return false;
+ }
+
+ return true;
+}
+
+//
+// Scale the measured value to the Joystick values
+//
+int FSUIPCServer::scale2AnalogLimits( float x, float min_x, float max_x ) {
+double y;
+double local_x;
+
+ local_x = x;
+ if (local_x > max_x) {
+ local_x = max_x;
+ }
+ if (local_x < min_x) {
+ local_x = min_x;
+ }
+ y = ( 16383 * local_x ) / max_x;
+
+ return (int) y;
+}
+
+//
+// Load the current Settings from the currently 'active' INI-file.
+//
+void FSUIPCServer::loadSettings() {
+
+ QSettings settings("Abbequerque Inc.", "FaceTrackNoIR"); // 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)
+
+ iniFile.beginGroup ( "FSUIPC" );
+ LocationOfDLL = iniFile.value ( "LocationOfDLL", FSUIPC_FILENAME ).toString();
+ iniFile.endGroup ();
+}
+
+//
+// Constructor for server-settings-dialog
+//
+FSUIPCControls::FSUIPCControls( QWidget *parent, Qt::WindowFlags f ) :
+QWidget( parent , f)
+{
+ ui.setupUi( this );
+
+ QPoint offsetpos(100, 100);
+ this->move(parent->pos() + offsetpos);
+
+ // Connect Qt signals to member-functions
+ connect(ui.btnOK, SIGNAL(clicked()), this, SLOT(doOK()));
+ connect(ui.btnCancel, SIGNAL(clicked()), this, SLOT(doCancel()));
+ connect(ui.btnFindDLL, SIGNAL(clicked()), this, SLOT(getLocationOfDLL()));
+
+ // Load the settings from the current .INI-file
+ loadSettings();
+}
+
+//
+// Destructor for server-dialog
+//
+FSUIPCControls::~FSUIPCControls() {
+ qDebug() << "~FSUIPCControls() says: started";
+}
+
+//
+// OK clicked on server-dialog
+//
+void FSUIPCControls::doOK() {
+ save();
+ this->close();
+}
+
+// override show event
+void FSUIPCControls::showEvent ( QShowEvent * event ) {
+ loadSettings();
+}
+
+//
+// Cancel clicked on server-dialog
+//
+void FSUIPCControls::doCancel() {
+ //
+ // Ask if changed Settings should be saved
+ //
+ if (settingsDirty) {
+ int ret = QMessageBox::question ( this, "Settings have changed", "Do you want to save the settings?", QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Discard );
+
+ qDebug() << "doCancel says: answer =" << ret;
+
+ switch (ret) {
+ case QMessageBox::Save:
+ save();
+ this->close();
+ break;
+ case QMessageBox::Discard:
+ this->close();
+ break;
+ case QMessageBox::Cancel:
+ // Cancel was clicked
+ break;
+ default:
+ // should never be reached
+ break;
+ }
+ }
+ else {
+ this->close();
+ }
+}
+
+//
+// Load the current Settings from the currently 'active' INI-file.
+//
+void FSUIPCControls::loadSettings() {
+
+ qDebug() << "loadSettings says: Starting ";
+ QSettings settings("Abbequerque Inc.", "FaceTrackNoIR"); // 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)
+
+ qDebug() << "loadSettings says: iniFile = " << currentFile;
+
+ iniFile.beginGroup ( "FSUIPC" );
+ ui.txtLocationOfDLL->setText(iniFile.value ( "LocationOfDLL", FSUIPC_FILENAME ).toString() );
+ iniFile.endGroup ();
+
+ settingsDirty = false;
+
+}
+
+//
+// Save the current Settings to the currently 'active' INI-file.
+//
+void FSUIPCControls::save() {
+
+ qDebug() << "save() says: started";
+
+ QSettings settings("Abbequerque Inc.", "FaceTrackNoIR"); // 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)
+
+ iniFile.beginGroup ( "FSUIPC" );
+ iniFile.setValue ( "LocationOfDLL", ui.txtLocationOfDLL->text() );
+ iniFile.endGroup ();
+
+ settingsDirty = false;
+}
+
+//
+// Show the Dialog to set the DLL's location
+//
+void FSUIPCControls::getLocationOfDLL()
+{
+ //
+ // Get the new filename of the INI-file.
+ //
+ QString fileName = QFileDialog::getOpenFileName(this, tr("Locate file"),
+ ui.txtLocationOfDLL->text(),
+ tr("FSUIPC DLL file (FSUIPC*.dll);;All Files (*)"));
+ if (!fileName.isEmpty()) {
+ ui.txtLocationOfDLL->setText( fileName );
+ settingsDirty = true;
+ }
+}
+
+
+//END
diff --git a/FaceTrackNoIR/FSUIPCServer.h b/FaceTrackNoIR/FSUIPCServer.h new file mode 100644 index 00000000..caba2f33 --- /dev/null +++ b/FaceTrackNoIR/FSUIPCServer.h @@ -0,0 +1,121 @@ +/********************************************************************************
+* FSUIPCServer FSUIPCServer is the Class, that communicates headpose-data *
+* to games, using the FSUIPC.dll. *
+* *
+* Copyright (C) 2010 Wim Vriend (Developing) *
+* Ron Hendriks (Testing and Research) *
+* *
+* This program is free software; you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the *
+* Free Software Foundation; either version 3 of the License, or (at your *
+* option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but *
+* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
+* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along *
+* with this program; if not, see <http://www.gnu.org/licenses/>. *
+* *
+********************************************************************************/
+#pragma once
+#ifndef INCLUDED_FSUIPCSERVER_H
+#define INCLUDED_FSUIPCSERVER_H
+
+#include "Windows.h"
+#include <stdlib.h>
+#include "FTNoIR_cxx_protocolserver.h"
+#include "FSUIPC_User.h"
+#include <QString>
+#include <QMessageBox>
+#include <QSettings>
+#include <QFile>
+#include <QApplication>
+#include <QDebug>
+#include <QThread>
+#include <QMutex>
+#include <QLibrary>
+
+#include "ui_FTNoIR_FSUIPCcontrols.h"
+
+using namespace std;
+using namespace v4friend::ftnoir;
+
+static const char* FSUIPC_FILENAME = "C:\\Program Files\\Microsoft Games\\Flight Simulator 9\\Modules\\FSUIPC.dll";
+
+//
+// Define the structures necessary for the FSUIPC_Write calls
+//
+#pragma pack(push,1) // All fields in structure must be byte aligned.
+typedef struct
+{
+ int Control; // Control identifier
+ int Value; // Value of DOF
+} TFSState;
+#pragma pack(pop)
+
+class FSUIPCServer : public ProtocolServerBase {
+ Q_OBJECT
+
+public:
+
+ // public member methods
+ FSUIPCServer();
+ ~FSUIPCServer();
+
+ // protected member methods
+protected:
+ bool checkServerInstallationOK();
+ void sendHeadposeToGame();
+
+private:
+ // Private properties
+ QString ProgramName;
+ QLibrary FSUIPCLib;
+ QString LocationOfDLL;
+ void loadSettings();
+ float prevPosX, prevPosY, prevPosZ, prevRotX, prevRotY, prevRotZ;
+
+public:
+
+ // Settings for calculating the Virtual Pose
+ void setVirtRotX(float rot) { virtRotX = -1.0f * rot; } // degrees
+ void setVirtRotY(float rot) { virtRotY = rot; }
+ void setVirtRotZ(float rot) { virtRotZ = rot; }
+
+ void setVirtPosX(float pos) { virtPosX = 0.0f; } // cm, X and Y are not working for FS2002/2004!
+ void setVirtPosY(float pos) { virtPosY = 0.0f; }
+ void setVirtPosZ(float pos) { virtPosZ = -1.0f * pos; }
+
+ static int scale2AnalogLimits( float x, float min_x, float max_x );
+};
+
+// Widget that has controls for FSUIPC server-settings.
+class FSUIPCControls: public QWidget, public Ui::UICFSUIPCControls
+{
+ Q_OBJECT
+public:
+
+ explicit FSUIPCControls( QWidget *parent=0, Qt::WindowFlags f=0 );
+ virtual ~FSUIPCControls();
+ void showEvent ( QShowEvent * event );
+
+private:
+ Ui::UICFSUIPCControls ui;
+ void loadSettings();
+ void save();
+
+ /** helper **/
+ bool settingsDirty;
+
+private slots:
+ void doOK();
+ void doCancel();
+ void getLocationOfDLL();
+
+};
+
+
+#endif//INCLUDED_FSUIPCSERVER_H
+//END
diff --git a/FaceTrackNoIR/FTNoIR_FGcontrols.ui b/FaceTrackNoIR/FTNoIR_FGcontrols.ui new file mode 100644 index 00000000..270a0ee5 --- /dev/null +++ b/FaceTrackNoIR/FTNoIR_FGcontrols.ui @@ -0,0 +1,269 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>UICFGControls</class>
+ <widget class="QWidget" name="UICFGControls">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>411</width>
+ <height>194</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>FlightGear settings FaceTrackNoIR</string>
+ </property>
+ <property name="windowIcon">
+ <iconset>
+ <normaloff>images/FaceTrackNoIR.ico</normaloff>images/FaceTrackNoIR.ico</iconset>
+ </property>
+ <property name="layoutDirection">
+ <enum>Qt::LeftToRight</enum>
+ </property>
+ <property name="autoFillBackground">
+ <bool>false</bool>
+ </property>
+ <layout class="QVBoxLayout" name="_vertical_layout">
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="2" column="4">
+ <widget class="QSpinBox" name="spinIPFourthNibble">
+ <property name="maximumSize">
+ <size>
+ <width>60</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ <property name="singleStep">
+ <number>5</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="spinIPFirstNibble">
+ <property name="maximumSize">
+ <size>
+ <width>60</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ <property name="singleStep">
+ <number>5</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QSpinBox" name="spinIPSecondNibble">
+ <property name="maximumSize">
+ <size>
+ <width>60</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ <property name="singleStep">
+ <number>5</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="3">
+ <widget class="QSpinBox" name="spinIPThirdNibble">
+ <property name="maximumSize">
+ <size>
+ <width>60</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ <property name="singleStep">
+ <number>5</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>IP-address remote PC</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="chkLocalPC">
+ <property name="layoutDirection">
+ <enum>Qt::RightToLeft</enum>
+ </property>
+ <property name="text">
+ <string>Local PC only</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Port-number</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QSpinBox" name="spinPortNumber">
+ <property name="minimum">
+ <number>5550</number>
+ </property>
+ <property name="maximum">
+ <number>10000</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>If FlightGear is on the same PC as FaceTrackNoIR, tick the 'Local PC only' box.</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Otherwise: enter IP-address and port-number for the remote PC.</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Remember: you may have to change firewall-settings too!</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetDefaultConstraint</enum>
+ </property>
+ <item>
+ <widget class="QPushButton" name="btnOK">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>100</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>100</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>OK</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btnCancel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>100</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>100</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>10</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+ <slots>
+ <slot>startEngineClicked()</slot>
+ <slot>stopEngineClicked()</slot>
+ <slot>cameraSettingsClicked()</slot>
+ </slots>
+</ui>
diff --git a/FaceTrackNoIR/FTNoIR_cxx_protocolserver.h b/FaceTrackNoIR/FTNoIR_cxx_protocolserver.h new file mode 100644 index 00000000..a14b198d --- /dev/null +++ b/FaceTrackNoIR/FTNoIR_cxx_protocolserver.h @@ -0,0 +1,98 @@ +/********************************************************************************
+* FTNoIR_cxx_protocolserver is the base Class for Game-protocol-servers. *
+* Using this, the tracker only needs to create one *
+* server and can use the same functions to *
+* communicate with it. *
+* *
+* Copyright (C) 2010 Wim Vriend (Developing) *
+* Ron Hendriks (Testing and Research) *
+* *
+* This program is free software; you can redistribute it and/or modify it *
+* under the terms of the GNU General Public License as published by the *
+* Free Software Foundation; either version 3 of the License, or (at your *
+* option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, but *
+* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
+* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for *
+* more details. *
+* *
+* You should have received a copy of the GNU General Public License along *
+* with this program; if not, see <http://www.gnu.org/licenses/>. *
+* *
+********************************************************************************/
+#ifndef FTNOIR_CXX_PROTOCOLSERVER_H
+#define FTNOIR_CXX_PROTOCOLSERVER_H
+
+#include "Windows.h"
+//#include <QThread>
+#include <QObject>
+
+namespace v4friend
+{
+ namespace ftnoir
+ {
+ class ProtocolServerBase : public QObject // : public QThread
+ {
+ Q_OBJECT
+ public:
+
+ virtual ~ProtocolServerBase() {}
+
+ //! @return true if the engine will produce data.
+ /*! @see smEngineIsLicensed() */
+ virtual bool isLicensed() const { return true; };
+ virtual QString GetProgramName() { return QString("Test"); };
+
+ virtual bool checkServerInstallationOK ( HANDLE handle ) { return true; }
+ virtual void sendHeadposeToGame() {}
+ virtual void setVirtRotX(float rot) { virtRotX = rot; }
+ virtual void setVirtRotY(float rot) { virtRotY = rot; }
+ virtual void setVirtRotZ(float rot) { virtRotZ = rot; }
+ virtual void setVirtPosX(float pos) { virtPosX = pos / 100.0f; }
+ virtual void setVirtPosY(float pos) { virtPosY = pos / 100.0f; }
+ virtual void setVirtPosZ(float pos) { virtPosZ = pos / 100.0f; }
+
+ virtual void setHeadRotX(float x) { headRotX = x; }
+ virtual void setHeadRotY(float y) { headRotY = y; }
+ virtual void setHeadRotZ(float z) { headRotZ = z; }
+ virtual void setHeadPosX(float x) { headPosX = x; }
+ virtual void setHeadPosY(float y) { headPosY = y; }
+ virtual void setHeadPosZ(float z) { headPosZ = z; }
+
+ protected:
+ ProtocolServerBase() {};
+
+ public:
+ /** member variables for saving the head pose **/
+ float virtPosX;
+ float virtPosY;
+ float virtPosZ;
+
+ float virtRotX;
+ float virtRotY;
+ float virtRotZ;
+
+ float headPosX;
+ float headPosY;
+ float headPosZ;
+
+ float headRotX;
+ float headRotY;
+ float headRotZ;
+
+ float prevPosX;
+ float prevPosY;
+ float prevPosZ;
+ float prevRotX;
+ float prevRotY;
+ float prevRotZ;
+
+ private:
+ ProtocolServerBase(const ProtocolServerBase &);
+ ProtocolServerBase &operator=(const ProtocolServerBase &);
+ bool operator==(const ProtocolServerBase &) const;
+ };
+ }
+}
+#endif
diff --git a/FaceTrackNoIR/FaceTrackNoIR.ui b/FaceTrackNoIR/FaceTrackNoIR.ui index 2d7aad69..56660d49 100644 --- a/FaceTrackNoIR/FaceTrackNoIR.ui +++ b/FaceTrackNoIR/FaceTrackNoIR.ui @@ -10,8 +10,8 @@ <rect>
<x>0</x>
<y>0</y>
- <width>970</width>
- <height>421</height>
+ <width>923</width>
+ <height>371</height>
</rect>
</property>
<property name="sizePolicy">
@@ -48,15 +48,18 @@ QWidget { /* Specials for individual widget(s) */
QWidget#widget {
- background-color: #484848;
+/* background-color: #484848;*/
+ background-color: #595959;
border-left: 1px solid #000;
}
/* Specials for individual widget(s) */
+QWidget#widget4logo {
+ background-color: #000000;
+}
+
QWidget#widget4video {
- background-color: #595959;
- border-top: 1px solid #000;
- border-bottom: 1px solid #000;
+/* background-color: #595959;*/
}
QWidget#Leftwidget {
@@ -121,8 +124,8 @@ QGroupBox { <widget class="QWidget" name="centralWidget">
<property name="minimumSize">
<size>
- <width>800</width>
- <height>400</height>
+ <width>925</width>
+ <height>350</height>
</size>
</property>
<property name="styleSheet">
@@ -142,10 +145,16 @@ QGroupBox { </property>
<item>
<layout class="QGridLayout" name="gridLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
<property name="spacing">
<number>6</number>
</property>
- <item row="6" column="0">
+ <item row="5" column="0">
<widget class="QWidget" name="headPoseWidget" native="true">
<property name="minimumSize">
<size>
@@ -374,63 +383,12 @@ color:#000;</string> </widget>
</widget>
</item>
- <item row="2" column="0">
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <item>
- <widget class="QFrame" name="logoInstitute">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>90</width>
- <height>90</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16777215</width>
- <height>90</height>
- </size>
- </property>
- <property name="styleSheet">
- <string notr="true">QFrame#logoInstitute {
- background:#595959 url(UIElements/logoFaceTrackNoIR.png) no-repeat;
-border:none;
-}</string>
- </property>
- <property name="frameShape">
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- <item row="5" column="0">
+ <item row="4" column="0">
<widget class="QWidget" name="widget4video" native="true">
<property name="minimumSize">
<size>
<width>250</width>
- <height>180</height>
+ <height>150</height>
</size>
</property>
<widget class="QFrame" name="video_frame">
@@ -439,13 +397,13 @@ border:none; <x>0</x>
<y>0</y>
<width>250</width>
- <height>180</height>
+ <height>170</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>250</width>
- <height>180</height>
+ <height>150</height>
</size>
</property>
<property name="maximumSize">
@@ -466,6 +424,93 @@ border:none; </widget>
</widget>
</item>
+ <item row="0" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout_6">
+ <item>
+ <widget class="QWidget" name="widget4logo" native="true">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>90</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>90</height>
+ </size>
+ </property>
+ <widget class="QPushButton" name="btnDonate">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>20</y>
+ <width>145</width>
+ <height>34</height>
+ </rect>
+ </property>
+ <property name="toolTip">
+ <string>Please help us: make gaming fun...</string>
+ </property>
+ <property name="text">
+ <string>Click here to
+Support FaceTrackNoIR!</string>
+ </property>
+ <property name="icon">
+ <iconset resource="FaceTrackNoIR.qrc">
+ <normaloff>:/UIElements/Donate.png</normaloff>:/UIElements/Donate.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>18</width>
+ <height>18</height>
+ </size>
+ </property>
+ </widget>
+ <widget class="QFrame" name="logoInstitute">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>90</width>
+ <height>90</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>90</width>
+ <height>90</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>90</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">QFrame#logoInstitute {
+ background:#595959 url(UIElements/logoFaceTrackNoIR.png) no-repeat;
+border:none;
+}</string>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </item>
</layout>
</item>
<item>
@@ -500,9 +545,9 @@ border:none; <colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
@@ -527,18 +572,18 @@ border:none; <colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
@@ -583,9 +628,9 @@ border:none; <colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
@@ -610,18 +655,18 @@ border:none; <colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
@@ -666,9 +711,9 @@ border:none; <colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
@@ -693,18 +738,18 @@ border:none; <colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
- <red>72</red>
- <green>72</green>
- <blue>72</blue>
+ <red>89</red>
+ <green>89</green>
+ <blue>89</blue>
</color>
</brush>
</colorrole>
@@ -750,33 +795,7 @@ border:none; <layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<layout class="QGridLayout" name="gridLayout_2">
- <item row="1" column="2">
- <spacer name="horizontalSpacer_5">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="1" column="0">
- <spacer name="horizontalSpacer_6">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="1" column="1">
+ <item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="leftMargin">
<number>10</number>
@@ -785,6 +804,32 @@ border:none; <number>10</number>
</property>
<item>
+ <widget class="QGroupBox" name="groupProfile">
+ <property name="title">
+ <string>Profile</string>
+ </property>
+ <widget class="QComboBox" name="iconcomboTrackerSource_2">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>20</y>
+ <width>161</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="styleSheet">
+ <string notr="true"/>
+ </property>
+ <property name="currentIndex">
+ <number>-1</number>
+ </property>
+ <property name="maxVisibleItems">
+ <number>3</number>
+ </property>
+ </widget>
+ </widget>
+ </item>
+ <item>
<widget class="QGroupBox" name="groupTrackerSource">
<property name="minimumSize">
<size>
@@ -939,82 +984,9 @@ border:none; </widget>
</widget>
</item>
- <item>
- <widget class="QPushButton" name="btnEditCurves">
- <property name="toolTip">
- <string>Edit the Curve settings</string>
- </property>
- <property name="text">
- <string>Curves</string>
- </property>
- <property name="icon">
- <iconset resource="FaceTrackNoIR.qrc">
- <normaloff>:/UIElements/Curves.png</normaloff>:/UIElements/Curves.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>150</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="5" column="1">
- <layout class="QHBoxLayout" name="horLayoutDonate">
- <property name="rightMargin">
- <number>10</number>
- </property>
- <item>
- <spacer name="horizontalSpacer_4">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="btnDonate">
- <property name="toolTip">
- <string>Please help us: make gaming fun...</string>
- </property>
- <property name="text">
- <string>Click here to Support FaceTrackNoIR!</string>
- </property>
- <property name="icon">
- <iconset resource="FaceTrackNoIR.qrc">
- <normaloff>:/UIElements/Donate.png</normaloff>:/UIElements/Donate.png</iconset>
- </property>
- <property name="iconSize">
- <size>
- <width>18</width>
- <height>18</height>
- </size>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>186</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
</layout>
</item>
- <item row="4" column="1">
+ <item row="3" column="0">
<widget class="QWidget" name="bubbleBigWidget" native="true">
<property name="minimumSize">
<size>
@@ -1065,7 +1037,7 @@ background:none;</string> <widget class="QLabel" name="lblSensYaw_5">
<property name="minimumSize">
<size>
- <width>100</width>
+ <width>95</width>
<height>0</height>
</size>
</property>
@@ -1117,17 +1089,6 @@ background:none;</string> </property>
</widget>
</item>
- <item row="2" column="1">
- <widget class="QLabel" name="label">
- <property name="styleSheet">
- <string notr="true">color:#ccc;
-background:none;</string>
- </property>
- <property name="text">
- <string>(samples)</string>
- </property>
- </widget>
- </item>
<item row="3" column="0">
<widget class="QSlider" name="slideSmoothing">
<property name="minimumSize">
@@ -1160,7 +1121,7 @@ background:none;</string> <widget class="QSpinBox" name="spinSmoothing">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>35</width>
<height>22</height>
</size>
</property>
@@ -1175,6 +1136,17 @@ background:none;</string> </property>
</widget>
</item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="label">
+ <property name="styleSheet">
+ <string notr="true">color:#ccc;
+background:none;</string>
+ </property>
+ <property name="text">
+ <string>(samples)</string>
+ </property>
+ </widget>
+ </item>
</layout>
</item>
<item>
@@ -1389,7 +1361,7 @@ background:none;</string> <widget class="QSpinBox" name="spinRedYaw">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>40</width>
<height>22</height>
</size>
</property>
@@ -1411,7 +1383,7 @@ background:none;</string> <widget class="QSpinBox" name="spinRedPitch">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>40</width>
<height>22</height>
</size>
</property>
@@ -1433,7 +1405,7 @@ background:none;</string> <widget class="QSpinBox" name="spinRedRoll">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>40</width>
<height>22</height>
</size>
</property>
@@ -1725,7 +1697,7 @@ background:none;</string> <widget class="QSpinBox" name="spinRedX">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>40</width>
<height>22</height>
</size>
</property>
@@ -1747,7 +1719,7 @@ background:none;</string> <widget class="QSpinBox" name="spinRedY">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>40</width>
<height>22</height>
</size>
</property>
@@ -1769,7 +1741,7 @@ background:none;</string> <widget class="QSpinBox" name="spinRedZ">
<property name="minimumSize">
<size>
- <width>50</width>
+ <width>40</width>
<height>22</height>
</size>
</property>
@@ -1836,7 +1808,7 @@ background:none;</string> </property>
<property name="sizeHint" stdset="0">
<size>
- <width>5</width>
+ <width>20</width>
<height>20</height>
</size>
</property>
@@ -1845,81 +1817,124 @@ background:none;</string> </layout>
</widget>
</item>
- <item row="3" column="1">
- <widget class="QWidget" name="bubbleSmallWidget_2" native="true">
- <property name="minimumSize">
- <size>
- <width>620</width>
- <height>67</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>667</width>
- <height>67</height>
- </size>
- </property>
- <property name="acceptDrops">
- <bool>true</bool>
- </property>
- <property name="styleSheet">
- <string notr="true">background: url("UIElements/bubble_1_small.png") no-repeat;
+ <item row="0" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QWidget" name="bubbleSmallWidget_2" native="true">
+ <property name="minimumSize">
+ <size>
+ <width>500</width>
+ <height>67</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>700</width>
+ <height>67</height>
+ </size>
+ </property>
+ <property name="acceptDrops">
+ <bool>true</bool>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background: url("UIElements/bubble_1_small.png") no-repeat;
opacity:100;</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_6">
- <property name="spacing">
- <number>0</number>
- </property>
- <property name="leftMargin">
- <number>15</number>
- </property>
- <property name="topMargin">
- <number>10</number>
- </property>
- <property name="rightMargin">
- <number>10</number>
- </property>
- <property name="bottomMargin">
- <number>10</number>
- </property>
- <item>
- <widget class="QLabel" name="cameraName">
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>30</height>
- </size>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_6">
+ <property name="spacing">
+ <number>0</number>
</property>
- <property name="maximumSize">
- <size>
- <width>600</width>
- <height>30</height>
- </size>
+ <property name="leftMargin">
+ <number>15</number>
</property>
- <property name="styleSheet">
- <string notr="true">color:#ccc;
-background:none;</string>
+ <property name="topMargin">
+ <number>10</number>
</property>
- <property name="text">
- <string>Camera Name</string>
+ <property name="rightMargin">
+ <number>10</number>
</property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="2" column="1">
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
+ <property name="bottomMargin">
+ <number>10</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_5">
+ <item>
+ <widget class="QLabel" name="cameraName">
+ <property name="minimumSize">
+ <size>
+ <width>420</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>600</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">color:#ccc;
+background:none;</string>
+ </property>
+ <property name="text">
+ <string>Camera Name</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btnEditCurves">
+ <property name="minimumSize">
+ <size>
+ <width>52</width>
+ <height>40</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>180</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Edit the Curve settings</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background:none;</string>
+ </property>
+ <property name="text">
+ <string>Curves</string>
+ </property>
+ <property name="icon">
+ <iconset resource="FaceTrackNoIR.qrc">
+ <normaloff>:/UIElements/Curves.png</normaloff>:/UIElements/Curves.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>150</width>
+ <height>32</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
</item>
</layout>
</item>
@@ -1935,7 +1950,7 @@ background:none;</string> <rect>
<x>0</x>
<y>0</y>
- <width>970</width>
+ <width>923</width>
<height>21</height>
</rect>
</property>
diff --git a/FaceTrackNoIR/UIElements/Curves.png b/FaceTrackNoIR/UIElements/Curves.png Binary files differnew file mode 100644 index 00000000..fe21fa15 --- /dev/null +++ b/FaceTrackNoIR/UIElements/Curves.png diff --git a/FaceTrackNoIR/UIElements/Donate.png b/FaceTrackNoIR/UIElements/Donate.png Binary files differnew file mode 100644 index 00000000..cf4223fb --- /dev/null +++ b/FaceTrackNoIR/UIElements/Donate.png diff --git a/FaceTrackNoIR/images/330px-6DOF_en.png b/FaceTrackNoIR/images/330px-6DOF_en.png Binary files differnew file mode 100644 index 00000000..9d1d72ff --- /dev/null +++ b/FaceTrackNoIR/images/330px-6DOF_en.png diff --git a/FaceTrackNoIR/images/rotation_DOFs.png b/FaceTrackNoIR/images/rotation_DOFs.png Binary files differnew file mode 100644 index 00000000..68682d88 --- /dev/null +++ b/FaceTrackNoIR/images/rotation_DOFs.png diff --git a/FaceTrackNoIR/images/translation_DOFs.png b/FaceTrackNoIR/images/translation_DOFs.png Binary files differnew file mode 100644 index 00000000..886c586e --- /dev/null +++ b/FaceTrackNoIR/images/translation_DOFs.png diff --git a/bin/FaceTrackNoIR.exe b/bin/FaceTrackNoIR.exe Binary files differindex bbdcc606..7d58b455 100644 --- a/bin/FaceTrackNoIR.exe +++ b/bin/FaceTrackNoIR.exe diff --git a/bin/ImageFormats/qico4.dll b/bin/ImageFormats/qico4.dll Binary files differnew file mode 100644 index 00000000..e3cc4f08 --- /dev/null +++ b/bin/ImageFormats/qico4.dll diff --git a/bin/QBezierConfigurator.lib b/bin/QBezierConfigurator.lib Binary files differnew file mode 100644 index 00000000..df3cc4e9 --- /dev/null +++ b/bin/QBezierConfigurator.lib diff --git a/bin/Settings/Wings of Prey.ini b/bin/Settings/Wings of Prey.ini new file mode 100644 index 00000000..c0e29816 --- /dev/null +++ b/bin/Settings/Wings of Prey.ini @@ -0,0 +1,77 @@ +[Tracking]
+Smooth=3
+NeutralZone=5
+sensYaw=200
+sensPitch=200
+sensRoll=100
+sensX=100
+sensY=100
+sensZ=100
+invertYaw=false
+invertPitch=true
+invertRoll=false
+invertX=true
+invertY=false
+invertZ=false
+useEWMA=true
+redYaw=60
+redPitch=60
+redRoll=60
+redX=50
+redY=50
+redZ=50
+
+[GameProtocol]
+Selection=4
+
+[KB_Shortcuts]
+Keycode_Center=199
+Shift_Center=false
+Ctrl_Center=false
+Alt_Center=false
+Keycode_StartStop=207
+Shift_StartStop=false
+Ctrl_StartStop=false
+Alt_StartStop=false
+Keycode_Inhibit=0
+Shift_Inhibit=false
+Ctrl_Inhibit=false
+Alt_Inhibit=false
+Inhibit_Pitch=false
+Inhibit_Yaw=false
+Inhibit_Roll=false
+Inhibit_X=false
+Inhibit_Y=false
+Inhibit_Z=false
+
+[Curves]
+Yaw_point1=@Variant(\0\0\0\x1a@\x12\0\0\0\0\0\0@\x12\0\0\0\0\0\0)
+Yaw_point2=@Variant(\0\0\0\x1a@_\xc0\0\0\0\0\0@ \0\0\0\0\0\0)
+Yaw_point3=@Variant(\0\0\0\x1a@c`\0\0\0\0\0@?\0\0\0\0\0\0)
+Yaw_point4=@Variant(\0\0\0\x1a@f\x80\0\0\0\0\0@I\0\0\0\0\0\0)
+Pitch_point1=@Variant(\0\0\0\x1a@\b\0\0\0\0\0\0@\b\0\0\0\0\0\0)
+Pitch_point2=@Variant(\0\0\0\x1a@W@\0\0\0\0\0@ \0\0\0\0\0\0)
+Pitch_point3=@Variant(\0\0\0\x1a@\\\xc0\0\0\0\0\0@9\0\0\0\0\0\0)
+Pitch_point4=@Variant(\0\0\0\x1a@f\x80\0\0\0\0\0@I\0\0\0\0\0\0)
+Roll_point1=@Variant(\0\0\0\x1a@\f\0\0\0\0\0\0@\f\0\0\0\0\0\0)
+Roll_point2=@Variant(\0\0\0\x1a@S\0\0\0\0\0\0@3\0\0\0\0\0\0)
+Roll_point3=@Variant(\0\0\0\x1a@a\xa0\0\0\0\0\0@C\0\0\0\0\0\0)
+Roll_point4=@Variant(\0\0\0\x1a@d@\0\0\0\0\0@I\0\0\0\0\0\0)
+X_point1=@Variant(\0\0\0\x1a\0\0\0\0\0\0\0\0@\x14\0\0\0\0\0\0)
+X_point2=@Variant(\0\0\0\x1a@F\0\0\0\0\0\0@1\0\0\0\0\0\0)
+X_point3=@Variant(\0\0\0\x1a@N\x80\0\0\0\0\0@A\0\0\0\0\0\0)
+X_point4=@Variant(\0\0\0\x1a@U\xc0\0\0\0\0\0@I\0\0\0\0\0\0)
+Y_point1=@Variant(\0\0\0\x1a\0\0\0\0\0\0\0\0@\x14\0\0\0\0\0\0)
+Y_point2=@Variant(\0\0\0\x1a@I\x80\0\0\0\0\0@1\0\0\0\0\0\0)
+Y_point3=@Variant(\0\0\0\x1a@M\x80\0\0\0\0\0@?\0\0\0\0\0\0)
+Y_point4=@Variant(\0\0\0\x1a@U\xc0\0\0\0\0\0@I\0\0\0\0\0\0)
+Z_point1=@Variant(\0\0\0\x1a\0\0\0\0\0\0\0\0@\x14\0\0\0\0\0\0)
+Z_point2=@Variant(\0\0\0\x1a@F\0\0\0\0\0\0@1\0\0\0\0\0\0)
+Z_point3=@Variant(\0\0\0\x1a@L\x80\0\0\0\0\0@A\0\0\0\0\0\0)
+Z_point4=@Variant(\0\0\0\x1a@V\0\0\0\0\0\0@I\0\0\0\0\0\0)
+
+[FTIR]
+useTIRViews=false
+
+[TrackerSource]
+Selection=0
diff --git a/bin/TrackIR.exe b/bin/TrackIR.exe Binary files differnew file mode 100644 index 00000000..ce05c028 --- /dev/null +++ b/bin/TrackIR.exe diff --git a/bin/UIElements/Donate.png b/bin/UIElements/Donate.png Binary files differnew file mode 100644 index 00000000..cf4223fb --- /dev/null +++ b/bin/UIElements/Donate.png diff --git a/bin/UIElements/FaceTrackNoIR.ico b/bin/UIElements/FaceTrackNoIR.ico Binary files differnew file mode 100644 index 00000000..af36ec30 --- /dev/null +++ b/bin/UIElements/FaceTrackNoIR.ico diff --git a/bin/UIElements/Logo_NoIR.png b/bin/UIElements/Logo_NoIR.png Binary files differnew file mode 100644 index 00000000..bb654a07 --- /dev/null +++ b/bin/UIElements/Logo_NoIR.png diff --git a/bin/UIElements/Logo_NoIR_small.png b/bin/UIElements/Logo_NoIR_small.png Binary files differnew file mode 100644 index 00000000..5d49e0b1 --- /dev/null +++ b/bin/UIElements/Logo_NoIR_small.png diff --git a/bin/UIElements/Logo_NoIR_small_target.png b/bin/UIElements/Logo_NoIR_small_target.png Binary files differnew file mode 100644 index 00000000..4bbaf41f --- /dev/null +++ b/bin/UIElements/Logo_NoIR_small_target.png diff --git a/bin/UIElements/Logo_NoIR_small_target90px.png b/bin/UIElements/Logo_NoIR_small_target90px.png Binary files differnew file mode 100644 index 00000000..ecaa4e12 --- /dev/null +++ b/bin/UIElements/Logo_NoIR_small_target90px.png diff --git a/bin/UIElements/SetupFaceTrackNoIR.jpg b/bin/UIElements/SetupFaceTrackNoIR.jpg Binary files differnew file mode 100644 index 00000000..1f110875 --- /dev/null +++ b/bin/UIElements/SetupFaceTrackNoIR.jpg diff --git a/bin/images/FS9.ico b/bin/images/FS9.ico Binary files differnew file mode 100644 index 00000000..9afd1953 --- /dev/null +++ b/bin/images/FS9.ico diff --git a/bin/images/FSX.ico b/bin/images/FSX.ico Binary files differnew file mode 100644 index 00000000..1c71d409 --- /dev/null +++ b/bin/images/FSX.ico diff --git a/bin_dbg/smft31.dll b/bin/smft32.dll Binary files differindex 44bf843e..3e410ee4 100644 --- a/bin_dbg/smft31.dll +++ b/bin/smft32.dll diff --git a/bin_dbg/FaceTrackNoIR.exe b/bin_dbg/FaceTrackNoIR.exe Binary files differindex ac265b1c..fe99adfe 100644 --- a/bin_dbg/FaceTrackNoIR.exe +++ b/bin_dbg/FaceTrackNoIR.exe diff --git a/bin_dbg/FaceTrackNoIR.ilk b/bin_dbg/FaceTrackNoIR.ilk Binary files differindex 30fff33a..5c2feb07 100644 --- a/bin_dbg/FaceTrackNoIR.ilk +++ b/bin_dbg/FaceTrackNoIR.ilk diff --git a/bin_dbg/FaceTrackNoIR.pdb b/bin_dbg/FaceTrackNoIR.pdb Binary files differindex 109eb96f..a102e79e 100644 --- a/bin_dbg/FaceTrackNoIR.pdb +++ b/bin_dbg/FaceTrackNoIR.pdb diff --git a/bin_dbg/NPClient.dll b/bin_dbg/NPClient.dll Binary files differnew file mode 100644 index 00000000..b979550f --- /dev/null +++ b/bin_dbg/NPClient.dll diff --git a/bin_dbg/QBezierConfigurator.dll b/bin_dbg/QBezierConfigurator.dll Binary files differnew file mode 100644 index 00000000..48fa2679 --- /dev/null +++ b/bin_dbg/QBezierConfigurator.dll diff --git a/bin_dbg/TIRViews.dll b/bin_dbg/TIRViews.dll Binary files differnew file mode 100644 index 00000000..a1fb306f --- /dev/null +++ b/bin_dbg/TIRViews.dll diff --git a/bin_dbg/TrackIR.exe b/bin_dbg/TrackIR.exe Binary files differnew file mode 100644 index 00000000..ce05c028 --- /dev/null +++ b/bin_dbg/TrackIR.exe diff --git a/bin_dbg/smft31.def b/bin_dbg/smft31.def deleted file mode 100644 index 67e99d10..00000000 --- a/bin_dbg/smft31.def +++ /dev/null @@ -1,136 +0,0 @@ -LIBRARY smft31
-EXPORTS
-_smAPIEnterModalLoop@0
-_smAPIExitModalLoop@0
-_smAPIInit@0
-_smAPILicenseInfoString@12
-_smAPINonCommercialLicense@0
-_smAPIProcessEvents@0
-_smAPIQuit@0
-_smAPIVersion@12
-_smCameraCreate@12
-_smCameraCreateFile@12
-_smCameraCreateImagePush@16
-_smCameraCreateInfoList@4
-_smCameraDeregisterTypes@0
-_smCameraDestroy@4
-_smCameraDestroyInfoList@4
-_smCameraGetCurrentFormat@8
-_smCameraGetLensParams@8
-_smCameraGetModelName@8
-_smCameraGetType@8
-_smCameraHasControlPanel@8
-_smCameraImagePush@16
-_smCameraImagePushSetFrameRate@8
-_smCameraIsValid@8
-_smCameraLensParamsFromHFOV@16
-_smCameraLoadLensParamsFile@8
-_smCameraPtGreyRestoreMemoryChannel@8
-_smCameraRegisterType@4
-_smCameraSetLensParams@8
-_smCameraShowControlPanel@4
-_smCoordFaceToPixel@16
-_smCoordFaceToWorld@12
-_smCoordWorldToPixel@12
-_smEngineCreate@8
-_smEngineCreateWithCamera@12
-_smEngineDestroy@4
-_smEngineGetCamera@8
-_smEngineGetState@8
-_smEngineGetType@8
-_smEngineGetUDPLoggingEnabled@8
-_smEngineGetUDPOutputAddress@12
-_smEngineHasCameraControlPanel@8
-_smEngineIsLicensed@4
-_smEngineSetUDPLoggingEnabled@8
-_smEngineSetUDPOutputAddress@12
-_smEngineShowCameraControlPanel@4
-_smEngineStart@4
-_smEngineStop@4
-_smFaceSearch@20
-_smFaceSearchDestroyResults@4
-_smFaceSearchGetRangeBounds@104
-_smFaceTexCoordToPixel@12
-_smFaceTexMaskIndexToPixel@12
-_smFileTrack@24
-_smFileTrackAbortAll@0
-_smHTCurrentHeadPose@8
-_smHTGetAutoBrightness@8
-_smHTGetAutoRestartMode@8
-_smHTGetEyebrowTrackingDOF@8
-_smHTGetEyebrowTrackingEnabled@8
-_smHTGetHeadPosePredictionEnabled@8
-_smHTGetHeadPosePredictionPeriodOffset@8
-_smHTGetLipTrackingEnabled@8
-_smHTGetRestartThreshold@8
-_smHTGetRestartTimeout@8
-_smHTGetTrackingRangeBounds@12
-_smHTGetTrackingRanges@12
-_smHTRegisterFaceDataCallback@12
-_smHTRegisterHeadPoseCallback@12
-_smHTSetAutoBrightness@8
-_smHTSetAutoRestartMode@8
-_smHTSetEyebrowTrackingDOF@8
-_smHTSetEyebrowTrackingEnabled@8
-_smHTSetHeadPosePredictionEnabled@8
-_smHTSetHeadPosePredictionPeriodOffset@8
-_smHTSetLipTrackingEnabled@8
-_smHTSetRestartThreshold@8
-_smHTSetRestartTimeout@8
-_smHTSetTrackingRanges@12
-_smHTV1GetHeadPoseFilterLevel@8
-_smHTV1GetHeadPoseZFilterLevel@8
-_smHTV1GetSearchThreshold@8
-_smHTV1SetHeadPoseFilterLevel@8
-_smHTV1SetHeadPoseZFilterLevel@8
-_smHTV1SetSearchThreshold@8
-_smHTV2GetRestartPoorTrackingEnabled@8
-_smHTV2GetRestartTimeoutEnabled@8
-_smHTV2SetRestartPoorTrackingEnabled@8
-_smHTV2SetRestartTimeoutEnabled@8
-_smImageAddRef@4
-_smImageCreateFromInfo@12
-_smImageCreateFromPNG@8
-_smImageDestroy@4
-_smImageGetInfo@8
-_smImageIsValid@8
-_smImageSaveToPNG@8
-_smLoggingGetFileOutputEnable@4
-_smLoggingGetPath@4
-_smLoggingRegisterCallback@8
-_smLoggingSetFileOutputEnable@4
-_smLoggingSetPath@4
-_smRegisterImageReleaseCallback@4
-_smStringClear@4
-_smStringCopy@8
-_smStringCreate@4
-_smStringDestroy@4
-_smStringGetBufferW@12
-_smStringIsEmpty@8
-_smStringIsEqual@12
-_smStringIsValid@8
-_smStringLength@8
-_smStringReadBuffer@12
-_smStringReadBufferW@12
-_smStringWriteBuffer@12
-_smStringWriteBufferW@12
-_smTimeAdd@12
-_smTimeDiff@12
-_smTimeGetSecs@8
-_smTimeNormalize@4
-_smTimeSetFromUTC@4
-_smTimeSetMicroSecondsPart@8
-_smTimeSetSecondsPart@12
-_smTimeSetSecs@12
-_smTimeToString@8
-_smVideoDisplayCreate@16
-_smVideoDisplayDestroy@4
-_smVideoDisplayGetFlags@8
-_smVideoDisplayGetWindowHandle@8
-_smVideoDisplayRecordingCancel@4
-_smVideoDisplayRecordingStart@12
-_smVideoDisplayRecordingStatus@8
-_smVideoDisplayRecordingStop@4
-_smVideoDisplaySetFlags@8
-_smVideoDisplaySetParent@8
-_smVideoDisplayShow@8
diff --git a/bin_dbg/smft31.exp b/bin_dbg/smft31.exp Binary files differdeleted file mode 100644 index b037727b..00000000 --- a/bin_dbg/smft31.exp +++ /dev/null diff --git a/bin_dbg/smft31.lib b/bin_dbg/smft31.lib Binary files differdeleted file mode 100644 index 0dac8fce..00000000 --- a/bin_dbg/smft31.lib +++ /dev/null diff --git a/bin_dbg/smft32.dll b/bin_dbg/smft32.dll Binary files differnew file mode 100644 index 00000000..3e410ee4 --- /dev/null +++ b/bin_dbg/smft32.dll |