From d20caa6380bbdbe7e44873e7765b322448885e72 Mon Sep 17 00:00:00 2001 From: Agnes Heppich Date: Wed, 19 Dec 2018 19:11:38 -0500 Subject: [PATCH] Property for rotation --- modules/base/rendering/renderablemodel.cpp | 22 +++++++++++++++++++++- modules/base/rendering/renderablemodel.h | 8 +++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/modules/base/rendering/renderablemodel.cpp b/modules/base/rendering/renderablemodel.cpp index b0a936449f..61c0d626d8 100644 --- a/modules/base/rendering/renderablemodel.cpp +++ b/modules/base/rendering/renderablemodel.cpp @@ -92,6 +92,12 @@ namespace { "all other transformations are applied." }; + constexpr openspace::properties::Property::PropertyInfo RotationVecInfo = { + "RotationVec", + "Rotation Vector", + "Rotation vector " + }; + constexpr openspace::properties::Property::PropertyInfo LightSourcesInfo = { "LightSources", "Light Sources", @@ -149,6 +155,12 @@ documentation::Documentation RenderableModel::Documentation() { Optional::Yes, ModelTransformInfo.description }, + { + RotationVecInfo.identifier, + new DoubleVector3Verifier, + Optional::Yes, + RotationVecInfo.description + }, { LightSourcesInfo.identifier, new TableVerifier({ @@ -172,7 +184,8 @@ RenderableModel::RenderableModel(const ghoul::Dictionary& dictionary) , _diffuseIntensity(DiffuseIntensityInfo, 1.f, 0.f, 1.f) , _specularIntensity(SpecularIntensityInfo, 1.f, 0.f, 1.f) , _performShading(ShadingInfo, true) - , _modelTransform(ModelTransformInfo, glm::mat3(1.f)) + , _modelTransform(ModelTransformInfo, glm::dmat3(1.0), glm::dmat3(-1.0), glm::dmat3(1.0)) + , _rotationVec(RotationVecInfo, glm::dvec3(3.14), glm::dvec3(-3.14), glm::dvec3(2*(3.1415))) , _lightSourcePropertyOwner({ "LightSources", "Light Sources" }) { documentation::testSpecificationAndThrow( @@ -238,6 +251,13 @@ RenderableModel::RenderableModel(const ghoul::Dictionary& dictionary) addProperty(_diffuseIntensity); addProperty(_specularIntensity); addProperty(_performShading); + addProperty(_modelTransform); + addProperty(_rotationVec); + + _rotationVec.onChange([this]() { + _modelTransform = glm::mat4_cast( + glm::quat(_rotationVec)); + }); } bool RenderableModel::isReady() const { diff --git a/modules/base/rendering/renderablemodel.h b/modules/base/rendering/renderablemodel.h index 9a015d02a5..b231b7280a 100644 --- a/modules/base/rendering/renderablemodel.h +++ b/modules/base/rendering/renderablemodel.h @@ -33,6 +33,10 @@ #include #include #include +#include +#include + + namespace ghoul::opengl { class ProgramObject; @@ -73,11 +77,13 @@ private: properties::StringProperty _colorTexturePath; properties::FloatProperty _ambientIntensity; + properties::FloatProperty _diffuseIntensity; properties::FloatProperty _specularIntensity; properties::BoolProperty _performShading; - properties::Mat3Property _modelTransform; + properties::DMat4Property _modelTransform; + properties::Vec3Property _rotationVec; ghoul::opengl::ProgramObject* _program = nullptr; UniformCache(opacity, nLightSources, lightDirectionsViewSpace, lightIntensities,