mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 13:18:38 +02:00
Merge pull request #5567 from howard-stearns/fix-gaze
fix-gaze debugging aid
This commit is contained in:
commit
74f695cc9c
4 changed files with 9 additions and 2 deletions
|
@ -2397,7 +2397,9 @@ void Application::updateMyAvatarLookAtPosition() {
|
||||||
|
|
||||||
if (faceAngle < MAXIMUM_FACE_ANGLE) {
|
if (faceAngle < MAXIMUM_FACE_ANGLE) {
|
||||||
// Randomly look back and forth between look targets
|
// Randomly look back and forth between look targets
|
||||||
switch (_myAvatar->getEyeContactTarget()) {
|
eyeContactTarget target = Menu::getInstance()->isOptionChecked(MenuOption::FixGaze) ?
|
||||||
|
LEFT_EYE : _myAvatar->getEyeContactTarget();
|
||||||
|
switch (target) {
|
||||||
case LEFT_EYE:
|
case LEFT_EYE:
|
||||||
lookAtSpot = lookingAtHead->getLeftEyePosition();
|
lookAtSpot = lookingAtHead->getLeftEyePosition();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -453,6 +453,7 @@ Menu::Menu() {
|
||||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderLookAtTargets, 0, false);
|
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderLookAtTargets, 0, false);
|
||||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderFocusIndicator, 0, false);
|
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderFocusIndicator, 0, false);
|
||||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowWhosLookingAtMe, 0, false);
|
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowWhosLookingAtMe, 0, false);
|
||||||
|
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::FixGaze, 0, false);
|
||||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu,
|
addCheckableActionToQMenuAndActionHash(avatarDebugMenu,
|
||||||
MenuOption::Connexion,
|
MenuOption::Connexion,
|
||||||
0, false,
|
0, false,
|
||||||
|
|
|
@ -193,6 +193,7 @@ namespace MenuOption {
|
||||||
const QString Faceshift = "Faceshift";
|
const QString Faceshift = "Faceshift";
|
||||||
const QString FirstPerson = "First Person";
|
const QString FirstPerson = "First Person";
|
||||||
const QString FivePointCalibration = "5 Point Calibration";
|
const QString FivePointCalibration = "5 Point Calibration";
|
||||||
|
const QString FixGaze = "Fix Gaze (no saccade)";
|
||||||
const QString Forward = "Forward";
|
const QString Forward = "Forward";
|
||||||
const QString FrameTimer = "Show Timer";
|
const QString FrameTimer = "Show Timer";
|
||||||
const QString FullscreenMirror = "Fullscreen Mirror";
|
const QString FullscreenMirror = "Fullscreen Mirror";
|
||||||
|
|
|
@ -229,6 +229,9 @@ void Head::simulate(float deltaTime, bool isMine, bool billboard) {
|
||||||
} else {
|
} else {
|
||||||
_saccade = glm::vec3();
|
_saccade = glm::vec3();
|
||||||
}
|
}
|
||||||
|
if (Menu::getInstance()->isOptionChecked(MenuOption::FixGaze)) { // if debug menu turns off, use no saccade
|
||||||
|
_saccade = glm::vec3();
|
||||||
|
}
|
||||||
|
|
||||||
if (!isMine) {
|
if (!isMine) {
|
||||||
_faceModel.setLODDistance(static_cast<Avatar*>(_owningAvatar)->getLODDistance());
|
_faceModel.setLODDistance(static_cast<Avatar*>(_owningAvatar)->getLODDistance());
|
||||||
|
@ -274,7 +277,7 @@ void Head::calculateMouthShapes() {
|
||||||
void Head::applyEyelidOffset(glm::quat headOrientation) {
|
void Head::applyEyelidOffset(glm::quat headOrientation) {
|
||||||
// Adjusts the eyelid blendshape coefficients so that the eyelid follows the iris as the head pitches.
|
// Adjusts the eyelid blendshape coefficients so that the eyelid follows the iris as the head pitches.
|
||||||
|
|
||||||
glm::quat eyeRotation = rotationBetween(headOrientation * IDENTITY_FRONT, getCorrectedLookAtPosition() - _eyePosition);
|
glm::quat eyeRotation = rotationBetween(headOrientation * IDENTITY_FRONT, getLookAtPosition() - _eyePosition);
|
||||||
eyeRotation = eyeRotation * glm::angleAxis(safeEulerAngles(headOrientation).y, IDENTITY_UP); // Rotation w.r.t. head
|
eyeRotation = eyeRotation * glm::angleAxis(safeEulerAngles(headOrientation).y, IDENTITY_UP); // Rotation w.r.t. head
|
||||||
float eyePitch = safeEulerAngles(eyeRotation).x;
|
float eyePitch = safeEulerAngles(eyeRotation).x;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue