Frapper  1.0a
FaceShiftClientNode.h
Go to the documentation of this file.
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of FRAPPER
4 research.animationsinstitut.de
5 sourceforge.net/projects/frapper
6 
7 Copyright (c) 2008-2012 Filmakademie Baden-Wuerttemberg, Institute of Animation
8 
9 This program is free software; you can redistribute it and/or modify it under
10 the terms of the GNU Lesser General Public License as published by the Free Software
11 Foundation; version 2.1 of the License.
12 
13 This program is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16 
17 You should have received a copy of the GNU Lesser General Public License along with
18 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
19 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
20 http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
21 -----------------------------------------------------------------------------
22 */
23 
32 
33 #ifndef FACESHIFTCLIENTNODE_H
34 #define FACESHIFTCLIENTNODE_H
35 
36 #include "Node.h"
37 #include "ParameterGroup.h"
38 #include <QtCore/QDataStream>
39 #include <QtNetwork/QTcpSocket>
40 #include <QTime>
41 
42 // FaceShift binary network stream format
43 #include <fsstream.h>
44 
45 namespace FaceShiftClientNode {
46 using namespace Frapper;
47 
51 class FaceShiftClientNode : public Node //, public QThread
52 {
53 
54  Q_OBJECT
56 
57 public: // constructors and destructors
58 
65  FaceShiftClientNode ( QString name, ParameterGroup *parameterRoot );
66 
71 
72 public: // functions
73 
74  virtual void run();
75 
76 
77 private slots: //
78 
82  void toggleRun();
83 
87  void processInputData();
88 
92  void threadFinished();
93 
94 private: // data
95 
99  QTcpSocket m_tcpSocket;
100 
105 
110 
114  QTime m_stopWatch;
115 
119  QVector<fs::fsTrackingData> m_trackingData;
120 
124  QList<int> m_updateRates;
125 
126 private: // functions
127 
128  // write decoded head translation to output parameters
129  void UpdateHeadTranslation( Ogre::Vector3 trans);
130 
131  // write decoded head rotation to output parameters
132  void UpdateHeadRotation( Ogre::Quaternion rot );
133 
134  // write decoded eye gaze to output parameters
135  void UpdateEyeGaze( float pitchLeft, float pitchRight, float yawLeft, float yawRight);
136 };
137 
138 } // namespace FaceShiftClientNode
139 
140 #endif