mirror of
https://github.com/overte-org/overte.git
synced 2025-08-04 05:43:36 +02:00
Add menu option to render look-at targets
This commit is contained in:
parent
c771574578
commit
fae26d901c
7 changed files with 26 additions and 0 deletions
|
@ -461,6 +461,7 @@ Menu::Menu() {
|
||||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderHeadCollisionShapes);
|
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderHeadCollisionShapes);
|
||||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderBoundingCollisionShapes);
|
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderBoundingCollisionShapes);
|
||||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderLookAtVectors, 0, false);
|
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderLookAtVectors, 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,
|
addCheckableActionToQMenuAndActionHash(avatarDebugMenu,
|
||||||
|
|
|
@ -234,6 +234,7 @@ namespace MenuOption {
|
||||||
const QString RenderBoundingCollisionShapes = "Show Bounding Collision Shapes";
|
const QString RenderBoundingCollisionShapes = "Show Bounding Collision Shapes";
|
||||||
const QString RenderFocusIndicator = "Show Eye Focus";
|
const QString RenderFocusIndicator = "Show Eye Focus";
|
||||||
const QString RenderHeadCollisionShapes = "Show Head Collision Shapes";
|
const QString RenderHeadCollisionShapes = "Show Head Collision Shapes";
|
||||||
|
const QString RenderLookAtTargets = "Show Look-at Targets";
|
||||||
const QString RenderLookAtVectors = "Show Look-at Vectors";
|
const QString RenderLookAtVectors = "Show Look-at Vectors";
|
||||||
const QString RenderSkeletonCollisionShapes = "Show Skeleton Collision Shapes";
|
const QString RenderSkeletonCollisionShapes = "Show Skeleton Collision Shapes";
|
||||||
const QString RenderTargetFramerate = "Framerate";
|
const QString RenderTargetFramerate = "Framerate";
|
||||||
|
|
|
@ -69,6 +69,8 @@ namespace render {
|
||||||
auto avatarPtr = static_pointer_cast<Avatar>(avatar);
|
auto avatarPtr = static_pointer_cast<Avatar>(avatar);
|
||||||
bool renderLookAtVectors = Menu::getInstance()->isOptionChecked(MenuOption::RenderLookAtVectors);
|
bool renderLookAtVectors = Menu::getInstance()->isOptionChecked(MenuOption::RenderLookAtVectors);
|
||||||
avatarPtr->setDisplayingLookatVectors(renderLookAtVectors);
|
avatarPtr->setDisplayingLookatVectors(renderLookAtVectors);
|
||||||
|
bool renderLookAtTarget = Menu::getInstance()->isOptionChecked(MenuOption::RenderLookAtTargets);
|
||||||
|
avatarPtr->setDisplayingLookatTarget(renderLookAtTarget);
|
||||||
|
|
||||||
if (avatarPtr->isInitialized() && args) {
|
if (avatarPtr->isInitialized() && args) {
|
||||||
avatarPtr->render(args, Application::getInstance()->getCamera()->getPosition());
|
avatarPtr->render(args, Application::getInstance()->getCamera()->getPosition());
|
||||||
|
|
|
@ -91,6 +91,7 @@ public:
|
||||||
|
|
||||||
//setters
|
//setters
|
||||||
void setDisplayingLookatVectors(bool displayingLookatVectors) { getHead()->setRenderLookatVectors(displayingLookatVectors); }
|
void setDisplayingLookatVectors(bool displayingLookatVectors) { getHead()->setRenderLookatVectors(displayingLookatVectors); }
|
||||||
|
void setDisplayingLookatTarget(bool displayingLookatTarget) { getHead()->setRenderLookatTarget(displayingLookatTarget); }
|
||||||
void setIsLookAtTarget(const bool isLookAtTarget) { _isLookAtTarget = isLookAtTarget; }
|
void setIsLookAtTarget(const bool isLookAtTarget) { _isLookAtTarget = isLookAtTarget; }
|
||||||
bool getIsLookAtTarget() const { return _isLookAtTarget; }
|
bool getIsLookAtTarget() const { return _isLookAtTarget; }
|
||||||
//getters
|
//getters
|
||||||
|
|
|
@ -46,6 +46,7 @@ Head::Head(Avatar* owningAvatar) :
|
||||||
_mouth3(0.0f),
|
_mouth3(0.0f),
|
||||||
_mouth4(0.0f),
|
_mouth4(0.0f),
|
||||||
_renderLookatVectors(false),
|
_renderLookatVectors(false),
|
||||||
|
_renderLookatTarget(false),
|
||||||
_saccade(0.0f, 0.0f, 0.0f),
|
_saccade(0.0f, 0.0f, 0.0f),
|
||||||
_saccadeTarget(0.0f, 0.0f, 0.0f),
|
_saccadeTarget(0.0f, 0.0f, 0.0f),
|
||||||
_leftEyeBlinkVelocity(0.0f),
|
_leftEyeBlinkVelocity(0.0f),
|
||||||
|
@ -305,6 +306,9 @@ void Head::render(RenderArgs* renderArgs, float alpha, ViewFrustum* renderFrustu
|
||||||
if (_renderLookatVectors) {
|
if (_renderLookatVectors) {
|
||||||
renderLookatVectors(renderArgs, _leftEyePosition, _rightEyePosition, getCorrectedLookAtPosition());
|
renderLookatVectors(renderArgs, _leftEyePosition, _rightEyePosition, getCorrectedLookAtPosition());
|
||||||
}
|
}
|
||||||
|
if (_renderLookatTarget) {
|
||||||
|
renderLookatTarget(renderArgs, getCorrectedLookAtPosition());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Head::setScale (float scale) {
|
void Head::setScale (float scale) {
|
||||||
|
@ -414,4 +418,17 @@ void Head::renderLookatVectors(RenderArgs* renderArgs, glm::vec3 leftEyePosition
|
||||||
geometryCache->renderLine(batch, rightEyePosition, lookatPosition, startColor, endColor, _rightEyeLookAtID);
|
geometryCache->renderLine(batch, rightEyePosition, lookatPosition, startColor, endColor, _rightEyeLookAtID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Head::renderLookatTarget(RenderArgs* renderArgs, glm::vec3 lookatPosition) {
|
||||||
|
auto& batch = *renderArgs->_batch;
|
||||||
|
auto transform = Transform{};
|
||||||
|
transform.setTranslation(lookatPosition);
|
||||||
|
batch.setModelTransform(transform);
|
||||||
|
|
||||||
|
auto deferredLighting = DependencyManager::get<DeferredLightingEffect>();
|
||||||
|
deferredLighting->bindSimpleProgram(batch);
|
||||||
|
|
||||||
|
auto geometryCache = DependencyManager::get<GeometryCache>();
|
||||||
|
const float LOOK_AT_TARGET_RADIUS = 0.03f;
|
||||||
|
const glm::vec4 LOOK_AT_TARGET_COLOR = { 0.8f, 0.0f, 0.0f, 0.75f };
|
||||||
|
geometryCache->renderSphere(batch, LOOK_AT_TARGET_RADIUS, 15, 15, LOOK_AT_TARGET_COLOR, true);
|
||||||
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ public:
|
||||||
void setAverageLoudness(float averageLoudness) { _averageLoudness = averageLoudness; }
|
void setAverageLoudness(float averageLoudness) { _averageLoudness = averageLoudness; }
|
||||||
void setReturnToCenter (bool returnHeadToCenter) { _returnHeadToCenter = returnHeadToCenter; }
|
void setReturnToCenter (bool returnHeadToCenter) { _returnHeadToCenter = returnHeadToCenter; }
|
||||||
void setRenderLookatVectors(bool onOff) { _renderLookatVectors = onOff; }
|
void setRenderLookatVectors(bool onOff) { _renderLookatVectors = onOff; }
|
||||||
|
void setRenderLookatTarget(bool onOff) { _renderLookatTarget = onOff; }
|
||||||
|
|
||||||
/// \return orientationBase+Delta
|
/// \return orientationBase+Delta
|
||||||
glm::quat getFinalOrientationInLocalFrame() const;
|
glm::quat getFinalOrientationInLocalFrame() const;
|
||||||
|
@ -123,6 +124,7 @@ private:
|
||||||
float _mouth3;
|
float _mouth3;
|
||||||
float _mouth4;
|
float _mouth4;
|
||||||
bool _renderLookatVectors;
|
bool _renderLookatVectors;
|
||||||
|
bool _renderLookatTarget;
|
||||||
glm::vec3 _saccade;
|
glm::vec3 _saccade;
|
||||||
glm::vec3 _saccadeTarget;
|
glm::vec3 _saccadeTarget;
|
||||||
float _leftEyeBlinkVelocity;
|
float _leftEyeBlinkVelocity;
|
||||||
|
@ -151,6 +153,7 @@ private:
|
||||||
|
|
||||||
// private methods
|
// private methods
|
||||||
void renderLookatVectors(RenderArgs* renderArgs, glm::vec3 leftEyePosition, glm::vec3 rightEyePosition, glm::vec3 lookatPosition);
|
void renderLookatVectors(RenderArgs* renderArgs, glm::vec3 leftEyePosition, glm::vec3 rightEyePosition, glm::vec3 lookatPosition);
|
||||||
|
void renderLookatTarget(RenderArgs* renderArgs, glm::vec3 lookatPosition);
|
||||||
void calculateMouthShapes();
|
void calculateMouthShapes();
|
||||||
void applyEyelidOffset(glm::quat headOrientation);
|
void applyEyelidOffset(glm::quat headOrientation);
|
||||||
|
|
||||||
|
|
|
@ -177,6 +177,7 @@ public:
|
||||||
RenderFocusIndicator,
|
RenderFocusIndicator,
|
||||||
RenderHeadCollisionShapes,
|
RenderHeadCollisionShapes,
|
||||||
RenderLookAtVectors,
|
RenderLookAtVectors,
|
||||||
|
RenderLookAtTargets,
|
||||||
RenderSkeletonCollisionShapes,
|
RenderSkeletonCollisionShapes,
|
||||||
RenderTargetFramerate,
|
RenderTargetFramerate,
|
||||||
RenderTargetFramerateUnlimited,
|
RenderTargetFramerateUnlimited,
|
||||||
|
|
Loading…
Reference in a new issue