From 9b3d12dfeb90b9636547b97125abeb222ebceee2 Mon Sep 17 00:00:00 2001 From: Anakin Date: Fri, 2 Dec 2016 12:10:52 +0100 Subject: [PATCH] scale everything to 1, cloth not displayed completely, corvette is not displayed why? --- MshViewer/Header/OpenGLController.h | 2 +- MshViewer/Source/OpenGlController.cpp | 8 +++++++- MshViewer/main.cpp | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/MshViewer/Header/OpenGLController.h b/MshViewer/Header/OpenGLController.h index 5e781c3..8413dca 100644 --- a/MshViewer/Header/OpenGLController.h +++ b/MshViewer/Header/OpenGLController.h @@ -81,7 +81,7 @@ private: float fRotationZ = 0; double dTranslationX = 0; double dTranslationY = 0; - double dTranslationZ = 5; + double dTranslationZ = 3; // ======================================== diff --git a/MshViewer/Source/OpenGlController.cpp b/MshViewer/Source/OpenGlController.cpp index 7ef12ee..d9b020a 100644 --- a/MshViewer/Source/OpenGlController.cpp +++ b/MshViewer/Source/OpenGlController.cpp @@ -243,13 +243,19 @@ glm::mat4 OpenGLController::getMVPMatrix(unsigned int index) m4x4ModelRot = glm::rotate(m4x4ModelRot, fRotationY, glm::vec3(0, 1, 0)); m4x4ModelRot = glm::rotate(m4x4ModelRot, fRotationZ, glm::vec3(0, 0, 1)); + // move to center glm::mat4 m4x4ModelCenter = glm::translate( glm::mat4(1.0f), glm::vec3(-sceneBoundingBox.center[0], -sceneBoundingBox.center[1], -sceneBoundingBox.center[2]) ); + //scale to 1 + float maxExtent = max(max(sceneBoundingBox.extents[0], sceneBoundingBox.extents[1]), sceneBoundingBox.extents[2]); + glm::mat4 m4x4Normalize = glm::mat4(1.0f); + m4x4Normalize = glm::scale(m4x4Normalize, glm::vec3(1/maxExtent, 1 / maxExtent, 1 / maxExtent)); + // Return MVP - return m4x4Projection * m4x4View * m4x4ModelRot * m4x4ModelCenter * getModelMatrix(index); + return m4x4Projection * m4x4View * m4x4ModelRot * m4x4Normalize * m4x4ModelCenter * getModelMatrix(index); } diff --git a/MshViewer/main.cpp b/MshViewer/main.cpp index bc0673e..680742b 100644 --- a/MshViewer/main.cpp +++ b/MshViewer/main.cpp @@ -17,7 +17,7 @@ int main(int argc, char** argv) else scene = OpenGLController::getInstance(); - scene->loadMsh("..\\Release\\Msh\\multiModTex.msh"); + scene->loadMsh("..\\Release\\Msh\\quadPoly.msh"); do { scene->updateScene();