diff --git a/data/scene/iswa/tfs/autumn.tf b/data/scene/iswa/tfs/autumn.tf new file mode 100644 index 0000000000..e27f48eb87 --- /dev/null +++ b/data/scene/iswa/tfs/autumn.tf @@ -0,0 +1 @@ +${SCENE}/iswa/tfs/colormap_autumn.png \ No newline at end of file diff --git a/data/scene/iswa/transferfunctions/blue.jpg b/data/scene/iswa/tfs/blue.jpg similarity index 100% rename from data/scene/iswa/transferfunctions/blue.jpg rename to data/scene/iswa/tfs/blue.jpg diff --git a/data/scene/iswa/tfs/colormap_autumn.png b/data/scene/iswa/tfs/colormap_autumn.png new file mode 100644 index 0000000000..eed9a47e01 Binary files /dev/null and b/data/scene/iswa/tfs/colormap_autumn.png differ diff --git a/data/scene/iswa/tfs/colormap_hot.jpg b/data/scene/iswa/tfs/colormap_hot.jpg new file mode 100644 index 0000000000..d3ec159437 Binary files /dev/null and b/data/scene/iswa/tfs/colormap_hot.jpg differ diff --git a/data/scene/iswa/tfs/colormap_hot.png b/data/scene/iswa/tfs/colormap_hot.png new file mode 100644 index 0000000000..8112fab6b1 Binary files /dev/null and b/data/scene/iswa/tfs/colormap_hot.png differ diff --git a/data/scene/iswa/transferfunctions/colormap_parula.jpg b/data/scene/iswa/tfs/colormap_parula.jpg similarity index 100% rename from data/scene/iswa/transferfunctions/colormap_parula.jpg rename to data/scene/iswa/tfs/colormap_parula.jpg diff --git a/data/scene/iswa/tfs/colormap_parula.png b/data/scene/iswa/tfs/colormap_parula.png new file mode 100644 index 0000000000..8e296ed05f Binary files /dev/null and b/data/scene/iswa/tfs/colormap_parula.png differ diff --git a/data/scene/iswa/transferfunctions/green.jpg b/data/scene/iswa/tfs/green.jpg similarity index 100% rename from data/scene/iswa/transferfunctions/green.jpg rename to data/scene/iswa/tfs/green.jpg diff --git a/data/scene/iswa/tfs/hot.tf b/data/scene/iswa/tfs/hot.tf new file mode 100644 index 0000000000..3d030ecda9 --- /dev/null +++ b/data/scene/iswa/tfs/hot.tf @@ -0,0 +1 @@ +${SCENE}/iswa/tfs/colormap_hot.jpg \ No newline at end of file diff --git a/data/scene/iswa/tfs/parula.tf b/data/scene/iswa/tfs/parula.tf new file mode 100644 index 0000000000..85b2ba6e8c --- /dev/null +++ b/data/scene/iswa/tfs/parula.tf @@ -0,0 +1 @@ +${SCENE}/iswa/tfs/colormap_parula.jpg \ No newline at end of file diff --git a/data/scene/iswa/transferfunctions/red.jpg b/data/scene/iswa/tfs/red.jpg similarity index 100% rename from data/scene/iswa/transferfunctions/red.jpg rename to data/scene/iswa/tfs/red.jpg diff --git a/data/scene/iswa/tfs/rgb.tf b/data/scene/iswa/tfs/rgb.tf new file mode 100644 index 0000000000..a238de5401 --- /dev/null +++ b/data/scene/iswa/tfs/rgb.tf @@ -0,0 +1,3 @@ +${SCENE}/iswa/tfs/red.jpg +${SCENE}/iswa/tfs/green.jpg +${SCENE}/iswa/tfs/blue.jpg \ No newline at end of file diff --git a/modules/iswa/rendering/dataplane.cpp b/modules/iswa/rendering/dataplane.cpp index a78fbe8f44..a7d5bc00e4 100644 --- a/modules/iswa/rendering/dataplane.cpp +++ b/modules/iswa/rendering/dataplane.cpp @@ -21,8 +21,9 @@ // * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * // * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * // ****************************************************************************************/ - #include + +#include #include #include #include @@ -31,6 +32,7 @@ #include #include #include +#include namespace { const std::string _loggerCat = "DataPlane"; @@ -40,13 +42,12 @@ namespace openspace { DataPlane::DataPlane(const ghoul::Dictionary& dictionary) :CygnetPlane(dictionary) - ,_dataOptions("dataOptions", "Data Options") - ,_normValues("normValues", "Normalize Values", glm::vec2(1.0,1.0), glm::vec2(0), glm::vec2(5.0)) - ,_backgroundValues("backgroundValues", "Background Values", glm::vec2(0.0), glm::vec2(0), glm::vec2(1.0)) ,_useLog("useLog","Use Logarithm", false) ,_useHistogram("_useHistogram", "Use Histogram", true) - ,_useMultipleTf("_useMultipleTf","Use Multiple transferfunctions", false) - // ,_averageValues("averageValues", "Average values", false) + ,_normValues("normValues", "Normalize Values", glm::vec2(1.0,1.0), glm::vec2(0), glm::vec2(5.0)) + ,_backgroundValues("backgroundValues", "Background Values", glm::vec2(0.0), glm::vec2(0), glm::vec2(1.0)) + ,_transferFunctionsFile("transferfunctions", "Transfer Functions", "${SCENE}/iswa/tfs/parula.tf") + ,_dataOptions("dataOptions", "Data Options") // ,_colorbar(nullptr) { std::string name; @@ -55,20 +56,18 @@ DataPlane::DataPlane(const ghoul::Dictionary& dictionary) addProperty(_useLog); addProperty(_useHistogram); - addProperty(_useMultipleTf); addProperty(_normValues); addProperty(_backgroundValues); - // addProperty(_averageValues); + addProperty(_transferFunctionsFile); addProperty(_dataOptions); registerProperties(); OsEng.gui()._iSWAproperty.registerProperty(&_useLog); OsEng.gui()._iSWAproperty.registerProperty(&_useHistogram); - OsEng.gui()._iSWAproperty.registerProperty(&_useMultipleTf); OsEng.gui()._iSWAproperty.registerProperty(&_normValues); OsEng.gui()._iSWAproperty.registerProperty(&_backgroundValues); - // OsEng.gui()._iSWAproperty.registerProperty(&_averageValues); + OsEng.gui()._iSWAproperty.registerProperty(&_transferFunctionsFile); OsEng.gui()._iSWAproperty.registerProperty(&_dataOptions); _normValues.onChange([this](){ @@ -80,8 +79,9 @@ DataPlane::DataPlane(const ghoul::Dictionary& dictionary) _useHistogram.onChange([this](){loadTexture();}); _dataOptions.onChange([this](){ loadTexture();} ); - _useMultipleTf.onChange([this](){ - changeTransferFunctions(_useMultipleTf.value()); + + _transferFunctionsFile.onChange([this](){ + setTransferFunctions(_transferFunctionsFile.value()); }); } @@ -105,9 +105,7 @@ bool DataPlane::initialize(){ } updateTexture(); - - std::string tfPath = "${OPENSPACE_DATA}/scene/iswa/transferfunctions/colormap_parula.jpg"; - _transferFunctions.push_back(std::make_shared(tfPath)); + setTransferFunctions(_transferFunctionsFile.value()); // std::cout << "Creating Colorbar" << std::endl; // _colorbar = std::make_shared(); @@ -515,19 +513,24 @@ float DataPlane::normalizeWithLogarithm(float value, int logMean){ return glm::clamp(logNormalized,0.0f, 1.0f); } -void DataPlane::changeTransferFunctions(bool multiple){ - _transferFunctions.clear(); - std::string tfPath; - if(multiple){ - tfPath = "${OPENSPACE_DATA}/scene/iswa/transferfunctions/red.jpg"; - _transferFunctions.push_back(std::make_shared(tfPath)); - tfPath = "${OPENSPACE_DATA}/scene/iswa/transferfunctions/blue.jpg"; - _transferFunctions.push_back(std::make_shared(tfPath)); - tfPath = "${OPENSPACE_DATA}/scene/iswa/transferfunctions/green.jpg"; - _transferFunctions.push_back(std::make_shared(tfPath)); - }else{ - tfPath = "${OPENSPACE_DATA}/scene/iswa/transferfunctions/colormap_parula.jpg"; - _transferFunctions.push_back(std::make_shared(tfPath)); +void DataPlane::setTransferFunctions(std::string tfPath){ + std::string line; + std::ifstream tfFile(absPath(tfPath)); + + std::vector> tfs; + + if(tfFile.is_open()){ + while(getline(tfFile, line)){ + std::shared_ptr tf = std::make_shared(line); + if(tf) + tfs.push_back(tf); + } } + + if(!tfs.empty()){ + _transferFunctions.clear(); + _transferFunctions = tfs; + } + } }// namespace openspace \ No newline at end of file diff --git a/modules/iswa/rendering/dataplane.h b/modules/iswa/rendering/dataplane.h index d9151a4a71..4a13fb2891 100644 --- a/modules/iswa/rendering/dataplane.h +++ b/modules/iswa/rendering/dataplane.h @@ -30,6 +30,7 @@ #include #include #include +#include namespace openspace{ @@ -62,14 +63,15 @@ class DataPlane : public CygnetPlane { float normalizeWithStandardScore(float value, float mean, float sd); float normalizeWithLogarithm(float value, int logMean); - void changeTransferFunctions(bool multiple); + void setTransferFunctions(std::string id); properties::SelectionProperty _dataOptions; + properties::StringProperty _transferFunctionsFile; properties::Vec2Property _normValues; properties::Vec2Property _backgroundValues; properties::BoolProperty _useLog; properties::BoolProperty _useHistogram; - properties::BoolProperty _useMultipleTf; + // properties::BoolProperty _useMultipleTf; // properties::BoolProperty _averageValues; // properties::Vec4Property _topColor;