Update updatestructures to have transform with translation, rotation and scale.

This commit is contained in:
Kalle Bladin
2016-08-18 16:59:51 -04:00
parent ae1f8e457b
commit 628f8b479f
10 changed files with 37 additions and 44 deletions
+4 -4
View File
@@ -209,13 +209,13 @@ void RenderableModel::render(const RenderData& data) {
// Model transform and view transform needs to be in double precision
glm::dmat4 modelTransform =
glm::translate(glm::dmat4(1.0), data.positionVec3) * // Translation
glm::dmat4(data.rotation) * // Spice rotation
glm::dmat4(glm::scale(glm::dmat4(1.0), glm::dvec3(data.scale)));
glm::translate(glm::dmat4(1.0), data.modelTransform.translation) * // Translation
glm::dmat4(data.modelTransform.rotation) * // Spice rotation
glm::dmat4(glm::scale(glm::dmat4(1.0), glm::dvec3(data.modelTransform.scale)));
debugModelRotation; // debug model rotation controlled from GUI
glm::dmat4 modelViewTransform = data.camera.combinedViewMatrix() * modelTransform;
glm::vec3 directionToSun = glm::normalize(_sunPos - data.positionVec3);
glm::vec3 directionToSun = glm::normalize(_sunPos - data.modelTransform.translation);
glm::vec3 directionToSunViewSpace = glm::mat3(data.camera.combinedViewMatrix()) * directionToSun;
_programObject->setUniform("transparency", _alpha);
+1 -1
View File
@@ -151,7 +151,7 @@ void RenderablePath::render(const RenderData& data) {
_programObject->activate();
// Calculate variables to be used as uniform variables in shader
glm::dvec3 bodyPosition = data.positionVec3;
glm::dvec3 bodyPosition = data.modelTransform.translation;
// Model transform and view transform needs to be in double precision
glm::dmat4 modelTransform =
+1 -1
View File
@@ -162,7 +162,7 @@ void RenderableTrail::render(const RenderData& data) {
//setPscUniforms(*_programObject.get(), data.camera, data.position);
// Calculate variables to be used as uniform variables in shader
glm::dvec3 bodyPosition = data.positionVec3;
glm::dvec3 bodyPosition = data.modelTransform.translation;
// Model transform and view transform needs to be in double precision
glm::dmat4 modelTransform =
@@ -231,9 +231,10 @@ namespace openspace {
}
void ChunkedLodGlobe::update(const UpdateData& data) {
glm::dmat4 translation = glm::translate(glm::dmat4(1.0), data.position);
glm::dmat4 rotation = glm::dmat4(data.rotation);
glm::dmat4 scaling = glm::scale(glm::dmat4(1.0), glm::dvec3(data.scale, data.scale, data.scale));
glm::dmat4 translation = glm::translate(glm::dmat4(1.0), data.modelTransform.translation);
glm::dmat4 rotation = glm::dmat4(data.modelTransform.rotation);
glm::dmat4 scaling = glm::scale(glm::dmat4(1.0),
glm::dvec3(data.modelTransform.scale, data.modelTransform.scale, data.modelTransform.scale));
_modelTransform = translation * rotation * scaling;
_inverseModelTransform = glm::inverse(_modelTransform);
@@ -559,8 +559,9 @@ void RenderableFov::render(const RenderData& data) {
// setup the data to the shader
// Model transform and view transform needs to be in double precision
glm::dmat4 modelTransform =
glm::translate(glm::dmat4(1.0), data.positionVec3) * // Translation
glm::dmat4(data.rotation);
glm::translate(glm::dmat4(1.0), data.modelTransform.translation) * // Translation
glm::dmat4(data.modelTransform.rotation) *
glm::scale(glm::dmat4(1.0), glm::dvec3(data.modelTransform.scale));
glm::mat4 modelViewProjectionTransform =
data.camera.projectionMatrix() *
glm::mat4(data.camera.combinedViewMatrix() *
@@ -176,12 +176,13 @@ void RenderableModelProjection::render(const RenderData& data) {
_imageTimes.clear();
// Calculate variables to be used as uniform variables in shader
glm::dvec3 bodyPosition = data.positionVec3;
glm::dvec3 bodyPosition = data.modelTransform.translation;
// Model transform and view transform needs to be in double precision
glm::dmat4 modelTransform =
glm::translate(glm::dmat4(1.0), bodyPosition) * // Translation
glm::dmat4(_stateMatrix); // Rotation
glm::translate(glm::dmat4(1.0), data.modelTransform.translation) * // Translation
glm::dmat4(data.modelTransform.rotation) * // Rotation
glm::scale(glm::dmat4(1.0), glm::dvec3(data.modelTransform.scale)); // Scale
glm::dmat4 modelViewTransform = data.camera.combinedViewMatrix() * modelTransform;
glm::vec3 directionToSun = glm::normalize(_sunPosition.vec3() - glm::vec3(bodyPosition));
glm::vec3 directionToSunViewSpace = glm::mat3(data.camera.combinedViewMatrix()) * directionToSun;
@@ -135,7 +135,7 @@ void RenderablePlaneProjection::render(const RenderData& data) {
_shader->activate();
glm::dmat4 modelTransform =
glm::translate(glm::dmat4(1.0), data.positionVec3) * // Translation
glm::translate(glm::dmat4(1.0), data.modelTransform.translation) * // Translation
glm::dmat4(_stateMatrix);
glm::mat4 modelViewProjectionTransform =
data.camera.projectionMatrix() *