From 678e91816b2c0e1bbc99f542fc325c9cb8503eaa Mon Sep 17 00:00:00 2001 From: Erik Broberg Date: Thu, 2 Jun 2016 14:00:11 -0400 Subject: [PATCH] Setup a simple working demo with TemporalTileProvider as a TileProvider --- data/scene/debugglobe/debugglobe.mod | 1 - data/scene/globebrowsing.scene | 7 ++++- .../globebrowsing/globes/renderableglobe.cpp | 28 ++++++++++++++++--- .../other/temporaltileprovider.cpp | 13 +++++++++ .../other/temporaltileprovider.h | 12 ++++++-- 5 files changed, 53 insertions(+), 8 deletions(-) diff --git a/data/scene/debugglobe/debugglobe.mod b/data/scene/debugglobe/debugglobe.mod index 7332347b93..405974f239 100644 --- a/data/scene/debugglobe/debugglobe.mod +++ b/data/scene/debugglobe/debugglobe.mod @@ -40,5 +40,4 @@ return { }, GuiName = "/Solar/Planets/DebugGlobe" }, - } diff --git a/data/scene/globebrowsing.scene b/data/scene/globebrowsing.scene index 869e4e8d73..5c8d5ef54c 100644 --- a/data/scene/globebrowsing.scene +++ b/data/scene/globebrowsing.scene @@ -6,11 +6,16 @@ function preInitialization() critical objects. ]]-- - openspace.time.setTime("2011 AUG 06 00:00:00") + openspace.time.setTime("2015 NOV 24 00:00:00") dofile(openspace.absPath('${SCRIPTS}/bind_keys.lua')) openspace.bindKey("v", "openspace.setPropertyValue('DebugGlobe.saveOrThrowCamera', true)") end +function postInitialization() + +end + + return { ScenePath = ".", CommonFolder = "common", diff --git a/modules/globebrowsing/globes/renderableglobe.cpp b/modules/globebrowsing/globes/renderableglobe.cpp index 8df8a6adca..e2ec7f6125 100644 --- a/modules/globebrowsing/globes/renderableglobe.cpp +++ b/modules/globebrowsing/globes/renderableglobe.cpp @@ -23,10 +23,9 @@ ****************************************************************************************/ #include - #include - #include +#include // open space includes #include @@ -107,6 +106,25 @@ namespace openspace { int frameUntilFlushRequestQueue = 60; int cacheSize = 5000; + + + // manually add a temporal tile provider for testing + std::string filename = "map_service_configs/VIIRS_SNPP_CorrectedReflectance_TrueColor_temporal.xml"; + TileProviderInitData initData; + initData.minimumPixelSize = minimumTextureSide; + initData.threads = 1; + initData.cacheSize = 50; + initData.framesUntilRequestQueueFlush = 60; + + std::shared_ptr colorTextureProvider = std::shared_ptr( + new TemporalTileProvider(filename, initData)); + + std::string name = "Temporal VIIRS SNPP"; + _tileProviderManager->addColorTexture(name, colorTextureProvider, true); + _activeColorLayers.push_back(properties::BoolProperty(name, name, true)); + + + // Create TileProviders for all color textures for (size_t i = 0; i < colorTexturesDictionary.size(); i++) @@ -133,10 +151,12 @@ namespace openspace { _tileProviderManager->addColorTexture(name, colorTextureProvider, true); // Create property for this tile provider - bool enabled = i == 0; // Only enable first layer + bool enabled = _activeColorLayers.size() == 0; // Only enable first layer _activeColorLayers.push_back(properties::BoolProperty(name, name, enabled)); } + + ghoul::Dictionary heightMapsDictionary; texturesDictionary.getValue(keyHeightMaps, heightMapsDictionary); @@ -166,7 +186,7 @@ namespace openspace { _tileProviderManager->addHeightMap(name, heightMapProvider, true); // Create property for this tile provider - bool enabled = i == 0; // Only enable first layer + bool enabled = _activeHeightMapLayers.size() == 0; // Only enable first layer _activeHeightMapLayers.push_back(properties::BoolProperty(name, name, enabled)); } diff --git a/modules/globebrowsing/other/temporaltileprovider.cpp b/modules/globebrowsing/other/temporaltileprovider.cpp index 75f808993a..79c5e139ee 100644 --- a/modules/globebrowsing/other/temporaltileprovider.cpp +++ b/modules/globebrowsing/other/temporaltileprovider.cpp @@ -63,6 +63,19 @@ namespace openspace { } + Tile TemporalTileProvider::getHighestResolutionTile(ChunkIndex chunkIndex, int parents) { + return getTileProvider()->getHighestResolutionTile(chunkIndex, parents); + } + + TileDepthTransform TemporalTileProvider::depthTransform() { + return getTileProvider()->depthTransform(); + } + + void TemporalTileProvider::prerender() { + return getTileProvider()->prerender(); + } + + std::shared_ptr TemporalTileProvider::getTileProvider(Time t) { TimeKey timekey = getTimeKey(t); auto it = _tileProviderMap.find(timekey); diff --git a/modules/globebrowsing/other/temporaltileprovider.h b/modules/globebrowsing/other/temporaltileprovider.h index 4e22d5c45c..16906c4249 100644 --- a/modules/globebrowsing/other/temporaltileprovider.h +++ b/modules/globebrowsing/other/temporaltileprovider.h @@ -35,7 +35,6 @@ #include #include "gdal_priv.h" -#include "vrtdataset.h" @@ -54,10 +53,19 @@ namespace openspace { }; - class TemporalTileProvider { + class TemporalTileProvider : public TileProvider { public: TemporalTileProvider(const std::string& datasetFile, const TileProviderInitData& tileProviderInitData); + + // These methods implements TileProvider + virtual Tile getHighestResolutionTile(ChunkIndex chunkIndex, int parents = 0); + virtual TileDepthTransform depthTransform(); + virtual void prerender(); + + + // Provider other convenient methods + std::shared_ptr getTileProvider(Time t = Time::ref()); private: