mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-25 17:14:59 +02:00
Faceplus fixes.
This commit is contained in:
parent
28d3eae12b
commit
cbfaf9709e
3 changed files with 18 additions and 8 deletions
|
@ -174,6 +174,7 @@ public:
|
|||
bool isMouseHidden() const { return _mouseHidden; }
|
||||
const glm::vec3& getMouseRayOrigin() const { return _mouseRayOrigin; }
|
||||
const glm::vec3& getMouseRayDirection() const { return _mouseRayDirection; }
|
||||
Faceplus* getFaceplus() { return &_faceplus; }
|
||||
Faceshift* getFaceshift() { return &_faceshift; }
|
||||
Visage* getVisage() { return &_visage; }
|
||||
FaceTracker* getActiveFaceTracker();
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
#include "Faceplus.h"
|
||||
#include "renderer/FBXReader.h"
|
||||
|
||||
static int floatVectorMetaTypeId = qRegisterMetaType<QVector<float> >();
|
||||
|
||||
Faceplus::Faceplus() :
|
||||
_enabled(false),
|
||||
_active(false) {
|
||||
|
@ -81,8 +83,8 @@ static QMultiHash<QByteArray, QPair<int, float> > createChannelNameMap() {
|
|||
blendshapeMap.insert("...", QPair<QByteArray, float>("Mix::BrowsIn_Right", 1.0f));
|
||||
blendshapeMap.insert("...", QPair<QByteArray, float>("Mix::BrowsOuterLower_Left", 1.0f));
|
||||
blendshapeMap.insert("...", QPair<QByteArray, float>("Mix::BrowsOuterLower_Right", 1.0f));
|
||||
blendshapeMap.insert("BrowsU_L", QPair<QByteArray, float>("Mix::BrowsUp_Left", 5.0f));
|
||||
blendshapeMap.insert("BrowsU_R", QPair<QByteArray, float>("Mix::BrowsUp_Right", 5.0f));
|
||||
blendshapeMap.insert("BrowsU_L", QPair<QByteArray, float>("Mix::BrowsUp_Left", 10.0f));
|
||||
blendshapeMap.insert("BrowsU_R", QPair<QByteArray, float>("Mix::BrowsUp_Right", 10.0f));
|
||||
blendshapeMap.insert("EyeOpen_L", QPair<QByteArray, float>("Mix::EyesWide_Left", 1.0f));
|
||||
blendshapeMap.insert("EyeOpen_R", QPair<QByteArray, float>("Mix::EyesWide_Right", 1.0f));
|
||||
blendshapeMap.insert("MouthFrown_L", QPair<QByteArray, float>("Mix::Frown_Left", 1.0f));
|
||||
|
@ -134,6 +136,14 @@ static const QMultiHash<QByteArray, QPair<int, float> >& getChannelNameMap() {
|
|||
}
|
||||
#endif
|
||||
|
||||
FaceplusReader::~FaceplusReader() {
|
||||
#ifdef HAVE_FACEPLUS
|
||||
if (faceplus_teardown()) {
|
||||
qDebug() << "Faceplus torn down.";
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void FaceplusReader::init() {
|
||||
#ifdef HAVE_FACEPLUS
|
||||
if (!faceplus_init("VGA")) {
|
||||
|
@ -183,11 +193,6 @@ void FaceplusReader::init() {
|
|||
}
|
||||
|
||||
void FaceplusReader::shutdown() {
|
||||
#ifdef HAVE_FACEPLUS
|
||||
if (faceplus_teardown()) {
|
||||
qDebug() << "Faceplus torn down.";
|
||||
}
|
||||
#endif
|
||||
deleteLater();
|
||||
thread()->quit();
|
||||
}
|
||||
|
|
|
@ -47,12 +47,16 @@ private:
|
|||
FaceplusReader* _reader;
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(QVector<float>)
|
||||
|
||||
/// The reader object that lives in its own thread.
|
||||
class FaceplusReader : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
virtual ~FaceplusReader();
|
||||
|
||||
Q_INVOKABLE void init();
|
||||
Q_INVOKABLE void shutdown();
|
||||
Q_INVOKABLE void update();
|
||||
|
@ -65,7 +69,7 @@ private:
|
|||
int _headRotationIndices[3];
|
||||
int _leftEyeRotationIndices[2];
|
||||
int _rightEyeRotationIndices[2];
|
||||
QVector<float> _blendshapeIndices;
|
||||
QVector<float> _blendshapeCoefficients;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue