mirror of
https://github.com/Armored-Dragon/overte.git
synced 2025-03-11 16:13:16 +01:00
Don't leave out the head when we draw our shadow.
This commit is contained in:
parent
898135fbf2
commit
3137e9a3e6
8 changed files with 33 additions and 37 deletions
|
@ -1876,7 +1876,7 @@ bool Application::isLookingAtMyAvatar(Avatar* avatar) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::renderLookatIndicator(glm::vec3 pointOfInterest, Camera& whichCamera) {
|
void Application::renderLookatIndicator(glm::vec3 pointOfInterest) {
|
||||||
|
|
||||||
const float DISTANCE_FROM_HEAD_SPHERE = 0.1f * _lookatIndicatorScale;
|
const float DISTANCE_FROM_HEAD_SPHERE = 0.1f * _lookatIndicatorScale;
|
||||||
const float INDICATOR_RADIUS = 0.1f * _lookatIndicatorScale;
|
const float INDICATOR_RADIUS = 0.1f * _lookatIndicatorScale;
|
||||||
|
@ -2822,7 +2822,7 @@ void Application::updateShadowMap() {
|
||||||
|
|
||||||
glTranslatef(translation.x, translation.y, translation.z);
|
glTranslatef(translation.x, translation.y, translation.z);
|
||||||
|
|
||||||
renderAvatars(_myCamera);
|
renderAvatars(true);
|
||||||
|
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
|
@ -3182,7 +3182,7 @@ void Application::displaySide(Camera& whichCamera, bool selfAvatarOnly) {
|
||||||
|
|
||||||
_myAvatar.renderScreenTint(SCREEN_TINT_BEFORE_AVATARS);
|
_myAvatar.renderScreenTint(SCREEN_TINT_BEFORE_AVATARS);
|
||||||
|
|
||||||
renderAvatars(whichCamera, selfAvatarOnly);
|
renderAvatars(whichCamera.getMode() == CAMERA_MODE_MIRROR, selfAvatarOnly);
|
||||||
|
|
||||||
_myAvatar.renderScreenTint(SCREEN_TINT_AFTER_AVATARS);
|
_myAvatar.renderScreenTint(SCREEN_TINT_AFTER_AVATARS);
|
||||||
|
|
||||||
|
@ -3806,7 +3806,7 @@ void Application::renderCoverageMapsRecursively(CoverageMap* map) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::renderAvatars(Camera& whichCamera, bool selfAvatarOnly) {
|
void Application::renderAvatars(bool forceRenderHead, bool selfAvatarOnly) {
|
||||||
if (!Menu::getInstance()->isOptionChecked(MenuOption::Avatars)) {
|
if (!Menu::getInstance()->isOptionChecked(MenuOption::Avatars)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -3834,12 +3834,11 @@ void Application::renderAvatars(Camera& whichCamera, bool selfAvatarOnly) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Render my own Avatar
|
// Render my own Avatar
|
||||||
_myAvatar.render(whichCamera.getMode() == CAMERA_MODE_MIRROR,
|
_myAvatar.render(forceRenderHead, Menu::getInstance()->isOptionChecked(MenuOption::AvatarAsBalls));
|
||||||
Menu::getInstance()->isOptionChecked(MenuOption::AvatarAsBalls));
|
|
||||||
_myAvatar.setDisplayingLookatVectors(Menu::getInstance()->isOptionChecked(MenuOption::LookAtVectors));
|
_myAvatar.setDisplayingLookatVectors(Menu::getInstance()->isOptionChecked(MenuOption::LookAtVectors));
|
||||||
|
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::LookAtIndicator) && _lookatTargetAvatar) {
|
if (Menu::getInstance()->isOptionChecked(MenuOption::LookAtIndicator) && _lookatTargetAvatar) {
|
||||||
renderLookatIndicator(_lookatOtherPosition, whichCamera);
|
renderLookatIndicator(_lookatOtherPosition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -262,7 +262,7 @@ private:
|
||||||
glm::vec3& eyePosition, QUuid &nodeUUID);
|
glm::vec3& eyePosition, QUuid &nodeUUID);
|
||||||
bool isLookingAtMyAvatar(Avatar* avatar);
|
bool isLookingAtMyAvatar(Avatar* avatar);
|
||||||
|
|
||||||
void renderLookatIndicator(glm::vec3 pointOfInterest, Camera& whichCamera);
|
void renderLookatIndicator(glm::vec3 pointOfInterest);
|
||||||
void renderFollowIndicator();
|
void renderFollowIndicator();
|
||||||
void updateAvatar(float deltaTime);
|
void updateAvatar(float deltaTime);
|
||||||
void updateAvatars(float deltaTime, glm::vec3 mouseRayOrigin, glm::vec3 mouseRayDirection);
|
void updateAvatars(float deltaTime, glm::vec3 mouseRayOrigin, glm::vec3 mouseRayDirection);
|
||||||
|
@ -276,7 +276,7 @@ private:
|
||||||
void displaySide(Camera& whichCamera, bool selfAvatarOnly = false);
|
void displaySide(Camera& whichCamera, bool selfAvatarOnly = false);
|
||||||
void displayOverlay();
|
void displayOverlay();
|
||||||
void displayStats();
|
void displayStats();
|
||||||
void renderAvatars(Camera& whichCamera, bool selfAvatarOnly = false);
|
void renderAvatars(bool forceRenderHead, bool selfAvatarOnly = false);
|
||||||
void renderViewFrustum(ViewFrustum& viewFrustum);
|
void renderViewFrustum(ViewFrustum& viewFrustum);
|
||||||
|
|
||||||
void checkBandwidthMeterClick();
|
void checkBandwidthMeterClick();
|
||||||
|
|
|
@ -439,7 +439,7 @@ static TextRenderer* textRenderer() {
|
||||||
return renderer;
|
return renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Avatar::render(bool lookingInMirror, bool renderAvatarBalls) {
|
void Avatar::render(bool forceRenderHead, bool renderAvatarBalls) {
|
||||||
|
|
||||||
if (Application::getInstance()->getAvatar()->getHand().isRaveGloveActive()) {
|
if (Application::getInstance()->getAvatar()->getHand().isRaveGloveActive()) {
|
||||||
_hand.setRaveLights(RAVE_LIGHTS_AVATAR);
|
_hand.setRaveLights(RAVE_LIGHTS_AVATAR);
|
||||||
|
@ -455,7 +455,7 @@ void Avatar::render(bool lookingInMirror, bool renderAvatarBalls) {
|
||||||
Glower glower(_moving && glm::length(toTarget) > GLOW_DISTANCE ? 1.0f : 0.0f);
|
Glower glower(_moving && glm::length(toTarget) > GLOW_DISTANCE ? 1.0f : 0.0f);
|
||||||
|
|
||||||
// render body
|
// render body
|
||||||
renderBody(lookingInMirror, renderAvatarBalls);
|
renderBody(forceRenderHead, renderAvatarBalls);
|
||||||
|
|
||||||
// render sphere when far away
|
// render sphere when far away
|
||||||
const float MAX_ANGLE = 10.f;
|
const float MAX_ANGLE = 10.f;
|
||||||
|
@ -709,15 +709,15 @@ glm::quat Avatar::computeRotationFromBodyToWorldUp(float proportion) const {
|
||||||
return glm::angleAxis(angle * proportion, axis);
|
return glm::angleAxis(angle * proportion, axis);
|
||||||
}
|
}
|
||||||
|
|
||||||
float Avatar::getBallRenderAlpha(int ball, bool lookingInMirror) const {
|
float Avatar::getBallRenderAlpha(int ball, bool forceRenderHead) const {
|
||||||
return 1.0f;
|
return 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Avatar::renderBody(bool lookingInMirror, bool renderAvatarBalls) {
|
void Avatar::renderBody(bool forceRenderHead, bool renderAvatarBalls) {
|
||||||
|
|
||||||
if (_head.getVideoFace().isFullFrame()) {
|
if (_head.getVideoFace().isFullFrame()) {
|
||||||
// Render the full-frame video
|
// Render the full-frame video
|
||||||
float alpha = getBallRenderAlpha(BODY_BALL_HEAD_BASE, lookingInMirror);
|
float alpha = getBallRenderAlpha(BODY_BALL_HEAD_BASE, forceRenderHead);
|
||||||
if (alpha > 0.0f) {
|
if (alpha > 0.0f) {
|
||||||
_head.getVideoFace().render(1.0f);
|
_head.getVideoFace().render(1.0f);
|
||||||
}
|
}
|
||||||
|
@ -726,7 +726,7 @@ void Avatar::renderBody(bool lookingInMirror, bool renderAvatarBalls) {
|
||||||
glm::vec3 skinColor, darkSkinColor;
|
glm::vec3 skinColor, darkSkinColor;
|
||||||
getSkinColors(skinColor, darkSkinColor);
|
getSkinColors(skinColor, darkSkinColor);
|
||||||
for (int b = 0; b < NUM_AVATAR_BODY_BALLS; b++) {
|
for (int b = 0; b < NUM_AVATAR_BODY_BALLS; b++) {
|
||||||
float alpha = getBallRenderAlpha(b, lookingInMirror);
|
float alpha = getBallRenderAlpha(b, forceRenderHead);
|
||||||
|
|
||||||
// When we have leap hands, hide part of the arms.
|
// When we have leap hands, hide part of the arms.
|
||||||
if (_hand.getNumPalms() > 0) {
|
if (_hand.getNumPalms() > 0) {
|
||||||
|
@ -779,7 +779,7 @@ void Avatar::renderBody(bool lookingInMirror, bool renderAvatarBalls) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Render the body's voxels and head
|
// Render the body's voxels and head
|
||||||
float alpha = getBallRenderAlpha(BODY_BALL_HEAD_BASE, lookingInMirror);
|
float alpha = getBallRenderAlpha(BODY_BALL_HEAD_BASE, forceRenderHead);
|
||||||
if (alpha > 0.0f) {
|
if (alpha > 0.0f) {
|
||||||
if (!_skeletonModel.render(alpha)) {
|
if (!_skeletonModel.render(alpha)) {
|
||||||
_voxels.render(false);
|
_voxels.render(false);
|
||||||
|
@ -787,7 +787,7 @@ void Avatar::renderBody(bool lookingInMirror, bool renderAvatarBalls) {
|
||||||
_head.render(alpha, false);
|
_head.render(alpha, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_hand.render(lookingInMirror);
|
_hand.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Avatar::getSkinColors(glm::vec3& lighter, glm::vec3& darker) {
|
void Avatar::getSkinColors(glm::vec3& lighter, glm::vec3& darker) {
|
||||||
|
|
|
@ -141,7 +141,7 @@ public:
|
||||||
void init();
|
void init();
|
||||||
void simulate(float deltaTime, Transmitter* transmitter);
|
void simulate(float deltaTime, Transmitter* transmitter);
|
||||||
void follow(Avatar* leadingAvatar);
|
void follow(Avatar* leadingAvatar);
|
||||||
void render(bool lookingInMirror, bool renderAvatarBalls);
|
void render(bool forceRenderHead, bool renderAvatarBalls);
|
||||||
|
|
||||||
//setters
|
//setters
|
||||||
void setDisplayingLookatVectors(bool displayingLookatVectors) { _head.setRenderLookatVectors(displayingLookatVectors); }
|
void setDisplayingLookatVectors(bool displayingLookatVectors) { _head.setRenderLookatVectors(displayingLookatVectors); }
|
||||||
|
@ -255,8 +255,8 @@ private:
|
||||||
|
|
||||||
// private methods...
|
// private methods...
|
||||||
glm::vec3 calculateAverageEyePosition() { return _head.calculateAverageEyePosition(); } // get the position smack-dab between the eyes (for lookat)
|
glm::vec3 calculateAverageEyePosition() { return _head.calculateAverageEyePosition(); } // get the position smack-dab between the eyes (for lookat)
|
||||||
float getBallRenderAlpha(int ball, bool lookingInMirror) const;
|
float getBallRenderAlpha(int ball, bool forceRenderHead) const;
|
||||||
void renderBody(bool lookingInMirror, bool renderAvatarBalls);
|
void renderBody(bool forceRenderHead, bool renderAvatarBalls);
|
||||||
void initializeBodyBalls();
|
void initializeBodyBalls();
|
||||||
void resetBodyBalls();
|
void resetBodyBalls();
|
||||||
void updateHandMovementAndTouching(float deltaTime, bool enableHandMovement);
|
void updateHandMovementAndTouching(float deltaTime, bool enableHandMovement);
|
||||||
|
|
|
@ -24,7 +24,6 @@ Hand::Hand(Avatar* owningAvatar) :
|
||||||
_raveGloveInitialized(false),
|
_raveGloveInitialized(false),
|
||||||
_owningAvatar(owningAvatar),
|
_owningAvatar(owningAvatar),
|
||||||
_renderAlpha(1.0),
|
_renderAlpha(1.0),
|
||||||
_lookingInMirror(false),
|
|
||||||
_ballColor(0.0, 0.0, 0.4)
|
_ballColor(0.0, 0.0, 0.4)
|
||||||
{
|
{
|
||||||
// initialize all finger particle emitters with an invalid id as default
|
// initialize all finger particle emitters with an invalid id as default
|
||||||
|
@ -133,10 +132,9 @@ void Hand::setRaveGloveEffectsMode(QKeyEvent* event) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hand::render(bool lookingInMirror) {
|
void Hand::render() {
|
||||||
|
|
||||||
_renderAlpha = 1.0;
|
_renderAlpha = 1.0;
|
||||||
_lookingInMirror = lookingInMirror;
|
|
||||||
|
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::DisplayLeapHands)) {
|
if (Menu::getInstance()->isOptionChecked(MenuOption::DisplayLeapHands)) {
|
||||||
if (!isRaveGloveActive()) {
|
if (!isRaveGloveActive()) {
|
||||||
|
|
|
@ -50,7 +50,7 @@ public:
|
||||||
void init();
|
void init();
|
||||||
void reset();
|
void reset();
|
||||||
void simulate(float deltaTime, bool isMine);
|
void simulate(float deltaTime, bool isMine);
|
||||||
void render(bool lookingInMirror);
|
void render();
|
||||||
void renderRaveGloveStage();
|
void renderRaveGloveStage();
|
||||||
void setRaveLights(RaveLightsSetting setting);
|
void setRaveLights(RaveLightsSetting setting);
|
||||||
|
|
||||||
|
@ -75,7 +75,6 @@ private:
|
||||||
|
|
||||||
Avatar* _owningAvatar;
|
Avatar* _owningAvatar;
|
||||||
float _renderAlpha;
|
float _renderAlpha;
|
||||||
bool _lookingInMirror;
|
|
||||||
glm::vec3 _ballColor;
|
glm::vec3 _ballColor;
|
||||||
std::vector<HandBall> _leapFingerTipBalls;
|
std::vector<HandBall> _leapFingerTipBalls;
|
||||||
std::vector<HandBall> _leapFingerRootBalls;
|
std::vector<HandBall> _leapFingerRootBalls;
|
||||||
|
|
|
@ -485,7 +485,7 @@ static TextRenderer* textRenderer() {
|
||||||
return renderer;
|
return renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyAvatar::render(bool lookingInMirror, bool renderAvatarBalls) {
|
void MyAvatar::render(bool forceRenderHead, bool renderAvatarBalls) {
|
||||||
|
|
||||||
if (Application::getInstance()->getAvatar()->getHand().isRaveGloveActive()) {
|
if (Application::getInstance()->getAvatar()->getHand().isRaveGloveActive()) {
|
||||||
_hand.setRaveLights(RAVE_LIGHTS_AVATAR);
|
_hand.setRaveLights(RAVE_LIGHTS_AVATAR);
|
||||||
|
@ -495,7 +495,7 @@ void MyAvatar::render(bool lookingInMirror, bool renderAvatarBalls) {
|
||||||
renderDiskShadow(_position, glm::vec3(0.0f, 1.0f, 0.0f), _scale * 0.1f, 0.2f);
|
renderDiskShadow(_position, glm::vec3(0.0f, 1.0f, 0.0f), _scale * 0.1f, 0.2f);
|
||||||
|
|
||||||
// render body
|
// render body
|
||||||
renderBody(lookingInMirror, renderAvatarBalls);
|
renderBody(forceRenderHead, renderAvatarBalls);
|
||||||
|
|
||||||
// if this is my avatar, then render my interactions with the other avatar
|
// if this is my avatar, then render my interactions with the other avatar
|
||||||
_avatarTouch.render(Application::getInstance()->getCamera()->getPosition());
|
_avatarTouch.render(Application::getInstance()->getCamera()->getPosition());
|
||||||
|
@ -623,19 +623,19 @@ glm::vec3 MyAvatar::getEyeLevelPosition() const {
|
||||||
glm::vec3(0.0f, _pelvisToHeadLength + _scale * BODY_BALL_RADIUS_HEAD_BASE * EYE_UP_OFFSET, 0.0f);
|
glm::vec3(0.0f, _pelvisToHeadLength + _scale * BODY_BALL_RADIUS_HEAD_BASE * EYE_UP_OFFSET, 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
float MyAvatar::getBallRenderAlpha(int ball, bool lookingInMirror) const {
|
float MyAvatar::getBallRenderAlpha(int ball, bool forceRenderHead) const {
|
||||||
const float RENDER_OPAQUE_OUTSIDE = _scale * 0.25f; // render opaque if greater than this distance
|
const float RENDER_OPAQUE_OUTSIDE = _scale * 0.25f; // render opaque if greater than this distance
|
||||||
const float DO_NOT_RENDER_INSIDE = _scale * 0.25f; // do not render if less than this distance
|
const float DO_NOT_RENDER_INSIDE = _scale * 0.25f; // do not render if less than this distance
|
||||||
float distanceToCamera = glm::length(Application::getInstance()->getCamera()->getPosition() - _bodyBall[ball].position);
|
float distanceToCamera = glm::length(Application::getInstance()->getCamera()->getPosition() - _bodyBall[ball].position);
|
||||||
return (lookingInMirror) ? 1.0f : glm::clamp(
|
return (forceRenderHead) ? 1.0f : glm::clamp(
|
||||||
(distanceToCamera - DO_NOT_RENDER_INSIDE) / (RENDER_OPAQUE_OUTSIDE - DO_NOT_RENDER_INSIDE), 0.f, 1.f);
|
(distanceToCamera - DO_NOT_RENDER_INSIDE) / (RENDER_OPAQUE_OUTSIDE - DO_NOT_RENDER_INSIDE), 0.f, 1.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyAvatar::renderBody(bool lookingInMirror, bool renderAvatarBalls) {
|
void MyAvatar::renderBody(bool forceRenderHead, bool renderAvatarBalls) {
|
||||||
|
|
||||||
if (_head.getVideoFace().isFullFrame()) {
|
if (_head.getVideoFace().isFullFrame()) {
|
||||||
// Render the full-frame video
|
// Render the full-frame video
|
||||||
float alpha = getBallRenderAlpha(BODY_BALL_HEAD_BASE, lookingInMirror);
|
float alpha = getBallRenderAlpha(BODY_BALL_HEAD_BASE, forceRenderHead);
|
||||||
if (alpha > 0.0f) {
|
if (alpha > 0.0f) {
|
||||||
_head.getVideoFace().render(1.0f);
|
_head.getVideoFace().render(1.0f);
|
||||||
}
|
}
|
||||||
|
@ -644,7 +644,7 @@ void MyAvatar::renderBody(bool lookingInMirror, bool renderAvatarBalls) {
|
||||||
glm::vec3 skinColor, darkSkinColor;
|
glm::vec3 skinColor, darkSkinColor;
|
||||||
getSkinColors(skinColor, darkSkinColor);
|
getSkinColors(skinColor, darkSkinColor);
|
||||||
for (int b = 0; b < NUM_AVATAR_BODY_BALLS; b++) {
|
for (int b = 0; b < NUM_AVATAR_BODY_BALLS; b++) {
|
||||||
float alpha = getBallRenderAlpha(b, lookingInMirror);
|
float alpha = getBallRenderAlpha(b, forceRenderHead);
|
||||||
|
|
||||||
// When we have leap hands, hide part of the arms.
|
// When we have leap hands, hide part of the arms.
|
||||||
if (_hand.getNumPalms() > 0) {
|
if (_hand.getNumPalms() > 0) {
|
||||||
|
@ -710,12 +710,12 @@ void MyAvatar::renderBody(bool lookingInMirror, bool renderAvatarBalls) {
|
||||||
if (!_skeletonModel.render(1.0f)) {
|
if (!_skeletonModel.render(1.0f)) {
|
||||||
_voxels.render(false);
|
_voxels.render(false);
|
||||||
}
|
}
|
||||||
float alpha = getBallRenderAlpha(BODY_BALL_HEAD_BASE, lookingInMirror);
|
float alpha = getBallRenderAlpha(BODY_BALL_HEAD_BASE, forceRenderHead);
|
||||||
if (alpha > 0.0f) {
|
if (alpha > 0.0f) {
|
||||||
_head.render(alpha, true);
|
_head.render(alpha, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_hand.render(lookingInMirror);
|
_hand.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyAvatar::updateThrust(float deltaTime, Transmitter * transmitter) {
|
void MyAvatar::updateThrust(float deltaTime, Transmitter * transmitter) {
|
||||||
|
|
|
@ -20,7 +20,7 @@ public:
|
||||||
void reset();
|
void reset();
|
||||||
void simulate(float deltaTime, Transmitter* transmitter);
|
void simulate(float deltaTime, Transmitter* transmitter);
|
||||||
void updateFromGyrosAndOrWebcam(float pitchFromTouch, bool turnWithHead);
|
void updateFromGyrosAndOrWebcam(float pitchFromTouch, bool turnWithHead);
|
||||||
void render(bool lookingInMirror, bool renderAvatarBalls);
|
void render(bool forceRenderHead, bool renderAvatarBalls);
|
||||||
void renderScreenTint(ScreenTintLayer layer);
|
void renderScreenTint(ScreenTintLayer layer);
|
||||||
|
|
||||||
// setters
|
// setters
|
||||||
|
@ -84,8 +84,8 @@ private:
|
||||||
int _moveTargetStepCounter;
|
int _moveTargetStepCounter;
|
||||||
|
|
||||||
// private methods
|
// private methods
|
||||||
float getBallRenderAlpha(int ball, bool lookingInMirror) const;
|
float getBallRenderAlpha(int ball, bool forceRenderHead) const;
|
||||||
void renderBody(bool lookingInMirror, bool renderAvatarBalls);
|
void renderBody(bool forceRenderHead, bool renderAvatarBalls);
|
||||||
void updateThrust(float deltaTime, Transmitter * transmitter);
|
void updateThrust(float deltaTime, Transmitter * transmitter);
|
||||||
void updateHandMovementAndTouching(float deltaTime, bool enableHandMovement);
|
void updateHandMovementAndTouching(float deltaTime, bool enableHandMovement);
|
||||||
void updateAvatarCollisions(float deltaTime);
|
void updateAvatarCollisions(float deltaTime);
|
||||||
|
|
Loading…
Reference in a new issue