From 235cd94a7351a1fde4d3af44681a5535f30e9911 Mon Sep 17 00:00:00 2001 From: Micah Date: Thu, 3 Jun 2021 00:05:35 -0400 Subject: [PATCH 01/40] fix for shadow caster on renderable globe --- modules/globebrowsing/src/renderableglobe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/globebrowsing/src/renderableglobe.cpp b/modules/globebrowsing/src/renderableglobe.cpp index 02ef8d540c..5cdeeb1ee6 100644 --- a/modules/globebrowsing/src/renderableglobe.cpp +++ b/modules/globebrowsing/src/renderableglobe.cpp @@ -567,7 +567,7 @@ RenderableGlobe::RenderableGlobe(const ghoul::Dictionary& dictionary) for (const Parameters::ShadowGroup::Caster& caster : p.shadowGroup->casters) { Ellipsoid::ShadowConfiguration sc; sc.source = std::pair(source.name, source.radius); - sc.caster = std::pair(source.name, source.radius); + sc.caster = std::pair(caster.name, caster.radius); shadowConfArray.push_back(sc); } } From 6b65a9b30524bce95ac9b9647fc83fe29e905ff9 Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Thu, 3 Jun 2021 12:47:10 +0200 Subject: [PATCH 02/40] Fix misnamed class in documentation --- src/interaction/navigationhandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/interaction/navigationhandler.cpp b/src/interaction/navigationhandler.cpp index c28fca94c6..8a4bc5a46c 100644 --- a/src/interaction/navigationhandler.cpp +++ b/src/interaction/navigationhandler.cpp @@ -67,7 +67,7 @@ namespace { "than using the mouse interaction." }; - struct [[codegen::Dictionary(NavigationHandler)]] Parameters { + struct [[codegen::Dictionary(NavigationState)]] Parameters { // The identifier of the anchor node std::string anchor; From 257d3f85382a51e98b0cd7ef8e3e5fb5879918ef Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Fri, 4 Jun 2021 10:16:48 +0200 Subject: [PATCH 03/40] Update model bounding sphere to account for parent scale, closes #1630 --- modules/base/rendering/renderablemodel.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/base/rendering/renderablemodel.cpp b/modules/base/rendering/renderablemodel.cpp index 892c7d6bd1..9b33abab36 100644 --- a/modules/base/rendering/renderablemodel.cpp +++ b/modules/base/rendering/renderablemodel.cpp @@ -575,7 +575,6 @@ void RenderableModel::initializeGL() { _geometry->initialize(); _geometry->calculateBoundingRadius(); - setBoundingSphere(_geometry->boundingRadius() * _modelScale); } void RenderableModel::deinitializeGL() { @@ -717,6 +716,10 @@ void RenderableModel::update(const UpdateData& data) { ghoul::opengl::updateUniformLocations(*_program, _uniformCache, UniformNames); } + setBoundingSphere(_geometry->boundingRadius() * _modelScale * + glm::compMax(data.modelTransform.scale) + ); + if (_geometry->hasAnimation() && !_animationStart.empty()) { double relativeTime; double now = data.time.j2000Seconds(); From daed88ea7ee8834e7506960abff47cce959c159f Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Fri, 4 Jun 2021 16:05:12 +0200 Subject: [PATCH 04/40] Adjust ScaleFactor of Hubble Deep Field asset --- data/assets/scene/digitaluniverse/hdf.asset | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/assets/scene/digitaluniverse/hdf.asset b/data/assets/scene/digitaluniverse/hdf.asset index 51e30e3dfd..353ae96fdc 100644 --- a/data/assets/scene/digitaluniverse/hdf.asset +++ b/data/assets/scene/digitaluniverse/hdf.asset @@ -28,7 +28,7 @@ local object = { ColorOption = { "redshift", "proximity" }, ColorRange = { { 0.0, 0.075 }, { 1.0, 25.0 } }, Unit = "Mpc", - ScaleFactor = 520.0, + ScaleFactor = 505.0, BillboardMaxSize = 4.7, EnablePixelSizeControl = true }, From 8ae55609b572abaade5dfe63aa49c5b581052fa2 Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Mon, 7 Jun 2021 08:45:00 +0200 Subject: [PATCH 05/40] Remove camera as light source for New Horizons model * Increase ambiant lighting instead --- .../scene/solarsystem/missions/newhorizons/model.asset | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/model.asset b/data/assets/scene/solarsystem/missions/newhorizons/model.asset index fcd476e2d8..255319f9f0 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/model.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/model.asset @@ -16,7 +16,7 @@ local NewHorizons = { Type = "RenderableModel", Body = "NEW HORIZONS", GeometryFile = models .. "/NewHorizonsCleanModel.obj", - AmbientIntensity = 0.0, + AmbientIntensity = 0.2, DiffuseIntensity = 1.0, SpecularIntensity = 1.0, LightSources = { @@ -25,11 +25,6 @@ local NewHorizons = { Identifier = "Sun", Node = sunTransforms.SolarSystemBarycenter.Identifier, Intensity = 1.0 - }, - { - Identifier = "Camera", - Type = "CameraLightSource", - Intensity = 0.5 } } }, From 7fdff09144dd490cd06e4a518f2151e2e8725dbf Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Mon, 7 Jun 2021 10:14:39 +0200 Subject: [PATCH 06/40] Update gui hash (fixes error on empty listproperty input) --- data/assets/util/webgui.asset | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/assets/util/webgui.asset b/data/assets/util/webgui.asset index 85263c7e8b..15195ee953 100644 --- a/data/assets/util/webgui.asset +++ b/data/assets/util/webgui.asset @@ -3,7 +3,7 @@ asset.require('./static_server') local guiCustomization = asset.require('customization/gui') -- Select which commit hashes to use for the frontend and backend -local frontendHash = "7fed95043e967c632b446ae1c98c6390f3fb7edc" +local frontendHash = "96b88e6c760e59d143bd29da6f06011eaafce4b1" local dataProvider = "data.openspaceproject.com/files/webgui" local frontend = asset.syncedResource({ From b92ed4cafec718bf94c46ff1f8ce4994e8a55d8d Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Tue, 8 Jun 2021 13:30:24 +0200 Subject: [PATCH 07/40] Read Horizons file with double precision --- modules/space/translation/horizonstranslation.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/space/translation/horizonstranslation.cpp b/modules/space/translation/horizonstranslation.cpp index 95bca1255d..1f13bdf6cc 100644 --- a/modules/space/translation/horizonstranslation.cpp +++ b/modules/space/translation/horizonstranslation.cpp @@ -171,9 +171,9 @@ void HorizonsTranslation::readHorizonsTextFile() { std::stringstream str(line); std::string date; std::string time; - float range = 0; - float gLon = 0; - float gLat = 0; + double range = 0; + double gLon = 0; + double gLat = 0; // File is structured by: // YYYY-MM-DD From ec0a51a310408832197b06e42855cdb89f6ee5f8 Mon Sep 17 00:00:00 2001 From: GPayne Date: Sun, 6 Jun 2021 22:32:54 -0600 Subject: [PATCH 08/40] Adding hi-res 75cm Bennu model from asteroidmission.org --- .../missions/osirisrex/bennu.asset | 38 +++++++------------ .../missions/osirisrex/osirisrex.asset | 1 + 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/data/assets/scene/solarsystem/missions/osirisrex/bennu.asset b/data/assets/scene/solarsystem/missions/osirisrex/bennu.asset index ba0442a4eb..4f08da73b4 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/bennu.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/bennu.asset @@ -5,6 +5,15 @@ local models = asset.require('./models').models local BENNU_BODY = "2101955" +local LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sunTransforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + }, +} + local Bennu = { Identifier = "Bennu", Parent = transforms.BennuBarycenter.Identifier, @@ -16,39 +25,20 @@ local Bennu = { }, Scale = { Type = "StaticScale", - Scale = 1000.0 + Scale = 1.0 } }, Renderable = { Enabled = false, Type = "RenderableModel", Body = BENNU_BODY, - GeometryFile = models .. "/Bennu_v20_200k.stl", + GeometryFile = models .. "/Bennu_v20_200k_an.obj", + LightSources = LightSources, + SpecularIntensity = 0.0 }, GUI = { Path = "/Solar System/Asteroid" } } -local BennuTrail = { - Identifier = "BennuTrail", - Parent = sunTransforms.SolarSystemBarycenter.Identifier, - Renderable = { - Type = "RenderableTrailTrajectory", - Translation = { - Type = "SpiceTranslation", - Target = BENNU_BODY, - Observer = "SUN" - }, - Color = { 0.4, 0.0, 0.7 }, - StartTime = "2015 JAN 01 00:00:00.000", - EndTime = "2023 MAY 31 00:00:00.000", - SampleInterval = 3600 - }, - GUI = { - Name = "Bennu Trail", - Path = "/Solar System/Asteroid" - } -} - -assetHelper.registerSceneGraphNodesAndExport(asset, { Bennu, BennuTrail }) +assetHelper.registerSceneGraphNodesAndExport(asset, {Bennu}) diff --git a/data/assets/scene/solarsystem/missions/osirisrex/osirisrex.asset b/data/assets/scene/solarsystem/missions/osirisrex/osirisrex.asset index 8428875ce3..0ba307b51d 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/osirisrex.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/osirisrex.asset @@ -1,3 +1,4 @@ +asset.require('./bennu') asset.require('./bennu_projection') asset.require('./model') asset.require('./trail') From 50db0f09c17c3936d8bd731775af74f1fbef0968 Mon Sep 17 00:00:00 2001 From: GPayne Date: Mon, 7 Jun 2021 17:32:26 -0600 Subject: [PATCH 09/40] Removed redundant scale factor for Bennu --- data/assets/scene/solarsystem/missions/osirisrex/bennu.asset | 4 ---- 1 file changed, 4 deletions(-) diff --git a/data/assets/scene/solarsystem/missions/osirisrex/bennu.asset b/data/assets/scene/solarsystem/missions/osirisrex/bennu.asset index 4f08da73b4..5ebbea22e2 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/bennu.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/bennu.asset @@ -23,10 +23,6 @@ local Bennu = { SourceFrame = "IAU_BENNU", DestinationFrame = "GALACTIC" }, - Scale = { - Type = "StaticScale", - Scale = 1.0 - } }, Renderable = { Enabled = false, From 4f22b39a1f2b2ce0789898c2328d7133214830cb Mon Sep 17 00:00:00 2001 From: Micah Date: Wed, 9 Jun 2021 14:43:35 -0400 Subject: [PATCH 10/40] RenderableBillboardsCloud: adding protection for data without colors --- .../rendering/renderablebillboardscloud.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/digitaluniverse/rendering/renderablebillboardscloud.cpp b/modules/digitaluniverse/rendering/renderablebillboardscloud.cpp index a0aa0c4f33..4113d606ff 100644 --- a/modules/digitaluniverse/rendering/renderablebillboardscloud.cpp +++ b/modules/digitaluniverse/rendering/renderablebillboardscloud.cpp @@ -1024,9 +1024,14 @@ std::vector RenderableBillboardsCloud::createDataSlice() { float minColorIdx = std::numeric_limits::max(); float maxColorIdx = -std::numeric_limits::max(); for (const speck::Dataset::Entry& e : _dataset.entries) { - float color = e.data[colorMapInUse]; - minColorIdx = std::min(color, minColorIdx); - maxColorIdx = std::max(color, maxColorIdx); + if (e.data.size() > 0) { + float color = e.data[colorMapInUse]; + minColorIdx = std::min(color, minColorIdx); + maxColorIdx = std::max(color, maxColorIdx); + } else { + minColorIdx = 0; + maxColorIdx = 0; + } } double maxRadius = 0.0; From 41c53d262d6a3d09af7504224d3fc621bb9d495e Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Thu, 10 Jun 2021 13:30:47 +0200 Subject: [PATCH 11/40] Switch use of Spice id SUN to SSB where SSB is parent --- .../dwarf_planets/pluto/trail.asset | 2 +- .../dwarf_planets/pluto/transforms.asset | 2 +- .../solarsystem/missions/dawn/ceres.asset | 4 ++-- .../solarsystem/missions/dawn/dawn.asset | 4 ++-- .../solarsystem/missions/dawn/vesta.asset | 4 ++-- .../solarsystem/missions/jwst/jwst.asset | 2 +- .../missions/messenger/messengerSC.asset | 2 +- .../missions/newhorizons/transforms.asset | 2 +- .../missions/osirisrex/bennu_projection.asset | 2 +- .../missions/osirisrex/model.asset | 2 +- .../missions/osirisrex/trail.asset | 2 +- .../missions/osirisrex/transforms.asset | 2 +- .../missions/perseverance/trail.asset | 4 ++-- .../missions/pioneer/pioneer10.asset | 4 ++-- .../missions/pioneer/pioneer11.asset | 4 ++-- .../solarsystem/missions/rosetta/67p.asset | 4 ++-- .../missions/rosetta/rosetta.asset | 2 +- .../missions/voyager/voyager1.asset | 12 +++++------ .../missions/voyager/voyager2.asset | 20 +++++++++---------- .../planets/earth/lagrange_points/L1.asset | 2 +- .../planets/earth/lagrange_points/L2.asset | 4 ++-- .../planets/earth/lagrange_points/L4.asset | 2 +- .../planets/earth/lagrange_points/L5.asset | 2 +- .../solarsystem/planets/earth/trail.asset | 2 +- .../planets/earth/transforms.asset | 2 +- .../planets/jupiter/transforms.asset | 2 +- .../solarsystem/planets/mars/transforms.asset | 2 +- .../solarsystem/planets/mercury/trail.asset | 2 +- .../planets/neptune/transforms.asset | 2 +- .../planets/saturn/transforms.asset | 2 +- .../planets/uranus/transforms.asset | 2 +- .../planets/venus/transforms.asset | 2 +- data/assets/scene/solarsystem/sun/glare.asset | 2 +- .../rendering/atmospheredeferredcaster.cpp | 6 +++--- modules/globebrowsing/src/renderableglobe.cpp | 6 +++--- src/util/spicemanager.cpp | 5 +++++ 36 files changed, 66 insertions(+), 61 deletions(-) diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/trail.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/trail.asset index c309dce11b..ef7dd49624 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/trail.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/trail.asset @@ -13,7 +13,7 @@ local PlutoBarycenterTrail = { Translation = { Type = "SpiceTranslation", Target = "PLUTO BARYCENTER", - Observer = "SUN", + Observer = "SSB", Kernels = kernels }, Color = { 0.3, 0.7, 0.3 }, diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/transforms.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/transforms.asset index e190435fd3..475a73286b 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/transforms.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/transforms.asset @@ -12,7 +12,7 @@ local PlutoBarycenter = { Translation = { Type = "SpiceTranslation", Target = "PLUTO BARYCENTER", - Observer = "SUN", + Observer = "SSB", Kernels = kernels } }, diff --git a/data/assets/scene/solarsystem/missions/dawn/ceres.asset b/data/assets/scene/solarsystem/missions/dawn/ceres.asset index 900df2e071..3b5bcc41f9 100644 --- a/data/assets/scene/solarsystem/missions/dawn/ceres.asset +++ b/data/assets/scene/solarsystem/missions/dawn/ceres.asset @@ -28,7 +28,7 @@ local Ceres = { Translation = { Type = "SpiceTranslation", Target = "CERES", - Observer = "SUN", + Observer = "SSB", Kernels = { kernels .. "/dawn_ceres_v01.tpc", kernels .. "/sb_ceres_140724.bsp", @@ -65,7 +65,7 @@ local CeresTrail = { Translation = { Type = "SpiceTranslation", Target = "CERES", - Observer = "SUN" + Observer = "SSB" }, Color = { 0.7, 0.8, 0.7 }, StartTime = "2010 JAN 01 00:00:00.000", diff --git a/data/assets/scene/solarsystem/missions/dawn/dawn.asset b/data/assets/scene/solarsystem/missions/dawn/dawn.asset index 96d8464328..5887fb10d0 100644 --- a/data/assets/scene/solarsystem/missions/dawn/dawn.asset +++ b/data/assets/scene/solarsystem/missions/dawn/dawn.asset @@ -637,7 +637,7 @@ local Dawn = { Translation = { Type = "SpiceTranslation", Target = "DAWN", - Observer = "SUN", + Observer = "SSB", Kernels = KernelFiles }, Rotation = { @@ -722,7 +722,7 @@ local DawnTrail = { Translation = { Type = "SpiceTranslation", Target = "DAWN", - Observer = "SUN" + Observer = "SSB" }, Color = { 1.0, 0.8, 0.4 }, ShowFullTrail = false, diff --git a/data/assets/scene/solarsystem/missions/dawn/vesta.asset b/data/assets/scene/solarsystem/missions/dawn/vesta.asset index 99f3b082ff..247e009502 100644 --- a/data/assets/scene/solarsystem/missions/dawn/vesta.asset +++ b/data/assets/scene/solarsystem/missions/dawn/vesta.asset @@ -31,7 +31,7 @@ local Vesta = { Translation = { Type = "SpiceTranslation", Target = "VESTA", - Observer = "SUN", + Observer = "SSB", Kernels = { --kernels .. "/dawn_vesta_v06.tpc", kernels .. "/sb_vesta_071107.bsp" @@ -118,7 +118,7 @@ local VestaTrail = { Translation = { Type = "SpiceTranslation", Target = "VESTA", - Observer = "SUN" + Observer = "SSB" }, Color = { 0.7, 0.8, 0.7 }, StartTime = "2007 JUL 20 12:00:00", diff --git a/data/assets/scene/solarsystem/missions/jwst/jwst.asset b/data/assets/scene/solarsystem/missions/jwst/jwst.asset index a0c86521e4..6909b74699 100644 --- a/data/assets/scene/solarsystem/missions/jwst/jwst.asset +++ b/data/assets/scene/solarsystem/missions/jwst/jwst.asset @@ -165,7 +165,7 @@ local JWSTSunTrail = { Translation = { Type = "SpiceTranslation", Target = "JWST", - Observer = "SUN", + Observer = "SSB", Kernels = JWSTKernel .. "/jwst_horizons_20200101_20240101_v01.bsp" }, Color = { 0.0, 0.9, 0.9 }, diff --git a/data/assets/scene/solarsystem/missions/messenger/messengerSC.asset b/data/assets/scene/solarsystem/missions/messenger/messengerSC.asset index 7b46f16645..b5cadee6e1 100644 --- a/data/assets/scene/solarsystem/missions/messenger/messengerSC.asset +++ b/data/assets/scene/solarsystem/missions/messenger/messengerSC.asset @@ -67,7 +67,7 @@ local Messenger = { Translation = { Type = "SpiceTranslation", Target = "MESSENGER", - Observer = "SUN", + Observer = "SSB", Kernels = LocalKernels }, Rotation = { diff --git a/data/assets/scene/solarsystem/missions/newhorizons/transforms.asset b/data/assets/scene/solarsystem/missions/newhorizons/transforms.asset index 5238428c17..ff3965ba14 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/transforms.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/transforms.asset @@ -14,7 +14,7 @@ local PlutoBarycenterAccurate = { Translation = { Type = "SpiceTranslation", Target = "PLUTO BARYCENTER", - Observer = "SUN", + Observer = "SSB", Kernels = kernels.PlutoKernels } }, diff --git a/data/assets/scene/solarsystem/missions/osirisrex/bennu_projection.asset b/data/assets/scene/solarsystem/missions/osirisrex/bennu_projection.asset index ae2b0add47..afcfb529a7 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/bennu_projection.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/bennu_projection.asset @@ -88,7 +88,7 @@ local BennuTrail = { Translation = { Type = "SpiceTranslation", Target = BENNU_BODY, - Observer = "SUN" + Observer = "SSB" }, Color = { 0.4, 0.0, 0.7 }, StartTime = "2015 JAN 01 00:00:00.000", diff --git a/data/assets/scene/solarsystem/missions/osirisrex/model.asset b/data/assets/scene/solarsystem/missions/osirisrex/model.asset index 0af62025e7..aab64ada66 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/model.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/model.asset @@ -36,7 +36,7 @@ local OsirisRex = { Translation = { Type = "SpiceTranslation", Target = "OSIRIS-REX", - Observer = "SUN", + Observer = "SSB", Kernels = OsirisRexKernels }, Rotation = { diff --git a/data/assets/scene/solarsystem/missions/osirisrex/trail.asset b/data/assets/scene/solarsystem/missions/osirisrex/trail.asset index 4d152a2bf7..01b33183bc 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/trail.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/trail.asset @@ -37,7 +37,7 @@ local OsirisRexTrailSolarSystem = { Translation = { Type = "SpiceTranslation", Target = "OSIRIS-REX", - Observer = "SUN" + Observer = "SSB" }, Color = { 0.2, 0.9, 0.2 }, StartTime = "2016 SEP 8 23:05:00.50", diff --git a/data/assets/scene/solarsystem/missions/osirisrex/transforms.asset b/data/assets/scene/solarsystem/missions/osirisrex/transforms.asset index e8266beadf..ca481d5b1b 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/transforms.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/transforms.asset @@ -12,7 +12,7 @@ local BennuBarycenter = { Translation = { Type = "SpiceTranslation", Target = BENNU_BODY, - Observer = "SUN" + Observer = "SSB" } }, GUI = { diff --git a/data/assets/scene/solarsystem/missions/perseverance/trail.asset b/data/assets/scene/solarsystem/missions/perseverance/trail.asset index 10c76a45eb..cd7fffdb30 100644 --- a/data/assets/scene/solarsystem/missions/perseverance/trail.asset +++ b/data/assets/scene/solarsystem/missions/perseverance/trail.asset @@ -35,7 +35,7 @@ local PerseveranceNode = { Translation = { Type = "SpiceTranslation", Target = perseverance_id, - Observer = "SUN", + Observer = "SSB", Kernels = m2020_kernels } }, @@ -54,7 +54,7 @@ local PerseveranceTrailSun = { Translation = { Type = "SpiceTranslation", Target = perseverance_id, - Observer = "SUN", + Observer = "SSB", Kernels = m2020_kernels }, Color = { 0.2, 0.7, 0.1 }, diff --git a/data/assets/scene/solarsystem/missions/pioneer/pioneer10.asset b/data/assets/scene/solarsystem/missions/pioneer/pioneer10.asset index 5ff94818de..bf147bbf71 100644 --- a/data/assets/scene/solarsystem/missions/pioneer/pioneer10.asset +++ b/data/assets/scene/solarsystem/missions/pioneer/pioneer10.asset @@ -21,7 +21,7 @@ local Pioneer10 = { Translation = { Type = "SpiceTranslation", Target = Pioneer10NAIF, - Observer = "SUN", + Observer = "SSB", Kernels = kernelsList } }, @@ -41,7 +41,7 @@ local Pioneer10Trail = { Translation = { Type = "SpiceTranslation", Target = Pioneer10NAIF, - Observer = "SUN", + Observer = "SSB", Kernels = kernelsList }, Color = { 0.70, 0.50, 0.20 }, diff --git a/data/assets/scene/solarsystem/missions/pioneer/pioneer11.asset b/data/assets/scene/solarsystem/missions/pioneer/pioneer11.asset index c9f5a6355c..dad188e997 100644 --- a/data/assets/scene/solarsystem/missions/pioneer/pioneer11.asset +++ b/data/assets/scene/solarsystem/missions/pioneer/pioneer11.asset @@ -24,7 +24,7 @@ local Pioneer11 = { Translation = { Type = "SpiceTranslation", Target = Pioneer11NAIF, - Observer = "SUN", + Observer = "SSB", Kernels = kernelsList } }, @@ -44,7 +44,7 @@ local Pioneer11Trail = { Translation = { Type = "SpiceTranslation", Target = Pioneer11NAIF, - Observer = "SUN", + Observer = "SSB", Kernels = kernelsList }, Color = { 0.70, 0.50, 0.20 }, diff --git a/data/assets/scene/solarsystem/missions/rosetta/67p.asset b/data/assets/scene/solarsystem/missions/rosetta/67p.asset index cf41bc2a91..76d84cb4fa 100644 --- a/data/assets/scene/solarsystem/missions/rosetta/67p.asset +++ b/data/assets/scene/solarsystem/missions/rosetta/67p.asset @@ -33,7 +33,7 @@ local Barycenter = { Translation = { Type = "SpiceTranslation", Target = "CHURYUMOV-GERASIMENKO", - Observer = "SUN" + Observer = "SSB" } }, GUI = { @@ -118,7 +118,7 @@ local Trail67P = { Translation = { Type = "SpiceTranslation", Target = "CHURYUMOV-GERASIMENKO", - Observer = "SUN" + Observer = "SSB" }, Color = { 0.1, 0.9, 0.2 }, StartTime = "2014 JAN 01 00:00:00.000", diff --git a/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset b/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset index 189d22ca49..b33c412cde 100644 --- a/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset +++ b/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset @@ -94,7 +94,7 @@ local Rosetta = { Translation = { Type = "SpiceTranslation", Target = "ROSETTA", - Observer = "SUN", + Observer = "SSB", Kernels = RosettaKernels }, Rotation = { diff --git a/data/assets/scene/solarsystem/missions/voyager/voyager1.asset b/data/assets/scene/solarsystem/missions/voyager/voyager1.asset index 85d6b3bf30..a0d0d4ae22 100644 --- a/data/assets/scene/solarsystem/missions/voyager/voyager1.asset +++ b/data/assets/scene/solarsystem/missions/voyager/voyager1.asset @@ -47,7 +47,7 @@ local Voyager1 = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 1", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, Rotation = { @@ -108,7 +108,7 @@ local VoyagerTrailCruiseEarthJupiter = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 1", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, Color = { 0.70, 0.50, 0.20 }, @@ -130,7 +130,7 @@ local VoyagerTrailEncounterJupiter = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 1", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, Color = { 0.70, 0.50, 0.20 }, @@ -153,7 +153,7 @@ local VoyagerTrailCruiseJupiterSaturn = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 1", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, EnableFade = false, @@ -176,7 +176,7 @@ local VoyagerTrailEncounterSaturn = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 1", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, EnableFade = false, @@ -199,7 +199,7 @@ local VoyagerTrailCruiseSaturnInf = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 1", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, EnableFade = false, diff --git a/data/assets/scene/solarsystem/missions/voyager/voyager2.asset b/data/assets/scene/solarsystem/missions/voyager/voyager2.asset index 812c3d29a2..f2fddaab3c 100644 --- a/data/assets/scene/solarsystem/missions/voyager/voyager2.asset +++ b/data/assets/scene/solarsystem/missions/voyager/voyager2.asset @@ -51,7 +51,7 @@ local Voyager2 = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 2", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, Rotation = { @@ -112,7 +112,7 @@ local VoyagerTrailCruiseEarthJupiter = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 2", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, Color = { 0.70, 0.50, 0.20 }, @@ -134,7 +134,7 @@ local VoyagerTrailEncounterJupiter = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 2", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, Color = { 0.70, 0.50, 0.20 }, @@ -157,7 +157,7 @@ local VoyagerTrailCruiseJupiterSaturn = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 2", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, EnableFade = false, @@ -180,7 +180,7 @@ local VoyagerTrailEncounterSaturn = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 2", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, EnableFade = false, @@ -203,7 +203,7 @@ local VoyagerTrailCruiseSaturnUranus = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 2", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, EnableFade = false, @@ -226,7 +226,7 @@ local VoyagerTrailEncounterUranus = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 2", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, EnableFade = false, @@ -249,7 +249,7 @@ local VoyagerTrailCruiseUranusNeptune = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 2", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, EnableFade = false, @@ -272,7 +272,7 @@ local VoyagerTrailEncounterNeptune = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 2", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, EnableFade = false, @@ -295,7 +295,7 @@ local VoyagerTrailCruiseNeptuneInf = { Translation = { Type = "SpiceTranslation", Target = "VOYAGER 2", - Observer = "SUN", + Observer = "SSB", Kernels = Kernels }, EnableFade = false, diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L1.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L1.asset index 420ff19185..3d9905bf89 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L1.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L1.asset @@ -20,7 +20,7 @@ local L1 = { Translation = { Type = "SpiceTranslation", Target = "391", -- L1 - Observer = "SUN", + Observer = "SSB", Kernels = kernels .. "/L1_de431.bsp" } }, diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L2.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L2.asset index 0f84519837..0d3741f2de 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L2.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L2.asset @@ -19,7 +19,7 @@ local L2Small = { Translation = { Type = "SpiceTranslation", Target = "392", -- L2 - Observer = "SUN", + Observer = "SSB", Kernels = kernels .. "/L2_de431.bsp" } }, @@ -46,7 +46,7 @@ local L2 = { Translation = { Type = "SpiceTranslation", Target = "392", -- L2 - Observer = "SUN", + Observer = "SSB", Kernels = kernels .. "/L2_de431.bsp" } }, diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L4.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L4.asset index 05ca2a57b5..5ed34bcb8a 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L4.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L4.asset @@ -20,7 +20,7 @@ local L4 = { Translation = { Type = "SpiceTranslation", Target = "394", -- L4 - Observer = "SUN", + Observer = "SSB", Kernels = kernels .. "/L4_de431.bsp" } }, diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L5.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L5.asset index dcaabb12b7..1fffca80db 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L5.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L5.asset @@ -20,7 +20,7 @@ local L5 = { Translation = { Type = "SpiceTranslation", Target = "395", -- L5 - Observer = "SUN", + Observer = "SSB", Kernels = kernels .. "/L5_de431.bsp" } }, diff --git a/data/assets/scene/solarsystem/planets/earth/trail.asset b/data/assets/scene/solarsystem/planets/earth/trail.asset index 39870cc5af..2f91712bde 100644 --- a/data/assets/scene/solarsystem/planets/earth/trail.asset +++ b/data/assets/scene/solarsystem/planets/earth/trail.asset @@ -12,7 +12,7 @@ local EarthTrail = { Translation = { Type = "SpiceTranslation", Target = "EARTH", - Observer = "SUN" + Observer = "SSB" }, Color = { 0.5, 0.8, 1.0 }, Period = 365.242, diff --git a/data/assets/scene/solarsystem/planets/earth/transforms.asset b/data/assets/scene/solarsystem/planets/earth/transforms.asset index 7717c89707..d08a74058f 100644 --- a/data/assets/scene/solarsystem/planets/earth/transforms.asset +++ b/data/assets/scene/solarsystem/planets/earth/transforms.asset @@ -11,7 +11,7 @@ local EarthBarycenter = { Translation = { Type = "SpiceTranslation", Target = "EARTH BARYCENTER", - Observer = "SUN" + Observer = "SSB" } }, GUI = { diff --git a/data/assets/scene/solarsystem/planets/jupiter/transforms.asset b/data/assets/scene/solarsystem/planets/jupiter/transforms.asset index 28db943e93..371cad76da 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/transforms.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/transforms.asset @@ -11,7 +11,7 @@ local JupiterBarycenter = { Translation = { Type = "SpiceTranslation", Target = "JUPITER BARYCENTER", - Observer = "SUN" + Observer = "SSB" } }, GUI = { diff --git a/data/assets/scene/solarsystem/planets/mars/transforms.asset b/data/assets/scene/solarsystem/planets/mars/transforms.asset index 1ec160733b..7b8fb79dbf 100644 --- a/data/assets/scene/solarsystem/planets/mars/transforms.asset +++ b/data/assets/scene/solarsystem/planets/mars/transforms.asset @@ -9,7 +9,7 @@ local MarsBarycenter = { Translation = { Type = "SpiceTranslation", Target = "MARS BARYCENTER", - Observer = "SUN" + Observer = "SSB" } }, GUI = { diff --git a/data/assets/scene/solarsystem/planets/mercury/trail.asset b/data/assets/scene/solarsystem/planets/mercury/trail.asset index 40628994a2..2514f0ca70 100644 --- a/data/assets/scene/solarsystem/planets/mercury/trail.asset +++ b/data/assets/scene/solarsystem/planets/mercury/trail.asset @@ -12,7 +12,7 @@ local MercuryTrail = { Translation = { Type = "SpiceTranslation", Target = "MERCURY", - Observer = "SUN" + Observer = "SSB" }, Color = { 0.6, 0.5, 0.5 }, Period = 87.968, diff --git a/data/assets/scene/solarsystem/planets/neptune/transforms.asset b/data/assets/scene/solarsystem/planets/neptune/transforms.asset index ede2678dbd..6ad969535d 100644 --- a/data/assets/scene/solarsystem/planets/neptune/transforms.asset +++ b/data/assets/scene/solarsystem/planets/neptune/transforms.asset @@ -9,7 +9,7 @@ local NeptuneBarycenter = { Translation = { Type = "SpiceTranslation", Target = "NEPTUNE BARYCENTER", - Observer = "SUN" + Observer = "SSB" } }, GUI = { diff --git a/data/assets/scene/solarsystem/planets/saturn/transforms.asset b/data/assets/scene/solarsystem/planets/saturn/transforms.asset index cedfe258df..066c700e44 100644 --- a/data/assets/scene/solarsystem/planets/saturn/transforms.asset +++ b/data/assets/scene/solarsystem/planets/saturn/transforms.asset @@ -9,7 +9,7 @@ local SaturnBarycenter = { Translation = { Type = "SpiceTranslation", Target = "SATURN BARYCENTER", - Observer = "SUN" + Observer = "SSB" } }, GUI = { diff --git a/data/assets/scene/solarsystem/planets/uranus/transforms.asset b/data/assets/scene/solarsystem/planets/uranus/transforms.asset index 99a3274132..8a01b2847b 100644 --- a/data/assets/scene/solarsystem/planets/uranus/transforms.asset +++ b/data/assets/scene/solarsystem/planets/uranus/transforms.asset @@ -11,7 +11,7 @@ local UranusBarycenter = { Translation = { Type = "SpiceTranslation", Target = "URANUS BARYCENTER", - Observer = "SUN" + Observer = "SSB" } }, GUI = { diff --git a/data/assets/scene/solarsystem/planets/venus/transforms.asset b/data/assets/scene/solarsystem/planets/venus/transforms.asset index 2db6ea4117..79f947d1cc 100644 --- a/data/assets/scene/solarsystem/planets/venus/transforms.asset +++ b/data/assets/scene/solarsystem/planets/venus/transforms.asset @@ -9,7 +9,7 @@ local VenusBarycenter = { Translation = { Type = "SpiceTranslation", Target = "VENUS BARYCENTER", - Observer = "SUN" + Observer = "SSB" } }, GUI = { diff --git a/data/assets/scene/solarsystem/sun/glare.asset b/data/assets/scene/solarsystem/sun/glare.asset index 827ab90509..c565d81004 100644 --- a/data/assets/scene/solarsystem/sun/glare.asset +++ b/data/assets/scene/solarsystem/sun/glare.asset @@ -21,7 +21,7 @@ local SunGlare = { Transform = { Translation = { Type = "SpiceTranslation", - Target = "SUN", + Target = "SSB", Observer = "SSB" } }, diff --git a/modules/atmosphere/rendering/atmospheredeferredcaster.cpp b/modules/atmosphere/rendering/atmospheredeferredcaster.cpp index b26103a2fd..b01c2c604d 100644 --- a/modules/atmosphere/rendering/atmospheredeferredcaster.cpp +++ b/modules/atmosphere/rendering/atmospheredeferredcaster.cpp @@ -348,7 +348,7 @@ void AtmosphereDeferredcaster::preRaycast(const RenderData& renderData, double lt; glm::dvec3 sunPosWorld = SpiceManager::ref().targetPosition( "SUN", - "SUN", + "SSB", "GALACTIC", {}, _time, @@ -386,7 +386,7 @@ void AtmosphereDeferredcaster::preRaycast(const RenderData& renderData, // Getting source and caster: glm::dvec3 sourcePos = SpiceManager::ref().targetPosition( shadowConf.source.first, - "SUN", + "SSB", "GALACTIC", {}, _time, @@ -395,7 +395,7 @@ void AtmosphereDeferredcaster::preRaycast(const RenderData& renderData, sourcePos *= KM_TO_M; // converting to meters glm::dvec3 casterPos = SpiceManager::ref().targetPosition( shadowConf.caster.first, - "SUN", + "SSB", "GALACTIC", {}, _time, diff --git a/modules/globebrowsing/src/renderableglobe.cpp b/modules/globebrowsing/src/renderableglobe.cpp index 5cdeeb1ee6..e6176e1ac4 100644 --- a/modules/globebrowsing/src/renderableglobe.cpp +++ b/modules/globebrowsing/src/renderableglobe.cpp @@ -1995,7 +1995,7 @@ void RenderableGlobe::calculateEclipseShadows(ghoul::opengl::ProgramObject& prog // Getting source and caster: glm::dvec3 sourcePos = SpiceManager::ref().targetPosition( shadowConf.source.first, - "SUN", + "SSB", "GALACTIC", {}, data.time.j2000Seconds(), @@ -2004,7 +2004,7 @@ void RenderableGlobe::calculateEclipseShadows(ghoul::opengl::ProgramObject& prog sourcePos *= KM_TO_M; // converting to meters glm::dvec3 casterPos = SpiceManager::ref().targetPosition( shadowConf.caster.first, - "SUN", + "SSB", "GALACTIC", {}, data.time.j2000Seconds(), @@ -2056,7 +2056,7 @@ void RenderableGlobe::calculateEclipseShadows(ghoul::opengl::ProgramObject& prog const glm::dvec3 sunPos = SpiceManager::ref().targetPosition( "SUN", - "SUN", + "SSB", "GALACTIC", {}, data.time.j2000Seconds(), diff --git a/src/util/spicemanager.cpp b/src/util/spicemanager.cpp index fa862a73df..30e17b8ef6 100644 --- a/src/util/spicemanager.cpp +++ b/src/util/spicemanager.cpp @@ -325,6 +325,11 @@ bool SpiceManager::hasSpkCoverage(const std::string& target, double et) const { ghoul_assert(!target.empty(), "Empty target"); const int id = naifId(target); + // SOLAR SYSTEM BARYCENTER special case, implicitly included by Spice + if (id == 0) { + return true; + } + const auto it = _spkIntervals.find(id); if (it != _spkIntervals.end()) { const std::vector>& intervalVector = it->second; From a2651296cfeb522b6d0a8be5c8785e87ad249733 Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Thu, 10 Jun 2021 13:36:26 +0200 Subject: [PATCH 12/40] Place planets in their centers and not barycenters --- .../solarsystem/planets/jupiter/jupiter.asset | 2 +- .../solarsystem/planets/jupiter/trail.asset | 4 +-- .../planets/jupiter/trail_earth.asset | 2 +- .../planets/jupiter/transforms.asset | 23 +++++++++++++-- .../scene/solarsystem/planets/mars/mars.asset | 2 +- .../solarsystem/planets/mars/trail.asset | 4 +-- .../planets/mars/trail_earth.asset | 2 +- .../solarsystem/planets/mars/transforms.asset | 24 ++++++++++++++-- .../solarsystem/planets/mercury/mercury.asset | 2 +- .../planets/mercury/trail_earth.asset | 2 +- .../planets/mercury/transforms.asset | 28 +++++++++++++++---- .../solarsystem/planets/neptune/neptune.asset | 2 +- .../solarsystem/planets/neptune/trail.asset | 4 +-- .../planets/neptune/trail_earth.asset | 2 +- .../planets/neptune/transforms.asset | 24 ++++++++++++++-- .../solarsystem/planets/saturn/saturn.asset | 2 +- .../solarsystem/planets/saturn/trail.asset | 4 +-- .../planets/saturn/trail_earth.asset | 2 +- .../planets/saturn/transforms.asset | 24 ++++++++++++++-- .../solarsystem/planets/uranus/trail.asset | 4 +-- .../planets/uranus/trail_earth.asset | 2 +- .../planets/uranus/transforms.asset | 25 +++++++++++++++-- .../solarsystem/planets/uranus/uranus.asset | 2 +- .../solarsystem/planets/venus/trail.asset | 4 +-- .../planets/venus/trail_earth.asset | 2 +- .../planets/venus/transforms.asset | 24 ++++++++++++++-- .../solarsystem/planets/venus/venus.asset | 2 +- data/assets/scene/solarsystem/sun/glare.asset | 2 +- 28 files changed, 176 insertions(+), 50 deletions(-) diff --git a/data/assets/scene/solarsystem/planets/jupiter/jupiter.asset b/data/assets/scene/solarsystem/planets/jupiter/jupiter.asset index 29a7d0495e..9c3a5b99ba 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/jupiter.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/jupiter.asset @@ -5,7 +5,7 @@ asset.require('./trail') local Jupiter = { Identifier = "Jupiter", - Parent = transforms.JupiterBarycenter.Identifier, + Parent = transforms.JupiterCenter.Identifier, Transform = { Rotation = { Type = "SpiceRotation", diff --git a/data/assets/scene/solarsystem/planets/jupiter/trail.asset b/data/assets/scene/solarsystem/planets/jupiter/trail.asset index 7f5c7347b1..ef0ea4dc2a 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/trail.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/trail.asset @@ -11,8 +11,8 @@ local JupiterTrail = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "JUPITER BARYCENTER", - Observer = "SUN" + Target = "JUPITER", + Observer = "SSB" }, Color = { 0.8, 0.7, 0.7 }, Period = 4330.595, diff --git a/data/assets/scene/solarsystem/planets/jupiter/trail_earth.asset b/data/assets/scene/solarsystem/planets/jupiter/trail_earth.asset index 50dd1cf706..bffd3012b4 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/trail_earth.asset @@ -12,7 +12,7 @@ local JupiterTrailEarth = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "JUPITER BARYCENTER", + Target = "JUPITER", Observer = "EARTH" }, Color = { 1.0, 0.5, 0.2 }, diff --git a/data/assets/scene/solarsystem/planets/jupiter/transforms.asset b/data/assets/scene/solarsystem/planets/jupiter/transforms.asset index 371cad76da..67811c0e29 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/transforms.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/transforms.asset @@ -21,15 +21,32 @@ local JupiterBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { JupiterBarycenter }) +local JupiterCenter = { + Identifier = "JupiterCenter", + Parent = JupiterBarycenter.Identifier, + Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "JUPITER", + Observer = "JUPITER BARYCENTER" + } + }, + GUI = { + Name = "Jupiter Center", + Path = "/Solar System/Planets/Jupiter", + Hidden = true + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { JupiterBarycenter, JupiterCenter }) asset.meta = { Name = "Jupiter Transforms", Version = "1.0", - Description = [[ Jupiter Barycenter transform]], + Description = [[ Jupiter Barycenter and Center transform ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"JupiterBarycenter"} + Identifiers = {"JupiterBarycenter", "JupiterCenter"} } diff --git a/data/assets/scene/solarsystem/planets/mars/mars.asset b/data/assets/scene/solarsystem/planets/mars/mars.asset index 977d986e99..e90fefb9d2 100644 --- a/data/assets/scene/solarsystem/planets/mars/mars.asset +++ b/data/assets/scene/solarsystem/planets/mars/mars.asset @@ -9,7 +9,7 @@ local marsRadii = { 3396190.0, 3396190.0, 3396190.0 } local Mars = { Identifier = "Mars", - Parent = transforms.MarsBarycenter.Identifier, + Parent = transforms.MarsCenter.Identifier, Transform = { Rotation = { Type = "SpiceRotation", diff --git a/data/assets/scene/solarsystem/planets/mars/trail.asset b/data/assets/scene/solarsystem/planets/mars/trail.asset index 1922c582ea..78e8eea805 100644 --- a/data/assets/scene/solarsystem/planets/mars/trail.asset +++ b/data/assets/scene/solarsystem/planets/mars/trail.asset @@ -11,8 +11,8 @@ local MarsTrail = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "MARS BARYCENTER", - Observer = "SUN" + Target = "MARS", + Observer = "SSB" }, Color = { 0.814, 0.305, 0.220 }, Period = 686.973, diff --git a/data/assets/scene/solarsystem/planets/mars/trail_earth.asset b/data/assets/scene/solarsystem/planets/mars/trail_earth.asset index 62286cbae2..0863042ef5 100644 --- a/data/assets/scene/solarsystem/planets/mars/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/mars/trail_earth.asset @@ -12,7 +12,7 @@ local MarsTrailEarth = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "MARS BARYCENTER", + Target = "MARS", Observer = "EARTH" }, Color = { 1.0, 0.5, 0.2 }, diff --git a/data/assets/scene/solarsystem/planets/mars/transforms.asset b/data/assets/scene/solarsystem/planets/mars/transforms.asset index 7b8fb79dbf..45159a2487 100644 --- a/data/assets/scene/solarsystem/planets/mars/transforms.asset +++ b/data/assets/scene/solarsystem/planets/mars/transforms.asset @@ -20,15 +20,33 @@ local MarsBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { MarsBarycenter }) +local MarsCenter = { + Identifier = "MarsCenter", + Parent = MarsBarycenter.Identifier, + Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "MARS", + Observer = "MARS BARYCENTER" + } + }, + GUI = { + Name = "Mars Center", + Path = "/Solar System/Planets/Mars", + Hidden = true, + Description = [[ SPICE Translation for targeting Mars Center]], + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { MarsBarycenter, MarsCenter }) asset.meta = { Name = "Mars Transforms", Version = "1.0", - Description = [[ Transform with position for Mars.]], + Description = [[ Transforms with positions for Mars.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"MarsBarycenter"} + Identifiers = {"MarsBarycenter", "MarsCenter"} } diff --git a/data/assets/scene/solarsystem/planets/mercury/mercury.asset b/data/assets/scene/solarsystem/planets/mercury/mercury.asset index ceb774f5ac..d1605b6b79 100644 --- a/data/assets/scene/solarsystem/planets/mercury/mercury.asset +++ b/data/assets/scene/solarsystem/planets/mercury/mercury.asset @@ -7,7 +7,7 @@ asset.require('./trail') local Mercury = { Identifier = "Mercury", - Parent = transforms.MercuryBarycenter.Identifier, + Parent = transforms.MercuryCenter.Identifier, Transform = { Rotation = { Type = "SpiceRotation", diff --git a/data/assets/scene/solarsystem/planets/mercury/trail_earth.asset b/data/assets/scene/solarsystem/planets/mercury/trail_earth.asset index 1b0a35d935..1d44518f34 100644 --- a/data/assets/scene/solarsystem/planets/mercury/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/mercury/trail_earth.asset @@ -12,7 +12,7 @@ local MercuryTrailEarth = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "MERCURY BARYCENTER", + Target = "MERCURY", Observer = "EARTH" }, Color = { 1.0, 0.5, 0.2 }, diff --git a/data/assets/scene/solarsystem/planets/mercury/transforms.asset b/data/assets/scene/solarsystem/planets/mercury/transforms.asset index 21b85f696b..834f61d7c8 100644 --- a/data/assets/scene/solarsystem/planets/mercury/transforms.asset +++ b/data/assets/scene/solarsystem/planets/mercury/transforms.asset @@ -8,8 +8,8 @@ local MercuryBarycenter = { Transform = { Translation = { Type = "SpiceTranslation", - Target = "MERCURY", - Observer = "SUN" + Target = "MERCURY BARYCENTER", + Observer = "SSB" } }, GUI = { @@ -20,15 +20,33 @@ local MercuryBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { MercuryBarycenter }) +local MercuryCenter = { + Identifier = "MercuryCenter", + Parent = MercuryBarycenter.Identifier, + Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "MERCURY", + Observer = "MERCURY BARYCENTER" + } + }, + GUI = { + Name = "Mercury Center", + Path = "/Solar System/Planets/Mercury", + Hidden = true, + Description = [[ Mercury Center position]], + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { MercuryBarycenter, MercuryCenter }) asset.meta = { Name = "Mercury Transforms", Version = "1.0", - Description = [[ Mercury Barycenter transform]], + Description = [[ Mercury Barycenter and Center transform]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"MercuryBarycenter"} + Identifiers = {"MercuryBarycenter", "MercuryCenter"} } diff --git a/data/assets/scene/solarsystem/planets/neptune/neptune.asset b/data/assets/scene/solarsystem/planets/neptune/neptune.asset index 5700797e14..e9a250dc68 100644 --- a/data/assets/scene/solarsystem/planets/neptune/neptune.asset +++ b/data/assets/scene/solarsystem/planets/neptune/neptune.asset @@ -5,7 +5,7 @@ asset.require('./trail') local Neptune = { Identifier = "Neptune", - Parent = transforms.NeptuneBarycenter.Identifier, + Parent = transforms.NeptuneCenter.Identifier, Transform = { Rotation = { Type = "SpiceRotation", diff --git a/data/assets/scene/solarsystem/planets/neptune/trail.asset b/data/assets/scene/solarsystem/planets/neptune/trail.asset index 86e554b33d..a20febb561 100644 --- a/data/assets/scene/solarsystem/planets/neptune/trail.asset +++ b/data/assets/scene/solarsystem/planets/neptune/trail.asset @@ -11,8 +11,8 @@ local NeptuneTrail = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "NEPTUNE BARYCENTER", - Observer = "SUN" + Target = "NEPTUNE", + Observer = "SSB" }, Color = { 0.2, 0.5, 1.0 }, -- Period = 60200, diff --git a/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset b/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset index 93b96735a5..520fc1a366 100644 --- a/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset @@ -12,7 +12,7 @@ local NeptuneTrailEarth = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "NEPTUNE BARYCENTER", + Target = "NEPTUNE", Observer = "EARTH" }, Color = { 1.0, 0.5, 0.2 }, diff --git a/data/assets/scene/solarsystem/planets/neptune/transforms.asset b/data/assets/scene/solarsystem/planets/neptune/transforms.asset index 6ad969535d..a463830fa6 100644 --- a/data/assets/scene/solarsystem/planets/neptune/transforms.asset +++ b/data/assets/scene/solarsystem/planets/neptune/transforms.asset @@ -20,15 +20,33 @@ local NeptuneBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { NeptuneBarycenter }) +local NeptuneCenter = { + Identifier = "NeptuneCenter", + Parent = NeptuneBarycenter.Identifier, + Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "NEPTUNE", + Observer = "NEPTUNE BARYCENTER" + } + }, + GUI = { + Name = "Neptune Center", + Path = "/Solar System/Planets/Neptune", + Hidden = true, + Description = [[ Neptune Center position]], + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { NeptuneBarycenter, NeptuneCenter }) asset.meta = { Name = "Neptune Transforms", Version = "1.0", - Description = [[ Neptune Barycenter transform]], + Description = [[ Neptune Barycenter and Center transform ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"NeptuneBarycenter"} + Identifiers = {"NeptuneBarycenter", "NeptuneCenter"} } diff --git a/data/assets/scene/solarsystem/planets/saturn/saturn.asset b/data/assets/scene/solarsystem/planets/saturn/saturn.asset index 8a92299d59..e7ce962fdc 100644 --- a/data/assets/scene/solarsystem/planets/saturn/saturn.asset +++ b/data/assets/scene/solarsystem/planets/saturn/saturn.asset @@ -7,7 +7,7 @@ local texturesPath = asset.require("./saturn_textures").TexturesPath local Saturn = { Identifier = "Saturn", - Parent = transforms.SaturnBarycenter.Identifier, + Parent = transforms.SaturnCenter.Identifier, Transform = { Rotation = { Type = "SpiceRotation", diff --git a/data/assets/scene/solarsystem/planets/saturn/trail.asset b/data/assets/scene/solarsystem/planets/saturn/trail.asset index 907eb7ae94..d2f09c1362 100644 --- a/data/assets/scene/solarsystem/planets/saturn/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/trail.asset @@ -10,8 +10,8 @@ local SaturnTrail = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "SATURN BARYCENTER", - Observer = "SUN" + Target = "SATURN", + Observer = "SSB" }, Color = { 0.85, 0.75, 0.51 }, Period = 10746.94, diff --git a/data/assets/scene/solarsystem/planets/saturn/trail_earth.asset b/data/assets/scene/solarsystem/planets/saturn/trail_earth.asset index 90a686abbb..37f5fa26f8 100644 --- a/data/assets/scene/solarsystem/planets/saturn/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/saturn/trail_earth.asset @@ -12,7 +12,7 @@ local SaturnTrailEarth = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "SATURN BARYCENTER", + Target = "SATURN", Observer = "EARTH" }, Color = { 1.0, 0.5, 0.2 }, diff --git a/data/assets/scene/solarsystem/planets/saturn/transforms.asset b/data/assets/scene/solarsystem/planets/saturn/transforms.asset index 066c700e44..1e0561e4f0 100644 --- a/data/assets/scene/solarsystem/planets/saturn/transforms.asset +++ b/data/assets/scene/solarsystem/planets/saturn/transforms.asset @@ -20,15 +20,33 @@ local SaturnBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { SaturnBarycenter }) +local SaturnCenter = { + Identifier = "SaturnCenter", + Parent = SaturnBarycenter.Identifier, + Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "SATURN", + Observer = "SATURN BARYCENTER" + } + }, + GUI = { + Name = "Saturn Center", + Path = "/Solar System/Planets/Saturn", + Hidden = true, + Description = [[ Saturn Center position]] + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { SaturnBarycenter, SaturnCenter }) asset.meta = { Name = "Saturn Transforms", Version = "1.0", - Description = [[ Saturn Barycenter transform]], + Description = [[ Saturn Barycenter and Center transform]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"SaturnBarycenter"} + Identifiers = {"SaturnBarycenter", "SaturnCenter"} } diff --git a/data/assets/scene/solarsystem/planets/uranus/trail.asset b/data/assets/scene/solarsystem/planets/uranus/trail.asset index 76d6996599..ad24d25221 100644 --- a/data/assets/scene/solarsystem/planets/uranus/trail.asset +++ b/data/assets/scene/solarsystem/planets/uranus/trail.asset @@ -10,8 +10,8 @@ local UranusTrail = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "URANUS BARYCENTER", - Observer = "SUN" + Target = "URANUS", + Observer = "SSB" }, Color = { 0.60, 0.95, 1.00 }, Period = 30588.740, diff --git a/data/assets/scene/solarsystem/planets/uranus/trail_earth.asset b/data/assets/scene/solarsystem/planets/uranus/trail_earth.asset index 5c5d4d775d..b1589707e2 100644 --- a/data/assets/scene/solarsystem/planets/uranus/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/uranus/trail_earth.asset @@ -12,7 +12,7 @@ local UranusTrailEarth = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "URANUS BARYCENTER", + Target = "URANUS", Observer = "EARTH" }, Color = { 1.0, 0.5, 0.2 }, diff --git a/data/assets/scene/solarsystem/planets/uranus/transforms.asset b/data/assets/scene/solarsystem/planets/uranus/transforms.asset index 8a01b2847b..f1fd8f99e8 100644 --- a/data/assets/scene/solarsystem/planets/uranus/transforms.asset +++ b/data/assets/scene/solarsystem/planets/uranus/transforms.asset @@ -22,14 +22,33 @@ local UranusBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { UranusBarycenter }) +local UranusCenter = { + Identifier = "UranusCenter", + Parent = UranusBarycenter.Identifier, + Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "URANUS", + Observer = "URANUS BARYCENTER" + } + }, + GUI = { + Name = "Uranus Center", + Path = "/Solar System/Planets/Uranus", + Hidden = true, + Description = [[ Uranus Center position]], + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { UranusBarycenter, UranusCenter }) asset.meta = { Name = "Uranus Transforms", Version = "1.0", - Description = [[ Uranus Barycenter transform]], + Description = [[ Uranus Barycenter and Center transform]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license" + License = "MIT license", + Identifiers = {"UranusBarycenter", "UranusCenter"} } diff --git a/data/assets/scene/solarsystem/planets/uranus/uranus.asset b/data/assets/scene/solarsystem/planets/uranus/uranus.asset index 80d6add8f7..74e30d0e68 100644 --- a/data/assets/scene/solarsystem/planets/uranus/uranus.asset +++ b/data/assets/scene/solarsystem/planets/uranus/uranus.asset @@ -5,7 +5,7 @@ asset.require('./trail') local Uranus = { Identifier = "Uranus", - Parent = transforms.UranusBarycenter.Identifier, + Parent = transforms.UranusCenter.Identifier, Transform = { Rotation = { Type = "SpiceRotation", diff --git a/data/assets/scene/solarsystem/planets/venus/trail.asset b/data/assets/scene/solarsystem/planets/venus/trail.asset index 8abf07815f..5d0ad9fc1e 100644 --- a/data/assets/scene/solarsystem/planets/venus/trail.asset +++ b/data/assets/scene/solarsystem/planets/venus/trail.asset @@ -11,8 +11,8 @@ local VenusTrail = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "VENUS BARYCENTER", - Observer = "SUN" + Target = "VENUS", + Observer = "SSB" }, Color = { 1.0, 0.5, 0.2 }, Period = 224.695, diff --git a/data/assets/scene/solarsystem/planets/venus/trail_earth.asset b/data/assets/scene/solarsystem/planets/venus/trail_earth.asset index 3af7aecaaa..79e78aa2bb 100644 --- a/data/assets/scene/solarsystem/planets/venus/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/venus/trail_earth.asset @@ -11,7 +11,7 @@ local VenusTrailEarth = { Type = "RenderableTrailOrbit", Translation = { Type = "SpiceTranslation", - Target = "VENUS BARYCENTER", + Target = "VENUS", Observer = "EARTH" }, Color = { 1.0, 0.5, 0.2 }, diff --git a/data/assets/scene/solarsystem/planets/venus/transforms.asset b/data/assets/scene/solarsystem/planets/venus/transforms.asset index 79f947d1cc..672b7c28e2 100644 --- a/data/assets/scene/solarsystem/planets/venus/transforms.asset +++ b/data/assets/scene/solarsystem/planets/venus/transforms.asset @@ -20,15 +20,33 @@ local VenusBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { VenusBarycenter }) +local VenusCenter = { + Identifier = "VenusCenter", + Parent = VenusBarycenter.Identifier, + Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "VENUS", + Observer = "VENUS BARYCENTER" + } + }, + GUI = { + Name = "Venus Center", + Path = "/Solar System/Planets/Venus", + Hidden = true, + Description = "Position for Venus Center" + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { VenusBarycenter, VenusCenter }) asset.meta = { Name = "Venus Transforms", Version = "1.0", - Description = [[ Spice translation for Venus Barycenter]], + Description = [[ Spice translation for Venus Barycenter and Center]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"VenusBarycenter"} + Identifiers = {"VenusBarycenter", "VenusCenter"} } diff --git a/data/assets/scene/solarsystem/planets/venus/venus.asset b/data/assets/scene/solarsystem/planets/venus/venus.asset index 2e1c74df2a..c261416f85 100644 --- a/data/assets/scene/solarsystem/planets/venus/venus.asset +++ b/data/assets/scene/solarsystem/planets/venus/venus.asset @@ -6,7 +6,7 @@ local labelsPath = asset.require('./venus_globelabels').LabelsPath local Venus = { Identifier = "Venus", - Parent = transforms.VenusBarycenter.Identifier, + Parent = transforms.VenusCenter.Identifier, Transform = { Rotation = { Type = "SpiceRotation", diff --git a/data/assets/scene/solarsystem/sun/glare.asset b/data/assets/scene/solarsystem/sun/glare.asset index c565d81004..5c20267d0b 100644 --- a/data/assets/scene/solarsystem/sun/glare.asset +++ b/data/assets/scene/solarsystem/sun/glare.asset @@ -7,7 +7,7 @@ asset.require("spice/base") local SunGlare = { Identifier = "SunGlare", - Parent = transforms.SolarSystemBarycenter.Identifier, + Parent = transforms.SunIAU.Identifier, Renderable = { Type = "RenderablePlaneImageLocal", Size = 1.3*10^10.5, From 4d02b020819ee3d75df1156eb6ca9a049f30e0c1 Mon Sep 17 00:00:00 2001 From: Micah Acinapura Date: Thu, 10 Jun 2021 12:30:53 -0400 Subject: [PATCH 13/40] SpiceManager - initialize default matrix; Update ghoul --- ext/ghoul | 2 +- src/util/spicemanager.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ext/ghoul b/ext/ghoul index fcb8e8b964..a3fc819d8f 160000 --- a/ext/ghoul +++ b/ext/ghoul @@ -1 +1 @@ -Subproject commit fcb8e8b964c9c176733f4fdc22d117cac8d3f8b2 +Subproject commit a3fc819d8ff19fdda152e89a9401f6f61e8fc88b diff --git a/src/util/spicemanager.cpp b/src/util/spicemanager.cpp index fa862a73df..d3c430090c 100644 --- a/src/util/spicemanager.cpp +++ b/src/util/spicemanager.cpp @@ -678,7 +678,7 @@ glm::dmat3 SpiceManager::frameTransformationMatrix(const std::string& from, ghoul_assert(!to.empty(), "To must not be empty"); // get rotation matrix from frame A - frame B - glm::dmat3 transform; + glm::dmat3 transform = glm::dmat3(1.0); pxform_c( from.c_str(), to.c_str(), @@ -851,7 +851,7 @@ glm::dmat3 SpiceManager::positionTransformMatrix(const std::string& sourceFrame, ghoul_assert(!sourceFrame.empty(), "sourceFrame must not be empty"); ghoul_assert(!destinationFrame.empty(), "destinationFrame must not be empty"); - glm::dmat3 result; + glm::dmat3 result = glm::dmat3(1.0); pxform_c( sourceFrame.c_str(), destinationFrame.c_str(), @@ -883,7 +883,7 @@ glm::dmat3 SpiceManager::positionTransformMatrix(const std::string& sourceFrame, ghoul_assert(!sourceFrame.empty(), "sourceFrame must not be empty"); ghoul_assert(!destinationFrame.empty(), "destinationFrame must not be empty"); - glm::dmat3 result; + glm::dmat3 result = glm::dmat3(1.0); pxfrm2_c( sourceFrame.c_str(), From 4dce07032a7c05abf08374a9b1f95a364afb2d8a Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Fri, 11 Jun 2021 08:45:38 +0200 Subject: [PATCH 14/40] Fix some small issues --- .../pluto/charon/layers/colorlayers/greyscale_usgs.asset | 2 +- .../pluto/layers/colorlayers/greyscale_usgs.asset | 2 +- .../scene/solarsystem/dwarf_planets/pluto/trail.asset | 2 +- .../scene/solarsystem/missions/voyager/voyager2.asset | 2 +- .../solarsystem/planets/jupiter/jupiter_globelabels.asset | 2 +- .../scene/solarsystem/planets/jupiter/trail_earth.asset | 2 +- .../scene/solarsystem/planets/neptune/major_moons.asset | 2 +- .../scene/solarsystem/planets/neptune/trail_earth.asset | 2 +- .../solarsystem/planets/saturn/saturn_globelabels.asset | 2 +- .../scene/solarsystem/planets/saturn/trail_earth.asset | 4 ++-- .../scene/solarsystem/planets/uranus/trail_earth.asset | 2 +- data/assets/scene/solarsystem/sun/glare.asset | 7 ------- modules/atmosphere/rendering/atmospheredeferredcaster.cpp | 2 +- 13 files changed, 13 insertions(+), 20 deletions(-) diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/layers/colorlayers/greyscale_usgs.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/layers/colorlayers/greyscale_usgs.asset index 0284eda58d..05aeb630a3 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/layers/colorlayers/greyscale_usgs.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/layers/colorlayers/greyscale_usgs.asset @@ -14,7 +14,7 @@ asset.export("layer", layer) asset.meta = { - Name = "Charon Black & White & White [USGS]", + Name = "Charon Black & White [USGS]", Version = "1.0", Description = [[ Charon New Horizons LORRI MVIC Global Mosaic 300m v1. This detailed, high-quality global mosaic of Pluto’s largest moon, Charon, was assembled from nearly diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/layers/colorlayers/greyscale_usgs.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/layers/colorlayers/greyscale_usgs.asset index de63a8a609..0bf0135776 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/layers/colorlayers/greyscale_usgs.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/layers/colorlayers/greyscale_usgs.asset @@ -14,7 +14,7 @@ asset.export("layer", layer) asset.meta = { - Name = "Pluto Black & White & White [USGS]", + Name = "Pluto Black & White [USGS]", Version = "1.0", Description = [[ This detailed, high-quality global mosaic of Pluto was assembled from nearly all of the highest-resolution images obtained by the Long-Range diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/trail.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/trail.asset index ef7dd49624..129aeea4ea 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/trail.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/trail.asset @@ -35,7 +35,7 @@ assetHelper.registerSceneGraphNodesAndExport(asset, { PlutoBarycenterTrail }) asset.meta = { Name = "Pluto Barycenter Trail", Version = "1.0", - Description = [[ Trail of Pluto as observed by the Sun. Data from + Description = [[ Trail of Pluto Barycenter as observed by the Sun. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", diff --git a/data/assets/scene/solarsystem/missions/voyager/voyager2.asset b/data/assets/scene/solarsystem/missions/voyager/voyager2.asset index f2fddaab3c..d2e7e80a17 100644 --- a/data/assets/scene/solarsystem/missions/voyager/voyager2.asset +++ b/data/assets/scene/solarsystem/missions/voyager/voyager2.asset @@ -37,7 +37,7 @@ local LightSources = { Node = sunTransforms.SolarSystemBarycenter.Identifier, Intensity = 1.0 }, -{ + { Identifier = "Camera", Type = "CameraLightSource", Intensity = 0.5 diff --git a/data/assets/scene/solarsystem/planets/jupiter/jupiter_globelabels.asset b/data/assets/scene/solarsystem/planets/jupiter/jupiter_globelabels.asset index c13b0b0f4b..9de72c055c 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/jupiter_globelabels.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/jupiter_globelabels.asset @@ -1,5 +1,5 @@ local LabelsPath = asset.syncedResource({ - Name = "Callisto Labels", + Name = "Jupiter Labels", Type = "HttpSynchronization", Identifier = "jupiter_labels", Version = 1 diff --git a/data/assets/scene/solarsystem/planets/jupiter/trail_earth.asset b/data/assets/scene/solarsystem/planets/jupiter/trail_earth.asset index bffd3012b4..e89618469b 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/trail_earth.asset @@ -36,7 +36,7 @@ asset.meta = { Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"VenusTrailEarth"} + Identifiers = {"JupiterTrailEarth"} } assetHelper.registerSceneGraphNodesAndExport(asset, { JupiterTrailEarth }) diff --git a/data/assets/scene/solarsystem/planets/neptune/major_moons.asset b/data/assets/scene/solarsystem/planets/neptune/major_moons.asset index df57e32d64..698924a3e3 100644 --- a/data/assets/scene/solarsystem/planets/neptune/major_moons.asset +++ b/data/assets/scene/solarsystem/planets/neptune/major_moons.asset @@ -2,7 +2,7 @@ asset.require('./triton') asset.meta = { - Name = "Neptune Minor Moons", + Name = "Neptune Major Moons", Version = "1.0", Description = [[ Meta asset containing Neptune's major moon: Triton]], Author = "OpenSpace Team", diff --git a/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset b/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset index 520fc1a366..791e8f70dd 100644 --- a/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset @@ -40,5 +40,5 @@ asset.meta = { Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"VenusTrailEarth"} + Identifiers = {"NeptuneTrailEarth"} } diff --git a/data/assets/scene/solarsystem/planets/saturn/saturn_globelabels.asset b/data/assets/scene/solarsystem/planets/saturn/saturn_globelabels.asset index cca9ae611b..be23aa78c1 100644 --- a/data/assets/scene/solarsystem/planets/saturn/saturn_globelabels.asset +++ b/data/assets/scene/solarsystem/planets/saturn/saturn_globelabels.asset @@ -1,5 +1,5 @@ local LabelsPath = asset.syncedResource({ - Name = "Dione Labels", + Name = "Saturn Labels", Type = "HttpSynchronization", Identifier = "saturn_labels", Version = 1 diff --git a/data/assets/scene/solarsystem/planets/saturn/trail_earth.asset b/data/assets/scene/solarsystem/planets/saturn/trail_earth.asset index 37f5fa26f8..545e2e277b 100644 --- a/data/assets/scene/solarsystem/planets/saturn/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/saturn/trail_earth.asset @@ -37,8 +37,8 @@ asset.meta = { Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"VenusTrailEarth"} + Identifiers = {"SaturnTrailEarth"} } -assetHelper.registerSceneGraphNodesAndExport(asset, { UranusTrailEarth }) +assetHelper.registerSceneGraphNodesAndExport(asset, { SaturnTrailEarth }) diff --git a/data/assets/scene/solarsystem/planets/uranus/trail_earth.asset b/data/assets/scene/solarsystem/planets/uranus/trail_earth.asset index b1589707e2..a680c5e429 100644 --- a/data/assets/scene/solarsystem/planets/uranus/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/uranus/trail_earth.asset @@ -40,5 +40,5 @@ asset.meta = { Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"VenusTrailEarth"} + Identifiers = {"UranusTrailEarth"} } diff --git a/data/assets/scene/solarsystem/sun/glare.asset b/data/assets/scene/solarsystem/sun/glare.asset index 5c20267d0b..a45d80dd82 100644 --- a/data/assets/scene/solarsystem/sun/glare.asset +++ b/data/assets/scene/solarsystem/sun/glare.asset @@ -18,13 +18,6 @@ local SunGlare = { Opacity = 0.65, RenderableType = "PreDeferredTransparency" }, - Transform = { - Translation = { - Type = "SpiceTranslation", - Target = "SSB", - Observer = "SSB" - } - }, GUI = { Name = "Sun Glare", Path = "/Solar System/Sun", diff --git a/modules/atmosphere/rendering/atmospheredeferredcaster.cpp b/modules/atmosphere/rendering/atmospheredeferredcaster.cpp index b01c2c604d..33bb35fab1 100644 --- a/modules/atmosphere/rendering/atmospheredeferredcaster.cpp +++ b/modules/atmosphere/rendering/atmospheredeferredcaster.cpp @@ -682,7 +682,7 @@ void AtmosphereDeferredcaster::loadComputationPrograms() { ); } _irradianceSupTermsProgramObject->setIgnoreUniformLocationError(IgnoreError::Yes); - + // // InScattering S if (!_inScatteringProgramObject) { From 573ebe5ed578b171aafd931828563f7e5e225681 Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Fri, 11 Jun 2021 09:39:32 +0200 Subject: [PATCH 15/40] Add boundingSphere for RenderablePrism --- modules/base/rendering/renderableprism.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/base/rendering/renderableprism.cpp b/modules/base/rendering/renderableprism.cpp index a5c9e3702a..6420df222f 100644 --- a/modules/base/rendering/renderableprism.cpp +++ b/modules/base/rendering/renderableprism.cpp @@ -329,7 +329,7 @@ void RenderablePrism::render(const RenderData& data, RendererTasks&) { _shader->deactivate(); } -void RenderablePrism::update(const UpdateData&) { +void RenderablePrism::update(const UpdateData& data) { if (_shader->isDirty()) { _shader->rebuildFromFile(); ghoul::opengl::updateUniformLocations(*_shader, _uniformCache, UniformNames); @@ -337,6 +337,7 @@ void RenderablePrism::update(const UpdateData&) { if (_prismIsDirty) { updateVertexData(); updateBufferData(); + setBoundingSphere(_length * glm::compMax(data.modelTransform.scale)); _prismIsDirty = false; } } From d139b38d3199a9b883e8d0bdb49b6a940cdc7afe Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Fri, 11 Jun 2021 16:30:16 +0200 Subject: [PATCH 16/40] Seperate the different joystick configurations into their own assets --- data/assets/base_blank.asset | 1 - data/assets/examples/basic.scene | 1 - data/assets/util/default_joystick.asset | 228 ------------------ data/assets/util/joysticks/PS4.asset | 118 +++++++++ data/assets/util/joysticks/SpaceMouse.asset | 55 +++++ .../util/joysticks/SpaceMouseNonSticky.asset | 55 +++++ data/assets/util/joysticks/Xbox.asset | 116 +++++++++ .../util/joysticks/joystick_helper.asset | 66 +++++ .../interaction/joystickcamerastates.h | 3 +- 9 files changed, 412 insertions(+), 231 deletions(-) delete mode 100644 data/assets/util/default_joystick.asset create mode 100644 data/assets/util/joysticks/PS4.asset create mode 100644 data/assets/util/joysticks/SpaceMouse.asset create mode 100644 data/assets/util/joysticks/SpaceMouseNonSticky.asset create mode 100644 data/assets/util/joysticks/Xbox.asset create mode 100644 data/assets/util/joysticks/joystick_helper.asset diff --git a/data/assets/base_blank.asset b/data/assets/base_blank.asset index 571724ac09..b318dcf2fd 100644 --- a/data/assets/base_blank.asset +++ b/data/assets/base_blank.asset @@ -10,7 +10,6 @@ asset.require('spice/base') -- Load default key bindings applicable to most scenes asset.require('dashboard/default_dashboard') asset.require('util/default_keybindings') -asset.require('util/default_joystick') -- Load web gui local webGui = asset.require('util/webgui') diff --git a/data/assets/examples/basic.scene b/data/assets/examples/basic.scene index 71fdb1b98a..b8c3eba619 100644 --- a/data/assets/examples/basic.scene +++ b/data/assets/examples/basic.scene @@ -8,7 +8,6 @@ asset.require('spice/base') asset.require('util/default_keybindings') asset.require('util/default_dashboard') -asset.require('util/default_joystick') asset.require('util/webgui') local spheres = asset.require('examples/spheres') diff --git a/data/assets/util/default_joystick.asset b/data/assets/util/default_joystick.asset deleted file mode 100644 index 8ecce48410..0000000000 --- a/data/assets/util/default_joystick.asset +++ /dev/null @@ -1,228 +0,0 @@ -local propertyHelper = asset.require('./property_helper') - --- Allowed values for the second parameter of bindJoystickAxis: --- "None" --- "Orbit X" --- "Orbit Y" --- "Zoom" -- both in and out --- "Zoom In" --- "Zoom Out" --- "LocalRoll X" --- "LocalRoll Y" --- "GlobalRoll X" --- "GlobalRoll Y" --- "Pan X" --- "Pan Y" --- Third parameter determines whether the axis should be inverted --- Fourth parameter determines whether the axis should be normalized from [-1,1] to [0,1] - - -local XBoxController = { - LeftThumbStick = { 0 , 1 }, - RightThumbStick = { 2, 3 }, - LeftTrigger = 4, - RightTrigger = 5, - A = 0, - B = 1, - X = 2, - Y = 3, - LB = 4, - RB = 5, - Select = 6, - Start = 7, - LeftStick = 8, - RightStick = 9, - DPad = { - Up = 10, - Right = 11, - Down = 12, - Left = 13 - } -} - -local PS4Controller = { - LeftThumbStick = { 0 , 1 }, - RightThumbStick = { 2, 5 }, - LeftTrigger = 3, - RightTrigger = 4, - A = 1, -- Cross - B = 2, -- Circle - X = 0, -- Square - Y = 3, -- Triangle - LB = 4, - RB = 5, - Select = 9, -- options - Start = 12, -- PS button - LeftStick = 10, - RightStick = 11, - DPad = { - Up = 14, - Right = 15, - Down = 16, - Left = 17 - } -} - -local SpaceMouse = { - Push = {0, 1, 2}, -- left/right, back/forth, up/down - Twist = {5}, -- left/right - Tilt = {4, 3}, -- left/right, back/forth - LeftButton = 0, - RightButton = 1 -} - --- Variables to store the state of the joystick between frames -Joystick = {} -Joystick.State = {} -Joystick.State.IsInRollMode = false -Joystick.State.Axis = {} - -local bindLocalRoll = function(axis) - return [[ - -- We only want to store the current state in the first mode that is enabled, otherwise we will overwrite the backup - if not Joystick.State.IsInRollMode then - -- Save current axis state - Joystick.State.Axis.Type, Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity = openspace.navigation.joystickAxis(]] .. axis .. [[) - end - - -- Set new axis state - openspace.navigation.bindJoystickAxis(]] .. axis .. [[, "LocalRoll X", Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity); - Joystick.State.IsInRollMode = true - ]] -end - -local bindGlobalRoll = function(axis) - return [[ - -- We only want to store the current state in the first mode that is enabled, otherwise we will overwrite the backup - if not Joystick.State.IsInRollMode then - -- Save current axis state - Joystick.State.Axis.Type, Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity = openspace.navigation.joystickAxis(]] .. axis .. [[) - end - - -- Set new axis state - openspace.navigation.bindJoystickAxis(]] .. axis .. [[, "GlobalRoll X", Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity); - Joystick.State.IsInRollMode = true - ]] -end - -local permaBindLocalRoll = function(axis) - return [[ - -- Save current axis state - Joystick.State.Axis.Type, Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity = openspace.navigation.joystickAxis(]] .. axis .. [[) - - -- Set new axis state - openspace.navigation.bindJoystickAxis(]] .. axis .. [[, "LocalRoll X", Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity); - ]] -end - -local permaBindGlobalRoll = function(axis) - return [[ - -- Save current axis state - Joystick.State.Axis.Type, Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity = openspace.navigation.joystickAxis(]] .. axis .. [[) - - -- Set new axis state - openspace.navigation.bindJoystickAxis(]] .. axis .. [[, "GlobalRoll X", Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity); - ]] -end - -local unbindRoll = function(axis) - return [[ - -- Reset previous state - openspace.navigation.bindJoystickAxis(]] .. axis .. [[, Joystick.State.Axis.Type, Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity); - ]] -end - -asset.onInitialize(function() - -- Set the controller to the connected controller - -- Currently: XBoxController, PS4Controller or SpaceMouse - local controller = XBoxController; - - -- Case of XBoxController or PS4Controller - if(controller.A ~= nil) then - openspace.navigation.setAxisDeadZone(controller.LeftThumbStick[1], 0.15) - openspace.navigation.setAxisDeadZone(controller.LeftThumbStick[2], 0.15) - openspace.navigation.setAxisDeadZone(controller.RightThumbStick[1], 0.15) - openspace.navigation.setAxisDeadZone(controller.RightThumbStick[2], 0.15) - - openspace.navigation.bindJoystickAxis(controller.LeftThumbStick[1], "Orbit X"); - openspace.navigation.bindJoystickAxis(controller.LeftThumbStick[2], "Orbit Y", true); - openspace.navigation.bindJoystickAxis(controller.RightThumbStick[1], "Pan X", true); - openspace.navigation.bindJoystickAxis(controller.RightThumbStick[2], "Pan Y", true); - openspace.navigation.bindJoystickAxis(controller.LeftTrigger, "Zoom Out", false, true); - openspace.navigation.bindJoystickAxis(controller.RightTrigger, "Zoom In", false, true); - - openspace.navigation.bindJoystickButton( - controller.LB, - bindLocalRoll(controller.RightThumbStick[1]), - "Switch to local roll mode" - ) - openspace.navigation.bindJoystickButton( - controller.LB, - unbindRoll(controller.RightThumbStick[1]), - "Switch back to normal mode", - "Release" - ) - openspace.navigation.bindJoystickButton( - controller.RB, - bindGlobalRoll(controller.RightThumbStick[1]), - "Switch to global roll mode" - ) - openspace.navigation.bindJoystickButton( - controller.RB, - unbindRoll(controller.RightThumbStick[1]), - "Switch back to normal mode", - "Release" - ) - - openspace.navigation.bindJoystickButton( - controller.A, - propertyHelper.invert('NavigationHandler.OrbitalNavigator.Friction.ZoomFriction'), - "Toggle zoom friction" - ) - openspace.navigation.bindJoystickButton( - controller.B, - propertyHelper.invert('NavigationHandler.OrbitalNavigator.Friction.RotationalFriction'), - "Toggle rotational friction" - ) - openspace.navigation.bindJoystickButton( - controller.DPad.Left, - propertyHelper.invert('NavigationHandler.OrbitalNavigator.Friction.RollFriction'), - "Toggle roll friction" - ) - - openspace.navigation.bindJoystickButton( - controller.X, - "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '');" .. - "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Earth');" .. - "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);", - "Switch target to Earth" - ) - openspace.navigation.bindJoystickButton( - controller.Y, - "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '');" .. - "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Mars');" .. - "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);", - "Switch target to Mars" - ) - -- Case of SpaceMouse - elseif (controller.LeftButton ~= nil) then - openspace.navigation.bindJoystickAxis(controller.Push[1], "Orbit X", false, false, true, 40.0); - openspace.navigation.bindJoystickAxis(controller.Push[2], "Orbit Y", false, false, true, 40.0); - openspace.navigation.bindJoystickAxis(controller.Twist[1], "Pan X", true, false, true, 40.0); - openspace.navigation.bindJoystickAxis(controller.Tilt[2], "Pan Y", false, false, true, 35.0); - openspace.navigation.bindJoystickAxis(controller.Push[3], "Zoom", false, false, true, 40.0); - openspace.navigation.bindJoystickAxis(controller.Tilt[1], "LocalRoll X", false, false, true, 35.0); - - openspace.navigation.bindJoystickButton( - controller.LeftButton, - permaBindLocalRoll(controller.Tilt[1]), - "Switch to local roll mode" - ) - - openspace.navigation.bindJoystickButton( - controller.RightButton, - permaBindGlobalRoll(controller.Tilt[1]), - "Switch to global roll mode" - ) - end -end) diff --git a/data/assets/util/joysticks/PS4.asset b/data/assets/util/joysticks/PS4.asset new file mode 100644 index 0000000000..405a3bc133 --- /dev/null +++ b/data/assets/util/joysticks/PS4.asset @@ -0,0 +1,118 @@ +local propertyHelper = asset.require('./../property_helper') +local joystickHelper = asset.require('./joystick_helper') + +-- Allowed values for the second parameter of bindJoystickAxis: +-- "None" +-- "Orbit X" +-- "Orbit Y" +-- "Zoom" -- both in and out +-- "Zoom In" +-- "Zoom Out" +-- "LocalRoll X" +-- "LocalRoll Y" +-- "GlobalRoll X" +-- "GlobalRoll Y" +-- "Pan X" +-- "Pan Y" +-- Third parameter determines whether the axis should be inverted +-- Fourth parameter determines whether the axis should be normalized from [-1,1] to [0,1] +-- Fifth parameters determins if the axis should be "Sticky" or not. +-- The axis values can either go back to 0 when the joystick is released or it can +-- stay at the value it was before the joystick was released. +-- The latter is called a sticky axis, when the values don't go back to 0. +-- Sixth parameter is the sensitivity for the axis + +local PS4Controller = { + LeftThumbStick = { 0 , 1 }, + RightThumbStick = { 2, 5 }, + L2 = 3, + R2 = 4, + Cross = 1, + Circle = 2, + Square = 0, + Triangle = 3, + L1 = 4, + R1 = 5, + Share = 8, + Options = 9, + PS = 12, + LeftStick = 10, + RightStick = 11, + TouchPad = 13, + DPad = { + Up = 14, + Right = 15, + Down = 16, + Left = 17 + } +} + +asset.onInitialize(function() + local controller = PS4Controller; + + openspace.navigation.setAxisDeadZone(controller.LeftThumbStick[1], 0.15) + openspace.navigation.setAxisDeadZone(controller.LeftThumbStick[2], 0.15) + openspace.navigation.setAxisDeadZone(controller.RightThumbStick[1], 0.15) + openspace.navigation.setAxisDeadZone(controller.RightThumbStick[2], 0.15) + + openspace.navigation.bindJoystickAxis(controller.LeftThumbStick[1], "Orbit X"); + openspace.navigation.bindJoystickAxis(controller.LeftThumbStick[2], "Orbit Y", true); + openspace.navigation.bindJoystickAxis(controller.RightThumbStick[1], "Pan X", true); + openspace.navigation.bindJoystickAxis(controller.RightThumbStick[2], "Pan Y", true); + openspace.navigation.bindJoystickAxis(controller.L2, "Zoom Out", false, true); + openspace.navigation.bindJoystickAxis(controller.R2, "Zoom In", false, true); + + openspace.navigation.bindJoystickButton( + controller.L1, + joystickHelper.bindLocalRoll(controller.RightThumbStick[1]), + "Switch to local roll mode" + ) + openspace.navigation.bindJoystickButton( + controller.L1, + joystickHelper.unbindRoll(controller.RightThumbStick[1]), + "Switch back to normal mode", + "Release" + ) + openspace.navigation.bindJoystickButton( + controller.R1, + joystickHelper.bindGlobalRoll(controller.RightThumbStick[1]), + "Switch to global roll mode" + ) + openspace.navigation.bindJoystickButton( + controller.R1, + joystickHelper.unbindRoll(controller.RightThumbStick[1]), + "Switch back to normal mode", + "Release" + ) + + openspace.navigation.bindJoystickButton( + controller.Cross, + propertyHelper.invert('NavigationHandler.OrbitalNavigator.Friction.ZoomFriction'), + "Toggle zoom friction" + ) + openspace.navigation.bindJoystickButton( + controller.Circle, + propertyHelper.invert('NavigationHandler.OrbitalNavigator.Friction.RotationalFriction'), + "Toggle rotational friction" + ) + openspace.navigation.bindJoystickButton( + controller.DPad.Left, + propertyHelper.invert('NavigationHandler.OrbitalNavigator.Friction.RollFriction'), + "Toggle roll friction" + ) + + openspace.navigation.bindJoystickButton( + controller.Square, + "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '');" .. + "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Earth');" .. + "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);", + "Switch target to Earth" + ) + openspace.navigation.bindJoystickButton( + controller.Triangle, + "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '');" .. + "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Mars');" .. + "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);", + "Switch target to Mars" + ) +end) diff --git a/data/assets/util/joysticks/SpaceMouse.asset b/data/assets/util/joysticks/SpaceMouse.asset new file mode 100644 index 0000000000..f5b72915bf --- /dev/null +++ b/data/assets/util/joysticks/SpaceMouse.asset @@ -0,0 +1,55 @@ +local propertyHelper = asset.require('./../property_helper') +local joystickHelper = asset.require('./joystick_helper') + +-- Allowed values for the second parameter of bindJoystickAxis: +-- "None" +-- "Orbit X" +-- "Orbit Y" +-- "Zoom" -- both in and out +-- "Zoom In" +-- "Zoom Out" +-- "LocalRoll X" +-- "LocalRoll Y" +-- "GlobalRoll X" +-- "GlobalRoll Y" +-- "Pan X" +-- "Pan Y" +-- Third parameter determines whether the axis should be inverted +-- Fourth parameter determines whether the axis should be normalized from [-1,1] to [0,1] +-- Fifth parameters determins if the axis should be "Sticky" or not. +-- The axis values can either go back to 0 when the joystick is released or it can +-- stay at the value it was before the joystick was released. +-- The latter is called a sticky axis, when the values don't go back to 0. +-- This version of the SpaceMouse IS Sticky. +-- Sixth parameter is the sensitivity for the axis + +local SpaceMouse = { + Push = {0, 1, 2}, -- left/right, back/forth, up/down + Twist = {5}, -- left/right + Tilt = {4, 3}, -- left/right, back/forth + LeftButton = 0, + RightButton = 1 +} + +asset.onInitialize(function() + local controller = SpaceMouse; + + openspace.navigation.bindJoystickAxis(controller.Push[1], "Orbit X", false, false, true, 40.0); + openspace.navigation.bindJoystickAxis(controller.Push[2], "Orbit Y", false, false, true, 40.0); + openspace.navigation.bindJoystickAxis(controller.Twist[1], "Pan X", true, false, true, 40.0); + openspace.navigation.bindJoystickAxis(controller.Tilt[2], "Pan Y", false, false, true, 35.0); + openspace.navigation.bindJoystickAxis(controller.Push[3], "Zoom", false, false, true, 40.0); + openspace.navigation.bindJoystickAxis(controller.Tilt[1], "LocalRoll X", false, false, true, 35.0); + + openspace.navigation.bindJoystickButton( + controller.LeftButton, + joystickHelper.permaBindLocalRoll(controller.Tilt[1]), + "Switch to local roll mode" + ) + + openspace.navigation.bindJoystickButton( + controller.RightButton, + joystickHelper.permaBindGlobalRoll(controller.Tilt[1]), + "Switch to global roll mode" + ) +end) diff --git a/data/assets/util/joysticks/SpaceMouseNonSticky.asset b/data/assets/util/joysticks/SpaceMouseNonSticky.asset new file mode 100644 index 0000000000..84e8987eb5 --- /dev/null +++ b/data/assets/util/joysticks/SpaceMouseNonSticky.asset @@ -0,0 +1,55 @@ +local propertyHelper = asset.require('./../property_helper') +local joystickHelper = asset.require('./joystick_helper') + +-- Allowed values for the second parameter of bindJoystickAxis: +-- "None" +-- "Orbit X" +-- "Orbit Y" +-- "Zoom" -- both in and out +-- "Zoom In" +-- "Zoom Out" +-- "LocalRoll X" +-- "LocalRoll Y" +-- "GlobalRoll X" +-- "GlobalRoll Y" +-- "Pan X" +-- "Pan Y" +-- Third parameter determines whether the axis should be inverted +-- Fourth parameter determines whether the axis should be normalized from [-1,1] to [0,1] +-- Fifth parameters determins if the axis should be "Sticky" or not. +-- The axis values can either go back to 0 when the joystick is released or it can +-- stay at the value it was before the joystick was released. +-- The latter is called a sticky axis, when the values don't go back to 0. +-- This version of the SpaceMouse is NOT Sticky. +-- Sixth parameter is the sensitivity for the axis + +local SpaceMouse = { + Push = {0, 1, 2}, -- left/right, back/forth, up/down + Twist = {5}, -- left/right + Tilt = {4, 3}, -- left/right, back/forth + LeftButton = 0, + RightButton = 1 +} + +asset.onInitialize(function() + local controller = SpaceMouse; + + openspace.navigation.bindJoystickAxis(controller.Push[1], "Orbit X", false); + openspace.navigation.bindJoystickAxis(controller.Push[2], "Orbit Y", false); + openspace.navigation.bindJoystickAxis(controller.Twist[1], "Pan X", true); + openspace.navigation.bindJoystickAxis(controller.Tilt[2], "Pan Y", false); + openspace.navigation.bindJoystickAxis(controller.Push[3], "Zoom", false); + openspace.navigation.bindJoystickAxis(controller.Tilt[1], "LocalRoll X", false); + + openspace.navigation.bindJoystickButton( + controller.LeftButton, + joystickHelper.permaBindLocalRoll(controller.Tilt[1]), + "Switch to local roll mode" + ) + + openspace.navigation.bindJoystickButton( + controller.RightButton, + joystickHelper.permaBindGlobalRoll(controller.Tilt[1]), + "Switch to global roll mode" + ) +end) diff --git a/data/assets/util/joysticks/Xbox.asset b/data/assets/util/joysticks/Xbox.asset new file mode 100644 index 0000000000..60e6ca6906 --- /dev/null +++ b/data/assets/util/joysticks/Xbox.asset @@ -0,0 +1,116 @@ +local propertyHelper = asset.require('./../property_helper') +local joystickHelper = asset.require('./joystick_helper') + +-- Allowed values for the second parameter of bindJoystickAxis: +-- "None" +-- "Orbit X" +-- "Orbit Y" +-- "Zoom" -- both in and out +-- "Zoom In" +-- "Zoom Out" +-- "LocalRoll X" +-- "LocalRoll Y" +-- "GlobalRoll X" +-- "GlobalRoll Y" +-- "Pan X" +-- "Pan Y" +-- Third parameter determines whether the axis should be inverted +-- Fourth parameter determines whether the axis should be normalized from [-1,1] to [0,1] +-- Fifth parameters determins if the axis should be "Sticky" or not. +-- The axis values can either go back to 0 when the joystick is released or it can +-- stay at the value it was before the joystick was released. +-- The latter is called a sticky axis, when the values don't go back to 0. +-- Sixth parameter is the sensitivity for the axis + +local XBoxController = { + LeftThumbStick = { 0 , 1 }, + RightThumbStick = { 2, 3 }, + LeftTrigger = 4, + RightTrigger = 5, + A = 0, + B = 1, + X = 2, + Y = 3, + LB = 4, + RB = 5, + Select = 6, + Start = 7, + LeftStick = 8, + RightStick = 9, + DPad = { + Up = 10, + Right = 11, + Down = 12, + Left = 13 + } +} + +asset.onInitialize(function() + local controller = XBoxController; + + openspace.navigation.setAxisDeadZone(controller.LeftThumbStick[1], 0.15) + openspace.navigation.setAxisDeadZone(controller.LeftThumbStick[2], 0.15) + openspace.navigation.setAxisDeadZone(controller.RightThumbStick[1], 0.15) + openspace.navigation.setAxisDeadZone(controller.RightThumbStick[2], 0.15) + + openspace.navigation.bindJoystickAxis(controller.LeftThumbStick[1], "Orbit X"); + openspace.navigation.bindJoystickAxis(controller.LeftThumbStick[2], "Orbit Y", true); + openspace.navigation.bindJoystickAxis(controller.RightThumbStick[1], "Pan X", true); + openspace.navigation.bindJoystickAxis(controller.RightThumbStick[2], "Pan Y", true); + openspace.navigation.bindJoystickAxis(controller.LeftTrigger, "Zoom Out", false, true); + openspace.navigation.bindJoystickAxis(controller.RightTrigger, "Zoom In", false, true); + + openspace.navigation.bindJoystickButton( + controller.LB, + joystickHelper.bindLocalRoll(controller.RightThumbStick[1]), + "Switch to local roll mode" + ) + openspace.navigation.bindJoystickButton( + controller.LB, + joystickHelper.unbindRoll(controller.RightThumbStick[1]), + "Switch back to normal mode", + "Release" + ) + openspace.navigation.bindJoystickButton( + controller.RB, + joystickHelper.bindGlobalRoll(controller.RightThumbStick[1]), + "Switch to global roll mode" + ) + openspace.navigation.bindJoystickButton( + controller.RB, + joystickHelper.unbindRoll(controller.RightThumbStick[1]), + "Switch back to normal mode", + "Release" + ) + + openspace.navigation.bindJoystickButton( + controller.A, + propertyHelper.invert('NavigationHandler.OrbitalNavigator.Friction.ZoomFriction'), + "Toggle zoom friction" + ) + openspace.navigation.bindJoystickButton( + controller.B, + propertyHelper.invert('NavigationHandler.OrbitalNavigator.Friction.RotationalFriction'), + "Toggle rotational friction" + ) + openspace.navigation.bindJoystickButton( + controller.DPad.Left, + propertyHelper.invert('NavigationHandler.OrbitalNavigator.Friction.RollFriction'), + "Toggle roll friction" + ) + + openspace.navigation.bindJoystickButton( + controller.X, + "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '');" .. + "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Earth');" .. + "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);", + "Switch target to Earth" + ) + openspace.navigation.bindJoystickButton( + controller.Y, + "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '');" .. + "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Mars');" .. + "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);", + "Switch target to Mars" + ) +end) diff --git a/data/assets/util/joysticks/joystick_helper.asset b/data/assets/util/joysticks/joystick_helper.asset new file mode 100644 index 0000000000..169003d658 --- /dev/null +++ b/data/assets/util/joysticks/joystick_helper.asset @@ -0,0 +1,66 @@ +-- Variables to store the state of the joystick between frames +Joystick = {} +Joystick.State = {} +Joystick.State.IsInRollMode = false +Joystick.State.Axis = {} + +local bindLocalRoll = function(axis) + return [[ + -- We only want to store the current state in the first mode that is enabled, otherwise we will overwrite the backup + if not Joystick.State.IsInRollMode then + -- Save current axis state + Joystick.State.Axis.Type, Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity = openspace.navigation.joystickAxis(]] .. axis .. [[) + end + + -- Set new axis state + openspace.navigation.bindJoystickAxis(]] .. axis .. [[, "LocalRoll X", Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity); + Joystick.State.IsInRollMode = true + ]] +end + +local bindGlobalRoll = function(axis) + return [[ + -- We only want to store the current state in the first mode that is enabled, otherwise we will overwrite the backup + if not Joystick.State.IsInRollMode then + -- Save current axis state + Joystick.State.Axis.Type, Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity = openspace.navigation.joystickAxis(]] .. axis .. [[) + end + + -- Set new axis state + openspace.navigation.bindJoystickAxis(]] .. axis .. [[, "GlobalRoll X", Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity); + Joystick.State.IsInRollMode = true + ]] +end + +local permaBindLocalRoll = function(axis) + return [[ + -- Save current axis state + Joystick.State.Axis.Type, Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity = openspace.navigation.joystickAxis(]] .. axis .. [[) + + -- Set new axis state + openspace.navigation.bindJoystickAxis(]] .. axis .. [[, "LocalRoll X", Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity); + ]] +end + +local permaBindGlobalRoll = function(axis) + return [[ + -- Save current axis state + Joystick.State.Axis.Type, Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity = openspace.navigation.joystickAxis(]] .. axis .. [[) + + -- Set new axis state + openspace.navigation.bindJoystickAxis(]] .. axis .. [[, "GlobalRoll X", Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity); + ]] +end + +local unbindRoll = function(axis) + return [[ + -- Reset previous state + openspace.navigation.bindJoystickAxis(]] .. axis .. [[, Joystick.State.Axis.Type, Joystick.State.Axis.Inverted, Joystick.State.Axis.Normalized, Joystick.State.Axis.Sticky, Joystick.State.Axis.Sensitivity); + ]] +end + +asset.export("bindLocalRoll", bindLocalRoll) +asset.export("bindGlobalRoll", bindGlobalRoll) +asset.export("permaBindLocalRoll", permaBindLocalRoll) +asset.export("permaBindGlobalRoll", permaBindGlobalRoll) +asset.export("unbindRoll", unbindRoll) \ No newline at end of file diff --git a/include/openspace/interaction/joystickcamerastates.h b/include/openspace/interaction/joystickcamerastates.h index 15188faf26..f8f86f239b 100644 --- a/include/openspace/interaction/joystickcamerastates.h +++ b/include/openspace/interaction/joystickcamerastates.h @@ -130,6 +130,7 @@ inline std::string to_string( case T::OrbitY: return "Orbit Y"; case T::ZoomIn: return "Zoom In"; case T::ZoomOut: return "Zoom Out"; + case T::Zoom: return "Zoom In and Out"; case T::LocalRollX: return "LocalRoll X"; case T::LocalRollY: return "LocalRoll Y"; case T::GlobalRollX: return "GlobalRoll X"; @@ -149,9 +150,9 @@ from_string(std::string_view string) if (string == "None") { return T::None; } if (string == "Orbit X") { return T::OrbitX; } if (string == "Orbit Y") { return T::OrbitY; } - if (string == "Zoom") { return T::Zoom; } if (string == "Zoom In") { return T::ZoomIn; } if (string == "Zoom Out") { return T::ZoomOut; } + if (string == "Zoom") { return T::Zoom; } if (string == "LocalRoll X") { return T::LocalRollX; } if (string == "LocalRoll Y") { return T::LocalRollY; } if (string == "GlobalRoll X") { return T::GlobalRollX; } From 2e625045746ac970e6e5ffec0d84ac36959939a7 Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Fri, 11 Jun 2021 16:50:22 +0200 Subject: [PATCH 17/40] Address PR comments --- .../solarsystem/planets/jupiter/jupiter.asset | 7 +++++- .../planets/jupiter/transforms.asset | 23 +++--------------- .../scene/solarsystem/planets/mars/mars.asset | 7 +++++- .../solarsystem/planets/mars/transforms.asset | 24 +++---------------- .../solarsystem/planets/mercury/mercury.asset | 7 +++++- .../planets/mercury/transforms.asset | 24 +++---------------- .../solarsystem/planets/neptune/neptune.asset | 7 +++++- .../planets/neptune/transforms.asset | 22 ++--------------- .../solarsystem/planets/saturn/saturn.asset | 7 +++++- .../planets/saturn/transforms.asset | 24 +++---------------- .../planets/uranus/transforms.asset | 24 +++---------------- .../solarsystem/planets/uranus/uranus.asset | 7 +++++- .../planets/venus/transforms.asset | 24 +++---------------- .../solarsystem/planets/venus/venus.asset | 7 +++++- 14 files changed, 62 insertions(+), 152 deletions(-) diff --git a/data/assets/scene/solarsystem/planets/jupiter/jupiter.asset b/data/assets/scene/solarsystem/planets/jupiter/jupiter.asset index 9c3a5b99ba..a7941b8f18 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/jupiter.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/jupiter.asset @@ -5,8 +5,13 @@ asset.require('./trail') local Jupiter = { Identifier = "Jupiter", - Parent = transforms.JupiterCenter.Identifier, + Parent = transforms.JupiterBarycenter.Identifier, Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "JUPITER", + Observer = "JUPITER BARYCENTER" + }, Rotation = { Type = "SpiceRotation", SourceFrame = "IAU_JUPITER", diff --git a/data/assets/scene/solarsystem/planets/jupiter/transforms.asset b/data/assets/scene/solarsystem/planets/jupiter/transforms.asset index 67811c0e29..510b1db636 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/transforms.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/transforms.asset @@ -21,32 +21,15 @@ local JupiterBarycenter = { } } -local JupiterCenter = { - Identifier = "JupiterCenter", - Parent = JupiterBarycenter.Identifier, - Transform = { - Translation = { - Type = "SpiceTranslation", - Target = "JUPITER", - Observer = "JUPITER BARYCENTER" - } - }, - GUI = { - Name = "Jupiter Center", - Path = "/Solar System/Planets/Jupiter", - Hidden = true - } -} - -assetHelper.registerSceneGraphNodesAndExport(asset, { JupiterBarycenter, JupiterCenter }) +assetHelper.registerSceneGraphNodesAndExport(asset, { JupiterBarycenter }) asset.meta = { Name = "Jupiter Transforms", Version = "1.0", - Description = [[ Jupiter Barycenter and Center transform ]], + Description = [[ Jupiter Barycenter transform ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"JupiterBarycenter", "JupiterCenter"} + Identifiers = {"JupiterBarycenter"} } diff --git a/data/assets/scene/solarsystem/planets/mars/mars.asset b/data/assets/scene/solarsystem/planets/mars/mars.asset index e90fefb9d2..38ea1c813f 100644 --- a/data/assets/scene/solarsystem/planets/mars/mars.asset +++ b/data/assets/scene/solarsystem/planets/mars/mars.asset @@ -9,8 +9,13 @@ local marsRadii = { 3396190.0, 3396190.0, 3396190.0 } local Mars = { Identifier = "Mars", - Parent = transforms.MarsCenter.Identifier, + Parent = transforms.MarsBarycenter.Identifier, Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "MARS", + Observer = "MARS BARYCENTER" + }, Rotation = { Type = "SpiceRotation", SourceFrame = "IAU_MARS", diff --git a/data/assets/scene/solarsystem/planets/mars/transforms.asset b/data/assets/scene/solarsystem/planets/mars/transforms.asset index 45159a2487..7b8fb79dbf 100644 --- a/data/assets/scene/solarsystem/planets/mars/transforms.asset +++ b/data/assets/scene/solarsystem/planets/mars/transforms.asset @@ -20,33 +20,15 @@ local MarsBarycenter = { } } -local MarsCenter = { - Identifier = "MarsCenter", - Parent = MarsBarycenter.Identifier, - Transform = { - Translation = { - Type = "SpiceTranslation", - Target = "MARS", - Observer = "MARS BARYCENTER" - } - }, - GUI = { - Name = "Mars Center", - Path = "/Solar System/Planets/Mars", - Hidden = true, - Description = [[ SPICE Translation for targeting Mars Center]], - } -} - -assetHelper.registerSceneGraphNodesAndExport(asset, { MarsBarycenter, MarsCenter }) +assetHelper.registerSceneGraphNodesAndExport(asset, { MarsBarycenter }) asset.meta = { Name = "Mars Transforms", Version = "1.0", - Description = [[ Transforms with positions for Mars.]], + Description = [[ Transform with position for Mars.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"MarsBarycenter", "MarsCenter"} + Identifiers = {"MarsBarycenter"} } diff --git a/data/assets/scene/solarsystem/planets/mercury/mercury.asset b/data/assets/scene/solarsystem/planets/mercury/mercury.asset index d1605b6b79..f6e8465910 100644 --- a/data/assets/scene/solarsystem/planets/mercury/mercury.asset +++ b/data/assets/scene/solarsystem/planets/mercury/mercury.asset @@ -7,8 +7,13 @@ asset.require('./trail') local Mercury = { Identifier = "Mercury", - Parent = transforms.MercuryCenter.Identifier, + Parent = transforms.MercuryBarycenter.Identifier, Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "MERCURY", + Observer = "MERCURY BARYCENTER" + }, Rotation = { Type = "SpiceRotation", SourceFrame = "IAU_MERCURY", diff --git a/data/assets/scene/solarsystem/planets/mercury/transforms.asset b/data/assets/scene/solarsystem/planets/mercury/transforms.asset index 834f61d7c8..0b85348f9b 100644 --- a/data/assets/scene/solarsystem/planets/mercury/transforms.asset +++ b/data/assets/scene/solarsystem/planets/mercury/transforms.asset @@ -20,33 +20,15 @@ local MercuryBarycenter = { } } -local MercuryCenter = { - Identifier = "MercuryCenter", - Parent = MercuryBarycenter.Identifier, - Transform = { - Translation = { - Type = "SpiceTranslation", - Target = "MERCURY", - Observer = "MERCURY BARYCENTER" - } - }, - GUI = { - Name = "Mercury Center", - Path = "/Solar System/Planets/Mercury", - Hidden = true, - Description = [[ Mercury Center position]], - } -} - -assetHelper.registerSceneGraphNodesAndExport(asset, { MercuryBarycenter, MercuryCenter }) +assetHelper.registerSceneGraphNodesAndExport(asset, { MercuryBarycenter }) asset.meta = { Name = "Mercury Transforms", Version = "1.0", - Description = [[ Mercury Barycenter and Center transform]], + Description = [[ Mercury Barycenter transform]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"MercuryBarycenter", "MercuryCenter"} + Identifiers = {"MercuryBarycenter"} } diff --git a/data/assets/scene/solarsystem/planets/neptune/neptune.asset b/data/assets/scene/solarsystem/planets/neptune/neptune.asset index e9a250dc68..e4e226a339 100644 --- a/data/assets/scene/solarsystem/planets/neptune/neptune.asset +++ b/data/assets/scene/solarsystem/planets/neptune/neptune.asset @@ -5,8 +5,13 @@ asset.require('./trail') local Neptune = { Identifier = "Neptune", - Parent = transforms.NeptuneCenter.Identifier, + Parent = transforms.NeptuneBarycenter.Identifier, Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "NEPTUNE", + Observer = "NEPTUNE BARYCENTER" + }, Rotation = { Type = "SpiceRotation", SourceFrame = "IAU_NEPTUNE", diff --git a/data/assets/scene/solarsystem/planets/neptune/transforms.asset b/data/assets/scene/solarsystem/planets/neptune/transforms.asset index a463830fa6..4958bd5b6f 100644 --- a/data/assets/scene/solarsystem/planets/neptune/transforms.asset +++ b/data/assets/scene/solarsystem/planets/neptune/transforms.asset @@ -20,31 +20,13 @@ local NeptuneBarycenter = { } } -local NeptuneCenter = { - Identifier = "NeptuneCenter", - Parent = NeptuneBarycenter.Identifier, - Transform = { - Translation = { - Type = "SpiceTranslation", - Target = "NEPTUNE", - Observer = "NEPTUNE BARYCENTER" - } - }, - GUI = { - Name = "Neptune Center", - Path = "/Solar System/Planets/Neptune", - Hidden = true, - Description = [[ Neptune Center position]], - } -} - -assetHelper.registerSceneGraphNodesAndExport(asset, { NeptuneBarycenter, NeptuneCenter }) +assetHelper.registerSceneGraphNodesAndExport(asset, { NeptuneBarycenter }) asset.meta = { Name = "Neptune Transforms", Version = "1.0", - Description = [[ Neptune Barycenter and Center transform ]], + Description = [[ Neptune Barycenter transform ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", diff --git a/data/assets/scene/solarsystem/planets/saturn/saturn.asset b/data/assets/scene/solarsystem/planets/saturn/saturn.asset index e7ce962fdc..77d44acf2a 100644 --- a/data/assets/scene/solarsystem/planets/saturn/saturn.asset +++ b/data/assets/scene/solarsystem/planets/saturn/saturn.asset @@ -7,8 +7,13 @@ local texturesPath = asset.require("./saturn_textures").TexturesPath local Saturn = { Identifier = "Saturn", - Parent = transforms.SaturnCenter.Identifier, + Parent = transforms.SaturnBarycenter.Identifier, Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "SATURN", + Observer = "SATURN BARYCENTER" + }, Rotation = { Type = "SpiceRotation", SourceFrame = "IAU_SATURN", diff --git a/data/assets/scene/solarsystem/planets/saturn/transforms.asset b/data/assets/scene/solarsystem/planets/saturn/transforms.asset index 1e0561e4f0..066c700e44 100644 --- a/data/assets/scene/solarsystem/planets/saturn/transforms.asset +++ b/data/assets/scene/solarsystem/planets/saturn/transforms.asset @@ -20,33 +20,15 @@ local SaturnBarycenter = { } } -local SaturnCenter = { - Identifier = "SaturnCenter", - Parent = SaturnBarycenter.Identifier, - Transform = { - Translation = { - Type = "SpiceTranslation", - Target = "SATURN", - Observer = "SATURN BARYCENTER" - } - }, - GUI = { - Name = "Saturn Center", - Path = "/Solar System/Planets/Saturn", - Hidden = true, - Description = [[ Saturn Center position]] - } -} - -assetHelper.registerSceneGraphNodesAndExport(asset, { SaturnBarycenter, SaturnCenter }) +assetHelper.registerSceneGraphNodesAndExport(asset, { SaturnBarycenter }) asset.meta = { Name = "Saturn Transforms", Version = "1.0", - Description = [[ Saturn Barycenter and Center transform]], + Description = [[ Saturn Barycenter transform]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"SaturnBarycenter", "SaturnCenter"} + Identifiers = {"SaturnBarycenter"} } diff --git a/data/assets/scene/solarsystem/planets/uranus/transforms.asset b/data/assets/scene/solarsystem/planets/uranus/transforms.asset index f1fd8f99e8..a377192913 100644 --- a/data/assets/scene/solarsystem/planets/uranus/transforms.asset +++ b/data/assets/scene/solarsystem/planets/uranus/transforms.asset @@ -22,33 +22,15 @@ local UranusBarycenter = { } } -local UranusCenter = { - Identifier = "UranusCenter", - Parent = UranusBarycenter.Identifier, - Transform = { - Translation = { - Type = "SpiceTranslation", - Target = "URANUS", - Observer = "URANUS BARYCENTER" - } - }, - GUI = { - Name = "Uranus Center", - Path = "/Solar System/Planets/Uranus", - Hidden = true, - Description = [[ Uranus Center position]], - } -} - -assetHelper.registerSceneGraphNodesAndExport(asset, { UranusBarycenter, UranusCenter }) +assetHelper.registerSceneGraphNodesAndExport(asset, { UranusBarycenter }) asset.meta = { Name = "Uranus Transforms", Version = "1.0", - Description = [[ Uranus Barycenter and Center transform]], + Description = [[ Uranus Barycenter transform]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"UranusBarycenter", "UranusCenter"} + Identifiers = {"UranusBarycenter"} } diff --git a/data/assets/scene/solarsystem/planets/uranus/uranus.asset b/data/assets/scene/solarsystem/planets/uranus/uranus.asset index 74e30d0e68..e8dadd8be4 100644 --- a/data/assets/scene/solarsystem/planets/uranus/uranus.asset +++ b/data/assets/scene/solarsystem/planets/uranus/uranus.asset @@ -5,8 +5,13 @@ asset.require('./trail') local Uranus = { Identifier = "Uranus", - Parent = transforms.UranusCenter.Identifier, + Parent = transforms.UranusBarycenter.Identifier, Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "URANUS", + Observer = "URANUS BARYCENTER" + }, Rotation = { Type = "SpiceRotation", SourceFrame = "IAU_URANUS", diff --git a/data/assets/scene/solarsystem/planets/venus/transforms.asset b/data/assets/scene/solarsystem/planets/venus/transforms.asset index 672b7c28e2..9ae009af03 100644 --- a/data/assets/scene/solarsystem/planets/venus/transforms.asset +++ b/data/assets/scene/solarsystem/planets/venus/transforms.asset @@ -20,33 +20,15 @@ local VenusBarycenter = { } } -local VenusCenter = { - Identifier = "VenusCenter", - Parent = VenusBarycenter.Identifier, - Transform = { - Translation = { - Type = "SpiceTranslation", - Target = "VENUS", - Observer = "VENUS BARYCENTER" - } - }, - GUI = { - Name = "Venus Center", - Path = "/Solar System/Planets/Venus", - Hidden = true, - Description = "Position for Venus Center" - } -} - -assetHelper.registerSceneGraphNodesAndExport(asset, { VenusBarycenter, VenusCenter }) +assetHelper.registerSceneGraphNodesAndExport(asset, { VenusBarycenter }) asset.meta = { Name = "Venus Transforms", Version = "1.0", - Description = [[ Spice translation for Venus Barycenter and Center]], + Description = [[ Spice translation for Venus Barycenter ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"VenusBarycenter", "VenusCenter"} + Identifiers = {"VenusBarycenter"} } diff --git a/data/assets/scene/solarsystem/planets/venus/venus.asset b/data/assets/scene/solarsystem/planets/venus/venus.asset index c261416f85..062f58fade 100644 --- a/data/assets/scene/solarsystem/planets/venus/venus.asset +++ b/data/assets/scene/solarsystem/planets/venus/venus.asset @@ -6,8 +6,13 @@ local labelsPath = asset.require('./venus_globelabels').LabelsPath local Venus = { Identifier = "Venus", - Parent = transforms.VenusCenter.Identifier, + Parent = transforms.VenusBarycenter.Identifier, Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "VENUS", + Observer = "VENUS BARYCENTER" + }, Rotation = { Type = "SpiceRotation", SourceFrame = "IAU_VENUS", From 110f5b8590d32906505d0e3aa99c0abbce2ddc27 Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Fri, 11 Jun 2021 16:54:06 +0200 Subject: [PATCH 18/40] Oops --- data/assets/scene/solarsystem/planets/neptune/transforms.asset | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/assets/scene/solarsystem/planets/neptune/transforms.asset b/data/assets/scene/solarsystem/planets/neptune/transforms.asset index 4958bd5b6f..d5f0409737 100644 --- a/data/assets/scene/solarsystem/planets/neptune/transforms.asset +++ b/data/assets/scene/solarsystem/planets/neptune/transforms.asset @@ -30,5 +30,5 @@ asset.meta = { Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license", - Identifiers = {"NeptuneBarycenter", "NeptuneCenter"} + Identifiers = {"NeptuneBarycenter"} } From 8c989cc7bb9a5a34a769050674a7fbf4b377b164 Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Fri, 11 Jun 2021 17:04:02 +0200 Subject: [PATCH 19/40] Make distinction between stick and stick button clearer for controller --- data/assets/util/joysticks/PS4.asset | 4 ++-- data/assets/util/joysticks/Xbox.asset | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/assets/util/joysticks/PS4.asset b/data/assets/util/joysticks/PS4.asset index 405a3bc133..1450a1121e 100644 --- a/data/assets/util/joysticks/PS4.asset +++ b/data/assets/util/joysticks/PS4.asset @@ -36,8 +36,8 @@ local PS4Controller = { Share = 8, Options = 9, PS = 12, - LeftStick = 10, - RightStick = 11, + LeftStickButton = 10, + RightStickButton = 11, TouchPad = 13, DPad = { Up = 14, diff --git a/data/assets/util/joysticks/Xbox.asset b/data/assets/util/joysticks/Xbox.asset index 60e6ca6906..abddffb022 100644 --- a/data/assets/util/joysticks/Xbox.asset +++ b/data/assets/util/joysticks/Xbox.asset @@ -35,8 +35,8 @@ local XBoxController = { RB = 5, Select = 6, Start = 7, - LeftStick = 8, - RightStick = 9, + LeftStickButton = 8, + RightStickButton = 9, DPad = { Up = 10, Right = 11, From db027f955432556c285d653e12017f8fb07d837e Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Fri, 11 Jun 2021 17:06:30 +0200 Subject: [PATCH 20/40] Add empty line at end of file --- data/assets/util/joysticks/joystick_helper.asset | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/assets/util/joysticks/joystick_helper.asset b/data/assets/util/joysticks/joystick_helper.asset index 169003d658..106c9dc901 100644 --- a/data/assets/util/joysticks/joystick_helper.asset +++ b/data/assets/util/joysticks/joystick_helper.asset @@ -63,4 +63,4 @@ asset.export("bindLocalRoll", bindLocalRoll) asset.export("bindGlobalRoll", bindGlobalRoll) asset.export("permaBindLocalRoll", permaBindLocalRoll) asset.export("permaBindGlobalRoll", permaBindGlobalRoll) -asset.export("unbindRoll", unbindRoll) \ No newline at end of file +asset.export("unbindRoll", unbindRoll) From 1daf2b244de5e5ef6bfb9e79dad69ccd3bb7d009 Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Fri, 11 Jun 2021 18:13:44 +0200 Subject: [PATCH 21/40] Address PR comments --- data/assets/util/joysticks/PS4.asset | 2 +- data/assets/util/joysticks/SpaceMouse.asset | 2 +- data/assets/util/joysticks/SpaceMouseNonSticky.asset | 2 +- data/assets/util/joysticks/Xbox.asset | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/assets/util/joysticks/PS4.asset b/data/assets/util/joysticks/PS4.asset index 1450a1121e..e9f7aab684 100644 --- a/data/assets/util/joysticks/PS4.asset +++ b/data/assets/util/joysticks/PS4.asset @@ -1,4 +1,4 @@ -local propertyHelper = asset.require('./../property_helper') +local propertyHelper = asset.require('../property_helper') local joystickHelper = asset.require('./joystick_helper') -- Allowed values for the second parameter of bindJoystickAxis: diff --git a/data/assets/util/joysticks/SpaceMouse.asset b/data/assets/util/joysticks/SpaceMouse.asset index f5b72915bf..36152e9b06 100644 --- a/data/assets/util/joysticks/SpaceMouse.asset +++ b/data/assets/util/joysticks/SpaceMouse.asset @@ -1,4 +1,4 @@ -local propertyHelper = asset.require('./../property_helper') +local propertyHelper = asset.require('../property_helper') local joystickHelper = asset.require('./joystick_helper') -- Allowed values for the second parameter of bindJoystickAxis: diff --git a/data/assets/util/joysticks/SpaceMouseNonSticky.asset b/data/assets/util/joysticks/SpaceMouseNonSticky.asset index 84e8987eb5..7140adae0b 100644 --- a/data/assets/util/joysticks/SpaceMouseNonSticky.asset +++ b/data/assets/util/joysticks/SpaceMouseNonSticky.asset @@ -1,4 +1,4 @@ -local propertyHelper = asset.require('./../property_helper') +local propertyHelper = asset.require('../property_helper') local joystickHelper = asset.require('./joystick_helper') -- Allowed values for the second parameter of bindJoystickAxis: diff --git a/data/assets/util/joysticks/Xbox.asset b/data/assets/util/joysticks/Xbox.asset index abddffb022..d252965ee1 100644 --- a/data/assets/util/joysticks/Xbox.asset +++ b/data/assets/util/joysticks/Xbox.asset @@ -1,4 +1,4 @@ -local propertyHelper = asset.require('./../property_helper') +local propertyHelper = asset.require('../property_helper') local joystickHelper = asset.require('./joystick_helper') -- Allowed values for the second parameter of bindJoystickAxis: From 3272bc4ebc28b1505d36e54ba863247048e959a7 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 14 Jun 2021 15:34:29 +0200 Subject: [PATCH 22/40] Fix issue with compiling on Debug --- modules/base/rendering/renderableprism.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/base/rendering/renderableprism.cpp b/modules/base/rendering/renderableprism.cpp index 6420df222f..7c96247b21 100644 --- a/modules/base/rendering/renderableprism.cpp +++ b/modules/base/rendering/renderableprism.cpp @@ -256,7 +256,10 @@ void RenderablePrism::updateVertexData() { } // Indices for Base shape - ghoul_assert(_nShapeSegments.value <= std::numeric_limit::max(), "Too many shape segments") + ghoul_assert( + _nShapeSegments.value() <= std::numeric_limits::max(), + "Too many shape segments" + ); for (uint8_t i = 0; i < _nShapeSegments; ++i) { _indexArray.push_back(i); } From 611f7b6ef4e223b5a5e27fc5db92eb4a8aab3ef6 Mon Sep 17 00:00:00 2001 From: Micah Acinapura Date: Mon, 14 Jun 2021 17:51:20 -0400 Subject: [PATCH 23/40] update ghoul --- ext/ghoul | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/ghoul b/ext/ghoul index a3fc819d8f..528bc4e87d 160000 --- a/ext/ghoul +++ b/ext/ghoul @@ -1 +1 @@ -Subproject commit a3fc819d8ff19fdda152e89a9401f6f61e8fc88b +Subproject commit 528bc4e87d6bc7a81ec62f5338e2b7d9fe706057 From 570484182095a08dc5942a687dfa3abdd25739dd Mon Sep 17 00:00:00 2001 From: Micah Acinapura Date: Mon, 14 Jun 2021 18:29:33 -0400 Subject: [PATCH 24/40] better check for hidden file on *nix --- src/interaction/sessionrecording.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/interaction/sessionrecording.cpp b/src/interaction/sessionrecording.cpp index b29a37bf07..052f10c90c 100644 --- a/src/interaction/sessionrecording.cpp +++ b/src/interaction/sessionrecording.cpp @@ -2103,7 +2103,7 @@ std::vector SessionRecording::playbackList() const { DWORD attributes = GetFileAttributes(e.path().string().c_str()); bool isHidden = attributes & FILE_ATTRIBUTE_HIDDEN; #else - bool isHidden = filename.rfind(".", 0) != 0; + bool isHidden = filename.find(".") == 0; #endif // WIN32 if (!isHidden) { // Don't add hidden files From 8952bb0dad27ba5344df28e8ffa420385d405f94 Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Tue, 15 Jun 2021 09:42:34 +0200 Subject: [PATCH 25/40] Lower case asset file names --- .../{SpaceMouseNonSticky.asset => space-mouse-not-sticky.asset} | 0 .../assets/util/joysticks/{SpaceMouse.asset => space-mouse.asset} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename data/assets/util/joysticks/{SpaceMouseNonSticky.asset => space-mouse-not-sticky.asset} (100%) rename data/assets/util/joysticks/{SpaceMouse.asset => space-mouse.asset} (100%) diff --git a/data/assets/util/joysticks/SpaceMouseNonSticky.asset b/data/assets/util/joysticks/space-mouse-not-sticky.asset similarity index 100% rename from data/assets/util/joysticks/SpaceMouseNonSticky.asset rename to data/assets/util/joysticks/space-mouse-not-sticky.asset diff --git a/data/assets/util/joysticks/SpaceMouse.asset b/data/assets/util/joysticks/space-mouse.asset similarity index 100% rename from data/assets/util/joysticks/SpaceMouse.asset rename to data/assets/util/joysticks/space-mouse.asset From e1db36f1068bd3de18c1b67345bb5af3d930ad7b Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Tue, 15 Jun 2021 09:46:07 +0200 Subject: [PATCH 26/40] Force filename change for non case sensitive git --- data/assets/util/joysticks/{PS4.asset => ps4-f.asset} | 0 data/assets/util/joysticks/{Xbox.asset => xbox-f.asset} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename data/assets/util/joysticks/{PS4.asset => ps4-f.asset} (100%) rename data/assets/util/joysticks/{Xbox.asset => xbox-f.asset} (100%) diff --git a/data/assets/util/joysticks/PS4.asset b/data/assets/util/joysticks/ps4-f.asset similarity index 100% rename from data/assets/util/joysticks/PS4.asset rename to data/assets/util/joysticks/ps4-f.asset diff --git a/data/assets/util/joysticks/Xbox.asset b/data/assets/util/joysticks/xbox-f.asset similarity index 100% rename from data/assets/util/joysticks/Xbox.asset rename to data/assets/util/joysticks/xbox-f.asset From 027026a9b3d83cc2f24b1573302e2fe12dac291b Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Tue, 15 Jun 2021 09:47:34 +0200 Subject: [PATCH 27/40] Change back filename of joystick assets --- data/assets/util/joysticks/{ps4-f.asset => ps4.asset} | 0 data/assets/util/joysticks/{xbox-f.asset => xbox.asset} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename data/assets/util/joysticks/{ps4-f.asset => ps4.asset} (100%) rename data/assets/util/joysticks/{xbox-f.asset => xbox.asset} (100%) diff --git a/data/assets/util/joysticks/ps4-f.asset b/data/assets/util/joysticks/ps4.asset similarity index 100% rename from data/assets/util/joysticks/ps4-f.asset rename to data/assets/util/joysticks/ps4.asset diff --git a/data/assets/util/joysticks/xbox-f.asset b/data/assets/util/joysticks/xbox.asset similarity index 100% rename from data/assets/util/joysticks/xbox-f.asset rename to data/assets/util/joysticks/xbox.asset From 49d0d0ec3cd690aaacc4fc3ebf0d916e9d61157c Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Tue, 15 Jun 2021 09:55:34 +0200 Subject: [PATCH 28/40] Enable joystick interaction by default --- src/interaction/navigationhandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/interaction/navigationhandler.cpp b/src/interaction/navigationhandler.cpp index 8a4bc5a46c..620e87baf1 100644 --- a/src/interaction/navigationhandler.cpp +++ b/src/interaction/navigationhandler.cpp @@ -165,7 +165,7 @@ NavigationHandler::NavigationState::NavigationState(std::string anchor_, std::st NavigationHandler::NavigationHandler() : properties::PropertyOwner({ "NavigationHandler" }) , _disableMouseInputs(KeyDisableMouseInputInfo, false) - , _disableJoystickInputs(KeyDisableJoystickInputInfo, true) + , _disableJoystickInputs(KeyDisableJoystickInputInfo, false) , _useKeyFrameInteraction(KeyFrameInfo, false) { addPropertySubOwner(_orbitalNavigator); From af5b9c0344c203764e1eb46d9292f52f2cf0a202 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Tue, 15 Jun 2021 23:52:48 +0200 Subject: [PATCH 29/40] Don't automatically create screenshot folder until the folder is actually needed (closes #1639) --- src/rendering/renderengine.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp index 7e1010aad5..99aea3a92e 100644 --- a/src/rendering/renderengine.cpp +++ b/src/rendering/renderengine.cpp @@ -375,9 +375,7 @@ RenderEngine::RenderEngine() std::filesystem::path newFolder = absPath( "${STARTUP_SCREENSHOT}/" + std::string(date) ); - if (!std::filesystem::is_directory(newFolder)) { - std::filesystem::create_directory(newFolder); - } + FileSys.registerPathToken( "${SCREENSHOTS}", newFolder, From 4f4ca7c57753b2a57cfefae6ece685b9c229d684 Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Wed, 16 Jun 2021 09:26:46 +0200 Subject: [PATCH 30/40] Increase usability of a couple of property sliders * Prevent setting flight destination distance to 0 (lead to nan position), and give it an exponent * Smaller step size for FlightDestinationFactor * Give interaction monitor's idle time property an min and max value --- src/interaction/interactionmonitor.cpp | 2 +- src/interaction/orbitalnavigator.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/interaction/interactionmonitor.cpp b/src/interaction/interactionmonitor.cpp index f848e4a9a4..b9ec6a636b 100644 --- a/src/interaction/interactionmonitor.cpp +++ b/src/interaction/interactionmonitor.cpp @@ -48,7 +48,7 @@ namespace openspace::interaction { InteractionMonitor::InteractionMonitor() : properties::PropertyOwner({ "InteractionMonitor" }) , _isInActiveState(IsInActiveStateInfo, false) - , _idleTime(IdleTimeInfo, 120.f) + , _idleTime(IdleTimeInfo, 120.f, 0.f, 300.f) { addProperty(_isInActiveState); addProperty(_idleTime); diff --git a/src/interaction/orbitalnavigator.cpp b/src/interaction/orbitalnavigator.cpp index b90779a4f4..a2c139ea67 100644 --- a/src/interaction/orbitalnavigator.cpp +++ b/src/interaction/orbitalnavigator.cpp @@ -246,8 +246,8 @@ OrbitalNavigator::OrbitalNavigator() , _retargetAim(RetargetAimInfo) , _followAnchorNodeRotationDistance(FollowAnchorNodeInfo, 5.f, 0.f, 20.f) , _minimumAllowedDistance(MinimumDistanceInfo, 10.0f, 0.0f, 10000.f) - , _flightDestinationDistance(FlightDestinationDistInfo, 2e8f, 0.0f, 1e10f) - , _flightDestinationFactor(FlightDestinationFactorInfo, 1E-4, 1E-6, 0.5) + , _flightDestinationDistance(FlightDestinationDistInfo, 2e8f, 10.f, 1e10f) + , _flightDestinationFactor(FlightDestinationFactorInfo, 1E-4, 1E-6, 0.5, 1E-3) , _applyLinearFlight(ApplyLinearFlightInfo, false) , _velocitySensitivity(VelocityZoomControlInfo, 3.5f, 0.001f, 20.f) , _mouseSensitivity(MouseSensitivityInfo, 15.f, 1.f, 50.f) @@ -269,7 +269,6 @@ OrbitalNavigator::OrbitalNavigator() , _joystickStates(_joystickSensitivity * 0.1, 1 / (_friction.friction + 0.0000001)) , _websocketStates(_websocketSensitivity, 1 / (_friction.friction + 0.0000001)) { - _anchor.onChange([this]() { if (_anchor.value().empty()) { return; @@ -385,6 +384,7 @@ OrbitalNavigator::OrbitalNavigator() addProperty(_followAnchorNodeRotationDistance); addProperty(_minimumAllowedDistance); addProperty(_velocitySensitivity); + _flightDestinationDistance.setExponent(5.f); addProperty(_flightDestinationDistance); addProperty(_flightDestinationFactor); addProperty(_applyLinearFlight); From 03a55c930d3419abed5a65a43e8b8678e603eb68 Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Wed, 16 Jun 2021 11:47:36 +0200 Subject: [PATCH 31/40] Make JWST profile read-only --- openspace.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openspace.cfg b/openspace.cfg index 140c040ff3..bd01242ebc 100644 --- a/openspace.cfg +++ b/openspace.cfg @@ -53,6 +53,7 @@ Profile = "default" -- Profile = "gaia" -- Profile = "insight" -- Profile = "juno" +-- Profile = "jwst" -- Profile = "mars" -- Profile = "messenger" -- Profile = "newhorizons" @@ -71,6 +72,7 @@ ReadOnlyProfiles = { "gaia", "insight", "juno", + "jwst", "mars", "messenger", "newhorizons", From a69b636deae4af91694b0f3ef8942a054ef56f2e Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Wed, 16 Jun 2021 23:09:49 +0200 Subject: [PATCH 32/40] Global sweep to cleanup the handling of floating point numbers and glm default initialization --- ext/ghoul | 2 +- include/openspace/engine/openspaceengine.h | 2 +- .../atmosphere/rendering/atmospheredeferredcaster.h | 2 +- .../base/rendering/grids/renderablesphericalgrid.cpp | 6 +++--- modules/base/rendering/screenspaceframebuffer.cpp | 2 +- modules/galaxy/rendering/galaxyraycaster.cpp | 4 ++-- modules/globebrowsing/src/globelabelscomponent.cpp | 8 ++++---- modules/globebrowsing/src/renderableglobe.cpp | 10 +++++----- modules/globebrowsing/src/ringscomponent.cpp | 2 +- modules/globebrowsing/src/shadowcomponent.h | 4 ++-- modules/iswa/rendering/iswacygnet.cpp | 8 ++++---- .../rendering/renderablemultiresvolume.cpp | 4 ++-- modules/space/speckloader.h | 4 ++-- modules/touch/src/touchinteraction.cpp | 2 +- src/interaction/keyframenavigator.cpp | 4 ++-- src/interaction/orbitalnavigator.cpp | 2 +- src/util/spicemanager.cpp | 4 ++-- support/coding/codegen | 2 +- 18 files changed, 36 insertions(+), 36 deletions(-) diff --git a/ext/ghoul b/ext/ghoul index 528bc4e87d..c3c9b88e52 160000 --- a/ext/ghoul +++ b/ext/ghoul @@ -1 +1 @@ -Subproject commit 528bc4e87d6bc7a81ec62f5338e2b7d9fe706057 +Subproject commit c3c9b88e524228fb8613c310605cc2126ed9c5bd diff --git a/include/openspace/engine/openspaceengine.h b/include/openspace/engine/openspaceengine.h index 473641efb3..f06b61f356 100644 --- a/include/openspace/engine/openspaceengine.h +++ b/include/openspace/engine/openspaceengine.h @@ -125,7 +125,7 @@ private: bool _hasScheduledAssetLoading = false; std::string _scheduledAssetPathToLoad; - glm::vec2 _mousePosition; + glm::vec2 _mousePosition = glm::vec2(0.f); //grabs json from each module to pass to the documentation engine. std::string _documentationJson; diff --git a/modules/atmosphere/rendering/atmospheredeferredcaster.h b/modules/atmosphere/rendering/atmospheredeferredcaster.h index 608c5d47b4..dd8ce176a9 100644 --- a/modules/atmosphere/rendering/atmospheredeferredcaster.h +++ b/modules/atmosphere/rendering/atmospheredeferredcaster.h @@ -161,7 +161,7 @@ private: glm::vec3 _ozoneExtinctionCoeff = glm::vec3(0.f); glm::vec3 _mieScatteringCoeff = glm::vec3(0.f); glm::vec3 _mieExtinctionCoeff = glm::vec3(0.f); - glm::dvec3 _ellipsoidRadii = glm::vec3(0.f); + glm::dvec3 _ellipsoidRadii = glm::dvec3(0.0); // Atmosphere Textures Dimmensions glm::ivec2 _transmittanceTableSize = glm::ivec2(256, 64); diff --git a/modules/base/rendering/grids/renderablesphericalgrid.cpp b/modules/base/rendering/grids/renderablesphericalgrid.cpp index 52485c23af..267042bb33 100644 --- a/modules/base/rendering/grids/renderablesphericalgrid.cpp +++ b/modules/base/rendering/grids/renderablesphericalgrid.cpp @@ -230,11 +230,11 @@ void RenderableSphericalGrid::update(const UpdateData&) { normal = glm::normalize(normal); } - glm::vec4 tmp(x, y, z, 1); + glm::vec4 tmp(x, y, z, 1.f); glm::mat4 rot = glm::rotate( - glm::mat4(1), + glm::mat4(1.f), glm::half_pi(), - glm::vec3(1, 0, 0) + glm::vec3(1.f, 0.f, 0.f) ); tmp = glm::vec4(glm::dmat4(rot) * glm::dvec4(tmp)); diff --git a/modules/base/rendering/screenspaceframebuffer.cpp b/modules/base/rendering/screenspaceframebuffer.cpp index e4b5898bab..abe30c7099 100644 --- a/modules/base/rendering/screenspaceframebuffer.cpp +++ b/modules/base/rendering/screenspaceframebuffer.cpp @@ -80,7 +80,7 @@ ScreenSpaceFramebuffer::ScreenSpaceFramebuffer(const ghoul::Dictionary& dictiona glm::vec2 resolution = global::windowDelegate->currentDrawBufferResolution(); addProperty(_size); - _size.set(glm::vec4(0, 0, resolution.x,resolution.y)); + _size.set(glm::vec4(0.f, 0.f, resolution.x, resolution.y)); } ScreenSpaceFramebuffer::~ScreenSpaceFramebuffer() {} // NOLINT diff --git a/modules/galaxy/rendering/galaxyraycaster.cpp b/modules/galaxy/rendering/galaxyraycaster.cpp index a861503af6..00e4e78826 100644 --- a/modules/galaxy/rendering/galaxyraycaster.cpp +++ b/modules/galaxy/rendering/galaxyraycaster.cpp @@ -44,7 +44,7 @@ namespace { namespace openspace { GalaxyRaycaster::GalaxyRaycaster(ghoul::opengl::Texture& texture) - : _boundingBox(glm::vec3(1.0)) + : _boundingBox(glm::vec3(1.f)) , _texture(texture) , _textureUnit(nullptr) {} @@ -133,7 +133,7 @@ bool GalaxyRaycaster::isCameraInside(const RenderData& data, glm::vec3& localPos glm::vec4 modelPos = glm::inverse(modelViewTransform(data)) * glm::vec4(0.f, 0.f, 0.f, 1.f); - localPosition = (glm::vec3(modelPos) + glm::vec3(0.5)); + localPosition = (glm::vec3(modelPos) + glm::vec3(0.5f)); return (localPosition.x > 0 && localPosition.x < 1 && localPosition.y > 0 && localPosition.y < 1 && diff --git a/modules/globebrowsing/src/globelabelscomponent.cpp b/modules/globebrowsing/src/globelabelscomponent.cpp index 7dbb215593..5a8da230fd 100644 --- a/modules/globebrowsing/src/globelabelscomponent.cpp +++ b/modules/globebrowsing/src/globelabelscomponent.cpp @@ -202,17 +202,17 @@ documentation::Documentation GlobeLabelsComponent::Documentation() { GlobeLabelsComponent::GlobeLabelsComponent() : properties::PropertyOwner({ "Labels" }) , _enabled(EnabledInfo, false) - , _fontSize(FontSizeInfo, 30, 1, 300) + , _fontSize(FontSizeInfo, 30.f, 1.f, 300.f) , _minMaxSize(MinMaxSizeInfo, glm::ivec2(1, 1000), glm::ivec2(1), glm::ivec2(1000)) , _size(SizeInfo, 2.5, 0, 30) - , _heightOffset(HeightOffsetInfo, 100.0, 0.0, 10000.0) + , _heightOffset(HeightOffsetInfo, 100.f, 0.f, 10000.f) , _color(ColorInfo, glm::vec3(1.f, 1.f, 0.f), glm::vec3(0.f), glm::vec3(1.f)) , _opacity(OpacityInfo, 1.f, 0.f, 1.f) , _fadeDistances( FadeDistancesInfo, - glm::vec2(1e4, 1e6), + glm::vec2(1e4f, 1e6f), glm::vec2(1.f), - glm::vec2(1e8) + glm::vec2(1e8f) ) , _fadeInEnabled(FadeInEnabledInfo, false) , _fadeOutEnabled(FadeOutEnabledInfo, false) diff --git a/modules/globebrowsing/src/renderableglobe.cpp b/modules/globebrowsing/src/renderableglobe.cpp index e6176e1ac4..fdfef77894 100644 --- a/modules/globebrowsing/src/renderableglobe.cpp +++ b/modules/globebrowsing/src/renderableglobe.cpp @@ -82,7 +82,7 @@ namespace { const openspace::globebrowsing::AABB3 CullingFrustum{ glm::vec3(-1.f, -1.f, 0.f), - glm::vec3( 1.f, 1.f, 1e35) + glm::vec3( 1.f, 1.f, 1e35f) }; constexpr const float DefaultHeight = 0.f; @@ -464,7 +464,7 @@ std::array boundingCornersForChunk(const Chunk& chunk, cornerGeodetic.geodetic2.lat += latDiff; } - corners[i] = glm::dvec4(ellipsoid.cartesianPosition(cornerGeodetic), 1); + corners[i] = glm::dvec4(ellipsoid.cartesianPosition(cornerGeodetic), 1.0); } return corners; @@ -1357,7 +1357,7 @@ void RenderableGlobe::renderChunkLocally(const Chunk& chunk, const RenderData& d const glm::dvec3 cornerModelSpace = _ellipsoid.cartesianSurfacePosition(corner); cornersModelSpace[i] = cornerModelSpace; const glm::dvec3 cornerCameraSpace = glm::dvec3( - modelViewTransform * glm::dvec4(cornerModelSpace, 1) + modelViewTransform * glm::dvec4(cornerModelSpace, 1.0) ); cornersCameraSpace[i] = cornerCameraSpace; } @@ -2311,11 +2311,11 @@ bool RenderableGlobe::isCullableByHorizon(const Chunk& chunk, // position needs to be transformed with the inverse model matrix const GeodeticPatch& patch = chunk.surfacePatch; const float maxHeight = heights.max; - const glm::dvec3 globePos = glm::dvec3(0, 0, 0); // In model space it is 0 + const glm::dvec3 globePos = glm::dvec3(0.0, 0.0, 0.0); // In model space it is 0 const double minimumGlobeRadius = _ellipsoid.minimumRadius(); const glm::dvec3 cameraPos = glm::dvec3( - _cachedInverseModelTransform * glm::dvec4(renderData.camera.positionVec3(), 1) + _cachedInverseModelTransform * glm::dvec4(renderData.camera.positionVec3(), 1.0) ); const glm::dvec3 globeToCamera = cameraPos; diff --git a/modules/globebrowsing/src/ringscomponent.cpp b/modules/globebrowsing/src/ringscomponent.cpp index c54bb66491..129fd9bf76 100644 --- a/modules/globebrowsing/src/ringscomponent.cpp +++ b/modules/globebrowsing/src/ringscomponent.cpp @@ -420,7 +420,7 @@ void RingsComponent::draw(const RenderData& data, RenderPass renderPass, const glm::dmat4 inverseModelTransform = glm::inverse(modelTransform); glm::vec3 sunPositionObjectSpace = glm::normalize( - glm::vec3(inverseModelTransform * glm::vec4(_sunPosition, 0.0)) + glm::vec3(inverseModelTransform * glm::vec4(_sunPosition, 0.f)) ); _shader->setUniform( diff --git a/modules/globebrowsing/src/shadowcomponent.h b/modules/globebrowsing/src/shadowcomponent.h index b39c832b2a..66f4cf6a40 100644 --- a/modules/globebrowsing/src/shadowcomponent.h +++ b/modules/globebrowsing/src/shadowcomponent.h @@ -54,8 +54,8 @@ namespace documentation { struct Documentation; } class ShadowComponent : public properties::PropertyOwner { public: struct ShadowMapData { - glm::dmat4 shadowMatrix; - GLuint shadowDepthTexture; + glm::dmat4 shadowMatrix = glm::dmat4(1.0); + GLuint shadowDepthTexture = 0; }; ShadowComponent(const ghoul::Dictionary& dictionary); diff --git a/modules/iswa/rendering/iswacygnet.cpp b/modules/iswa/rendering/iswacygnet.cpp index 944e309d26..f01b3c2b3b 100644 --- a/modules/iswa/rendering/iswacygnet.cpp +++ b/modules/iswa/rendering/iswacygnet.cpp @@ -71,17 +71,17 @@ IswaCygnet::IswaCygnet(const ghoul::Dictionary& dictionary) _data.id = static_cast(dictionary.value("Id")); _data.updateTime = static_cast(dictionary.value("UpdateTime")); - _data.spatialScale = glm::dvec4(0.f); + _data.spatialScale = glm::dvec4(0.0); if (dictionary.hasValue("SpatialScale")) { _data.spatialScale = dictionary.value("SpatialScale"); } - _data.gridMin = glm::dvec3(0.f); + _data.gridMin = glm::dvec3(0.0); if (dictionary.hasValue("GridMin")) { _data.gridMin = dictionary.value("GridMin"); } - _data.gridMax = glm::dvec3(0.f); + _data.gridMax = glm::dvec3(0.0); if (dictionary.hasValue("GridMax")) { _data.gridMax = dictionary.value("GridMax"); } @@ -94,7 +94,7 @@ IswaCygnet::IswaCygnet(const ghoul::Dictionary& dictionary) } - double xOffset = 0.f; + double xOffset = 0.0; if (dictionary.hasValue("XOffset")) { xOffset = dictionary.value("XOffset"); } diff --git a/modules/multiresvolume/rendering/renderablemultiresvolume.cpp b/modules/multiresvolume/rendering/renderablemultiresvolume.cpp index fef5801605..97d542348a 100644 --- a/modules/multiresvolume/rendering/renderablemultiresvolume.cpp +++ b/modules/multiresvolume/rendering/renderablemultiresvolume.cpp @@ -231,8 +231,8 @@ RenderableMultiresVolume::RenderableMultiresVolume(const ghoul::Dictionary& dict return; } - //_pscOffset = psc(glm::vec4(0.0)); - //_boxScaling = glm::vec3(1.0); + //_pscOffset = psc(glm::vec4(0.f)); + //_boxScaling = glm::vec3(1.f); /*if (dictionary.hasKey(KeyBoxScaling)) { diff --git a/modules/space/speckloader.h b/modules/space/speckloader.h index a733b3f02c..ec2f9d63ad 100644 --- a/modules/space/speckloader.h +++ b/modules/space/speckloader.h @@ -53,7 +53,7 @@ struct Dataset { int orientationDataIndex = -1; struct Entry { - glm::vec3 position; + glm::vec3 position = glm::vec3(0.f); std::vector data; std::optional comment; }; @@ -67,7 +67,7 @@ struct Labelset { int textColorIndex = -1; struct Entry { - glm::vec3 position; + glm::vec3 position = glm::vec3(0.f); std::string text; }; std::vector entries; diff --git a/modules/touch/src/touchinteraction.cpp b/modules/touch/src/touchinteraction.cpp index cae7df51d4..03fff127c4 100644 --- a/modules/touch/src/touchinteraction.cpp +++ b/modules/touch/src/touchinteraction.cpp @@ -1202,7 +1202,7 @@ void TouchInteraction::resetToDefault() { _centroidStillThreshold.set(0.0018f); _interpretPan.set(0.015f); _slerpTime.set(3.0f); - _friction.set(glm::vec4(0.025, 0.025, 0.02, 0.02)); + _friction.set(glm::vec4(0.025f, 0.025f, 0.02f, 0.02f)); } void TouchInteraction::tap() { diff --git a/src/interaction/keyframenavigator.cpp b/src/interaction/keyframenavigator.cpp index d4441b912d..e3a59ebdef 100644 --- a/src/interaction/keyframenavigator.cpp +++ b/src/interaction/keyframenavigator.cpp @@ -142,7 +142,7 @@ bool KeyframeNavigator::updateCamera(Camera* camera, const CameraPose prevPose, // Linear interpolation t = std::max(0.0, std::min(1.0, t)); - glm::dvec3 nowCameraPosition = prevKeyframeCameraPosition * (1 - t) + + glm::dvec3 nowCameraPosition = prevKeyframeCameraPosition * (1.0 - t) + nextKeyframeCameraPosition * t; glm::dquat nowCameraRotation = glm::slerp( prevKeyframeCameraRotation, @@ -160,7 +160,7 @@ bool KeyframeNavigator::updateCamera(Camera* camera, const CameraPose prevPose, const float prevInvScaleExp = glm::log(1.f / prevPose.scale); const float nextInvScaleExp = glm::log(1.f / nextPose.scale); const float interpolatedInvScaleExp = static_cast( - prevInvScaleExp * (1 - t) + nextInvScaleExp * t + prevInvScaleExp * (1.0 - t) + nextInvScaleExp * t ); camera->setScaling(1.f / glm::exp(interpolatedInvScaleExp)); } diff --git a/src/interaction/orbitalnavigator.cpp b/src/interaction/orbitalnavigator.cpp index a2c139ea67..2e54fce454 100644 --- a/src/interaction/orbitalnavigator.cpp +++ b/src/interaction/orbitalnavigator.cpp @@ -1423,7 +1423,7 @@ SurfacePositionHandle OrbitalNavigator::calculateSurfacePositionHandle( { const glm::dmat4 inverseModelTransform = glm::inverse(node.modelTransform()); const glm::dvec3 cameraPositionModelSpace = - glm::dvec3(inverseModelTransform * glm::dvec4(cameraPositionWorldSpace, 1)); + glm::dvec3(inverseModelTransform * glm::dvec4(cameraPositionWorldSpace, 1.0)); const SurfacePositionHandle posHandle = node.calculateSurfacePositionHandle(cameraPositionModelSpace); diff --git a/src/util/spicemanager.cpp b/src/util/spicemanager.cpp index 6e5f93b1d9..a2a69b9eb1 100644 --- a/src/util/spicemanager.cpp +++ b/src/util/spicemanager.cpp @@ -612,7 +612,7 @@ glm::dvec3 SpiceManager::targetPosition(const std::string& target, ); } else { - return glm::dvec3(); + return glm::dvec3(0.0); } } else if (targetHasCoverage && observerHasCoverage) { @@ -1150,7 +1150,7 @@ glm::dvec3 SpiceManager::getEstimatedPosition(const std::string& target, throw SpiceException(fmt::format("No position for '{}' at any time", target)); } else { - return glm::dvec3(); + return glm::dvec3(0.0); } } diff --git a/support/coding/codegen b/support/coding/codegen index af8906ff56..49199f28e9 160000 --- a/support/coding/codegen +++ b/support/coding/codegen @@ -1 +1 @@ -Subproject commit af8906ff56c4b02d2f4a30c02d56477225dd10ce +Subproject commit 49199f28e90dbd94df45f4f0b736aceb11cf4f82 From ff920f73b75cc626f7e222d440c79b8ccc774859 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Thu, 17 Jun 2021 09:47:27 +0200 Subject: [PATCH 33/40] Fix issue that would prevent opening of the first distributed profile in the editor --- apps/OpenSpace/ext/launcher/src/launcherwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/OpenSpace/ext/launcher/src/launcherwindow.cpp b/apps/OpenSpace/ext/launcher/src/launcherwindow.cpp index 99672c1d57..a7ebe492c3 100644 --- a/apps/OpenSpace/ext/launcher/src/launcherwindow.cpp +++ b/apps/OpenSpace/ext/launcher/src/launcherwindow.cpp @@ -263,7 +263,7 @@ QWidget* LauncherWindow::createCentralWidget() { [this]() { const std::string selection = _profileBox->currentText().toStdString(); int selectedIndex = _profileBox->currentIndex(); - bool isUserProfile = selectedIndex <= _userAssetCount; + bool isUserProfile = selectedIndex < _userAssetCount; openProfileEditor(selection, isUserProfile); } ); From 89fa6de0b9fc82678cc70824210bedb99eb9e474 Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Thu, 17 Jun 2021 11:16:29 +0200 Subject: [PATCH 34/40] Add simple animation example asset --- data/assets/examples/animation.asset | 227 +++++++++++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 data/assets/examples/animation.asset diff --git a/data/assets/examples/animation.asset b/data/assets/examples/animation.asset new file mode 100644 index 0000000000..24a66a4d94 --- /dev/null +++ b/data/assets/examples/animation.asset @@ -0,0 +1,227 @@ +local assetHelper = asset.require('util/asset_helper') +local sunTransforms = asset.require('scene/solarsystem/sun/transforms') +local transforms = asset.require('scene/solarsystem/planets/earth/transforms') + +local model = asset.syncedResource({ + Name = "Animated Box", + Type = "HttpSynchronization", + Identifier = "animated_box", + Version = 1 +}) + +local StartTime = "2021 06 01 00:00:00"; + +local animationLoop = { + Identifier = "animationLoop", + Parent = transforms.EarthCenter.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.0, -11E7, 0.0 } + } + }, + Renderable = { + Type = "RenderableModel", + GeometryFile = model .. "/BoxAnimated.glb", + EnableAnimation = true, + AnimationMode = "LoopFromStart", + AnimationStartTime = StartTime, + ModelScale = 3E7, + LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sunTransforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + } + }, + PerformShading = true, + DisableFaceCulling = true + }, + GUI = { + Name = "Animated Model example (LoopFromStart)", + Path = "/Example", + Description = "Simple animated box model with the animation mode 'LoopFromStart'", + } +} + +local animationLoopInf = { + Identifier = "animationLoopInf", + Parent = transforms.EarthCenter.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.0, 11E7, 0.0 } + } + }, + Renderable = { + Type = "RenderableModel", + GeometryFile = model .. "/BoxAnimated.glb", + EnableAnimation = true, + AnimationMode = "LoopInfinitely", + AnimationStartTime = StartTime, + ModelScale = 3E7, + LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sunTransforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + } + }, + PerformShading = true, + DisableFaceCulling = true + }, + GUI = { + Name = "Animated Model example (LoopInfinitely)", + Path = "/Example", + Description = "Simple animated box model with the animation mode 'LoopInfinitely'", + } +} + +local animationOnce = { + Identifier = "animationOnce", + Parent = transforms.EarthCenter.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 11E7, 0.0, 0.0 } + } + }, + Renderable = { + Type = "RenderableModel", + GeometryFile = model .. "/BoxAnimated.glb", + EnableAnimation = true, + AnimationMode = "Once", + AnimationStartTime = StartTime, + ModelScale = 3E7, + LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sunTransforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + } + }, + PerformShading = true, + DisableFaceCulling = true + }, + GUI = { + Name = "Animated Model example (Once)", + Path = "/Example", + Description = "Simple animated box model with the animation mode 'Once'", + } +} + +local animationBounceInf = { + Identifier = "animationBounceInf", + Parent = transforms.EarthCenter.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.0, 0.0, 11E7 } + } + }, + Renderable = { + Type = "RenderableModel", + GeometryFile = model .. "/BoxAnimated.glb", + EnableAnimation = true, + AnimationMode = "BounceInfinitely", + AnimationStartTime = StartTime, + ModelScale = 3E7, + LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sunTransforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + } + }, + PerformShading = true, + DisableFaceCulling = true + }, + GUI = { + Name = "Animated Model example (BounceInfinitely)", + Path = "/Example", + Description = "Simple animated box model with the animation mode 'BounceInfinitely'", + } +} + +local animationBounce = { + Identifier = "animationBounce", + Parent = transforms.EarthCenter.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.0, 0.0, -11E7 } + } + }, + Renderable = { + Type = "RenderableModel", + GeometryFile = model .. "/BoxAnimated.glb", + EnableAnimation = true, + AnimationMode = "BounceFromStart", + AnimationStartTime = StartTime, + ModelScale = 3E7, + LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sunTransforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + } + }, + PerformShading = true, + DisableFaceCulling = true + }, + GUI = { + Name = "Animated Model example (BounceFromStart)", + Path = "/Example", + Description = "Simple animated box model with the animation mode 'BounceFromStart'", + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { + animationLoop, + animationLoopInf, + animationOnce, + animationBounceInf, + animationBounce +}) + +-- Asset +asset.meta = { + Name = "Animation Example asset", + Version = "1.0", + Description = "Simple animation example asset with an animated box model", + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license", + Identifiers = { + "animationLoop", + "animationLoopInf", + "animationOnce", + "animationBounceInf", + "animationBounce" + } +} + +-- Model +asset.meta = { + Name = "Animated Box Model", + Version = "1.0", + Description = "Simple animated box model", + Author = "Cesium, https://cesium.com/", + URL = "https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/BoxAnimated", + License = [[ + Creative Commons Attribution 4.0 International License, + https://creativecommons.org/licenses/by/4.0/ + ]], + Identifiers = { + "animationLoop", + "animationLoopInf", + "animationOnce", + "animationBounceInf", + "animationBounce" + } +} From b1f10b1b701745e0591eb79f254aa68d22f84207 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Thu, 17 Jun 2021 15:39:16 +0200 Subject: [PATCH 35/40] Add the ability to specify RenderEngine font sizes in the configuration file (closes #1653) --- include/openspace/engine/configuration.h | 9 ++ include/openspace/rendering/renderengine.h | 5 +- openspace.cfg | 7 ++ src/engine/configuration.cpp | 21 +++++ src/rendering/renderengine.cpp | 99 +++++++++++----------- 5 files changed, 90 insertions(+), 51 deletions(-) diff --git a/include/openspace/engine/configuration.h b/include/openspace/engine/configuration.h index 83970d9fdf..eed5c055c5 100644 --- a/include/openspace/engine/configuration.h +++ b/include/openspace/engine/configuration.h @@ -53,6 +53,15 @@ struct Configuration { }; std::map fonts; + struct FontSizes { + float frameInfo; + float shutdown; + float log; + float cameraInfo; + float versionInfo; + }; + FontSizes fontSize; + struct Logging { std::string level = "Info"; bool forceImmediateFlush = false; diff --git a/include/openspace/rendering/renderengine.h b/include/openspace/rendering/renderengine.h index cc6698f165..28cee7e43a 100644 --- a/include/openspace/rendering/renderengine.h +++ b/include/openspace/rendering/renderengine.h @@ -233,8 +233,9 @@ private: std::vector _programs; std::shared_ptr _fontFrameInfo; - std::shared_ptr _fontInfo; - std::shared_ptr _fontDate; + std::shared_ptr _fontCameraInfo; + std::shared_ptr _fontVersionInfo; + std::shared_ptr _fontShutdown; std::shared_ptr _fontLog; struct { diff --git a/openspace.cfg b/openspace.cfg index bd01242ebc..3e4332c32a 100644 --- a/openspace.cfg +++ b/openspace.cfg @@ -188,6 +188,13 @@ Fonts = { Console = "${FONTS}/Inconsolata/Inconsolata-Regular.ttf", Loading = "${FONTS}/Roboto/Roboto-Regular.ttf" } +FontSize = { + FrameInfo = 32.0, + Shutdown = 30.0, + Log = 8.0, + CameraInfo = 12.0, + VersionInfo = 12.0 +} Logging = { LogDir = "${LOGS}", diff --git a/src/engine/configuration.cpp b/src/engine/configuration.cpp index f61dbc9ef7..7194824f06 100644 --- a/src/engine/configuration.cpp +++ b/src/engine/configuration.cpp @@ -69,6 +69,22 @@ namespace { // font std::optional> fonts; + struct FontSizes { + // The font size (in pt) used for printing optional information about the + // currently rendered frame + float frameInfo; + // The font size (in pt) used for rendering the shutdown text + float shutdown; + // The font size (in pt) used for rendering the screen log + float log; + // The font size (in pt) used for printing the camera friction state + float cameraInfo; + // The font size (in pt) used for printing the version information + float versionInfo; + }; + // Information about the hardcoded fontsizes used by the rendering engine itself + FontSizes fontSize; + struct Logging { // List from logmanager.cpp::levelFromString enum class Level { @@ -368,6 +384,11 @@ void parseLuaState(Configuration& configuration) { p.globalCustomizationScripts.value_or(c.globalCustomizationScripts); c.pathTokens = p.paths; c.fonts = p.fonts.value_or(c.fonts); + c.fontSize.frameInfo = p.fontSize.frameInfo; + c.fontSize.shutdown = p.fontSize.shutdown; + c.fontSize.log = p.fontSize.log; + c.fontSize.cameraInfo = p.fontSize.cameraInfo; + c.fontSize.versionInfo = p.fontSize.versionInfo; c.scriptLog = p.scriptLog.value_or(c.scriptLog); c.versionCheckUrl = p.versionCheckUrl.value_or(c.versionCheckUrl); c.useMultithreadedInitialization = diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp index 99aea3a92e..212321d0d9 100644 --- a/src/rendering/renderengine.cpp +++ b/src/rendering/renderengine.cpp @@ -532,28 +532,44 @@ void RenderEngine::initializeGL() { _horizFieldOfView = static_cast(global::windowDelegate->getHorizFieldOfView()); { - ZoneScopedN("Font: Mono") - TracyGpuZone("Font: Mono") - constexpr const float FontSizeFrameinfo = 32.f; - _fontFrameInfo = global::fontManager->font(KeyFontMono, FontSizeFrameinfo); + ZoneScopedN("Font: FrameInfo") + TracyGpuZone("Font: FrameInfo") + _fontFrameInfo = global::fontManager->font( + KeyFontMono, + global::configuration->fontSize.frameInfo + ); } { - ZoneScopedN("Font: Date") - TracyGpuZone("Font: Date") - constexpr const float FontSizeTime = 15.f; - _fontDate = global::fontManager->font(KeyFontMono, FontSizeTime); + ZoneScopedN("Font: Shutdown") + TracyGpuZone("Font: Shutdown") + _fontShutdown = global::fontManager->font( + KeyFontMono, + global::configuration->fontSize.shutdown + ); } { - ZoneScopedN("Font: Info") - TracyGpuZone("Font: Info") - constexpr const float FontSizeMono = 10.f; - _fontInfo = global::fontManager->font(KeyFontMono, FontSizeMono); + ZoneScopedN("Font: CameraInfo") + TracyGpuZone("Font: CameraInfo") + _fontCameraInfo = global::fontManager->font( + KeyFontMono, + global::configuration->fontSize.cameraInfo + ); + } + { + ZoneScopedN("Font: VersionInfo") + TracyGpuZone("Font: VersionInfo") + _fontVersionInfo = global::fontManager->font( + KeyFontMono, + global::configuration->fontSize.versionInfo + ); } { ZoneScopedN("Font: Log") TracyGpuZone("Font: Log") - constexpr const float FontSizeLight = 8.f; - _fontLog = global::fontManager->font(KeyFontLight, FontSizeLight); + _fontLog = global::fontManager->font( + KeyFontLight, + global::configuration->fontSize.log + ); } { @@ -874,12 +890,12 @@ void RenderEngine::renderEndscreen() { glm::vec2(global::windowDelegate->currentSubwindowSize()) / dpiScaling; glViewport(0, 0, res.x, res.y); - const glm::vec2 size = _fontDate->boundingBox("Shutting down"); + const glm::vec2 size = _fontShutdown->boundingBox("Shutting down"); glm::vec2 penPosition = glm::vec2( fontResolution().x / 2 - size.x / 2, fontResolution().y / 2 - size.y / 2 ); - RenderFont(*_fontDate, penPosition, "Shutting down"); + RenderFont(*_fontShutdown, penPosition, "Shutting down"); } void RenderEngine::renderShutdownInformation(float timer, float fullTime) { @@ -887,7 +903,7 @@ void RenderEngine::renderShutdownInformation(float timer, float fullTime) { timer = std::max(timer, 0.f); - const glm::vec2 size = _fontDate->boundingBox( + const glm::vec2 size = _fontShutdown->boundingBox( fmt::format("Shutdown in: {:.2f}s/{:.2f}s", timer, fullTime) ); @@ -897,14 +913,14 @@ void RenderEngine::renderShutdownInformation(float timer, float fullTime) { ); RenderFont( - *_fontDate, + *_fontShutdown, penPosition, fmt::format("Shutdown in: {:.2f}s/{:.2f}s", timer, fullTime), ghoul::fontrendering::CrDirection::Down ); RenderFont( - *_fontDate, + *_fontShutdown, penPosition, // Important: length of this string is the same as the shutdown time text // to make them align @@ -923,21 +939,6 @@ void RenderEngine::renderDashboard() { ); global::dashboard->render(penPosition); - -#ifdef REALTIME_CAMERA_POS_DISPLAY - penPosition += glm::vec2(0.f, -50.f); - - glm::dvec3 p = _camera->positionVec3(); - glm::dquat rot = _camera->rotationQuaternion(); - std::string fc = global::navigationHandler.focusNode()->identifier(); - RenderFont( - *_fontInfo, - penPosition, - fmt::format("Pos: {} {} {}\nOrientation: {} {} {} {}\nFocus: {}", - p.x, p.y, p.z, rot[0], rot[1], rot[2], rot[3], fc - ) - ); -#endif } void RenderEngine::postDraw() { @@ -1284,7 +1285,7 @@ void RenderEngine::renderCameraInformation() { const glm::vec4 EnabledColor = glm::vec4(0.2f, 0.75f, 0.2f, 1.f); const glm::vec4 DisabledColor = glm::vec4(0.55f, 0.2f, 0.2f, 1.f); - const glm::vec2 rotationBox = _fontInfo->boundingBox("Rotation"); + const glm::vec2 rotationBox = _fontCameraInfo->boundingBox("Rotation"); float penPosY = fontResolution().y - rotationBox.y; @@ -1303,14 +1304,14 @@ void RenderEngine::renderCameraInformation() { rotationBox.y }; FR::defaultRenderer().render( - *_fontInfo, + *_fontCameraInfo, glm::vec2(fontResolution().x - rotationBox.x - XSeparation, penPosY), "Rotation", nav.hasRotationalFriction() ? EnabledColor : DisabledColor ); penPosY -= rotationBox.y + YSeparation; - const glm::vec2 zoomBox = _fontInfo->boundingBox("Zoom"); + const glm::vec2 zoomBox = _fontCameraInfo->boundingBox("Zoom"); _cameraButtonLocations.zoom = { fontResolution().x - zoomBox.x - XSeparation, @@ -1319,14 +1320,14 @@ void RenderEngine::renderCameraInformation() { zoomBox.y }; FR::defaultRenderer().render( - *_fontInfo, + *_fontCameraInfo, glm::vec2(fontResolution().x - zoomBox.x - XSeparation, penPosY), "Zoom", nav.hasZoomFriction() ? EnabledColor : DisabledColor ); penPosY -= zoomBox.y + YSeparation; - const glm::vec2 rollBox = _fontInfo->boundingBox("Roll"); + const glm::vec2 rollBox = _fontCameraInfo->boundingBox("Roll"); _cameraButtonLocations.roll = { fontResolution().x - rollBox.x - XSeparation, @@ -1335,7 +1336,7 @@ void RenderEngine::renderCameraInformation() { rollBox.y }; FR::defaultRenderer().render( - *_fontInfo, + *_fontCameraInfo, glm::vec2(fontResolution().x - rollBox.x - XSeparation, penPosY), "Roll", nav.hasRollFriction() ? EnabledColor : DisabledColor @@ -1350,27 +1351,27 @@ void RenderEngine::renderVersionInformation() { } using FR = ghoul::fontrendering::FontRenderer; - const glm::vec2 versionBox = _fontInfo->boundingBox(_versionString); - const glm::vec2 commitBox = _fontInfo->boundingBox(OPENSPACE_GIT_FULL); + const glm::vec2 versionBox = _fontVersionInfo->boundingBox(_versionString); + const glm::vec2 commitBox = _fontVersionInfo->boundingBox(OPENSPACE_GIT_FULL); FR::defaultRenderer().render( - *_fontInfo, + *_fontVersionInfo, glm::vec2( fontResolution().x - versionBox.x - 10.f, 5.f ), _versionString, - glm::vec4(0.5, 0.5, 0.5, 1.f) + glm::vec4(0.5f, 0.5f, 0.5f, 1.f) ); // If a developer hasn't placed the Git command in the path, this variable will be // empty if (!std::string_view(OPENSPACE_GIT_COMMIT).empty()) { - // We check OPENSPACE_GIT_COMMIT but puse OPENSPACE_GIT_FULL on purpose since + // We check OPENSPACE_GIT_COMMIT but use OPENSPACE_GIT_FULL on purpose since // OPENSPACE_GIT_FULL will never be empty (always will contain at least @, but // checking for that is a bit brittle) FR::defaultRenderer().render( - *_fontInfo, + *_fontVersionInfo, glm::vec2(fontResolution().x - commitBox.x - 10.f, versionBox.y + 5.f), OPENSPACE_GIT_FULL, glm::vec4(0.5, 0.5, 0.5, 1.f) @@ -1384,15 +1385,15 @@ void RenderEngine::renderVersionInformation() { ZoneScopedN("Tracy Information") - const glm::vec2 tracyBox = _fontInfo->boundingBox("TRACY PROFILING ENABLED"); + const glm::vec2 tracyBox = _fontVersionInfo->boundingBox("TRACY PROFILING"); const glm::vec2 penPosition = glm::vec2( fontResolution().x - tracyBox.x - 10.f, versionBox.y + commitBox.y + 5.f ); FR::defaultRenderer().render( - *_fontInfo, + *_fontVersionInfo, penPosition, - "TRACY PROFILING ENABLED", + "TRACY PROFILING", glm::vec4(0.8f, 0.2f, 0.15f, 1.f) ); } From 741ed2ac05c58cd6fa901aa2784f5fe59075af09 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Fri, 18 Jun 2021 09:16:15 +0200 Subject: [PATCH 36/40] Remove remnant of scriptlogtype in log message --- include/openspace/scripting/scriptengine.h | 1 - src/engine/openspaceengine.cpp | 2 +- src/scripting/scriptengine.cpp | 4 +--- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/include/openspace/scripting/scriptengine.h b/include/openspace/scripting/scriptengine.h index 5890e6bb7e..94a187e1ca 100644 --- a/include/openspace/scripting/scriptengine.h +++ b/include/openspace/scripting/scriptengine.h @@ -125,7 +125,6 @@ private: // Logging variables bool _logFileExists = false; bool _logScripts = true; - std::string _logType; std::string _logFilename; }; diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index df7bd75df3..d063cea529 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -154,7 +154,7 @@ void OpenSpaceEngine::registerPathTokens() { using T = std::string; for (const std::pair& path : global::configuration->pathTokens) { std::string fullKey = "${" + path.first + "}"; - LDEBUG(fmt::format("Registering path {}: {}", fullKey, path.second)); + LDEBUG(fmt::format("Registering path '{}': '{}'", fullKey, path.second)); const bool overrideBase = (fullKey == "${BASE}"); if (overrideBase) { diff --git a/src/scripting/scriptengine.cpp b/src/scripting/scriptengine.cpp index b7c6b6541d..0c7a16a7ae 100644 --- a/src/scripting/scriptengine.cpp +++ b/src/scripting/scriptengine.cpp @@ -649,9 +649,7 @@ bool ScriptEngine::writeLog(const std::string& script) { _logFilename = absPath(global::configuration->scriptLog).string(); _logFileExists = true; - LDEBUG(fmt::format( - "Using script log of type '{}' to file '{}'", _logType, _logFilename - )); + LDEBUG(fmt::format("Using script log file '{}'", _logFilename)); // Test file and clear previous input std::ofstream file(_logFilename, std::ofstream::out | std::ofstream::trunc); From 7bea53a3552cf45746cf7fac828c3136b9e83f3e Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Fri, 18 Jun 2021 14:17:05 +0200 Subject: [PATCH 37/40] Comment out FOV for REXIS as it has an unsupported shape (closes #1650) --- .../missions/osirisrex/model.asset | 50 ++++++++++--------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/data/assets/scene/solarsystem/missions/osirisrex/model.asset b/data/assets/scene/solarsystem/missions/osirisrex/model.asset index aab64ada66..33a2a694c6 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/model.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/model.asset @@ -130,34 +130,36 @@ local PolyCamFov = { } } -local RexisFov = { - Identifier = "REXIS FOV", - Parent = Rexis.Identifier, - Renderable = { - Type = "RenderableFov", - Body = "OSIRIS-REX", - Frame = "ORX_REXIS", - RGB = { 0.8, 0.7, 0.7 }, - Instrument = { - Name = "ORX_REXIS", - Method = "ELLIPSOID", - Aberration = "NONE" - }, - PotentialTargets = { BENNU_BODY }, - FrameConversions = { - [BENNU_BODY] = "IAU_BENNU" - } - }, - GUI = { - Name = "REXIS FOV", - Path = "/Solar System/Missions/OSIRIS REx/Instruments" - } -} +-- Commenting this out as REXIS' shape is circle, which is currently not supported in +-- the RenderableFOV class +-- local RexisFov = { +-- Identifier = "REXIS FOV", +-- Parent = Rexis.Identifier, +-- Renderable = { +-- Type = "RenderableFov", +-- Body = "OSIRIS-REX", +-- Frame = "ORX_REXIS", +-- RGB = { 0.8, 0.7, 0.7 }, +-- Instrument = { +-- Name = "ORX_REXIS", +-- Method = "ELLIPSOID", +-- Aberration = "NONE" +-- }, +-- PotentialTargets = { BENNU_BODY }, +-- FrameConversions = { +-- [BENNU_BODY] = "IAU_BENNU" +-- } +-- }, +-- GUI = { +-- Name = "REXIS FOV", +-- Path = "/Solar System/Missions/OSIRIS REx/Instruments" +-- } +-- } assetHelper.registerSceneGraphNodesAndExport(asset, { OsirisRex, PolyCam, Rexis, PolyCamFov, - RexisFov + -- RexisFov }) From 227a6607cc5609078182c022bf59678aa979292a Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Fri, 18 Jun 2021 14:50:23 +0200 Subject: [PATCH 38/40] Extend the skirts in local rendering again as cracks started to appear in globes (#closes 1647) --- modules/globebrowsing/shaders/localrenderer_vs.glsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/globebrowsing/shaders/localrenderer_vs.glsl b/modules/globebrowsing/shaders/localrenderer_vs.glsl index 642a2a2ae4..7d9a8b25a9 100644 --- a/modules/globebrowsing/shaders/localrenderer_vs.glsl +++ b/modules/globebrowsing/shaders/localrenderer_vs.glsl @@ -98,7 +98,7 @@ void main() { levelWeights = getLevelWeights(distToVertexOnEllipsoid); // Get the height value and apply skirts - float height = getTileHeightScaled(in_uv, levelWeights) - getTileVertexSkirtLength(); + float height = getTileHeightScaled(in_uv, levelWeights) - getTileVertexSkirtLength() * 100.0; // Translate the point along normal p += patchNormalCameraSpace * height; From 30df815a25505dad11f8948733d19ccbc923c555 Mon Sep 17 00:00:00 2001 From: Malin Ejdbo Date: Fri, 18 Jun 2021 16:30:00 +0200 Subject: [PATCH 39/40] Update jwst launch time frame --- data/assets/scene/solarsystem/missions/jwst/jwst.asset | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/data/assets/scene/solarsystem/missions/jwst/jwst.asset b/data/assets/scene/solarsystem/missions/jwst/jwst.asset index 6909b74699..ebaf97a6a5 100644 --- a/data/assets/scene/solarsystem/missions/jwst/jwst.asset +++ b/data/assets/scene/solarsystem/missions/jwst/jwst.asset @@ -115,8 +115,7 @@ local JWSTModel = { ModelScale = "Foot", InvertModelScale = true, EnableAnimation = true, - --TODO: Update theese when the new animation is finished - AnimationStartTime = "2018 10 01 15:00:00", + AnimationStartTime = "2018 10 01 14:05:52", AnimationMode = "Once", LightSources = { { @@ -130,7 +129,7 @@ local JWSTModel = { DisableFaceCulling = true }, GUI = { - Name = "James Webb Space Telescope", + Name = "James Webb Space Telescope Model", Path = "/Solar System/Missions/JWST", } } @@ -226,7 +225,7 @@ local JWSTLaunchModel = { Parent = JWSTLaunchPosition.Identifier, TimeFrame = { Type = "TimeFrameInterval", - Start = "2018 OCT 01 13:18:00", + Start = "2018 OCT 01 14:05:52", End = "2019 OCT 01" }, Transform = { @@ -245,8 +244,7 @@ local JWSTLaunchModel = { ModelScale = "Foot", InvertModelScale = true, EnableAnimation = true, - --TODO: Update theese when the new animation is finished - AnimationStartTime = "2018 10 01 15:00:00", + AnimationStartTime = "2018 10 01 14:05:52", AnimationMode = "Once", LightSources = { { From bf34c3a01661269d899e2fdfae2f28e968e8bed3 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Wed, 23 Jun 2021 00:40:22 +0200 Subject: [PATCH 40/40] Add the ability to RenderableFOV to always draw the field of view frustum --- .../rendering/renderablefov.cpp | 17 ++++++++++++++++- .../rendering/renderablefov.h | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/spacecraftinstruments/rendering/renderablefov.cpp b/modules/spacecraftinstruments/rendering/renderablefov.cpp index 775abfec35..9435d3b3bb 100644 --- a/modules/spacecraftinstruments/rendering/renderablefov.cpp +++ b/modules/spacecraftinstruments/rendering/renderablefov.cpp @@ -66,6 +66,13 @@ namespace { "making it more visible." }; + constexpr openspace::properties::Property::PropertyInfo AlwaysDrawFovInfo = { + "AlwaysDrawFov", + "Always Draw FOV", + "If this value is enabled, the field of view will always be drawn, regardless of " + "whether image information has been loaded or not" + }; + constexpr openspace::properties::Property::PropertyInfo DefaultStartColorInfo = { "Colors.DefaultStart", "Start of default color", @@ -160,6 +167,10 @@ namespace { // A table describing the instrument whose field of view should be rendered Instrument instrument; + // If this value is set to 'true', the field of view specified here will always be + // rendered, regardless of whether image information is currently available or not + std::optional alwaysDrawFov; + // A list of potential targets (specified as SPICE names) that the field of view // should be tested against std::vector potentialTargets; @@ -192,6 +203,7 @@ RenderableFov::RenderableFov(const ghoul::Dictionary& dictionary) : Renderable(dictionary) , _lineWidth(LineWidthInfo, 1.f, 1.f, 20.f) , _standOffDistance(StandoffDistanceInfo, 0.9999, 0.99, 1.0, 0.000001) + , _alwaysDrawFov(AlwaysDrawFovInfo, false) , _colors({ { DefaultStartColorInfo, glm::vec3(0.4f), glm::vec3(0.f), glm::vec3(1.f) }, { DefaultEndColorInfo, glm::vec3(0.85f), glm::vec3(0.f), glm::vec3(1.f) }, @@ -239,6 +251,9 @@ RenderableFov::RenderableFov(const ghoul::Dictionary& dictionary) _standOffDistance = p.standOffDistance.value_or(_standOffDistance); addProperty(_standOffDistance); + + _alwaysDrawFov = p.alwaysDrawFov.value_or(_alwaysDrawFov); + addProperty(_alwaysDrawFov); _simplifyBounds = p.simplifyBounds.value_or(_simplifyBounds); @@ -769,7 +784,7 @@ void RenderableFov::render(const RenderData& data, RendererTasks&) { } void RenderableFov::update(const UpdateData& data) { - _drawFOV = false; + _drawFOV = _alwaysDrawFov; if (ImageSequencer::ref().isReady()) { _drawFOV = ImageSequencer::ref().isInstrumentActive( data.time.j2000Seconds(), diff --git a/modules/spacecraftinstruments/rendering/renderablefov.h b/modules/spacecraftinstruments/rendering/renderablefov.h index 6ae7fe6513..f1a9c00352 100644 --- a/modules/spacecraftinstruments/rendering/renderablefov.h +++ b/modules/spacecraftinstruments/rendering/renderablefov.h @@ -77,6 +77,7 @@ private: // properties properties::FloatProperty _lineWidth; properties::DoubleProperty _standOffDistance; + properties::BoolProperty _alwaysDrawFov; ghoul::opengl::ProgramObject* _program = nullptr; UniformCache(modelViewProjection, defaultColorStart, defaultColorEnd, activeColor, targetInFieldOfViewColor, intersectionStartColor, intersectionEndColor,