mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 17:00:13 +02:00
Merge branch 'master' of https://github.com/highfidelity/hifi into orange
This commit is contained in:
commit
8324268ec8
7 changed files with 34 additions and 33 deletions
|
@ -953,6 +953,7 @@ void Application::faceTrackerMuteToggled() {
|
||||||
bool isMuted = getSelectedFaceTracker()->isMuted();
|
bool isMuted = getSelectedFaceTracker()->isMuted();
|
||||||
muteAction->setChecked(isMuted);
|
muteAction->setChecked(isMuted);
|
||||||
getSelectedFaceTracker()->setEnabled(!isMuted);
|
getSelectedFaceTracker()->setEnabled(!isMuted);
|
||||||
|
Menu::getInstance()->getActionForOption(MenuOption::CalibrateCamera)->setEnabled(!isMuted);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::aboutApp() {
|
void Application::aboutApp() {
|
||||||
|
@ -1366,12 +1367,12 @@ void Application::keyPressEvent(QKeyEvent* event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//#define VR_MENU_ONLY_IN_HMD
|
#define VR_MENU_ONLY_IN_HMD
|
||||||
|
|
||||||
void Application::keyReleaseEvent(QKeyEvent* event) {
|
void Application::keyReleaseEvent(QKeyEvent* event) {
|
||||||
if (event->key() == Qt::Key_Alt && _altPressed && _window->isActiveWindow()) {
|
if (event->key() == Qt::Key_Alt && _altPressed && _window->isActiveWindow()) {
|
||||||
#ifdef VR_MENU_ONLY_IN_HMD
|
#ifdef VR_MENU_ONLY_IN_HMD
|
||||||
if (OculusManager::isConnected()) {
|
if (isHMDMode()) {
|
||||||
#endif
|
#endif
|
||||||
VrMenu::toggle();
|
VrMenu::toggle();
|
||||||
#ifdef VR_MENU_ONLY_IN_HMD
|
#ifdef VR_MENU_ONLY_IN_HMD
|
||||||
|
|
|
@ -368,8 +368,12 @@ Menu::Menu() {
|
||||||
{
|
{
|
||||||
QActionGroup* faceTrackerGroup = new QActionGroup(avatarDebugMenu);
|
QActionGroup* faceTrackerGroup = new QActionGroup(avatarDebugMenu);
|
||||||
|
|
||||||
|
bool defaultNoFaceTracking = true;
|
||||||
|
#ifdef HAVE_DDE
|
||||||
|
defaultNoFaceTracking = false;
|
||||||
|
#endif
|
||||||
QAction* noFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::NoFaceTracking,
|
QAction* noFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::NoFaceTracking,
|
||||||
0, true,
|
0, defaultNoFaceTracking,
|
||||||
qApp, SLOT(setActiveFaceTracker()));
|
qApp, SLOT(setActiveFaceTracker()));
|
||||||
faceTrackerGroup->addAction(noFaceTracker);
|
faceTrackerGroup->addAction(noFaceTracker);
|
||||||
|
|
||||||
|
@ -381,7 +385,7 @@ Menu::Menu() {
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_DDE
|
#ifdef HAVE_DDE
|
||||||
QAction* ddeFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::UseCamera,
|
QAction* ddeFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::UseCamera,
|
||||||
0, false,
|
0, true,
|
||||||
qApp, SLOT(setActiveFaceTracker()));
|
qApp, SLOT(setActiveFaceTracker()));
|
||||||
faceTrackerGroup->addAction(ddeFaceTracker);
|
faceTrackerGroup->addAction(ddeFaceTracker);
|
||||||
#endif
|
#endif
|
||||||
|
@ -391,17 +395,17 @@ Menu::Menu() {
|
||||||
QAction* binaryEyelidControl = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::BinaryEyelidControl, 0, true);
|
QAction* binaryEyelidControl = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::BinaryEyelidControl, 0, true);
|
||||||
binaryEyelidControl->setVisible(false);
|
binaryEyelidControl->setVisible(false);
|
||||||
QAction* useAudioForMouth = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::UseAudioForMouth, 0, true);
|
QAction* useAudioForMouth = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::UseAudioForMouth, 0, true);
|
||||||
useAudioForMouth->setVisible(false);
|
useAudioForMouth->setVisible(true); // DDE face tracking is on by default
|
||||||
QAction* ddeFiltering = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::VelocityFilter, 0, true);
|
QAction* ddeFiltering = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::VelocityFilter, 0, true);
|
||||||
ddeFiltering->setVisible(false);
|
ddeFiltering->setVisible(true); // DDE face tracking is on by default
|
||||||
QAction* ddeCalibrate = addActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::CalibrateCamera, 0,
|
QAction* ddeCalibrate = addActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::CalibrateCamera, 0,
|
||||||
DependencyManager::get<DdeFaceTracker>().data(), SLOT(calibrate()));
|
DependencyManager::get<DdeFaceTracker>().data(), SLOT(calibrate()));
|
||||||
ddeCalibrate->setVisible(false);
|
ddeCalibrate->setVisible(true); // DDE face tracking is on by default
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAVE_FACESHIFT) || defined(HAVE_DDE)
|
#if defined(HAVE_FACESHIFT) || defined(HAVE_DDE)
|
||||||
faceTrackingMenu->addSeparator();
|
faceTrackingMenu->addSeparator();
|
||||||
addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::MuteFaceTracking,
|
addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::MuteFaceTracking,
|
||||||
Qt::CTRL | Qt::SHIFT | Qt::Key_F, false,
|
Qt::CTRL | Qt::SHIFT | Qt::Key_F, true, // DDE face tracking is on by default
|
||||||
qApp, SLOT(toggleFaceTrackerMute()));
|
qApp, SLOT(toggleFaceTrackerMute()));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -188,7 +188,8 @@ DdeFaceTracker::DdeFaceTracker(const QHostAddress& host, quint16 serverPort, qui
|
||||||
_calibrationValues(),
|
_calibrationValues(),
|
||||||
_calibrationBillboard(NULL),
|
_calibrationBillboard(NULL),
|
||||||
_calibrationBillboardID(0),
|
_calibrationBillboardID(0),
|
||||||
_calibrationMessage(QString())
|
_calibrationMessage(QString()),
|
||||||
|
_isCalibrated(false)
|
||||||
{
|
{
|
||||||
_coefficients.resize(NUM_FACESHIFT_BLENDSHAPES);
|
_coefficients.resize(NUM_FACESHIFT_BLENDSHAPES);
|
||||||
_blendshapeCoefficients.resize(NUM_FACESHIFT_BLENDSHAPES);
|
_blendshapeCoefficients.resize(NUM_FACESHIFT_BLENDSHAPES);
|
||||||
|
@ -219,6 +220,7 @@ DdeFaceTracker::~DdeFaceTracker() {
|
||||||
void DdeFaceTracker::init() {
|
void DdeFaceTracker::init() {
|
||||||
FaceTracker::init();
|
FaceTracker::init();
|
||||||
setEnabled(Menu::getInstance()->isOptionChecked(MenuOption::UseCamera) && !_isMuted);
|
setEnabled(Menu::getInstance()->isOptionChecked(MenuOption::UseCamera) && !_isMuted);
|
||||||
|
Menu::getInstance()->getActionForOption(MenuOption::CalibrateCamera)->setEnabled(!_isMuted);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DdeFaceTracker::setEnabled(bool enabled) {
|
void DdeFaceTracker::setEnabled(bool enabled) {
|
||||||
|
@ -345,6 +347,10 @@ void DdeFaceTracker::decodePacket(const QByteArray& buffer) {
|
||||||
_lastReceiveTimestamp = usecTimestampNow();
|
_lastReceiveTimestamp = usecTimestampNow();
|
||||||
|
|
||||||
if (buffer.size() > MIN_PACKET_SIZE) {
|
if (buffer.size() > MIN_PACKET_SIZE) {
|
||||||
|
if (!_isCalibrated) {
|
||||||
|
calibrate();
|
||||||
|
}
|
||||||
|
|
||||||
bool isFiltering = Menu::getInstance()->isOptionChecked(MenuOption::VelocityFilter);
|
bool isFiltering = Menu::getInstance()->isOptionChecked(MenuOption::VelocityFilter);
|
||||||
|
|
||||||
Packet packet;
|
Packet packet;
|
||||||
|
@ -564,15 +570,19 @@ void DdeFaceTracker::setEyeClosingThreshold(float eyeClosingThreshold) {
|
||||||
_eyeClosingThreshold.set(eyeClosingThreshold);
|
_eyeClosingThreshold.set(eyeClosingThreshold);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const int CALIBRATION_BILLBOARD_WIDTH = 240;
|
static const int CALIBRATION_BILLBOARD_WIDTH = 300;
|
||||||
static const int CALIBRATION_BILLBOARD_HEIGHT = 180;
|
static const int CALIBRATION_BILLBOARD_HEIGHT = 120;
|
||||||
static const int CALIBRATION_BILLBOARD_TOP_MARGIN = 60;
|
static const int CALIBRATION_BILLBOARD_TOP_MARGIN = 30;
|
||||||
static const int CALIBRATION_BILLBOARD_LEFT_MARGIN = 30;
|
static const int CALIBRATION_BILLBOARD_LEFT_MARGIN = 30;
|
||||||
static const int CALIBRATION_BILLBOARD_FONT_SIZE = 16;
|
static const int CALIBRATION_BILLBOARD_FONT_SIZE = 16;
|
||||||
static const float CALIBRATION_BILLBOARD_ALPHA = 0.5f;
|
static const float CALIBRATION_BILLBOARD_ALPHA = 0.5f;
|
||||||
static QString CALIBRATION_INSTRUCTION_MESSAGE = "Hold still to calibrate";
|
static QString CALIBRATION_INSTRUCTION_MESSAGE = "Hold still to calibrate camera";
|
||||||
|
|
||||||
void DdeFaceTracker::calibrate() {
|
void DdeFaceTracker::calibrate() {
|
||||||
|
if (!Menu::getInstance()->isOptionChecked(MenuOption::UseCamera) || _isMuted) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!_isCalibrating) {
|
if (!_isCalibrating) {
|
||||||
qCDebug(interfaceapp) << "DDE Face Tracker: Calibration started";
|
qCDebug(interfaceapp) << "DDE Face Tracker: Calibration started";
|
||||||
|
|
||||||
|
@ -629,10 +639,13 @@ void DdeFaceTracker::finishCalibration() {
|
||||||
qApp->getOverlays().deleteOverlay(_calibrationBillboardID);
|
qApp->getOverlays().deleteOverlay(_calibrationBillboardID);
|
||||||
_calibrationBillboard = NULL;
|
_calibrationBillboard = NULL;
|
||||||
_isCalibrating = false;
|
_isCalibrating = false;
|
||||||
|
_isCalibrated = true;
|
||||||
|
|
||||||
for (int i = 0; i < NUM_FACESHIFT_BLENDSHAPES; i++) {
|
for (int i = 0; i < NUM_FACESHIFT_BLENDSHAPES; i++) {
|
||||||
_coefficientAverages[i] = _calibrationValues[i] / (float)CALIBRATION_SAMPLES;
|
_coefficientAverages[i] = _calibrationValues[i] / (float)CALIBRATION_SAMPLES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reset();
|
||||||
|
|
||||||
qCDebug(interfaceapp) << "DDE Face Tracker: Calibration finished";
|
qCDebug(interfaceapp) << "DDE Face Tracker: Calibration finished";
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,6 +136,7 @@ private:
|
||||||
TextOverlay* _calibrationBillboard;
|
TextOverlay* _calibrationBillboard;
|
||||||
int _calibrationBillboardID;
|
int _calibrationBillboardID;
|
||||||
QString _calibrationMessage;
|
QString _calibrationMessage;
|
||||||
|
bool _isCalibrated;
|
||||||
void addCalibrationDatum();
|
void addCalibrationDatum();
|
||||||
void cancelCalibration();
|
void cancelCalibration();
|
||||||
void finishCalibration();
|
void finishCalibration();
|
||||||
|
|
|
@ -162,8 +162,7 @@ void RunningScriptsWidget::showEvent(QShowEvent* event) {
|
||||||
|
|
||||||
QRect parentGeometry = Application::getInstance()->getDesirableApplicationGeometry();
|
QRect parentGeometry = Application::getInstance()->getDesirableApplicationGeometry();
|
||||||
int titleBarHeight = UIUtil::getWindowTitleBarHeight(this);
|
int titleBarHeight = UIUtil::getWindowTitleBarHeight(this);
|
||||||
int menuBarHeight = Menu::getInstance()->geometry().height();
|
int topMargin = titleBarHeight;
|
||||||
int topMargin = titleBarHeight + menuBarHeight;
|
|
||||||
|
|
||||||
setGeometry(parentGeometry.topLeft().x(), parentGeometry.topLeft().y() + topMargin,
|
setGeometry(parentGeometry.topLeft().x(), parentGeometry.topLeft().y() + topMargin,
|
||||||
size().width(), parentWidget()->height() - topMargin);
|
size().width(), parentWidget()->height() - topMargin);
|
||||||
|
|
|
@ -38,8 +38,7 @@ bool ToolWindow::event(QEvent* event) {
|
||||||
QRect mainGeometry = mainWindow->geometry();
|
QRect mainGeometry = mainWindow->geometry();
|
||||||
|
|
||||||
int titleBarHeight = UIUtil::getWindowTitleBarHeight(this);
|
int titleBarHeight = UIUtil::getWindowTitleBarHeight(this);
|
||||||
int menuBarHeight = Menu::getInstance()->geometry().height();
|
int topMargin = titleBarHeight;
|
||||||
int topMargin = titleBarHeight + menuBarHeight;
|
|
||||||
|
|
||||||
_lastGeometry = QRect(mainGeometry.topLeft().x(), mainGeometry.topLeft().y() + topMargin,
|
_lastGeometry = QRect(mainGeometry.topLeft().x(), mainGeometry.topLeft().y() + topMargin,
|
||||||
DEFAULT_WIDTH, mainGeometry.height() - topMargin);
|
DEFAULT_WIDTH, mainGeometry.height() - topMargin);
|
||||||
|
|
|
@ -349,22 +349,6 @@ font: bold 16pt;
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="tipLabel">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<family>Helvetica,Arial,sans-serif</family>
|
|
||||||
<pointsize>14</pointsize>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">color: #5f5f5f; margin: 2px;</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Tip</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
Loading…
Reference in a new issue