mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-05-29 17:20:27 +02:00
don't render avatar boundary shapes in first person
This commit is contained in:
parent
2fdb8d935b
commit
0ad841edfb
5 changed files with 26 additions and 11 deletions
|
@ -228,14 +228,18 @@ void Avatar::render(const glm::vec3& cameraPosition, RenderMode renderMode) {
|
||||||
_skeletonModel.renderJointCollisionShapes(0.7f);
|
_skeletonModel.renderJointCollisionShapes(0.7f);
|
||||||
}
|
}
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::RenderHeadCollisionShapes)) {
|
if (Menu::getInstance()->isOptionChecked(MenuOption::RenderHeadCollisionShapes)) {
|
||||||
getHead()->getFaceModel().updateShapePositions();
|
if (shouldRenderHead(cameraPosition, renderMode)) {
|
||||||
getHead()->getFaceModel().renderJointCollisionShapes(0.7f);
|
getHead()->getFaceModel().updateShapePositions();
|
||||||
|
getHead()->getFaceModel().renderJointCollisionShapes(0.7f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::RenderBoundingCollisionShapes)) {
|
if (Menu::getInstance()->isOptionChecked(MenuOption::RenderBoundingCollisionShapes)) {
|
||||||
getHead()->getFaceModel().updateShapePositions();
|
if (shouldRenderHead(cameraPosition, renderMode)) {
|
||||||
getHead()->getFaceModel().renderBoundingCollisionShapes(0.7f);
|
getHead()->getFaceModel().updateShapePositions();
|
||||||
_skeletonModel.updateShapePositions();
|
getHead()->getFaceModel().renderBoundingCollisionShapes(0.7f);
|
||||||
_skeletonModel.renderBoundingCollisionShapes(0.7f);
|
_skeletonModel.updateShapePositions();
|
||||||
|
_skeletonModel.renderBoundingCollisionShapes(0.7f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// quick check before falling into the code below:
|
// quick check before falling into the code below:
|
||||||
|
@ -344,6 +348,10 @@ void Avatar::renderBody(RenderMode renderMode) {
|
||||||
getHand()->render(false);
|
getHand()->render(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Avatar::shouldRenderHead(const glm::vec3& cameraPosition, RenderMode renderMode) const {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void Avatar::updateJointMappings() {
|
void Avatar::updateJointMappings() {
|
||||||
// no-op; joint mappings come from skeleton model
|
// no-op; joint mappings come from skeleton model
|
||||||
}
|
}
|
||||||
|
|
|
@ -195,6 +195,7 @@ protected:
|
||||||
|
|
||||||
void renderDisplayName();
|
void renderDisplayName();
|
||||||
virtual void renderBody(RenderMode renderMode);
|
virtual void renderBody(RenderMode renderMode);
|
||||||
|
virtual bool shouldRenderHead(const glm::vec3& cameraPosition, RenderMode renderMode) const;
|
||||||
|
|
||||||
virtual void updateJointMappings();
|
virtual void updateJointMappings();
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ public:
|
||||||
|
|
||||||
const bool getReturnToCenter() const { return _returnHeadToCenter; } // Do you want head to try to return to center (depends on interface detected)
|
const bool getReturnToCenter() const { return _returnHeadToCenter; } // Do you want head to try to return to center (depends on interface detected)
|
||||||
float getAverageLoudness() const { return _averageLoudness; }
|
float getAverageLoudness() const { return _averageLoudness; }
|
||||||
glm::vec3 calculateAverageEyePosition() { return _leftEyePosition + (_rightEyePosition - _leftEyePosition ) * ONE_HALF; }
|
glm::vec3 calculateAverageEyePosition() const { return _leftEyePosition + (_rightEyePosition - _leftEyePosition ) * ONE_HALF; }
|
||||||
|
|
||||||
/// \return the point about which scaling occurs.
|
/// \return the point about which scaling occurs.
|
||||||
glm::vec3 getScalePivot() const;
|
glm::vec3 getScalePivot() const;
|
||||||
|
|
|
@ -647,15 +647,20 @@ void MyAvatar::renderBody(RenderMode renderMode) {
|
||||||
_skeletonModel.render(1.0f, modelRenderMode);
|
_skeletonModel.render(1.0f, modelRenderMode);
|
||||||
|
|
||||||
// Render head so long as the camera isn't inside it
|
// Render head so long as the camera isn't inside it
|
||||||
const float RENDER_HEAD_CUTOFF_DISTANCE = 0.50f;
|
if (shouldRenderHead(Application::getInstance()->getCamera()->getPosition(), renderMode)) {
|
||||||
Camera* myCamera = Application::getInstance()->getCamera();
|
|
||||||
if (renderMode != NORMAL_RENDER_MODE || (glm::length(myCamera->getPosition() - getHead()->calculateAverageEyePosition()) >
|
|
||||||
RENDER_HEAD_CUTOFF_DISTANCE * _scale)) {
|
|
||||||
getHead()->render(1.0f, modelRenderMode);
|
getHead()->render(1.0f, modelRenderMode);
|
||||||
}
|
}
|
||||||
getHand()->render(true);
|
getHand()->render(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const float RENDER_HEAD_CUTOFF_DISTANCE = 0.50f;
|
||||||
|
|
||||||
|
bool MyAvatar::shouldRenderHead(const glm::vec3& cameraPosition, RenderMode renderMode) const {
|
||||||
|
const Head* head = getHead();
|
||||||
|
return (renderMode != NORMAL_RENDER_MODE) ||
|
||||||
|
(glm::length(cameraPosition - head->calculateAverageEyePosition()) > RENDER_HEAD_CUTOFF_DISTANCE * _scale);
|
||||||
|
}
|
||||||
|
|
||||||
void MyAvatar::updateThrust(float deltaTime) {
|
void MyAvatar::updateThrust(float deltaTime) {
|
||||||
//
|
//
|
||||||
// Gather thrust information from keyboard and sensors to apply to avatar motion
|
// Gather thrust information from keyboard and sensors to apply to avatar motion
|
||||||
|
|
|
@ -41,6 +41,7 @@ public:
|
||||||
|
|
||||||
void render(const glm::vec3& cameraPosition, RenderMode renderMode = NORMAL_RENDER_MODE);
|
void render(const glm::vec3& cameraPosition, RenderMode renderMode = NORMAL_RENDER_MODE);
|
||||||
void renderBody(RenderMode renderMode);
|
void renderBody(RenderMode renderMode);
|
||||||
|
bool shouldRenderHead(const glm::vec3& cameraPosition, RenderMode renderMode) const;
|
||||||
void renderDebugBodyPoints();
|
void renderDebugBodyPoints();
|
||||||
void renderHeadMouse() const;
|
void renderHeadMouse() const;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue