diff options
| author | Wim Vriend <facetracknoir@gmail.com> | 2010-06-12 09:34:27 +0000 | 
|---|---|---|
| committer | Wim Vriend <facetracknoir@gmail.com> | 2010-06-12 09:34:27 +0000 | 
| commit | 513d1c8521aad3cd5ba7db3b87349553a793c151 (patch) | |
| tree | 2f6fca2568d243ad716afaf62d7b1e5ac1214df2 | |
| parent | a0feb94b670a150e4574f1921cfcfe59049be822 (diff) | |
PPJoy working
git-svn-id: svn+ssh://svn.code.sf.net/p/facetracknoir/code@11 19e81ba0-9b1a-49c3-bd6c-561e1906d5fb
| -rw-r--r-- | FaceTrackNoIR.ncb | bin | 31034368 -> 31034368 bytes | |||
| -rw-r--r-- | FaceTrackNoIR.suo | bin | 182272 -> 182784 bytes | |||
| -rw-r--r-- | FaceTrackNoIR/FaceTrackNoIR.cpp | 2 | ||||
| -rw-r--r-- | FaceTrackNoIR/PPJoyServer.cpp | 23 | ||||
| -rw-r--r-- | FaceTrackNoIR/Release/BuildLog.htm | bin | 11008 -> 10992 bytes | |||
| -rw-r--r-- | FaceTrackNoIR/Release/mt.dep | 2 | ||||
| -rw-r--r-- | FaceTrackNoIR/Release/vc90.idb | bin | 2624512 -> 2624512 bytes | |||
| -rw-r--r-- | FaceTrackNoIR/images/PPJoy.ico | bin | 5166 -> 5166 bytes | |||
| -rw-r--r-- | FaceTrackNoIR/tracker.cpp | 192 | ||||
| -rw-r--r-- | FaceTrackNoIR/tracker.h | 20 | ||||
| -rw-r--r-- | SetupFaceTrackNoIR/SetupFaceTrackNoIR.vdproj | 115 | ||||
| -rw-r--r-- | bin/FaceTrackNoIR.exe | bin | 461312 -> 461824 bytes | |||
| -rw-r--r-- | bin/images/PPJoy.ico | bin | 5166 -> 5166 bytes | 
13 files changed, 282 insertions, 72 deletions
diff --git a/FaceTrackNoIR.ncb b/FaceTrackNoIR.ncb Binary files differindex 91579f3a..19ded59e 100644 --- a/FaceTrackNoIR.ncb +++ b/FaceTrackNoIR.ncb diff --git a/FaceTrackNoIR.suo b/FaceTrackNoIR.suo Binary files differindex 44934298..3da602e3 100644 --- a/FaceTrackNoIR.suo +++ b/FaceTrackNoIR.suo diff --git a/FaceTrackNoIR/FaceTrackNoIR.cpp b/FaceTrackNoIR/FaceTrackNoIR.cpp index 05de8edd..de73a0b4 100644 --- a/FaceTrackNoIR/FaceTrackNoIR.cpp +++ b/FaceTrackNoIR/FaceTrackNoIR.cpp @@ -380,7 +380,7 @@ void FaceTrackNoIR::startTracker( ) {  	//
  	// Create the Tracker and setup
  	//
 -	tracker = new Tracker;
 +	tracker = new Tracker ( ui.iconcomboBox->currentIndex() );
  	// Show the video widget
  	ui.video_frame->show();
 diff --git a/FaceTrackNoIR/PPJoyServer.cpp b/FaceTrackNoIR/PPJoyServer.cpp index 46a66c44..53b6322b 100644 --- a/FaceTrackNoIR/PPJoyServer.cpp +++ b/FaceTrackNoIR/PPJoyServer.cpp @@ -95,25 +95,32 @@ void PPJoyServer::run() {  	Digital= JoyState.Digital;						// Keep a pointer to the digital array for easy updating
  	JoyState.NumDigital= NUM_DIGITAL;				// Number of digital values
 +	/* Make sure we could open the device! */
 +	/* MessageBox in run() does not work! (runtime error...)*/
 +	if (h == INVALID_HANDLE_VALUE) {
 +		return;
 +	}
  	forever
  	{
  	    // Check event for stop thread
 -		if(::WaitForSingleObject(m_StopThread, 0) == WAIT_OBJECT_0)
 -		{
 +		if(::WaitForSingleObject(m_StopThread, 0) == WAIT_OBJECT_0) {
  			// Set event
  			::SetEvent(m_WaitThread);
  			return;
  		}
 -		Analog[0] = scale2AnalogLimits( virtRotX, -90.0f, 90.0f );	// Pitch
 +		// The effective angle for faceTracking will be < 90 degrees, so we assume a smaller range here
 +		Analog[0] = scale2AnalogLimits( virtRotX, -50.0f, 50.0f );	// Pitch
  		qDebug() << "PPJoyServer says: Pitch =" << Analog[0] << " VirtRotX =" << virtRotX ;
 -		Analog[1] = scale2AnalogLimits( virtRotY, -90.0f, 90.0f );	// Yaw
 -		Analog[2] = scale2AnalogLimits( virtRotZ, -90.0f, 90.0f );	// Roll
 -		Analog[3] = virtPosX + analogDefault;						// X
 +		Analog[1] = scale2AnalogLimits( virtRotY, -50.0f, 50.0f );	// Yaw
 +		Analog[2] = scale2AnalogLimits( virtRotZ, -50.0f, 50.0f );	// Roll
 +
 +		// The effective movement for faceTracking will be < 50 cm, so we assume a smaller range here
 +		Analog[3] = scale2AnalogLimits( virtPosX, -40.0f, 40.0f );						// X
 -		Analog[5] = virtPosY + analogDefault;						// Y (5?)
 -		Analog[6] = virtPosZ + analogDefault;						// Z (6?)
 +		Analog[5] = scale2AnalogLimits( virtPosY, -40.0f, 40.0f );						// Y (5?)
 +		Analog[6] = scale2AnalogLimits( virtPosZ, -40.0f, 40.0f );						// Z (6?)
  		checkAnalogLimits();
 diff --git a/FaceTrackNoIR/Release/BuildLog.htm b/FaceTrackNoIR/Release/BuildLog.htm Binary files differindex 695a0f33..2d07dae3 100644 --- a/FaceTrackNoIR/Release/BuildLog.htm +++ b/FaceTrackNoIR/Release/BuildLog.htm diff --git a/FaceTrackNoIR/Release/mt.dep b/FaceTrackNoIR/Release/mt.dep index 07307278..506fca00 100644 --- a/FaceTrackNoIR/Release/mt.dep +++ b/FaceTrackNoIR/Release/mt.dep @@ -1 +1 @@ -Manifest resource last updated at 20:05:54.09 on vr 11-06-2010 
 +Manifest resource last updated at 11:22:50.41 on za 12-06-2010 
 diff --git a/FaceTrackNoIR/Release/vc90.idb b/FaceTrackNoIR/Release/vc90.idb Binary files differindex a737ef03..1015061a 100644 --- a/FaceTrackNoIR/Release/vc90.idb +++ b/FaceTrackNoIR/Release/vc90.idb diff --git a/FaceTrackNoIR/images/PPJoy.ico b/FaceTrackNoIR/images/PPJoy.ico Binary files differindex 321e5888..f94f8d65 100644 --- a/FaceTrackNoIR/images/PPJoy.ico +++ b/FaceTrackNoIR/images/PPJoy.ico diff --git a/FaceTrackNoIR/tracker.cpp b/FaceTrackNoIR/tracker.cpp index 724475f2..666f9c34 100644 --- a/FaceTrackNoIR/tracker.cpp +++ b/FaceTrackNoIR/tracker.cpp @@ -57,8 +57,12 @@ THeadPoseDOF Tracker::X;  THeadPoseDOF Tracker::Y;
  THeadPoseDOF Tracker::Z;
 -/** constructor empty **/
 -Tracker::Tracker() {
 +/** constructor **/
 +Tracker::Tracker( int clientID ) {
 +
 +	// Remember the selected client, from the ListBox
 +	// If the Tracker runs, this can NOT be changed...
 +	selectedClient = (FTNoIR_Client) clientID;
  	// Create events
  	m_StopThread = CreateEvent(0, TRUE, FALSE, 0);
 @@ -85,17 +89,48 @@ Tracker::Tracker() {          QMessageBox::warning(0,"faceAPI Error",e.what(),QMessageBox::Ok,QMessageBox::NoButton);
  	}
 -	server_FT = new FTServer;							// Create the new thread (on the heap)
 -	server_FG = new FGServer ( this );					// Create the new thread (on the heap)
 -	server_PPJoy = new PPJoyServer ( this );			// Create the new thread (on the heap)
 +	//
 +	// Initialize all server-handles. Only start the server, that was selected in the GUI.
 +	//
 +	server_FT = 0;
 +	server_FG = 0;
 +	server_PPJoy = 0;
 +	switch (selectedClient) {
 +		case FREE_TRACK:
 +			server_FT = new FTServer;					// Create Free-track protocol-server
 +			break;
 +
 +		case FLIGHTGEAR:
 +			server_FG = new FGServer ( this );			// Create FlightGear protocol-server
 +			break;
 +
 +		case FTNOIR:
 +			break;
 +
 +		case PPJOY:
 +			server_PPJoy = new PPJoyServer ( this );	// Create PPJoy protocol-server
 +			break;
 +
 +		default:
 +			// should never be reached
 +		break;
 +	}
 +
  }
  /** destructor empty **/
  Tracker::~Tracker() {
 -	server_FT->deleteLater();
 -	server_FG->deleteLater();
 -	server_PPJoy->deleteLater();
 +	// Stop the started server(s)
 +	if (server_FT) {
 +		server_FT->deleteLater();
 +	}
 +	if (server_FG) {
 +		server_FG->deleteLater();
 +	}
 +	if (server_PPJoy) {
 +		server_PPJoy->deleteLater();
 +	}
  	// Trigger thread to stop
  	::SetEvent(m_StopThread);
 @@ -143,15 +178,22 @@ void Tracker::setup(QWidget *head, FaceTrackNoIR *parent) {  	// and create the necessary mapping to shared memory.
  	// The handle of the MainWindow is sent to 'The Game', so it can send a message back.
  	//
 -	DLL_Ok = server_FT->FTCheckClientDLL();
 -	DLL_Ok = server_FT->FTCreateMapping( mainApp->winId() );
 +	if (server_FT) {
 +		DLL_Ok = server_FT->FTCheckClientDLL();
 +		DLL_Ok = server_FT->FTCreateMapping( mainApp->winId() );
 -	qDebug() << "FaceTrackNoIR says: Window Handle =" << mainApp->winId();
 +		server_FT->start();								// Start the thread
 +	}
 +
 +	// FlightGear
 +	if (server_FG) {
 +		server_FG->start();								// Start the thread
 +	}
 -//	return;
 -	server_FT->start();									// Should start at the push of a button?
 -	server_FG->start();									// 
 -	server_PPJoy->start();								// 
 +	// PPJoy virtual joystick
 +	if (server_PPJoy) {
 +		server_PPJoy->start();							// Start the thread
 +	}
  }
  /** QThread run method @override **/
 @@ -305,14 +347,15 @@ void Tracker::run() {  			//
  			// Copy the Raw values directly to Free-track server
  			//
 -			server_FT->setHeadRotX( Tracker::Pitch.headPos );			// rads
 -			server_FT->setHeadRotY( Tracker::Yaw.headPos );
 -			server_FT->setHeadRotZ( Tracker::Roll.headPos);
 -
 -			server_FT->setHeadPosX( Tracker::X.headPos * 1000.0f);		// From m to mm
 -			server_FT->setHeadPosY( Tracker::Y.headPos * 1000.0f);
 -			server_FT->setHeadPosZ( ( Tracker::Z.headPos - Tracker::Z.initial_headPos ) * 1000.0f);
 -
 +			if (server_FT) {
 +				server_FT->setHeadRotX( Tracker::Pitch.headPos );			// rads
 +				server_FT->setHeadRotY( Tracker::Yaw.headPos );
 +				server_FT->setHeadRotZ( Tracker::Roll.headPos);
 +
 +				server_FT->setHeadPosX( Tracker::X.headPos * 1000.0f);		// From m to mm
 +				server_FT->setHeadPosY( Tracker::Y.headPos * 1000.0f);
 +				server_FT->setHeadPosZ( ( Tracker::Z.headPos - Tracker::Z.initial_headPos ) * 1000.0f);
 +			}
  		}
  		//
 @@ -333,9 +376,7 @@ void Tracker::run() {  		}
  		if (Tracker::do_tracking && Tracker::confid) {
 -			//
 -			// Also send the Virtual Pose to FT-server and FG-server
 -			//
 +			// Pitch
  			if (Tracker::useFilter) {
  				Pitch.newPos = lowPassFilter ( getSmoothFromList( &Pitch.rawList ) - Pitch.offset_headPos, 
  											   &Pitch.prevPos, dT, Tracker::Pitch.red );
 @@ -343,9 +384,8 @@ void Tracker::run() {  			else {
  				Pitch.newPos = getSmoothFromList( &Pitch.rawList ) - Pitch.offset_headPos;
  			}
 -			server_FT->setVirtRotX ( Tracker::Pitch.invert * Tracker::Pitch.sens * Pitch.newPos );
 -			server_PPJoy->setVirtRotX ( getDegreesFromRads (Tracker::Pitch.invert * Tracker::Pitch.sens * Pitch.newPos ) );
 +			// Yaw
  			if (Tracker::useFilter) {
  				Yaw.newPos = lowPassFilter ( getSmoothFromList( &Yaw.rawList ) - Yaw.offset_headPos, 
  											   &Yaw.prevPos, dT, Tracker::Yaw.red );
 @@ -353,9 +393,8 @@ void Tracker::run() {  			else {
  				Yaw.newPos = getSmoothFromList( &Yaw.rawList ) - Yaw.offset_headPos;
  			}
 -			server_FT->setVirtRotY ( Tracker::Yaw.invert   * Tracker::Yaw.sens   *  Yaw.newPos );
 -			server_PPJoy->setVirtRotY ( getDegreesFromRads ( Tracker::Yaw.invert   * Tracker::Yaw.sens   *  Yaw.newPos ) );
 +			// Roll
  			if (Tracker::useFilter) {
  				Roll.newPos = lowPassFilter ( getSmoothFromList( &Roll.rawList ) - Roll.offset_headPos, 
  											   &Roll.prevPos, dT, Tracker::Roll.red );
 @@ -363,45 +402,76 @@ void Tracker::run() {  			else {
  				Roll.newPos = getSmoothFromList( &Roll.rawList ) - Roll.offset_headPos;
  			}
 -			server_FT->setVirtRotZ ( Tracker::Roll.invert  * Tracker::Roll.sens  * Roll.newPos );
 -			server_PPJoy->setVirtRotZ ( getDegreesFromRads (Tracker::Roll.invert  * Tracker::Roll.sens  * Roll.newPos ) );
 -
 -			server_FT->setVirtPosX ( ( Tracker::X.invert   * Tracker::X.sens     * (getSmoothFromList( &X.rawList ) - X.offset_headPos) ) * 1000.0f);
 -			server_FT->setVirtPosY ( ( Tracker::Y.invert   * Tracker::Y.sens     * (getSmoothFromList( &Y.rawList ) - Y.offset_headPos) ) * 1000.0f );
 -			server_FT->setVirtPosZ ( ( Tracker::Z.invert   * Tracker::Z.sens     * (getSmoothFromList( &Z.rawList ) - Z.offset_headPos - Tracker::Z.initial_headPos) ) * 1000.0f );
 -
 -			server_PPJoy->setVirtPosX ( ( Tracker::X.invert   * Tracker::X.sens     * (getSmoothFromList( &X.rawList ) - X.offset_headPos) ) * 1000.0f);
 -			server_PPJoy->setVirtPosY ( ( Tracker::Y.invert   * Tracker::Y.sens     * (getSmoothFromList( &Y.rawList ) - Y.offset_headPos) ) * 1000.0f );
 -			server_PPJoy->setVirtPosZ ( ( Tracker::Z.invert   * Tracker::Z.sens     * (getSmoothFromList( &Z.rawList ) - Z.offset_headPos - Tracker::Z.initial_headPos) ) * 1000.0f );
 -
 -			server_FG->setVirtRotX ( getDegreesFromRads ( Tracker::Pitch.invert * Tracker::Pitch.sens * (getSmoothFromList( &Pitch.rawList ) - Pitch.offset_headPos) ) );
 -			server_FG->setVirtRotY ( getDegreesFromRads ( Tracker::Yaw.invert   * Tracker::Yaw.sens   * (getSmoothFromList( &Yaw.rawList )   - Yaw.offset_headPos) ) );
 -			server_FG->setVirtRotZ ( getDegreesFromRads ( Tracker::Roll.invert  * Tracker::Roll.sens  * (getSmoothFromList( &Roll.rawList )  - Roll.offset_headPos) ) );
 -			server_FG->setVirtPosX ( Tracker::X.invert * Tracker::X.sens * (getSmoothFromList( &X.rawList ) - X.offset_headPos) );
 -			server_FG->setVirtPosY ( Tracker::Y.invert * Tracker::Y.sens * (getSmoothFromList( &Y.rawList ) - Y.offset_headPos) );
 -			server_FG->setVirtPosZ ( Tracker::Z.invert * Tracker::Z.sens * (getSmoothFromList( &Z.rawList ) - Z.offset_headPos - Tracker::Z.initial_headPos) );
 +
 +			//
 +			// Also send the Virtual Pose to selected Protocol-Server
 +			//
 +			// Free-track
 +			if (server_FT) {
 +				server_FT->setVirtRotX ( Tracker::Pitch.invert * Tracker::Pitch.sens * Pitch.newPos );
 +				server_FT->setVirtRotY ( Tracker::Yaw.invert   * Tracker::Yaw.sens   *  Yaw.newPos );
 +				server_FT->setVirtRotZ ( Tracker::Roll.invert  * Tracker::Roll.sens  * Roll.newPos );
 +
 +				server_FT->setVirtPosX ( ( Tracker::X.invert   * Tracker::X.sens     * (getSmoothFromList( &X.rawList ) - X.offset_headPos) ) * 1000.0f);
 +				server_FT->setVirtPosY ( ( Tracker::Y.invert   * Tracker::Y.sens     * (getSmoothFromList( &Y.rawList ) - Y.offset_headPos) ) * 1000.0f );
 +				server_FT->setVirtPosZ ( ( Tracker::Z.invert   * Tracker::Z.sens     * (getSmoothFromList( &Z.rawList ) - Z.offset_headPos - Tracker::Z.initial_headPos) ) * 1000.0f );
 +			}
 +
 +			// FlightGear
 +			if (server_FG) {
 +				server_FG->setVirtRotX ( getDegreesFromRads ( Tracker::Pitch.invert * Tracker::Pitch.sens * (getSmoothFromList( &Pitch.rawList ) - Pitch.offset_headPos) ) );
 +				server_FG->setVirtRotY ( getDegreesFromRads ( Tracker::Yaw.invert   * Tracker::Yaw.sens   * (getSmoothFromList( &Yaw.rawList )   - Yaw.offset_headPos) ) );
 +				server_FG->setVirtRotZ ( getDegreesFromRads ( Tracker::Roll.invert  * Tracker::Roll.sens  * (getSmoothFromList( &Roll.rawList )  - Roll.offset_headPos) ) );
 +				server_FG->setVirtPosX ( Tracker::X.invert * Tracker::X.sens * (getSmoothFromList( &X.rawList ) - X.offset_headPos) );
 +				server_FG->setVirtPosY ( Tracker::Y.invert * Tracker::Y.sens * (getSmoothFromList( &Y.rawList ) - Y.offset_headPos) );
 +				server_FG->setVirtPosZ ( Tracker::Z.invert * Tracker::Z.sens * (getSmoothFromList( &Z.rawList ) - Z.offset_headPos - Tracker::Z.initial_headPos) );
 +			}
 +
 +			// PPJoy virtual joystick
 +			if (server_PPJoy) {
 +				server_PPJoy->setVirtRotX ( getDegreesFromRads (Tracker::Pitch.invert * Tracker::Pitch.sens * Pitch.newPos ) );
 +				server_PPJoy->setVirtRotY ( getDegreesFromRads (Tracker::Yaw.invert   * Tracker::Yaw.sens   *  Yaw.newPos ) );
 +				server_PPJoy->setVirtRotZ ( getDegreesFromRads (Tracker::Roll.invert  * Tracker::Roll.sens  * Roll.newPos ) );
 +
 +				server_PPJoy->setVirtPosX ( ( Tracker::X.invert   * Tracker::X.sens     * (getSmoothFromList( &X.rawList ) - X.offset_headPos) ) * 100.0f);
 +				server_PPJoy->setVirtPosY ( ( Tracker::Y.invert   * Tracker::Y.sens     * (getSmoothFromList( &Y.rawList ) - Y.offset_headPos) ) * 100.0f );
 +				server_PPJoy->setVirtPosZ ( ( Tracker::Z.invert   * Tracker::Z.sens     * (getSmoothFromList( &Z.rawList ) - Z.offset_headPos - Tracker::Z.initial_headPos) ) * 100.0f );
 +			}
  		}
  		else {
  			//
  			// Go to initial position
  			//
 -			server_FT->setVirtRotX ( 0.0f );
 -			server_FT->setVirtRotY ( 0.0f );
 -			server_FT->setVirtRotZ ( 0.0f );
 -			server_FT->setVirtPosX ( 0.0f );
 -			server_FT->setVirtPosY ( 0.0f );
 -			server_FT->setVirtPosZ ( 0.0f );
 -
 -			server_FG->setVirtRotX ( 0.0f );
 -			server_FG->setVirtRotY ( 0.0f );
 -			server_FG->setVirtRotZ ( 0.0f );
 -			server_FG->setVirtPosX ( 0.0f );
 -			server_FG->setVirtPosY ( 0.0f );
 -			server_FG->setVirtPosZ ( 0.0f );
 +			if (server_FT) {
 +				server_FT->setVirtRotX ( 0.0f );
 +				server_FT->setVirtRotY ( 0.0f );
 +				server_FT->setVirtRotZ ( 0.0f );
 +				server_FT->setVirtPosX ( 0.0f );
 +				server_FT->setVirtPosY ( 0.0f );
 +				server_FT->setVirtPosZ ( 0.0f );
 +			}
 +
 +			if (server_FG) {
 +				server_FG->setVirtRotX ( 0.0f );
 +				server_FG->setVirtRotY ( 0.0f );
 +				server_FG->setVirtRotZ ( 0.0f );
 +				server_FG->setVirtPosX ( 0.0f );
 +				server_FG->setVirtPosY ( 0.0f );
 +				server_FG->setVirtPosZ ( 0.0f );
 +			}
 +
 +			if (server_PPJoy) {
 +				server_PPJoy->setVirtRotX ( 0.0f );
 +				server_PPJoy->setVirtRotY ( 0.0f );
 +				server_PPJoy->setVirtRotZ ( 0.0f );
 +				server_PPJoy->setVirtPosX ( 0.0f );
 +				server_PPJoy->setVirtPosY ( 0.0f );
 +				server_PPJoy->setVirtPosZ ( 0.0f );
 +			}
  		}
  		//for lower cpu load 
 -		msleep(25);
 +		msleep(15);
  		yieldCurrentThread(); 
  	}
  }
 diff --git a/FaceTrackNoIR/tracker.h b/FaceTrackNoIR/tracker.h index 732d2a8d..10021ffb 100644 --- a/FaceTrackNoIR/tracker.h +++ b/FaceTrackNoIR/tracker.h @@ -46,6 +46,22 @@  using namespace sm::faceapi;
  using namespace sm::faceapi::qt;
 +enum AngleName {
 +	PITCH = 0,
 +	YAW = 1,
 +	ROLL = 2,
 +	X = 3,
 +	Y = 4,
 +	Z = 5
 +};
 +
 +enum FTNoIR_Client {
 +	FREE_TRACK = 0,
 +	FLIGHTGEAR = 1,
 +	FTNOIR = 2,
 +	PPJOY = 3
 +};
 +
  class FaceTrackNoIR;				// pre-define parent-class to avoid circular includes
  //
 @@ -73,6 +89,8 @@ private:  	HANDLE m_StopThread;
  	HANDLE m_WaitThread;
 +	FTNoIR_Client selectedClient;
 +
  	/** face api variables **/
  	APIScope *faceapi_scope;
      QSharedPointer<EngineBase> _engine;
 @@ -125,7 +143,7 @@ protected:  	void run();
  public:
 -	Tracker();
 +	Tracker( int clientID );
  	~Tracker();
  	void setup(QWidget *head, FaceTrackNoIR *parent);
 diff --git a/SetupFaceTrackNoIR/SetupFaceTrackNoIR.vdproj b/SetupFaceTrackNoIR/SetupFaceTrackNoIR.vdproj index 36aa334e..34a406dc 100644 --- a/SetupFaceTrackNoIR/SetupFaceTrackNoIR.vdproj +++ b/SetupFaceTrackNoIR/SetupFaceTrackNoIR.vdproj @@ -99,6 +99,12 @@          }
          "Entry"
          {
 +        "MsmKey" = "8:_171663A387D948E3A602031A59CB662F"
 +        "OwnerKey" = "8:_UNDEFINED"
 +        "MsmSig" = "8:_UNDEFINED"
 +        }
 +        "Entry"
 +        {
          "MsmKey" = "8:_1A0EC6350A1343F88FF69FF1027FDF21"
          "OwnerKey" = "8:_UNDEFINED"
          "MsmSig" = "8:_UNDEFINED"
 @@ -231,6 +237,12 @@          }
          "Entry"
          {
 +        "MsmKey" = "8:_566A50B00FDB4C6CBEBD2219B95CB403"
 +        "OwnerKey" = "8:_UNDEFINED"
 +        "MsmSig" = "8:_UNDEFINED"
 +        }
 +        "Entry"
 +        {
          "MsmKey" = "8:_598A7A2C376049E8A68801956D19266B"
          "OwnerKey" = "8:_UNDEFINED"
          "MsmSig" = "8:_UNDEFINED"
 @@ -399,6 +411,12 @@          }
          "Entry"
          {
 +        "MsmKey" = "8:_986D92ED31F9482BBD9BDD1AB2DE7ACC"
 +        "OwnerKey" = "8:_UNDEFINED"
 +        "MsmSig" = "8:_UNDEFINED"
 +        }
 +        "Entry"
 +        {
          "MsmKey" = "8:_9984E74C01F942DEBB6746C2D2F1D657"
          "OwnerKey" = "8:_UNDEFINED"
          "MsmSig" = "8:_UNDEFINED"
 @@ -603,6 +621,12 @@          }
          "Entry"
          {
 +        "MsmKey" = "8:_E24875F377B6409B83263B876E243495"
 +        "OwnerKey" = "8:_UNDEFINED"
 +        "MsmSig" = "8:_UNDEFINED"
 +        }
 +        "Entry"
 +        {
          "MsmKey" = "8:_E49F0C5362AB4F2F94751E2CE133F5BB"
          "OwnerKey" = "8:_UNDEFINED"
          "MsmSig" = "8:_UNDEFINED"
 @@ -1062,6 +1086,26 @@              "IsDependency" = "11:FALSE"
              "IsolateTo" = "8:"
              }
 +            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_171663A387D948E3A602031A59CB662F"
 +            {
 +            "SourcePath" = "8:..\\FaceTrackNoIR\\ClientFiles\\Tir4Fun\\readme.txt"
 +            "TargetName" = "8:readme.txt"
 +            "Tag" = "8:"
 +            "Folder" = "8:_FC0D1BB3B8F54E8B8EAD134A84759174"
 +            "Condition" = "8:"
 +            "Transitive" = "11:FALSE"
 +            "Vital" = "11:TRUE"
 +            "ReadOnly" = "11:FALSE"
 +            "Hidden" = "11:FALSE"
 +            "System" = "11:FALSE"
 +            "Permanent" = "11:FALSE"
 +            "SharedLegacy" = "11:FALSE"
 +            "PackageAs" = "3:1"
 +            "Register" = "3:1"
 +            "Exclude" = "11:FALSE"
 +            "IsDependency" = "11:FALSE"
 +            "IsolateTo" = "8:"
 +            }
              "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1A0EC6350A1343F88FF69FF1027FDF21"
              {
              "SourcePath" = "8:..\\bin\\resources\\ftcascade3.bin"
 @@ -1482,6 +1526,26 @@              "IsDependency" = "11:FALSE"
              "IsolateTo" = "8:"
              }
 +            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_566A50B00FDB4C6CBEBD2219B95CB403"
 +            {
 +            "SourcePath" = "8:..\\FaceTrackNoIR\\ClientFiles\\Tir4Fun\\tir4fun.exe"
 +            "TargetName" = "8:tir4fun.exe"
 +            "Tag" = "8:"
 +            "Folder" = "8:_FC0D1BB3B8F54E8B8EAD134A84759174"
 +            "Condition" = "8:"
 +            "Transitive" = "11:FALSE"
 +            "Vital" = "11:TRUE"
 +            "ReadOnly" = "11:FALSE"
 +            "Hidden" = "11:FALSE"
 +            "System" = "11:FALSE"
 +            "Permanent" = "11:FALSE"
 +            "SharedLegacy" = "11:FALSE"
 +            "PackageAs" = "3:1"
 +            "Register" = "3:1"
 +            "Exclude" = "11:FALSE"
 +            "IsDependency" = "11:FALSE"
 +            "IsolateTo" = "8:"
 +            }
              "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_598A7A2C376049E8A68801956D19266B"
              {
              "SourcePath" = "8:..\\bin\\resources\\cam_whitelist.txt"
 @@ -2002,6 +2066,26 @@              "IsDependency" = "11:FALSE"
              "IsolateTo" = "8:"
              }
 +            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_986D92ED31F9482BBD9BDD1AB2DE7ACC"
 +            {
 +            "SourcePath" = "8:..\\FaceTrackNoIR\\ClientFiles\\Tir4Fun\\NPClient.dll"
 +            "TargetName" = "8:NPClient.dll"
 +            "Tag" = "8:"
 +            "Folder" = "8:_FC0D1BB3B8F54E8B8EAD134A84759174"
 +            "Condition" = "8:"
 +            "Transitive" = "11:FALSE"
 +            "Vital" = "11:TRUE"
 +            "ReadOnly" = "11:FALSE"
 +            "Hidden" = "11:FALSE"
 +            "System" = "11:FALSE"
 +            "Permanent" = "11:FALSE"
 +            "SharedLegacy" = "11:FALSE"
 +            "PackageAs" = "3:1"
 +            "Register" = "3:1"
 +            "Exclude" = "11:FALSE"
 +            "IsDependency" = "11:FALSE"
 +            "IsolateTo" = "8:"
 +            }
              "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9984E74C01F942DEBB6746C2D2F1D657"
              {
              "SourcePath" = "8:..\\bin\\resources\\distraction_model.txt"
 @@ -2622,6 +2706,26 @@              "IsDependency" = "11:FALSE"
              "IsolateTo" = "8:"
              }
 +            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E24875F377B6409B83263B876E243495"
 +            {
 +            "SourcePath" = "8:..\\bin\\images\\PPJoy.ico"
 +            "TargetName" = "8:PPJoy.ico"
 +            "Tag" = "8:"
 +            "Folder" = "8:_40DAD99DC6924B3B84F32C94378E760A"
 +            "Condition" = "8:"
 +            "Transitive" = "11:FALSE"
 +            "Vital" = "11:TRUE"
 +            "ReadOnly" = "11:FALSE"
 +            "Hidden" = "11:FALSE"
 +            "System" = "11:FALSE"
 +            "Permanent" = "11:FALSE"
 +            "SharedLegacy" = "11:FALSE"
 +            "PackageAs" = "3:1"
 +            "Register" = "3:1"
 +            "Exclude" = "11:FALSE"
 +            "IsDependency" = "11:FALSE"
 +            "IsolateTo" = "8:"
 +            }
              "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E49F0C5362AB4F2F94751E2CE133F5BB"
              {
              "SourcePath" = "8:..\\bin\\resources\\ftcascade2_ir.bin"
 @@ -3039,6 +3143,17 @@                                  {
                                  }
                              }
 +                            "{9EF0B969-E518-4E46-987F-47570745A589}:_FC0D1BB3B8F54E8B8EAD134A84759174"
 +                            {
 +                            "Name" = "8:Tir4Fun"
 +                            "AlwaysCreate" = "11:FALSE"
 +                            "Condition" = "8:"
 +                            "Transitive" = "11:FALSE"
 +                            "Property" = "8:_1A3D0F27EA364AB6A598DDA2DE4F2E40"
 +                                "Folders"
 +                                {
 +                                }
 +                            }
                              "{9EF0B969-E518-4E46-987F-47570745A589}:_FF812A38ABB645DAA63E1EB22B8DD795"
                              {
                              "Name" = "8:FlightGear"
 diff --git a/bin/FaceTrackNoIR.exe b/bin/FaceTrackNoIR.exe Binary files differindex fc27716a..b64305f2 100644 --- a/bin/FaceTrackNoIR.exe +++ b/bin/FaceTrackNoIR.exe diff --git a/bin/images/PPJoy.ico b/bin/images/PPJoy.ico Binary files differindex 321e5888..52df896d 100644 --- a/bin/images/PPJoy.ico +++ b/bin/images/PPJoy.ico  | 
