From 72e3d85f1cc38ef1d067d5fae77522dd7a3e13f0 Mon Sep 17 00:00:00 2001 From: Sebastian Piwell Date: Wed, 20 Apr 2016 15:27:19 -0400 Subject: [PATCH] Min and max coordinates in cygnet metadata --- modules/iswa/rendering/dataplane.cpp | 3 +- modules/iswa/rendering/iswacygnet.cpp | 30 +++++++-- modules/iswa/util/iswamanager.cpp | 94 ++++++++++++--------------- modules/iswa/util/iswamanager.h | 4 +- 4 files changed, 70 insertions(+), 61 deletions(-) diff --git a/modules/iswa/rendering/dataplane.cpp b/modules/iswa/rendering/dataplane.cpp index 10db8937de..cdd806e47a 100644 --- a/modules/iswa/rendering/dataplane.cpp +++ b/modules/iswa/rendering/dataplane.cpp @@ -305,7 +305,6 @@ float* DataPlane::readData(){ std::vector max; std::vector> optionValues; - for(int i=0; i < selectedOptions.size(); i++){ min.push_back(std::numeric_limits::max()); max.push_back(std::numeric_limits::min()); @@ -336,6 +335,8 @@ float* DataPlane::readData(){ min[i] = std::min(min[i], optionValues[i][numValues]); max[i] = std::max(max[i], optionValues[i][numValues]); + + } numValues++; } diff --git a/modules/iswa/rendering/iswacygnet.cpp b/modules/iswa/rendering/iswacygnet.cpp index 6283d9dceb..a855a79c46 100644 --- a/modules/iswa/rendering/iswacygnet.cpp +++ b/modules/iswa/rendering/iswacygnet.cpp @@ -42,22 +42,36 @@ ISWACygnet::ISWACygnet(const ghoul::Dictionary& dictionary) // dict.getValue can only set strings in _data directly float renderableId; - glm::vec3 renderableScale; - glm::vec3 renderableOffset; + glm::vec3 min, max; glm::vec2 spatialScale; dictionary.getValue("Id", renderableId); - dictionary.getValue("Scale", renderableScale); - dictionary.getValue("Offset", renderableOffset); dictionary.getValue("SpatialScale", spatialScale); + dictionary.getValue("Min", min); + dictionary.getValue("Max", max); + dictionary.getValue("Frame",_data->frame); + + _data->id = (int) renderableId; - _data->offset = renderableOffset; - _data->scale = renderableScale; _data->spatialScale = spatialScale; + _data->min = min; + _data->max = max; + + _data->scale = glm::vec3( + (max.x - min.x), + (max.y - min.y), + (max.z - min.z) + ); + + _data->offset = glm::vec3( + (min.x + (std::abs(min.x)+std::abs(max.x))/2.0f), + (min.y + (std::abs(min.y)+std::abs(max.y))/2.0f), + (min.z + (std::abs(min.z)+std::abs(max.z))/2.0f) + ); + // dictionary.getValue("Path",_data->path); // dictionary.getValue("Parent",_data->parent); - dictionary.getValue("Frame",_data->frame); // addProperty(_enabled); addProperty(_updateInterval); @@ -66,6 +80,8 @@ ISWACygnet::ISWACygnet(const ghoul::Dictionary& dictionary) // std::cout << _data->id << std::endl; // std::cout << std::to_string(_data->offset) << std::endl; // std::cout << std::to_string(_data->scale) << std::endl; + // std::cout << std::to_string(_data->max) << std::endl; + // std::cout << std::to_string(_data->min) << std::endl; // std::cout << _data->path << std::endl; // std::cout << _data->parent << std::endl; // std::cout << _data->frame << std::endl; diff --git a/modules/iswa/util/iswamanager.cpp b/modules/iswa/util/iswamanager.cpp index 270ff5acbe..bf13f40541 100644 --- a/modules/iswa/util/iswamanager.cpp +++ b/modules/iswa/util/iswamanager.cpp @@ -220,34 +220,25 @@ namespace openspace{ std::string parent = j["Central Body"]; std::string frame = j["Coordinates"]; - int xmax = j["Plot XMAX"]; - int ymax = j["Plot YMAX"]; - int zmax = j["Plot ZMAX"]; - int xmin = j["Plot XMIN"]; - int ymin = j["Plot YMIN"]; - int zmin = j["Plot ZMIN"]; + glm::vec3 max( + j["Plot XMAX"], + j["Plot YMAX"], + j["Plot ZMAX"] + ); + + glm::vec3 min( + j["Plot XMIN"], + j["Plot YMIN"], + j["Plot ZMIN"] + ); glm::vec2 spatialScale(1, 10); - - // float spatScale=1, scalew=10; std::string spatial = j["Spatial Scale (Custom)"]; if(spatial == "R_E"){ spatialScale.x = 6.371f; spatialScale.y = 6; } - glm::vec3 scale( - (xmax-xmin), - (ymax-ymin), - (zmax-zmin) - ); - - glm::vec3 offset ( - (xmin + (std::abs(xmin)+std::abs(xmax))/2.0f), - (ymin + (std::abs(ymin)+std::abs(ymax))/2.0f), - (zmin + (std::abs(zmin)+std::abs(zmax))/2.0f) - ); - std::string table = "{" "Name = '" + type + std::to_string(id) +"' , " "Parent = '" + parent + "', " @@ -255,51 +246,50 @@ namespace openspace{ "Type = '" + type + "', " "Id = " + std::to_string(id) + ", " "Frame = '" + frame + "' , " - "Scale = " + std::to_string(scale) + ", " + "Min = " + std::to_string(min) + ", " + "Max = " + std::to_string(max) + ", " "SpatialScale = " + std::to_string(spatialScale) + ", " - "Offset = " + std::to_string(offset) + "}" "}" ; // std::cout << table << std::endl; - // ghoul::Dictionary dic; return table; } return ""; } - std::string ISWAManager::parseKWToLuaTable(std::string kwPath){ - - if(kwPath != ""){ - const std::string& extension = ghoul::filesystem::File(absPath(kwPath)).fileExtension(); - if(extension == "cdf"){ - KameleonWrapper kw = KameleonWrapper(absPath(kwPath)); + // std::string ISWAManager::parseKWToLuaTable(std::string kwPath){ + // //NEED TO REWRITE IF USED AGAIN + // if(kwPath != ""){ + // const std::string& extension = ghoul::filesystem::File(absPath(kwPath)).fileExtension(); + // if(extension == "cdf"){ + // KameleonWrapper kw = KameleonWrapper(absPath(kwPath)); - std::string parent = kw.getParent(); - std::string frame = kw.getFrame(); - glm::vec4 scale = kw.getModelScaleScaled(); - glm::vec4 offset = kw.getModelBarycenterOffsetScaled(); + // std::string parent = kw.getParent(); + // std::string frame = kw.getFrame(); + // glm::vec4 scale = kw.getModelScaleScaled(); + // glm::vec4 offset = kw.getModelBarycenterOffsetScaled(); - std::string table = "{" - "Name = 'DataPlane'," - "Parent = '" + parent + "', " - "Renderable = {" - "Type = 'DataPlane', " - "Id = 0 ," - "Frame = '" + frame + "' , " - "Scale = " + std::to_string(scale) + ", " - "Offset = " + std::to_string(offset) + ", " - "kwPath = '" + kwPath + "'" - "}" - "}" - ; - // std::cout << table << std::endl; - return table; - } - } - return ""; - } + // std::string table = "{" + // "Name = 'DataPlane'," + // "Parent = '" + parent + "', " + // "Renderable = {" + // "Type = 'DataPlane', " + // "Id = 0 ," + // "Frame = '" + frame + "' , " + // "Scale = " + std::to_string(scale) + ", " + // "Offset = " + std::to_string(offset) + ", " + // "kwPath = '" + kwPath + "'" + // "}" + // "}" + // ; + // // std::cout << table << std::endl; + // return table; + // } + // } + // return ""; + // } //Create KameleonPlane? // void ISWAManager::createDataPlane(std::string kwPath){ diff --git a/modules/iswa/util/iswamanager.h b/modules/iswa/util/iswamanager.h index f6e1f13712..0442b7c448 100644 --- a/modules/iswa/util/iswamanager.h +++ b/modules/iswa/util/iswamanager.h @@ -49,6 +49,8 @@ struct Metadata { std::string path; std::string parent; std::string frame; + glm::vec3 min; + glm::vec3 max; glm::vec3 offset; glm::vec3 scale; glm::vec2 spatialScale; @@ -93,7 +95,7 @@ private: std::shared_ptr downloadMetadata(int id); std::string getDictionaryTable(int id, std::string path); std::string parseJSONToLuaTable(int id, std::string json, std::string type); - std::string parseKWToLuaTable(std::string kwPath); + // std::string parseKWToLuaTable(std::string kwPath); // void createDataPlane(std::string kwPath); // void createTexturePlane(int id, std::string json);