From 71dc87b9e2437580a135d5e6f90190a130e13cc0 Mon Sep 17 00:00:00 2001 From: Matthias Berg Date: Wed, 18 Apr 2018 11:12:42 -0400 Subject: [PATCH] Test MAS model rendering with existing functionality --- data/assets/masTest.scene | 53 +++++++++++++++++++ data/assets/scene/solarsystem/model.asset | 1 + .../scene/solarsystem/model/mas/mas.asset | 36 +++++++++++++ .../model/mas/transferfunctions/basic.tf | 9 ++++ data/tasks/batchConversion.task | 21 ++++++++ data/tasks/conversion.task | 12 +++++ data/tasks/inspect.task | 8 +++ .../rendering/renderabletimevaryingvolume.cpp | 11 +++- modules/volume/transferfunctionhandler.cpp | 1 - 9 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 data/assets/masTest.scene create mode 100644 data/assets/scene/solarsystem/model.asset create mode 100644 data/assets/scene/solarsystem/model/mas/mas.asset create mode 100644 data/assets/scene/solarsystem/model/mas/transferfunctions/basic.tf create mode 100644 data/tasks/batchConversion.task create mode 100644 data/tasks/conversion.task create mode 100644 data/tasks/inspect.task diff --git a/data/assets/masTest.scene b/data/assets/masTest.scene new file mode 100644 index 0000000000..e65e63ae2a --- /dev/null +++ b/data/assets/masTest.scene @@ -0,0 +1,53 @@ +local assetHelper = asset.require('util/asset_helper') +local sceneHelper = asset.require('util/scene_helper') +local propertyHelper = asset.require('util/property_helper') + +-- Specifying which other assets should be loaded in this scene +asset.require('spice/base') + +assetHelper.requestAll(asset, 'scene/solarsystem/sun') +assetHelper.requestAll(asset, 'scene/digitaluniverse') + +-- Load default key bindings applicable to most scenes +asset.require('util/default_keybindings') +asset.request('customization/globebrowsing') + + +local sunAsset = asset.require('scene/solarsystem/sun/sun') +local earthAsset = asset.require('scene/solarsystem/planets/earth/earth') +local masAsset = asset.require('scene/solarsystem/model/mas/mas') + +asset.onInitialize(function () + -- openspace.time.setTime("2017 JUN 01 00:00:00") + openspace.time.setTime(openspace.time.currentWallTime()) + + openspace.setDefaultDashboard() + openspace.setDefaultGuiSorting() + + openspace.globebrowsing.loadWMSServersFromFile( + openspace.absPath("${DATA}/globebrowsing_servers.lua") + ) + + openspace.addVirtualProperty( + "BoolProperty", + "Show Trails", + "Scene.*Trail.renderable.Enabled", + "Disable or enable all trails of the sHmmcene at the same time", + true, + nil, + nil + ) + + openspace.navigation.setCameraState({ + Focus = masAsset.Mas.Identifier, + Position = { 10000000000, 10000000000, 10000000000 }, + Rotation = { 0.758797, 0.221490, -0.605693, -0.091135 }, + }) + +end) + +asset.onDeinitialize(function () + sceneHelper.unbindKeys(Keybindings) + + openspace.removeVirtualProperty("*Trail.renderable.Enabled") +end) diff --git a/data/assets/scene/solarsystem/model.asset b/data/assets/scene/solarsystem/model.asset new file mode 100644 index 0000000000..5287bc4071 --- /dev/null +++ b/data/assets/scene/solarsystem/model.asset @@ -0,0 +1 @@ +asset.request('.model/mas') \ No newline at end of file diff --git a/data/assets/scene/solarsystem/model/mas/mas.asset b/data/assets/scene/solarsystem/model/mas/mas.asset new file mode 100644 index 0000000000..86dd875560 --- /dev/null +++ b/data/assets/scene/solarsystem/model/mas/mas.asset @@ -0,0 +1,36 @@ +local assetHelper = asset.require("util/asset_helper") +local sunTransforms = asset.require('scene/solarsystem/sun/transforms') +asset.require("spice/base") + +-- Volume module + +local Mas = { + Identifier = "Mas", + Parent = sunTransforms.SolarSystemBarycenter.Identifier, + Renderable = { + Type = "RenderableTimeVaryingVolume", + Dimensions = {699, 315, 295}, + StepSize = "0.01", + TransferFunction = "${DATA}/mas-data/raw/basic.tf", + SourceDirectory = "${DATA}/mas-data/raw", + LowerValueBound = 1, + UpperValueBound = 1000, + MinValue = 0.0, + MaxValue = 56000.0, + GridType = "Spherical", + SecondsBefore = 24*60*60, + SecondsAfter = 5.0, + Time = "2012-07-01T00:00:00.001", + VisUnit = "rho", + }, + Translation = { + Type = "StaticTranslation", + Position = {10000.0, 10000.0, 10000.0}, + }, + GUI = { + Path = "/Solar System/Mas", + Hidden = true + }, +} + +assetHelper.registerSceneGraphNodesAndExport(asset, {Mas}) diff --git a/data/assets/scene/solarsystem/model/mas/transferfunctions/basic.tf b/data/assets/scene/solarsystem/model/mas/transferfunctions/basic.tf new file mode 100644 index 0000000000..6e507ed525 --- /dev/null +++ b/data/assets/scene/solarsystem/model/mas/transferfunctions/basic.tf @@ -0,0 +1,9 @@ +width 1024 +lower 0.0 +upper 1.0 +mappingkey 0.15 250 0 0 0 +mappingkey 0.20 250 0 0 20 +mappingkey 0.35 250 20 0 20 +mappingkey 0.40 250 0 0 0 +mappingkey 0.60 250 0 0 0 +mappingkey 0.80 0 0 200 255 \ No newline at end of file diff --git a/data/tasks/batchConversion.task b/data/tasks/batchConversion.task new file mode 100644 index 0000000000..1882f5b8fa --- /dev/null +++ b/data/tasks/batchConversion.task @@ -0,0 +1,21 @@ +-- This is the BATSRUS batch conversion example.. + +path = "${DATA}/mas-sampledata/CORHEL_MAS/rawdata/"; +baseNames = {"3d__var_1_e20120714-060000-000.out", "3d__var_1_e20120714-061015-031.out"} + +tasks = {} + +for i=1,#baseNames do + tasks[#tasks+1] = { + Type = "KameleonVolumeToRawTask", + Input = path .. baseNames[i] .. ".cdf", + Variable = "T", + Dimensions = {129, 101, 101}, + LowerDomainBound = {-224, -32, -32}, + UpperDomainBound = {32, 32, 32}, + RawVolumeOutput = path .. baseNames[i] .. ".rawvolume", + DictionaryOutput = path .. baseNames[i] .. ".dictionary" + } +end + +return tasks; \ No newline at end of file diff --git a/data/tasks/conversion.task b/data/tasks/conversion.task new file mode 100644 index 0000000000..23603d39ab --- /dev/null +++ b/data/tasks/conversion.task @@ -0,0 +1,12 @@ + +return {{ + Type = "KameleonVolumeToRawTask", + Input = "${DATA}/mas-data/mas_merged_step_101.cdf", + Variable = "rho", + Dimensions = {699, 315, 295}, + LowerDomainBound = {0, -90, 0}, + UpperDomainBound = {2.5, 90, 360}, + Time = "2017-06-01T00:00:00.001", + RawVolumeOutput = "${DATA}/mas-data/raw/mas_merged_step_101.cdf.rawvolume", + DictionaryOutput = "${DATA}/mas-data/raw/mas_merged_step_101.cdf.dictionary" +}} \ No newline at end of file diff --git a/data/tasks/inspect.task b/data/tasks/inspect.task new file mode 100644 index 0000000000..99ba7a8c8a --- /dev/null +++ b/data/tasks/inspect.task @@ -0,0 +1,8 @@ + +return { + { + Type = "KameleonDocumentationTask", + Input = "${DATA}/mas-data/mas_merged_step_101.cdf", + Output = "${DATA}/mas-data/output.html" + } +} diff --git a/modules/volume/rendering/renderabletimevaryingvolume.cpp b/modules/volume/rendering/renderabletimevaryingvolume.cpp index ec0991e6e7..4e13feb994 100644 --- a/modules/volume/rendering/renderabletimevaryingvolume.cpp +++ b/modules/volume/rendering/renderabletimevaryingvolume.cpp @@ -343,7 +343,6 @@ void RenderableTimeVaryingVolume::initializeGL() { t.texture->uploadTexture(); } - //_transferFunction->initialize(); _clipPlanes->initialize(); _raycaster = std::make_unique( @@ -412,6 +411,16 @@ void RenderableTimeVaryingVolume::loadTimestepMetadata(const std::string& path) Timestep t; t.metadata = metadata; t.baseName = ghoul::filesystem::File(path).baseName(); + t.dimensions = dictionary.value(KeyDimensions); + t.lowerDomainBound = dictionary.value(KeyLowerDomainBound); + t.upperDomainBound = dictionary.value(KeyUpperDomainBound); + t.minValue = dictionary.value(KeyMinValue); + t.maxValue = dictionary.value(KeyMaxValue); + t.unit = dictionary.value(KeyUnit); + + std::string timeString = dictionary.value(KeyTime); + t.time = Time::convertTime(timeString); + // t.time = Time::convertTime("2012-07-01T00:00:00.001"); t.inRam = false; t.onGpu = false; diff --git a/modules/volume/transferfunctionhandler.cpp b/modules/volume/transferfunctionhandler.cpp index d5028f62b0..83d7ee13bd 100644 --- a/modules/volume/transferfunctionhandler.cpp +++ b/modules/volume/transferfunctionhandler.cpp @@ -23,7 +23,6 @@ ****************************************************************************************/ #include - #include #include #include