diff --git a/.editorconfig b/.editorconfig index 8ac26a431b..c1bf4823be 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,7 +6,6 @@ root = true # Unix-style newlines with a newline ending every file [*] charset = utf-8 -end_of_line = lf indent_style = space indent_size = 4 insert_final_newline = true diff --git a/.gitignore b/.gitignore index c71edd624b..d80ea9cee9 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ .vscode CMakeCache.txt CMakeFiles +CMakeLists.txt.user cmake-build-* cmake_install.cmake install_manifest.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index ee78a175b4..f0853c7b30 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,8 +28,8 @@ project(OpenSpace) set(OPENSPACE_VERSION_MAJOR 0) set(OPENSPACE_VERSION_MINOR 15) -set(OPENSPACE_VERSION_PATCH 1) -set(OPENSPACE_VERSION_STRING "Beta-5") +set(OPENSPACE_VERSION_PATCH 2) +set(OPENSPACE_VERSION_STRING "Beta-7") set(OPENSPACE_BASE_DIR "${PROJECT_SOURCE_DIR}") diff --git a/apps/OpenSpace/CMakeLists.txt b/apps/OpenSpace/CMakeLists.txt index 1d2ad1b9b9..4f948c3257 100644 --- a/apps/OpenSpace/CMakeLists.txt +++ b/apps/OpenSpace/CMakeLists.txt @@ -78,7 +78,7 @@ endif () ##### if (APPLE) set(MACOSX_BUNDLE_ICON_FILE openspace.icns) - set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14" CACHE STRING "Minimum OS X deployment version" FORCE) + set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version" FORCE) set(CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "--deep" CACHE STRING "Other Code Signing Flags" FORCE) endif () diff --git a/apps/OpenSpace/ext/sgct b/apps/OpenSpace/ext/sgct index 902ad00320..f3094de5ba 160000 --- a/apps/OpenSpace/ext/sgct +++ b/apps/OpenSpace/ext/sgct @@ -1 +1 @@ -Subproject commit 902ad00320c79b3f876530698ec1828c8dfceaab +Subproject commit f3094de5ba02d86ee899f4108cf066e37652c65e diff --git a/apps/OpenSpace/main.cpp b/apps/OpenSpace/main.cpp index de0052caf4..b4860fdeaf 100644 --- a/apps/OpenSpace/main.cpp +++ b/apps/OpenSpace/main.cpp @@ -43,7 +43,11 @@ #include //#include #include +#ifdef _WIN32 #define GLFW_EXPOSE_NATIVE_WIN32 +#else +#define GLFW_INCLUDE_NONE +#endif #include #include #include @@ -57,7 +61,6 @@ #include #include #include -#include #include #include @@ -350,7 +353,6 @@ void mainInitFunc(GLFWwindow*) { // // Screenshots // - std::string screenshotPath = "${SCREENSHOTS}"; if (global::configuration.shouldUseScreenshotDate) { std::time_t now = std::time(nullptr); @@ -517,7 +519,7 @@ void mainPostSyncPreDrawFunc() { -void mainRenderFunc(const RenderData& data) { +void mainRenderFunc(const sgct::RenderData& data) { ZoneScoped #ifdef OPENSPACE_HAS_VTUNE @@ -592,7 +594,7 @@ void mainRenderFunc(const RenderData& data) { -void mainDraw2DFunc(const RenderData& data) { +void mainDraw2DFunc(const sgct::RenderData& data) { ZoneScoped #ifdef OPENSPACE_HAS_VTUNE @@ -855,16 +857,16 @@ void mainLogCallback(Log::Level level, const char* message) { // Remove the trailing \n that is passed along switch (level) { case Log::Level::Debug: - LDEBUGC("SGCT", msg.substr(0, msg.size() - 1)); + LDEBUGC("SGCT", msg); break; case Log::Level::Info: - LINFOC("SGCT", msg.substr(0, msg.size() - 1)); + LINFOC("SGCT", msg); break; case Log::Level::Warning: - LWARNINGC("SGCT", msg.substr(0, msg.size() - 1)); + LWARNINGC("SGCT", msg); break; case Log::Level::Error: - LERRORC("SGCT", msg.substr(0, msg.size() - 1)); + LERRORC("SGCT", msg); break; } @@ -884,15 +886,6 @@ void setSgctDelegateFunctions() { sgct::ClusterManager::instance().setUseIgnoreSync(enabled); }; - sgctDelegate.clearAllWindows = [](const glm::vec4& clearColor) { - ZoneScoped - - for (const std::unique_ptr& window : Engine::instance().windows()) { - glClearColor(clearColor.r, clearColor.g, clearColor.b, clearColor.a); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glfwSwapBuffers(window->windowHandle()); - } - }; sgctDelegate.windowHasResized = []() { ZoneScoped @@ -925,26 +918,6 @@ void setSgctDelegateFunctions() { return sgct::Engine::getTime(); }; - sgctDelegate.mousePosition = []() { - ZoneScoped - - double xPos; - double yPos; - glfwGetCursorPos(currentWindow->windowHandle(), &xPos, &yPos); - return glm::vec2(xPos, yPos); - }; - sgctDelegate.mouseButtons = [](int maxNumber) { - ZoneScoped - - uint32_t result = 0; - for (int i = 0; i < maxNumber; ++i) { - bool button = (glfwGetMouseButton(currentWindow->windowHandle(), i) != 0); - if (button) { - result |= (1 << i); - } - } - return result; - }; sgctDelegate.currentWindowSize = []() { ZoneScoped @@ -980,12 +953,6 @@ void setSgctDelegateFunctions() { ); } }; - sgctDelegate.currentWindowResolution = []() { - ZoneScoped - - ivec2 dim = currentWindow->finalFBODimensions(); - return glm::ivec2(dim.x, dim.y); - }; sgctDelegate.currentDrawBufferResolution = []() { ZoneScoped @@ -1023,11 +990,6 @@ void setSgctDelegateFunctions() { vec2 scale = currentWindow->scale(); return glm::vec2(scale.x, scale.y); }; - sgctDelegate.currentNumberOfAaSamples = []() { - ZoneScoped - - return currentWindow->numberOfAASamples(); - }; sgctDelegate.hasGuiWindow = []() { ZoneScoped @@ -1048,21 +1010,6 @@ void setSgctDelegateFunctions() { return Engine::instance().isMaster(); }; - sgctDelegate.isUsingSwapGroups = []() { - ZoneScoped - - return Window::isUsingSwapGroups(); - }; - sgctDelegate.isSwapGroupMaster = []() { - ZoneScoped - - return Window::isSwapGroupMaster(); - }; - sgctDelegate.viewProjectionMatrix = []() { - ZoneScoped - - return currentModelViewProjectionMatrix; - }; sgctDelegate.modelMatrix = []() { ZoneScoped @@ -1073,31 +1020,6 @@ void setSgctDelegateFunctions() { Engine::instance().setNearAndFarClippingPlanes(nearPlane, farPlane); }; - sgctDelegate.setEyeSeparationDistance = [](float distance) { - ZoneScoped - - Engine::instance().setEyeSeparation(distance); - }; - //sgctDelegate.viewportPixelCoordinates = []() { - // ZoneScoped - - // if (!currentWindow|| !currentViewport) { - // return glm::ivec4(0); - // } - // else { - // const int* data = cur sgct::Engine::instance()->getCurrentViewportPixelCoords(); - // return glm::ivec4(data[0], data[2], data[1], data[3]); - // } - //}; - //sgctDelegate.sendMessageToExternalControl = [](const std::vector& message) { - // ZoneScoped - - // - // sgct::Engine::instance()->sendMessageToExternalControl( - // message.data(), - // static_cast(message.size()) - // ); - //}; sgctDelegate.isFisheyeRendering = []() { ZoneScoped @@ -1353,7 +1275,7 @@ int main(int argc, char** argv) { LDEBUG("Creating SGCT Engine"); std::vector arg(argv + 1, argv + argc); Configuration config = parseArguments(arg); - config::Cluster cluster = loadCluster(windowConfiguration); + config::Cluster cluster = loadCluster(absPath(windowConfiguration)); Engine::Callbacks callbacks; callbacks.initOpenGL = mainInitFunc; @@ -1374,10 +1296,16 @@ int main(int argc, char** argv) { try { Engine::create(cluster, callbacks, config); } - catch (...) { + catch (const std::runtime_error& e) { + LFATALC("main", e.what()); Engine::destroy(); global::openSpaceEngine.deinitialize(); ghoul::deinitialize(); + } + catch (...) { + global::openSpaceEngine.deinitialize(); + ghoul::deinitialize(); + Engine::destroy(); throw; } diff --git a/config/gui_projector.xml b/config/gui_projector.xml index 9f50aa7037..21e9d09a9f 100644 --- a/config/gui_projector.xml +++ b/config/gui_projector.xml @@ -4,7 +4,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/config/single_fisheye_gui.xml b/config/single_fisheye_gui.xml index 6eb46bbabb..794a03b056 100644 --- a/config/single_fisheye_gui.xml +++ b/config/single_fisheye_gui.xml @@ -6,7 +6,7 @@ --> - + @@ -32,7 +32,7 @@ - + diff --git a/config/single_gui.xml b/config/single_gui.xml index 3404e572e3..832273090e 100644 --- a/config/single_gui.xml +++ b/config/single_gui.xml @@ -4,7 +4,7 @@ - + @@ -17,13 +17,17 @@ - + + + + + diff --git a/config/spherical_mirror_gui.xml b/config/spherical_mirror_gui.xml index c946cbecd2..e1e84e46df 100644 --- a/config/spherical_mirror_gui.xml +++ b/config/spherical_mirror_gui.xml @@ -19,7 +19,7 @@ --> - + @@ -27,7 +27,7 @@ - + diff --git a/data/assets/apollo8.scene b/data/assets/apollo8.scene deleted file mode 100644 index 6ec4a8b9d5..0000000000 --- a/data/assets/apollo8.scene +++ /dev/null @@ -1,128 +0,0 @@ ---apollo.scene -asset.require('./base') -local propertyHelper = asset.require('util/property_helper') -local sceneHelper = asset.require('util/scene_helper') - - -asset.require('scene/solarsystem/planets/earth/moon/moon') -asset.require('scene/solarsystem/missions/apollo/apollo8.asset') - --- Custom Keybindings -local Keybindings = { - { - Key = "E", - Command = "openspace.time.setPause(true);" .. - "openspace.time.setDeltaTime(1);" .. - "openspace.time.setTime('1968 DEC 24 16:37:31');" .. - "openspace.navigation.setNavigationState({" .. - " Anchor = 'Apollo8'," .. - " Position = { 1.494592E1, 3.236777E1, -4.171296E1 }," .. - " ReferenceFrame = 'Root'," .. - " Up = { 0.960608E0, -0.212013E0, 0.179675E0 }" .. - "});" .. - "openspace.setPropertyValue('*Trail.Renderable.Enabled', false)", - Documentation = "Jump to right before the earthrise photo", - Name = "Set Earthrise time", - GuiPath = "/Missions/Apollo/8", - Local = false - }, - { - Key = "U", - Command = "openspace.time.setTime('1968-12-21T12:51:37.00')" .. - "openspace.setPropertyValueSingle('Scene.Apollo8LaunchTrail.Renderable.Enabled', true);", - Documentation = "Jump to time right before Apollo 8 liftoff, with its trail enabled", - Name = "Set Apollo 8 launch time", - GuiPath = "/Missions/Apollo/8", - Local = false - }, - { - Key = "K", - Command = propertyHelper.invert('Scene.Moon.Renderable.Layers.ColorLayers.Kaguya_Utah.Enabled'), - Documentation = "Toggles Moon Kaguya color layer", - Name = "Toggle Kaguya layer on the Moon", - GuiPath = "/Missions/Apollo", - Local = false - }, - { - Key = "T", - Command = propertyHelper.invert('Scene.Apollo8MoonTrail.Renderable.Enabled'), - Documentation = "Toggles the trails of the Apollo 8 orbits, focused around the Moon", - Name = "Toggle Apollo 8 orbits", - GuiPath = "/Missions/Apollo/8", - Local = false - }, - { - Key = "SHIFT+T", - Command = propertyHelper.invert('Scene.Apollo8LaunchTrail.Renderable.Enabled'), - Documentation = "Toggles the trails of the Apollo 8 Launch, focused around the Earth", - Name = "Toggle Apollo 8 launch trail", - GuiPath = "/Missions/Apollo/8", - Local = false - }, - { - Key = "CTRL+T", - Command = propertyHelper.invert('Scene.Apollo8EarthBarycenterTrail.Renderable.Enabled'), - Documentation = "Toggles the trails of the full Apollo 8, with Earth's frame of reference", - Name = "Toggles Apollo 8 full trail", - GuiPath = "/Missions/Apollo/8", - Local = false - }, - { - Key = "S", - Command = propertyHelper.invert('Scene.Moon.Renderable.PerformShading'), - Documentation = "Toggles shading for the Moon", - Name = "Toggle Moon shading", - GuiPath = "/Missions/Apollo", - Local = false - }, - { - Key = "PAGE_UP", - Command = "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '')" .. - "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo8')" .. - "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)", - Documentation = "Set camera focus to Apollo 8", - Name = "Focus on Apollo 8", - GuiPath = "/Missions/Apollo/8", - Local = false - }, - { - Key = "PAGE_DOWN", - Command = "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '')" .. - "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Moon')" .. - "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)", - Documentation = "Set camera focus to the Moon", - Name = "Focus on Moon", - GuiPath = "/Missions/Apollo", - Local = false - }, - { - Key = "HOME", - Command = "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '')" .. - "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Earth')" .. - "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)", - Documentation = "Set camera focus to the Earth", - Name = "Focus on Earth", - GuiPath = "/Missions/Apollo", - Local = false - } -} - -local earthAsset = asset.require('scene/solarsystem/planets/earth/earth') -asset.onInitialize(function () - sceneHelper.bindKeys(Keybindings) - - openspace.time.setTime("1968-12-21T12:51:51.0") - -- Earthrise: - -- openspace.time.setTime("1968-12-24T16:37:19.0") - - openspace.markInterestingNodes({ "Earth", "Moon", "Apollo8", "Apollo8Launch" }) - - openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.MinimumAllowedDistance', 0.000000); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.LodScaleFactor', 24.0); - - openspace.globebrowsing.goToGeo(earthAsset.Earth.Identifier, 20, -60, 15000000) -end) - -asset.onDeinitialize(function () - openspace.removeInterestingNodes({ "Earth", "Moon", "Apollo8" }) -end) diff --git a/data/assets/apollo_sites.scene b/data/assets/apollo_sites.scene deleted file mode 100644 index e2ecc6ea29..0000000000 --- a/data/assets/apollo_sites.scene +++ /dev/null @@ -1,117 +0,0 @@ -asset.require('./base') - ---moonrocks.scene -local sceneHelper = asset.require('util/scene_helper') --- local station2 = asset.require('scene/solarsystem/missions/apollo/bouldersstation2') --- local station6 = asset.require('scene/solarsystem/missions/apollo/bouldersstation6') --- local station7 = asset.require('scene/solarsystem/missions/apollo/bouldersstation7') -asset.require('scene/solarsystem/missions/apollo/apollo8') -asset.require('scene/solarsystem/missions/apollo/apollo11') -asset.require('scene/solarsystem/missions/apollo/a17_lem') -asset.require('scene/solarsystem/missions/apollo/apollo_globebrowsing') -asset.require('scene/solarsystem/missions/apollo/apollo_11_lem_flipbook') -asset.require('scene/solarsystem/missions/apollo/insignias_map') - -local Keybindings = { - { - Key = "m", - Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Moon'); " .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);", - Documentation = "Focus on Moon", - Name = "Focus on Moon", - GuiPath = "/Missions/Apollo", - Local = false - }, - { - Key = "F9", - Command = "openspace.setPropertyValue('Scene.Moon.Renderable.Layers.ColorLayers.A17_*.Enabled', false);" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_11.Enabled', false);" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A11_M177481212_p_longlat.Enabled', false);" .. - "openspace.setPropertyValueSingle('Scene.Apollo11MoonTrail.Renderable.Enabled', false);" .. - "openspace.setPropertyValueSingle('Scene.Apollo11LemTrail.Renderable.Enabled', false);".. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_17.Enabled', false);", - Documentation = "Disable apollo site on moon when switching", - Name = "Disable Apollo site", - GuiPath = "/Missions/Apollo", - Local = false - }, - { - Key = "F11", - Command = "openspace.time.setTime('1969 JUL 20 20:17:40');" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_11.Enabled', true);" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A11_M177481212_p_longlat.Enabled', true);" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.LodScaleFactor', 20.11);" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo11LemPosition');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);" .. - "openspace.setPropertyValueSingle('Scene.Apollo11MoonTrail.Renderable.Enabled', true);" .. - "openspace.setPropertyValueSingle('Scene.Apollo11LemTrail.Renderable.Enabled', true);", - Documentation = "Setup for A11 site", - Name = "Setup A11 site", - GuiPath = "/Missions/Apollo/11", - Local = false - }, - { - Key = "F7", - Command = "openspace.time.setTime('1972 DEC 12 19:47:11');" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.BlendMode', 0.000000);" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.Enabled', true);" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_17.Enabled', true);" .. - -- "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station6a.Enabled', true);" .. - -- "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station6a.BlendMode', 0.000000);" .. - -- "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station2.Enabled', true);" .. - -- "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station2.BlendMode', 0.000000);" .. - -- "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station7.Enabled', true);" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.Enabled', true);" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.BlendMode', 0.000000);" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.Enabled', true);" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.BlendMode', 0.000000);" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.LodScaleFactor', 20.17);" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo17LemModel');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);" .. - "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station7.BlendMode', 0.000000);", - Documentation = "Setup for A17 site", - Name = "Setup A17 site", - GuiPath = "/Missions/Apollo/17", - Local = false - } -} - -local moonAsset = asset.require('scene/solarsystem/planets/earth/moon/moon') -asset.onInitialize(function () - openspace.time.setTime("1972 DEC 12 19:47:11") - - sceneHelper.bindKeys(Keybindings) - - openspace.markInterestingNodes({ - "Moon", "Apollo11LemModel", "Apollo17LemModel", - "Apollo11", "Apollo11LunarLander", - -- "Station_2_Boulder2", "Station_6_Fragment1" - }) - - openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.BlendMode', 0); - -- To enable both sites by default, uncomment these lines - -- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.Enabled', true); - -- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_17.Enabled', true); - -- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.Enabled', true); - -- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.BlendMode', 0.000000); - -- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.Enabled', true); - -- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.BlendMode', 0.000000); - -- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station7.BlendMode', 0.000000); - -- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_11.Enabled', true); - -- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A11_M177481212_p_longlat.Enabled', true); - - openspace.setPropertyValueSingle('Scene.Apollo11LemDescentModel.Renderable.RotationVector', { 273.750,28.0,309.85 }); - openspace.setPropertyValueSingle('Scene.Apollo11LemLandedModel.Renderable.RotationVector', { 273.750,28.0,309.85 }); - - openspace.globebrowsing.goToGeo(moonAsset.Moon.Identifier, 20, -60, 15000000) - - openspace.setPropertyValueSingle("Scene.Moon.Renderable.PerformShading", false) -end) - -asset.onDeinitialize(function () - openspace.removeInterestingNodes({ - "Moon", "Apollo11Lem", "Apollo17Lem", - "Apollo11", "Apollo11LemPosition", - -- "Station_6_Fragment1", "Station_6_Fragments_2_3" - }) -end) diff --git a/data/assets/asteroids.scene b/data/assets/asteroids.scene deleted file mode 100644 index d7c1175baf..0000000000 --- a/data/assets/asteroids.scene +++ /dev/null @@ -1,34 +0,0 @@ -asset.require('./base') - -local earthAsset = asset.require('scene/solarsystem/planets/earth/earth') - -asset.require('scene/solarsystem/sssb/amor_asteroid') -asset.require('scene/solarsystem/sssb/apollo_asteroid') -asset.require('scene/solarsystem/sssb/aten_asteroid') -asset.require('scene/solarsystem/sssb/atira_asteroid') -asset.require('scene/solarsystem/sssb/centaur_asteroid') -asset.require('scene/solarsystem/sssb/chiron-type_comet') -asset.require('scene/solarsystem/sssb/encke-type_comet') -asset.require('scene/solarsystem/sssb/halley-type_comet') -asset.require('scene/solarsystem/sssb/inner_main_belt_asteroid') -asset.require('scene/solarsystem/sssb/jupiter_trojan_asteroid') -asset.require('scene/solarsystem/sssb/jupiter-family_comet') -asset.require('scene/solarsystem/sssb/main_belt_asteroid') -asset.require('scene/solarsystem/sssb/mars-crossing_asteroid') -asset.require('scene/solarsystem/sssb/outer_main_belt_asteroid') -asset.require('scene/solarsystem/sssb/transneptunian_object_asteroid') -asset.require('scene/solarsystem/sssb/pha') - -asset.onInitialize(function () - local now = openspace.time.currentWallTime() - -- Jump back one day to be able to show complete weather data on Earth. - openspace.time.setTime(openspace.time.advancedTime(now, "-1d")) - - openspace.globebrowsing.goToGeo("Earth", 58.5877, 16.1924, 2.7e12) - - openspace.markInterestingNodes({ "Earth", "Mars", "Moon", "Sun" }) -end) - -asset.onDeinitialize(function () - openspace.removeInterestingNodes({ "Earth", "Mars", "Moon", "Sun" }) -end) diff --git a/data/assets/base.asset b/data/assets/base.asset index 3c6406cc80..2901360c27 100644 --- a/data/assets/base.asset +++ b/data/assets/base.asset @@ -16,6 +16,8 @@ asset.require('scene/solarsystem/planets/mars/moons/phobos') asset.require('scene/solarsystem/planets/mars/moons/deimos') asset.require('scene/solarsystem/dwarf_planets/pluto/system') asset.request('scene/milkyway/milkyway/volume') +asset.request('scene/milkyway/constellations/constellation_art') +asset.request('scene/milkyway/constellations/constellation_keybinds') assetHelper.requestAll(asset, 'scene/digitaluniverse') @@ -80,6 +82,8 @@ asset.onInitialize(function () sceneHelper.bindKeys(Keybindings) openspace.setDefaultGuiSorting() + openspace.setPropertyValueSingle("RenderEngine.VerticalLogOffset", 0.100000) + openspace.globebrowsing.loadWMSServersFromFile( openspace.absPath("${DATA}/globebrowsing_servers.lua") ) diff --git a/data/assets/base_profile.asset b/data/assets/base_profile.asset deleted file mode 100644 index f4a9b7b265..0000000000 --- a/data/assets/base_profile.asset +++ /dev/null @@ -1,24 +0,0 @@ --- This is a base scene that is included in most other scenes to set up defaults --- loading this scene directly without any other elements added on top of it will --- probably not work - -local assetHelper = asset.require('util/asset_helper') -local sceneHelper = asset.require('util/scene_helper') -local propertyHelper = asset.require('util/property_helper') - --- Specifying which other assets should be loaded in this scene -asset.require('spice/base') --- Load default key bindings applicable to most scenes -asset.require('util/default_keybindings') -asset.require('util/default_dashboard') -asset.require('util/default_joystick') - --- Load web gui -asset.require('util/webgui') - -asset.onInitialize(function () - openspace.setDefaultGuiSorting() - openspace.globebrowsing.loadWMSServersFromFile( - openspace.absPath("${DATA}/globebrowsing_servers.lua") - ) -end) \ No newline at end of file diff --git a/data/assets/dawn.profile b/data/assets/dawn.profile deleted file mode 100644 index 533e43d6dc..0000000000 --- a/data/assets/dawn.profile +++ /dev/null @@ -1,18 +0,0 @@ -#Version -1.0 - -#Asset -scene/solarsystem/missions/dawn/ceres required -scene/solarsystem/missions/dawn/dawn required -scene/solarsystem/missions/dawn/vesta required - -#Time -absolute 2011 AUG 06 00:00:00 - -#Camera -setNavigationState "Dawn" 526781518487.171326, 257168309890.072144, -1381125204152.817383 - -#MarkNodes -Dawn -Ceres -Vesta diff --git a/data/assets/dawn.scene b/data/assets/dawn.scene deleted file mode 100644 index 8af4d7bf6d..0000000000 --- a/data/assets/dawn.scene +++ /dev/null @@ -1,21 +0,0 @@ -asset.require('./base') - -asset.require('scene/solarsystem/missions/dawn/ceres') -asset.require('scene/solarsystem/missions/dawn/dawn') -asset.require('scene/solarsystem/missions/dawn/vesta') - -local DawnAsset = asset.require('scene/solarsystem/missions/dawn/dawn') -asset.onInitialize(function () - openspace.time.setTime("2011 AUG 06 00:00:00") - - openspace.markInterestingNodes({ "Dawn", "Ceres", "Vesta" }) - - openspace.navigation.setNavigationState({ - Anchor = DawnAsset.Dawn.Identifier, - Position = { 526781518487.171326, 257168309890.072144, -1381125204152.817383 }, - }) -end) - -asset.onDeinitialize(function () - openspace.removeInterestingNodes({ "Dawn", "Ceres", "Vesta" }) -end) diff --git a/data/assets/default.profile b/data/assets/default.profile deleted file mode 100644 index b5614baf84..0000000000 --- a/data/assets/default.profile +++ /dev/null @@ -1,21 +0,0 @@ -#Version -1.0 - -#Asset -scene/solarsystem/planets/earth/earth required -scene/solarsystem/planets/earth/satellites/satellites required - -#Property -setPropertyValue {earth_satellites}.Renderable.Enabled false - -#Time -relative -1d - -#Camera -goToGeo "Earth" 58.5877 16.1924 20000000 - -#MarkNodes -Earth -Mars -Moon -Sun diff --git a/data/assets/default.scene b/data/assets/default.scene deleted file mode 100644 index 31a2e83d4f..0000000000 --- a/data/assets/default.scene +++ /dev/null @@ -1,20 +0,0 @@ -asset.require('./base') - -local earthAsset = asset.require('scene/solarsystem/planets/earth/earth') -asset.require('scene/solarsystem/planets/earth/satellites/satellites.asset') - -asset.onInitialize(function () - local now = openspace.time.currentWallTime() - -- Jump back one day to be able to show complete weather data on Earth. - openspace.time.setTime(openspace.time.advancedTime(now, "-1d")) - - openspace.globebrowsing.goToGeo("Earth", 58.5877, 16.1924, 20000000) - - openspace.markInterestingNodes({ "Earth", "Mars", "Moon", "Sun" }) - - openspace.setPropertyValue("{earth_satellites}.Renderable.Enabled", false) -end) - -asset.onDeinitialize(function () - openspace.removeInterestingNodes({ "Earth", "Mars", "Moon", "Sun" }) -end) diff --git a/data/assets/default_full.profile b/data/assets/default_full.profile deleted file mode 100644 index e6c2522523..0000000000 --- a/data/assets/default_full.profile +++ /dev/null @@ -1,23 +0,0 @@ -#Version -1.0 - -#Asset -scene/solarsystem/planets/earth/earth required -scene/solarsystem/planets/jupiter/minor_moons required -scene/solarsystem/planets/saturn/minor_moons required -scene/solarsystem/planets/uranus/minor_moons required -scene/solarsystem/planets/neptune/inner_moons required -scene/solarsystem/planets/neptune/irregular_prograde_moons required -scene/solarsystem/planets/neptune/irregular_retrograde_moons required - -#Time -relative -1d - -#Camera -goToGeo "Earth" 58.5877 16.1924 20000000 - -#MarkNodes -Earth -Mars -Moon -Sun diff --git a/data/assets/default_full.scene b/data/assets/default_full.scene deleted file mode 100644 index faf201f55e..0000000000 --- a/data/assets/default_full.scene +++ /dev/null @@ -1,7 +0,0 @@ -asset.require('./default') -asset.require('scene/solarsystem/planets/jupiter/minor_moons') -asset.require('scene/solarsystem/planets/saturn/minor_moons') -asset.require('scene/solarsystem/planets/uranus/minor_moons') -asset.require('scene/solarsystem/planets/neptune/inner_moons') -asset.require('scene/solarsystem/planets/neptune/irregular_prograde_moons') -asset.require('scene/solarsystem/planets/neptune/irregular_retrograde_moons') diff --git a/data/assets/examples/grids.asset b/data/assets/examples/grids.asset new file mode 100644 index 0000000000..8f001c06ad --- /dev/null +++ b/data/assets/examples/grids.asset @@ -0,0 +1,54 @@ +local assetHelper = asset.require('util/asset_helper') + +local scale = 3E11 + +local radialGrid = { + Identifier = "ExampleRadialGrid", + Parent = "Root", + Transform = { + Scale = { + Type = "StaticScale", + Scale = scale + } + }, + Renderable = { + Type = "RenderableRadialGrid", + Opacity = 0.8, + GridColor = {0.6, 1.0, 0.7}, + LineWidth = 3.0, + GridSegments = {3, 4}, + InnerRadius = 0.2, + Enabled = false + }, + GUI = { + Name = "Example Radial Grid", + Path = "/Examples/Grids" + } +} + +local planarGrid = { + Identifier = "ExampleGrid", + Transform = { + Scale = { + Type = "StaticScale", + Scale = scale + } + }, + Renderable = { + Type = "RenderableGrid", + GridColor = {0.0, 1.0, 0.8}, + LineWidth = 2.0, + Segments = {5, 10}, + Size = {1, 2}, + Enabled = false + }, + GUI = { + Name = "Example Grid", + Path = "/Examples/Grids" + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { + radialGrid, + planarGrid +}) diff --git a/data/assets/examples/volume/toyvolume.asset b/data/assets/examples/volume/toyvolume.asset index 93730536f1..a52f4d879d 100644 --- a/data/assets/examples/volume/toyvolume.asset +++ b/data/assets/examples/volume/toyvolume.asset @@ -8,10 +8,10 @@ local ToyVolume = { Parent = transforms.SolarSystemBarycenter.Identifier, Renderable = { Type = "RenderableToyVolume", - Size = {5, 5, 5}, + Size = { 5, 5, 5 }, ScalingExponent = 11, StepSize = 0.01, - Color = {1, 0, 0, 1} + Color = { 1, 0, 0 } }, GUI = { Path = "/Examples" diff --git a/data/assets/gaia.profile b/data/assets/gaia.profile deleted file mode 100644 index 82d54557b1..0000000000 --- a/data/assets/gaia.profile +++ /dev/null @@ -1,22 +0,0 @@ -#Version -1.0 - -#Module -Gaia openspace.printFatal('Could not load scene due to missing module "gaia"') - -#Asset -scene/solarsystem/planets/earth/earth required -scene/milkyway/gaia/gaiastars required -scene/milkyway/gaia/apogee required -scene/milkyway/gaia/galah required -scene/solarsystem/missions/gaia/gaia required -scene/solarsystem/missions/gaia/trail required - -#Property -setPropertyValueSingle Scene.Stars.Renderable.Enabled false - -#Camera -setNavigationState "Earth" 1000000000000.0, 1000000000000.0, 1000000000000.0 - -#MarkNodes -Gaia diff --git a/data/assets/gaia.scene b/data/assets/gaia.scene deleted file mode 100644 index 45213dfeaa..0000000000 --- a/data/assets/gaia.scene +++ /dev/null @@ -1,46 +0,0 @@ -local has_gaia = openspace.modules.isLoaded('Gaia') -if not has_gaia then - openspace.printFatal('Could not load scene "' .. asset.filePath .. '" due to missing module "gaia"') - do return end -end - -asset.require('./base') - - -local assetHelper = asset.require('util/asset_helper') - --- Augment default scene with gaia data, 3D model and trail -asset.require('scene/milkyway/gaia/gaiastars') -asset.require('scene/milkyway/gaia/apogee') -asset.require('scene/milkyway/gaia/galah') -asset.require('scene/solarsystem/missions/gaia/gaia') -asset.require('scene/solarsystem/missions/gaia/trail') - -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemDistance", - Identifier = "GaiaEarthDistance", - GuiName = "Gaia Earth Distance", - SourceType = "Node", - SourceNodeName = "Gaia", - DestinationType = "Node Surface", - DestinationNodeName = "Earth" - } -}) - -local earthAsset = asset.require('scene/solarsystem/planets/earth/earth') - -asset.onInitialize(function () - openspace.setPropertyValueSingle('Scene.Stars.Renderable.Enabled', false); - - openspace.markInterestingNodes({ "Gaia" }) - - openspace.navigation.setNavigationState({ - Anchor = earthAsset.Earth.Identifier, - Position = { 1000000000000.0, 1000000000000.0, 1000000000000.0 }, - }) -end) - -asset.onDeinitialize(function () - openspace.removeInterestingNodes({ "Gaia" }) -end) diff --git a/data/assets/insight.scene b/data/assets/insight.scene deleted file mode 100644 index d185471418..0000000000 --- a/data/assets/insight.scene +++ /dev/null @@ -1,87 +0,0 @@ -asset.require('./base') - -local sceneHelper = asset.require('util/scene_helper') - --- Keybindings that are specific for this scene -local Keybindings = { - { - Key = "i", - Command = "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', -469.300000);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', -470.800006);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Enabled', true);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', true);" .. - -- "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Gamma', 3.098590);" .. - -- "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Multiplier', 3.568080);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Multiplier', 2.816900);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Settings.Gamma', 0.938970);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Gamma', 2.394370);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', true);", - Documentation = "Setup Insight landing layers", - Name = "Setup Insight layers", - GuiPath = "/Missions/Insight", - Local = false - }, - { - Key = "SHIFT+i", - Command = "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', 0);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', 0);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Enabled', false);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', false);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', false);", - -- "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Gamma', 1.0);" .. - -- "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Multiplier', 1.0);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Multiplier', 1.0);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Settings.Gamma', 1.0);" .. - "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Gamma', 1.0);"; - Documentation = "Undo Insight landing layers setup", - Name = "Unset Insight layers", - GuiPath = "/Missions/Insight", - Local = false - } -} - -local insightAsset = asset.require('scene/solarsystem/missions/insight/edl') - -asset.onInitialize(function () - openspace.time.setTime("2018 NOV 26 19:39:03.68") - - sceneHelper.bindKeys(Keybindings) - - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', -469.300000); - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', -470.800006); - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', true); - -- openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Enabled', true); - -- openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Gamma', 3.098590); - -- openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Multiplier', 3.568080); - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Multiplier', 2.81690); - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Settings.Gamma', 0.938970); - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Gamma', 2.394370); - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', true); - - openspace.markInterestingNodes({ "Insight" }) - - openspace.navigation.setNavigationState({ - Anchor = insightAsset.Insight.Identifier, - Position = { 8.430115E0, -1.791710E1, 2.813660E0 }, - ReferenceFrame = "Root", - Up = { 0.494659E0,0.357162E0,0.792306E0 }, - }) - -end) - -asset.onDeinitialize(function () - sceneHelper.unbindKeys(Keybindings) - - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', 0); - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', 0); - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', false); - -- openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Enabled', false); - -- openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Gamma', 1.0); - -- openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Multiplier', 1.0); - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Multiplier', 1.0); - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Settings.Gamma', 1.0); - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Gamma', 1.0); - openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', false); - - openspace.removeInterestingNodes({ "Insight" }) -end) diff --git a/data/assets/juno.scene b/data/assets/juno.scene deleted file mode 100644 index f17e5c3f8b..0000000000 --- a/data/assets/juno.scene +++ /dev/null @@ -1,31 +0,0 @@ -asset.request('./base') - -local assetHelper = asset.require('util/asset_helper') -local sceneHelper = asset.require('util/scene_helper') - -assetHelper.requireAll(asset, 'scene/solarsystem/missions/juno') - - -local junoAsset = asset.require('scene/solarsystem/missions/juno/juno') - -asset.onInitialize(function () - openspace.time.setTime("2016-07-01T10:05:00.00") - - openspace.markInterestingNodes({ "Jupiter", "Juno" }) - - sceneHelper.setDeltaTimeKeys({ - 1, 5, 10, 20, 40, 90, 360, 720, 2880, 14400, - 28800, 57600, 115200, 230400, 460800, 921600, 1843200, 3686400, 7372800, 14745600 - }) - - openspace.navigation.setNavigationState({ - Anchor = junoAsset.Juno.Identifier, - Position = { 1.243398E8, 7.176068E7, -1.519733E7 }, - ReferenceFrame = "Root", - Up = { -0.377400E0, 0.764573E0, 0.522492E0 }, - }) -end) - -asset.onDeinitialize(function () - openspace.removeInterestingNodes({ "Jupiter", "Juno" }) -end) diff --git a/data/assets/messenger.scene b/data/assets/messenger.scene deleted file mode 100644 index dc2f722880..0000000000 --- a/data/assets/messenger.scene +++ /dev/null @@ -1,46 +0,0 @@ -asset.require('./base') - -local assetHelper = asset.require('util/asset_helper') -local sceneHelper = asset.require('util/scene_helper') - -local MessengerAsset = asset.require('scene/solarsystem/missions/messenger/messengerSC') - -if not openspace.modules.isLoaded("Volume") then - openspace.printWarning("Volume module is not loaded, skipping asset: mercurymagnetosphere") -else - asset.require('scene/solarsystem/missions/messenger/mercurymagnetosphere') -end - -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemDistance", - Identifier = "MessengerDistance", - GuiName = "Messenger - Mercury Distance", - SourceType = "Node", - SourceNodeName = "Messenger", - DestinationType = "Node", - DestinationNodeName = "Mercury" - } -}) - -asset.onInitialize(function () - openspace.time.setTime("2011 MAY 13 00:05:18") - - openspace.markInterestingNodes({ "Mercury", "Messenger", "Sun" }) - - sceneHelper.setDeltaTimeKeys({ - 1, 5, 10, 20, 40, 90, 360, 720, 2880, 14400, - 28800, 57600, 115200, 230400, 460800, 921600, 1843200, 3686400, 7372800, 14745600 - }) - - openspace.navigation.setNavigationState({ - Anchor = "Mercury", - Position = { 2.423690E11, 1.979038E11, -2.241483E10 }, - ReferenceFrame = "Root", - Up = { -0.492046E0, 0.666088E0, 0.560551E0 } - }) -end) - -asset.onDeinitialize(function () - openspace.removeInterestingNodes({ "Mercury", "Messenger", "Sun" }) -end) diff --git a/data/assets/newhorizons.scene b/data/assets/newhorizons.scene deleted file mode 100644 index 9de5012f7d..0000000000 --- a/data/assets/newhorizons.scene +++ /dev/null @@ -1,274 +0,0 @@ -asset.require('./base'); - -asset.require('scene/solarsystem/missions/newhorizons/newhorizons') -local NewHorizonsAsset = asset.require('scene/solarsystem/missions/newhorizons/model') - -local assetHelper = asset.require('util/asset_helper') -local propertyHelper = asset.require('util/property_helper') -local sceneHelper = asset.require('util/scene_helper') -local renderableHelper = asset.require('util/renderable_helper') - -local Keybindings = { - { - Key = "a", - Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'NewHorizons');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)", - Documentation = "Sets the focus of the camera on 'NewHorizons'.", - Name = "Focus on New Horizons", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "SHIFT+a", - Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'NewHorizons');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', 'Pluto');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)", - Documentation = "Sets the focus of the camera on 'NewHorizons'.", - Name = "Anchor at New Horizons, Aim at Pluto", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "s", - Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Pluto');".. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)", - Documentation = "Sets the focus of the camera on 'Pluto'", - Name = "Focus on Pluto", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "d", - Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Charon');".. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)", - Documentation = "Sets the focus of the camera on 'Charon'.", - Name = "Focus on New Charon", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "F7", - Command = -[[local enabled = openspace.getPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.PerformProjection') -openspace.setPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.PerformProjection', not enabled) -openspace.setPropertyValue('Scene.CharonProjection.Renderable.ProjectionComponent.PerformProjection', not enabled) -openspace.setPropertyValueSingle("Dashboard.NewHorizonsInstruments.Enabled", not enabled)]], - Documentation = "Toggles New Horizons image projection.", - Name = "Toggle NH Image Projection", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "F8", - Command = "openspace.setPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.ClearAllProjections', true);" .. - "openspace.setPropertyValue('Scene.CharonProjection.Renderable.ProjectionComponent.ClearAllProjections', true);", - Documentation = "Removes all image projections from Pluto and Charon.", - Name = "Clear image projections", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "F9", - Command = "openspace.time.setTime('2015-07-14T09:00:00.00');" .. - "openspace.setPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.ClearAllProjections', true);" .. - "openspace.setPropertyValue('Scene.CharonProjection.Renderable.ProjectionComponent.ClearAllProjections', true);", - Documentation = "Jumps to the 14th of July 2015 at 0900 UTC and clears all projections.", - Name = "Reset time and projections", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "KP_8", - Command = propertyHelper.increment('Scene.PlutoProjection.Renderable.HeightExaggeration', 5000), - Documentation = "Increases the height map exaggeration on Pluto.", - Name = "Pluto HeightExaggeration +", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "CTRL+I", - Command = propertyHelper.increment('Scene.PlutoProjection.Renderable.HeightExaggeration', 5000), - Documentation = "Increases the height map exaggeration on Pluto.", - Name = "Pluto HeightExaggeration +", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "KP_2", - Command = propertyHelper.decrement('Scene.PlutoProjection.Renderable.HeightExaggeration', 5000), - Documentation = "Decreases the height map exaggeration on Pluto.", - Name = "Pluto HeightExaggeration -", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "CTRL+K", - Command = propertyHelper.decrement('Scene.PlutoProjection.Renderable.HeightExaggeration', 5000), - Documentation = "Decreases the height map exaggeration on Pluto.", - Name = "Pluto HeightExaggeration -", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "KP_9", - Command = propertyHelper.increment('Scene.CharonProjection.Renderable.HeightExaggeration', 5000), - Documentation = "Increases the height map exaggeration on Charon.", - Name = "Charon HeightExaggeration +", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "CTRL+O", - Command = propertyHelper.increment('Scene.CharonProjection.Renderable.HeightExaggeration', 5000), - Documentation = "Increases the height map exaggeration on Charon.", - Name = "Charon HeightExaggeration +", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "KP_3", - Command = propertyHelper.decrement('Scene.CharonProjection.Renderable.HeightExaggeration', 5000), - Documentation = "Decreases the height map exaggeration on Charon.", - Name = "Charon HeightExaggeration -", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "CTRL+L", - Command = propertyHelper.decrement('Scene.CharonProjection.Renderable.HeightExaggeration', 5000), - Documentation = "Decreases the height map exaggeration on Charon.", - Name = "Charon HeightExaggeration -", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "o", - Command = propertyHelper.invert('Scene.PlutoBarycentricTrail.Renderable.Enabled'), - Documentation = "Toggles the visibility of the trail behind Pluto.", - Name = "Toggle Pluto Trail", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "j", - Command = renderableHelper.toggle('Scene.PlutoText') .. renderableHelper.toggle('Scene.CharonText') .. - renderableHelper.toggle('Scene.HydraText') .. renderableHelper.toggle('Scene.NixText') .. - renderableHelper.toggle('Scene.KerberosText') .. renderableHelper.toggle('Scene.StyxText'), - Documentation = "Toggles the visibility of the text labels of Pluto, Charon, Hydra, Nix, Kerberos, and Styx.", - Name = "Toggle Pluto Labels", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "l", - Command = propertyHelper.fadeInOut('Scene.Labels.Renderable.Opacity', 2.0), - Documentation = "Toggles the visibility of the labels for the New Horizons instruments.", - Name = "Toggle New Horizons Labels", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "m", - Command = propertyHelper.invert('Scene.NH_LORRI.Renderable.SolidDraw') .. - propertyHelper.invert('Scene.NH_RALPH_LEISA.Renderable.SolidDraw') .. - propertyHelper.invert('Scene.NH_RALPH_MVIC_PAN1.Renderable.SolidDraw') .. - propertyHelper.invert('Scene.NH_RALPH_MVIC_PAN2.Renderable.SolidDraw') .. - propertyHelper.invert('Scene.NH_RALPH_MVIC_RED.Renderable.SolidDraw') .. - propertyHelper.invert('Scene.NH_RALPH_MVIC_BLUE.Renderable.SolidDraw') .. - propertyHelper.invert('Scene.NH_RALPH_MVIC_FT.Renderable.SolidDraw') .. - propertyHelper.invert('Scene.NH_RALPH_MVIC_METHANE.Renderable.SolidDraw') .. - propertyHelper.invert('Scene.NH_RALPH_MVIC_NIR.Renderable.SolidDraw') .. - propertyHelper.invert('Scene.NH_ALICE_AIRGLOW.Renderable.SolidDraw') .. - propertyHelper.invert('Scene.NH_ALICE_SOC.Renderable.SolidDraw'), - Documentation = "Draws the instrument field of views in a solid color or as lines.", - Name = "Toggle instrument FOVs", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "Shift+t", - Command = renderableHelper.toggle('Scene.PlutoShadow') .. renderableHelper.toggle('Scene.CharonShadow'), - Documentation = "Toggles the visibility of the shadow visualization of Pluto and Charon.", - Name = "Toggle Shadows", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "t", - Command = renderableHelper.toggle('Scene.NewHorizonsTrailPluto'), - Documentation = "Toggles the trail of New Horizons.", - Name = "Toggle NH Trail", - GuiPath = "/New Horizons", - Local = false - }, - { - Key = "h", - Name="Hide Trails", - Command = "local list = openspace.getProperty('*Trail.Renderable.Enabled'); for _,v in pairs(list) do openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end", - Documentation = "Disables visibility of the trails", - GuiPath = "/Rendering", - Local = false - }, - -} - - -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemSpacing", - Identifier = "NewHorizonsSpacing", - GuiName = "New Horizons Spacing", - Spacing = 25 - }, - { - Type = "DashboardItemDistance", - Identifier = "NewHorizonsPlutoDistance", - GuiName = "New Horizons Pluto Distance", - SourceType = "Node", - SourceNodeName = "NewHorizons", - DestinationType = "Node Surface", - DestinationNodeName = "PlutoProjection" - }, - { - Type = "DashboardItemInstruments", - Identifier = "NewHorizonsInstruments", - GuiName = "NewHorizons Instruments", - } -}) - -asset.onInitialize(function () - openspace.time.setTime("2015-07-14T08:00:00.00") - sceneHelper.bindKeys(Keybindings) - - openspace.markInterestingNodes({ "Pluto", "NewHorizons", "Charon" }) - - sceneHelper.setDeltaTimeKeys({ - 1, 5, 10, 20, 40, 60, 120, 360, 540, 1080, - 2160, 4320, 8640 - }) - - openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.FollowAnchorNodeRotationDistance', 20.000000); - openspace.setPropertyValueSingle('Scene.Pluto.Renderable.Enabled', false) - openspace.setPropertyValueSingle('Scene.Charon.Renderable.Enabled', false) - openspace.setPropertyValueSingle("Scene.PlutoBarycenterTrail.Renderable.Enabled", false) - - openspace.navigation.setNavigationState({ - Anchor = "NewHorizons", - ReferenceFrame = "Root", - Position = { -6.572656E1, -7.239404E1, -2.111890E1 }, - Up = { 0.102164, -0.362945, 0.926193 } - }) -end) - -asset.onDeinitialize(function () - sceneHelper.unbindKeys(Keybindings) - - openspace.removeInterestingNodes({ "Pluto", "NewHorizons", "Charon" }) - - openspace.setPropertyValueSingle('Scene.Pluto.Renderable.Enabled', true) - openspace.setPropertyValueSingle('Scene.Charon.Renderable.Enabled', true) - openspace.setPropertyValueSingle('Scene.PlutoBarycenterTrail.Renderable.Enabled', true) -end) diff --git a/data/assets/osirisrex.scene b/data/assets/osirisrex.scene deleted file mode 100644 index 285fdb5252..0000000000 --- a/data/assets/osirisrex.scene +++ /dev/null @@ -1,147 +0,0 @@ -asset.require('./base') - -local assetHelper = asset.require('util/asset_helper') -local sceneHelper = asset.require('util/scene_helper') -local propertyHelper = asset.require('util/property_helper') - -asset.require('scene/solarsystem/missions/osirisrex/osirisrex') - --- Custom Keybindings -local Keybindings = { - { - Key = "a", - Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'OsirisRex')" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)", - Documentation = "Sets the focus of the camera on 'OsirisRex'.", - Name = "Focus on OsirisRex", - GuiPath = "/Missions/Osiris Rex", - Local = false - }, - { - Key = "s", - Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'BennuBarycenter')" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)", - Documentation = "Sets the focus of the camera on 'Bennu'", - Name = "Focus on Bennu", - GuiPath = "/Missions/Osiris Rex", - Local = false - }, - -- TODO - -- Maybe these can be fixed later - -- { - -- Key = "F6", - -- Command = "openspace.printInfo('Set time: Launch');openspace.time.setTime('2016 SEP 08 23:05:00');", - -- Documentation = "Sets the time to the launch of Osiris Rex.", - -- Name = "Set launch time", - -- GuiPath = "/Missions/Osiris Rex", - -- Local = false - -- }, - -- { - -- Key = "F7", - -- Command = "openspace.printInfo('Set time: Gravity Assist');openspace.time.setTime('2017 SEP 22 15:00:00');", - -- Documentation = "Sets the time to the Earth gravity assist.", - -- Name = "Set Earth gravity assist time", - -- GuiPath = "/Missions/Osiris Rex", - -- Local = false - -- }, - { - Key = "F8", - Command = "openspace.printInfo('Set time: Approach');openspace.time.setTime('2018-SEP-11 21:31:01.183');", - Documentation = "Sets the time to the approach at Bennu.", - Name = "Set Bennu approach time", - GuiPath = "/Missions/Osiris Rex", - Local = false - }, - { - Key = "F9", - Command = "openspace.printInfo('Set time: Preliminary Survey');openspace.time.setTime('2018-NOV-20 01:13:12.183');", - Documentation = "Sets the time to the preliminary survey of Bennu.", - Name = "Set Bennu survey time", - GuiPath = "/Missions/Osiris Rex", - Local = false - }, - { - Key = "F10", - Command = "openspace.printInfo('Set time: Orbital B');openspace.time.setTime('2019-APR-08 10:35:27.186');", - Documentation = "Sets the time to the orbital B event.", - Name = "Set orbital B event time", - GuiPath = "/Missions/Osiris Rex", - Local = false - }, - { - Key = "F11", - Command = "openspace.printInfo('Set time: Recon');openspace.time.setTime('2019-MAY-25 03:50:31.195');", - Documentation = "Sets the time to the recon event.", - Name = "Set recon event time", - GuiPath = "/Missions/Osiris Rex", - Local = false - }, - { - Key = "q", - Command = propertyHelper.invert('Scene.SunMarker.Renderable.Enabled'), - Documentation = "Toggles the visibility of the text marking the location of the Sun.", - Name = "Toggle Sun marker", - GuiPath = "/Missions/Osiris Rex", - Local = false - }, - -- { - -- Key = "e", - -- Command = propertyHelper.invert('Scene.EarthMarker.Renderable.Enabled'), - -- Documentation = "Toggles the visibility of the text marking the location of the Earth.", - -- Name = "Toggle Earth marker", - -- GuiPath = "/Missions/Osiris Rex", - -- Local = false - -- } -} - -local OsirisRexAsset = asset.require('scene/solarsystem/missions/osirisrex/model') - -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemSpacing", - Identifier = "OsirisRexSpacing", - GuiName = "OSIRIS-REx Spacing", - Spacing = 25 - }, - { - Type = "DashboardItemDistance", - Identifier = "OsirisRexBennuDistance", - GuiName = "OSIRIS-REx Bennu Distance", - SourceType = "Node", - SourceNodeName = "OsirisRex", - DestinationType = "Node", - DestinationNodeName = "BennuBarycenter" - }, - { - Type = "DashboardItemInstruments", - Identifier = "OsirisRexInstruments", - GuiName = "OSIRIS-REx Instruments", - } -}) - -asset.onInitialize(function () - - openspace.time.setTime("2018 10 30 23:00:00.500") - - sceneHelper.bindKeys(Keybindings) - - sceneHelper.setDeltaTimeKeys({ - 1, 5, 10, 20, 40, 60, 120, 360, 540, 1080, - 2160, 4320, 8640 - }) - - openspace.markInterestingNodes({ "OsirisRex", "BennuBarycenter", "Earth" }) - - openspace.navigation.setNavigationState({ - Anchor = OsirisRexAsset.OsirisRex.Identifier, - Position = { 26974590199.661884, 76314608558.908020, -127086452897.101791 } - }) -end) - -asset.onDeinitialize(function () - sceneHelper.unbindKeys(Keybindings) - - openspace.removeInterestingNodes({ "OsirisRex", "BennuBarycenter", "Earth" }) -end) diff --git a/data/assets/rosetta.scene b/data/assets/rosetta.scene deleted file mode 100644 index f1470372a1..0000000000 --- a/data/assets/rosetta.scene +++ /dev/null @@ -1,152 +0,0 @@ -asset.require('./base') - - -local assetHelper = asset.require('util/asset_helper') -local sceneHelper = asset.require('util/scene_helper') -local propertyHelper = asset.require('util/property_helper') -local renderableHelper = asset.require('util/renderable_helper') - -asset.require('scene/solarsystem/missions/rosetta/67p') -asset.require('scene/solarsystem/missions/rosetta/rosetta') - --- Custom Keybindings -local Keybindings = { - { - Key = "a", - Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', '67P');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)", - Documentation = "Sets the focus of the camera on '67P'.", - Name = "Focus on 67P", - GuiPath = "/Missions/Rosetta", - Local = false - }, - { - Key = "s", - Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Rosetta');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');" .. - "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)", - Documentation = "Sets the focus of the camera on 'Rosetta'", - Name = "Focus on Rosetta", - GuiPath = "/Missions/Rosetta", - Local = false - }, - { - Key = "Shift+F6", - Command = "openspace.time.setTime('2014-08-01T03:05:18.10')", - Documentation = "Jumps to the time of initial approach of Rosetta to 67P.", - Name = "Set initial approach time", - GuiPath = "/Missions/Rosetta", - Local = false - }, - { - Key = "F6", - Command = "openspace.time.setTime('2014-11-12T08:20:00.00')", - Documentation = "Jumps to the time when the Philae lander is released.", - Name = "Set lander release time", - GuiPath = "/Missions/Rosetta", - Local = false - }, - { - Key = "F8", - Command = "openspace.setPropertyValue('Scene.67P.Renderable.ProjectionComponent.ClearAllProjections', true)", - Documentation = "Removes all image projections from 67P.", - Name = "Clear 67P projections", - GuiPath = "/Missions/Rosetta", - Local = false - }, - -- { - -- Key = "q", - -- Command = propertyHelper.invert('Scene.SunMarker.Renderable.Enabled'), - -- Documentation = "Toggles the visibility of the text marking the location of the Sun.", - -- Name = "Toggle Sun marker", - -- GuiPath = "/Missions/Rosetta", - -- Local = false - -- }, - { - Key = "e", - Command = renderableHelper.toggle('Scene.JupiterTrail') .. renderableHelper.toggle('Scene.SaturnTrail') .. - renderableHelper.toggle('Scene.UranusTrail') .. renderableHelper.toggle('Scene.NeptuneTrail'), - Documentation = "Toggles the visibility of all trails further from the Sun than 67P.", - Name = "Toggle outer planetary trails", - GuiPath = "/Missions/Rosetta", - Local = false - }, - { - Key = "i", - Command = renderableHelper.toggle('Scene.ImagePlaneRosetta'), - Documentation = "Toggles the visibility of the free floating image plane.", - Name = "Toggle image plane", - GuiPath = "/Missions/Rosetta", - Local = false - }, - { - Key = "o", - Command = renderableHelper.toggle('Scene.PhilaeTrail'), - Documentation = "Toggles the visibility of Philae's trail.", - Name = "Toggle Philae trail", - GuiPath = "/Missions/Rosetta", - Local = false - }, - { - Key = "p", - Command = propertyHelper.invert('Scene.67P.Renderable.ProjectionComponent.PerformProjection'), - Documentation = "Enables or disables the image projection on 67P.", - Name = "Toggle 67P projection", - GuiPath = "/Missions/Rosetta", - Local = false - } -} - -local Comet67PAsset = asset.require('scene/solarsystem/missions/rosetta/67p') - -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemSpacing", - Identifier = "RosettaSpacing", - GuiName = "Rosetta Spacing", - Spacing = 25 - }, - { - Type = "DashboardItemDistance", - Identifier = "Rosetta67PDistance", - GuiName = "Rosetta 67P Distance", - SourceType = "Node", - SourceNodeName = "Rosetta", - DestinationType = "Node", - DestinationNodeName = "67P" - }, - { - Type = "DashboardItemInstruments", - Identifier = "RosettaInstruments", - GuiName = "Rosetta Instruments", - } -}) - -asset.onInitialize(function () - openspace.time.setTime("2014-08-01T03:05:00.000") - sceneHelper.bindKeys(Keybindings) - - openspace.markInterestingNodes({ "67P", "Rosetta", "Philae" }) - - sceneHelper.setDeltaTimeKeys({ - 1, 5, 10, 20, 40, 90, 360, 720, 2880, 14400, - 28800, 57600, 115200, 230400, 460800, 921600, 1843200, 3686400, 7372800, 14745600 - }) - - openspace.navigation.setNavigationState({ - Anchor = Comet67PAsset.Comet67P.Identifier, - ReferenceFrame = "Root", - Position = { -7.294781E5 , -6.657894E5, 2.509047E6 }, - Up = { 0.146529E0, 0.944727E0, 0.293290E0 } - }) - - openspace.setPropertyValue('Scene.67P.Renderable.PerformShading', false); - openspace.setPropertyValue('Scene.ImagePlaneRosetta.Renderable.Enabled', false); - -end) - -asset.onDeinitialize(function () - sceneHelper.unbindKeys(Keybindings) - openspace.removeInterestingNodes({ "67P", "Rosetta", "Philae" }) -end) diff --git a/data/assets/scene/digitaluniverse/abell.asset b/data/assets/scene/digitaluniverse/abell.asset index 287eab6c52..80b5bbbe94 100644 --- a/data/assets/scene/digitaluniverse/abell.asset +++ b/data/assets/scene/digitaluniverse/abell.asset @@ -27,7 +27,7 @@ local object = { File = speck .. "/abell.speck", Texture = textures .. "/point3A.png", LabelFile = speck .. "/abell.label", - TextColor = { 0.0, 0.8, 0.0, 1.0 }, + TextColor = { 0.0, 0.8, 0.0 }, TextSize = 22, TextMinSize = 10.0, Unit = "Mpc", diff --git a/data/assets/scene/digitaluniverse/alternatestarlabels.asset b/data/assets/scene/digitaluniverse/alternatestarlabels.asset index 2289f24eae..dcef9924a2 100644 --- a/data/assets/scene/digitaluniverse/alternatestarlabels.asset +++ b/data/assets/scene/digitaluniverse/alternatestarlabels.asset @@ -17,7 +17,7 @@ local object = { Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, LabelFile = speck .. "/stars-altlbl.label", - TextColor = { 0.4, 0.4, 0.4, 1.0 }, + TextColor = { 0.4, 0.4, 0.4 }, DrawLabels = true, TextSize = 14.7, TextMinSize = 6.0, diff --git a/data/assets/scene/digitaluniverse/clusters.asset b/data/assets/scene/digitaluniverse/clusters.asset index f0bb7ac5ea..3f0475d98b 100644 --- a/data/assets/scene/digitaluniverse/clusters.asset +++ b/data/assets/scene/digitaluniverse/clusters.asset @@ -17,7 +17,7 @@ local object = { Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, LabelFile = speck .. "/galclust.label", - TextColor = { 1.0, 0.44, 0.0, 1.0 }, + TextColor = { 1.0, 0.44, 0.0 }, DrawLabels = true, TextSize = 22, TextMinSize = 8.0, diff --git a/data/assets/scene/digitaluniverse/constellations.asset b/data/assets/scene/digitaluniverse/constellations.asset index 105c9fe001..216a320283 100644 --- a/data/assets/scene/digitaluniverse/constellations.asset +++ b/data/assets/scene/digitaluniverse/constellations.asset @@ -14,12 +14,11 @@ local constellationsExtragalactic = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 0.4, 0.2 }, - Transparency = 1.0, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/constellationsEXGAL.speck", LabelFile = speck .. "/constellationsEXGAL.label", - TextColor = { 0.8, 0.8, 0.8, 1.0 }, + TextColor = { 0.8, 0.8, 0.8 }, + TextOpacity = 0.4, TextSize = 20.0, TextMinSize = 20.0, TextMaxSize = 30.0, @@ -37,12 +36,11 @@ local constellations = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 0.4, 0.2 }, - Transparency = 1.0, - ScaleFactor = 1.0, + Opacity = 0.3, File = speck .. "/constellations.speck", LabelFile = speck .. "/constellations.label", - TextColor = { 0.8, 0.8, 0.8, 1.0 }, + TextColor = { 0.8, 0.8, 0.8 }, + TextOpacity = 0.3, TextSize = 14.5, TextMaxSize = 170.0, TextMinSize = 8.0, diff --git a/data/assets/scene/digitaluniverse/deepsky.asset b/data/assets/scene/digitaluniverse/deepsky.asset index af41b8d18c..4789551408 100644 --- a/data/assets/scene/digitaluniverse/deepsky.asset +++ b/data/assets/scene/digitaluniverse/deepsky.asset @@ -30,7 +30,7 @@ local deepSkyPoints = { --ColorOption = { "prox5Mpc" }, --ColorRange = { { 1.0, 30.0 } }, LabelFile = speck .. "/dso.label", - TextColor = { 0.1, 0.4, 0.6, 1.0 }, + TextColor = { 0.1, 0.4, 0.6 }, TextSize = 20.50, TextMinSize = 16.0, Unit = "Mpc", @@ -43,6 +43,12 @@ local deepSkyPoints = { --CorrectionSizeFactor = 10.45 EnablePixelSizeControl = true }, + Transform = { + Rotation = { + Type = "StaticRotation", + Rotation = { 0, 0, 3.14159265359 } + } + }, GUI = { Name = "Deep Sky Objects Points", Path = "/Universe/Galaxies" @@ -55,7 +61,7 @@ local deepSkyImages = { Type = "RenderablePlanesCloud", Enabled = false, Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.99, + Opacity = 0.99, ScaleFactor = 1.0, File = speck .. "/dso.speck", TexturePath = textures, @@ -66,6 +72,12 @@ local deepSkyImages = { --FadeInDistances = {0.001, 0.05010}, PlaneMinSize = 5.0 }, + Transform = { + Rotation = { + Type = "StaticRotation", + Rotation = {3.14159265359, 3.14159265359, 0 } + } + }, GUI = { Name = "Deep Sky Objects Images", Path = "/Universe/Galaxies" diff --git a/data/assets/scene/digitaluniverse/dwarfs.asset b/data/assets/scene/digitaluniverse/dwarfs.asset index 507fd039d3..a302fd9154 100644 --- a/data/assets/scene/digitaluniverse/dwarfs.asset +++ b/data/assets/scene/digitaluniverse/dwarfs.asset @@ -29,7 +29,7 @@ local object = { ColorMap = speck .. "/dwarfs.cmap", ColorOption = { "typeindex" }, --ColorRange = { { 1.0, 4.0} }, - TextColor = { 0.5, 0.1, 0.2, 1.0 }, + TextColor = { 0.5, 0.1, 0.2 }, TextSize = 14.6, TextMinSize = 10.0, ScaleFactor = 370, diff --git a/data/assets/scene/digitaluniverse/exoplanets.asset b/data/assets/scene/digitaluniverse/exoplanets.asset index cd1d29aae3..7915477f17 100644 --- a/data/assets/scene/digitaluniverse/exoplanets.asset +++ b/data/assets/scene/digitaluniverse/exoplanets.asset @@ -28,7 +28,7 @@ local object = { File = speck .. "/expl.speck", LabelFile = speck .. "/expl.label", ScaleFactor = 392.5, - TextColor = { 0.3, 0.3, 0.8, 1.0 }, + TextColor = { 0.3, 0.3, 0.8 }, TextSize = 14.8, TextMaxSize = 200.0, TextMinSize = 10.0, diff --git a/data/assets/scene/digitaluniverse/globularclusters.asset b/data/assets/scene/digitaluniverse/globularclusters.asset index 2bce90db9e..035052eea1 100644 --- a/data/assets/scene/digitaluniverse/globularclusters.asset +++ b/data/assets/scene/digitaluniverse/globularclusters.asset @@ -22,18 +22,18 @@ local object = { Type = "RenderableBillboardsCloud", Enabled = false, Color = { 0.8, 0.8, 0.0 }, - Opacity = 1.0, + Opacity = 0.4, File = speck .. "/gc.speck", Texture = textures .. "/point4.png", PolygonSides = 5, LabelFile = speck .. "/gc.label", - TextColor = { 0.5, 0.5, 0.0, 1.0 }, - ScaleFactor = 440.0, - TextSize = 18.6, - TextMinSize = 10.0, - TextMaxSize = 14.4, + TextColor = { 0.5, 0.5, 0.0 }, + ScaleFactor = 431.0, + TextSize = 16.7, + TextMinSize = 4.0, + TextMaxSize = 20, Unit = "pc", - BillboardMaxSize = 13.5, + BillboardMaxSize = 500, EnablePixelSizeControl = true, }, GUI = { diff --git a/data/assets/scene/digitaluniverse/grids.asset b/data/assets/scene/digitaluniverse/grids.asset index cb17a78754..dcb069250a 100644 --- a/data/assets/scene/digitaluniverse/grids.asset +++ b/data/assets/scene/digitaluniverse/grids.asset @@ -2,6 +2,17 @@ local assetHelper = asset.require('util/asset_helper') local transforms = asset.require('scene/solarsystem/sun/transforms') local earth_transforms = asset.require('scene/solarsystem/planets/earth/transforms') +local equatorialRotationMatrix = { + -0.05487554, 0.4941095, -0.8676661, + -0.8734371 , -0.4448296, -0.1980764, + -0.483835 , 0.7469823, 0.4559838 +} + +local eclipticRotationMatrix = { + -0.05487554, 0.4941095, -0.8676661, + -0.9938214 , -0.1109906, -0.0003515167, + -0.09647644, 0.8622859, 0.4971472 +} local speck = asset.syncedResource({ Name = "Grids Speck Files", @@ -19,17 +30,18 @@ local radio = { -- First TV signals strong enough to leave the ionosphere ReferenceDate = "1936 AUG 01 12:00:00", Speed = 299792458 -- c + }, + Rotation = { + Type = "StaticRotation", + Rotation = equatorialRotationMatrix } }, Renderable = { Type = "RenderableSphericalGrid", Enabled = false, - GridColor = { 0.3, 0.84, 1.0, 0.3}, - LineWidth = 2.0, - GridMatrix = { -0.05487554, 0.4941095, -0.8676661 , 0.0, - -0.9938214 , -0.1109906, -0.0003515167, 0.0, - -0.09647644, 0.8622859, 0.4971472 , 0.0, - 0.0 , 0.0 , 0.0 , 1.0 } + Opacity = 1.0, + GridColor = { 0.3, 0.84, 1.0 }, + LineWidth = 2.0 }, GUI = { Name = "Radio Sphere", @@ -43,18 +55,19 @@ local oort = { Transform = { Scale = { Type = "StaticScale", - Scale = 7.47989845E15; + Scale = 7.47989845E15 + }, + Rotation = { + Type = "StaticRotation", + Rotation = eclipticRotationMatrix } }, Renderable = { Type = "RenderableSphericalGrid", Enabled = false, - GridColor = { 0.8, 0.4, 0.4, 0.25}, - LineWidth = 2.0, - GridMatrix = { -0.05487554, 0.4941095, -0.8676661 , 0.0, - -0.9938214 , -0.1109906, -0.0003515167, 0.0, - -0.09647644, 0.8622859, 0.4971472 , 0.0, - 0.0 , 0.0 , 0.0 , 1.0 } + Opacity = 0.8, + GridColor = { 0.8, 0.4, 0.4 }, + LineWidth = 2.0 }, GUI = { Name = "Oort Sphere", @@ -68,18 +81,19 @@ local ecliptic = { Transform = { Scale = { Type = "StaticScale", - Scale = 9.46377307652E17; + Scale = 9.46377307652E17 + }, + Rotation = { + Type = "StaticRotation", + Rotation = eclipticRotationMatrix } }, Renderable = { Type = "RenderableSphericalGrid", Enabled = false, - GridColor = { 0.74, 0.26, 0.26, 0.5}, - LineWidth = 2.0, - GridMatrix = { -0.05487554, 0.4941095, -0.8676661 , 0.0, - -0.9938214 , -0.1109906, -0.0003515167, 0.0, - -0.09647644, 0.8622859, 0.4971472 , 0.0, - 0.0 , 0.0 , 0.0 , 1.0 } + Opacity = 1.0, + GridColor = { 0.74, 0.26, 0.26 }, + LineWidth = 2.0 }, GUI = { Name = "Ecliptic Sphere", @@ -90,24 +104,24 @@ local ecliptic = { local eclipticLabels = { Identifier = "EclipticSphereLabels", Parent = transforms.SolarSystemBarycenter.Name, + Transform = { + Rotation = { + Type = "StaticRotation", + Rotation = eclipticRotationMatrix + } + }, Renderable = { Type = "RenderableBillboardsCloud", Enabled = false, Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.65, + Opacity = 0.65, LabelFile = speck .. "/eclip.label", DrawLabels = true, - TextColor = { 0.5, 0.5, 0.5, 1.0 }, + TextColor = { 0.5, 0.5, 0.5 }, TextSize = 14.75, TextMinSize = 1.3, TextMaxSize = 50.0, Unit = "pc", - TransformationMatrix = { - -0.05487554, 0.4941095, -0.8676661, 0.0, - -0.9938214 , -0.1109906, -0.0003515167, 0.0, - -0.09647644, 0.8622859, 0.4971472, 0.0, - 0.0, 0.0, 0.0, 1.0 - } }, GUI = { Name = "Ecliptic Sphere Labels", @@ -122,17 +136,18 @@ local equatorial = { Scale = { Type = "StaticScale", Scale = 4.28601E17; + }, + Rotation = { + Type = "StaticRotation", + Rotation = equatorialRotationMatrix } }, Renderable = { Type = "RenderableSphericalGrid", Enabled = false, - GridColor = { 0.69, 0.68, 0.29, 0.8}, - LineWidth = 2.0, - GridMatrix = { -0.05487554, 0.4941095, -0.8676661, 0.0, - -0.8734371 , -0.4448296, -0.1980764, 0.0, - -0.483835 , 0.7469823, 0.4559838, 0.0, - 0.0 , 0.0 , 0.0 , 1.0 }, + Opacity = 0.8, + GridColor = { 0.69, 0.68, 0.29 }, + LineWidth = 2.0 }, GUI = { Name = "Equatorial Sphere", @@ -143,24 +158,24 @@ local equatorial = { local equatorialLabels = { Identifier = "EquatorialSphereLabels", Parent = transforms.SolarSystemBarycenter.Name, + Transform = { + Rotation = { + Type = "StaticRotation", + Rotation = equatorialRotationMatrix + } + }, Renderable = { Type = "RenderableBillboardsCloud", Enabled = false, Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.65, + Opacity = 0.65, LabelFile = speck .. "/radec.label", DrawLabels = true, - TextColor = { 0.5, 0.5, 0.5, 1.0 }, + TextColor = { 0.5, 0.5, 0.5 }, TextSize = 14.5, TextMinSize = 1.7, TextMaxSize = 70.0, Unit = "pc", - TransformationMatrix = { - -0.05487554, 0.4941095, -0.8676661, 0.0, - -0.8734371 , -0.4448296, -0.1980764, 0.0, - -0.483835 , 0.7469823, 0.4559838, 0.0, - 0.0 , 0.0 , 0.0 , 1.0 - } }, GUI = { Name = "Equatorial Sphere Labels", @@ -181,7 +196,8 @@ local galactic = { Type = "RenderableSphericalGrid", Enabled = false, LineWidth = 2.0, - GridColor = { 0.0, 0.6, 0.6, 0.6} + Opacity = 1.0, + GridColor = { 0.0, 0.6, 0.6 } }, GUI = { Name = "Galactic Sphere", @@ -196,10 +212,10 @@ local galacticLabels = { Type = "RenderableBillboardsCloud", Enabled = false, Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.65, + Opacity = 0.65, LabelFile = speck .. "/galac.label", DrawLabels = true, - TextColor = { 0.5, 0.5, 0.5, 1.0 }, + TextColor = { 0.5, 0.5, 0.5 }, TextSize = 15.8, TextMinSize = 0.5, TextMaxSize = 100.0, @@ -217,23 +233,17 @@ local plane1ld = { Transform = { Rotation = { Type = "StaticRotation", - Rotation = { - -0.05487554, 0.4941095, -0.8676661, - -0.9938214 , -0.1109906, -0.0003515167, - -0.09647644, 0.8622859, 0.4971472 - } + Rotation = eclipticRotationMatrix } }, Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.4, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/1ld.speck", MeshColor = {{ 0.1, 0.5, 0.6 }}, LabelFile = speck .. "/1ld.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 10.3, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -251,23 +261,17 @@ local plane1lm = { Transform = { Rotation = { Type = "StaticRotation", - Rotation = { - -0.05487554, 0.4941095, -0.8676661, - -0.9938214 , -0.1109906, -0.0003515167, - -0.09647644, 0.8622859, 0.4971472 - } + Rotation = eclipticRotationMatrix } }, Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.4, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/1lm.speck", MeshColor = {{ 0.1, 0.5, 0.6 }}, LabelFile = speck .. "/1lm.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 11.8, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -285,23 +289,17 @@ local plane1ly = { Transform = { Rotation = { Type = "StaticRotation", - Rotation = { - -0.05487554, 0.4941095, -0.8676661, - -0.9938214 , -0.1109906, -0.0003515167, - -0.09647644, 0.8622859, 0.4971472 - } + Rotation = eclipticRotationMatrix } }, Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.4, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/1ly.speck", MeshColor = {{ 0.1, 0.5, 0.6 }}, LabelFile = speck .. "/1ly.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 13.0, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -319,23 +317,17 @@ local plane10ly = { Transform = { Rotation = { Type = "StaticRotation", - Rotation = { - -0.05487554, 0.4941095, -0.8676661, - -0.9938214 , -0.1109906, -0.0003515167, - -0.09647644, 0.8622859, 0.4971472 - } + Rotation = eclipticRotationMatrix } }, Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.4, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/10ly.speck", MeshColor = {{ 0.1, 0.5, 0.6 }}, LabelFile = speck .. "/10ly.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 14.17, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -353,23 +345,17 @@ local plane100ly = { Transform = { Rotation = { Type = "StaticRotation", - Rotation = { - -0.05487554, 0.4941095, -0.8676661, - -0.9938214 , -0.1109906, -0.0003515167, - -0.09647644, 0.8622859, 0.4971472 - } + Rotation = eclipticRotationMatrix } }, Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.4, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/100ly.speck", MeshColor = {{ 0.1, 0.5, 0.6 }}, LabelFile = speck .. "/100ly.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 15.0, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -387,23 +373,17 @@ local plane1kly = { Transform = { Rotation = { Type = "StaticRotation", - Rotation = { - -0.05487554, 0.4941095, -0.8676661, - -0.9938214 , -0.1109906, -0.0003515167, - -0.09647644, 0.8622859, 0.4971472 - } + Rotation = eclipticRotationMatrix } }, Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.4, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/1kly.speck", MeshColor = {{ 0.1, 0.5, 0.6 }}, LabelFile = speck .. "/1kly.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 16.0, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -421,23 +401,17 @@ local plane10kly = { Transform = { Rotation = { Type = "StaticRotation", - Rotation = { - -0.05487554, 0.4941095, -0.8676661, - -0.9938214 , -0.1109906, -0.0003515167, - -0.09647644, 0.8622859, 0.4971472 - } + Rotation = eclipticRotationMatrix } }, Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.4, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/10kly.speck", MeshColor = {{ 0.1, 0.5, 0.6 }}, LabelFile = speck .. "/10kly.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 17.25, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -454,13 +428,11 @@ local plane100kly = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.4, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/100kly.speck", MeshColor = {{ 0.1, 0.5, 0.6 }}, LabelFile = speck .. "/100kly.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 18.6, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -477,13 +449,11 @@ local plane1Mly = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.4, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/1Mly.speck", MeshColor = {{ 0.1, 0.5, 0.6 }}, LabelFile = speck .. "/1Mly.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 19.6, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -500,13 +470,11 @@ local plane10Mly = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.4, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/10Mly.speck", MeshColor = {{ 0.1, 0.5, 0.6 }}, LabelFile = speck .. "/10Mly.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 20.6, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -523,13 +491,11 @@ local plane100Mly = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.4, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/100Mly.speck", MeshColor = {{ 0.1, 0.5, 0.6 }}, LabelFile = speck .. "/100Mly.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 21.6, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -546,13 +512,11 @@ local plane20Gly = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.4, - ScaleFactor = 1.0, + Opacity = 0.4, File = speck .. "/20Gly.speck", MeshColor = {{ 0.1, 0.5, 0.6 }}, LabelFile = speck .. "/20Gly.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 23.6, TextMinSize = 0.5, TextMaxSize = 30.0, diff --git a/data/assets/scene/digitaluniverse/groups.asset b/data/assets/scene/digitaluniverse/groups.asset index 745f054baf..682f7fb65b 100644 --- a/data/assets/scene/digitaluniverse/groups.asset +++ b/data/assets/scene/digitaluniverse/groups.asset @@ -18,7 +18,7 @@ local object = { Opacity = 0.65, --ScaleFactor = 10.0, LabelFile = speck .. "/groups.label", - TextColor = { 0.1, 0.6, 0.2, 1.0 }, + TextColor = { 0.1, 0.6, 0.2 }, TextSize = 21.5, TextMinSize = 8.0, Unit = "Mpc", diff --git a/data/assets/scene/digitaluniverse/h2regions.asset b/data/assets/scene/digitaluniverse/h2regions.asset index 51058458ce..db9cf215c6 100644 --- a/data/assets/scene/digitaluniverse/h2regions.asset +++ b/data/assets/scene/digitaluniverse/h2regions.asset @@ -22,19 +22,19 @@ local object = { Type = "RenderableBillboardsCloud", Enabled = false, Color = { 0.0, 0.5, 1.0 }, - Opacity = 1.0, + Opacity = 0.70, File = speck .. "/h2.speck", Texture = textures .."/point4.png", PolygonSides = 6, LabelFile = speck .. "/h2.label", - TextColor = { 0.5, 0.5, 0.5, 1.0 }, - ScaleFactor = 425, - TextSize = 17.25, - TextMinSize = 10.0, - TextMinSize = 30.0, + TextColor = { 0.5, 0.5, 0.5 }, + ScaleFactor = 420, + TextSize = 16.24, + TextMinSize = 4.0, + TextMaxSize = 20.0, Unit = "pc", - BillboardMaxSize = 25.0, - EnablePixelSizeControl = true + BillboardMaxSize = 300.0, + EnablePixelSizeControl = false }, GUI = { Name = "HII Regions", diff --git a/data/assets/scene/digitaluniverse/localdwarfs.asset b/data/assets/scene/digitaluniverse/localdwarfs.asset index bd9c6ccfd7..df011129ee 100644 --- a/data/assets/scene/digitaluniverse/localdwarfs.asset +++ b/data/assets/scene/digitaluniverse/localdwarfs.asset @@ -29,7 +29,7 @@ local object = { Texture = textures .. "/point4.png", PolygonSides = 12, LabelFile = speck .. "/localgroup.label", - TextColor = { 0.3, 0.3, 1.0, 1.0 }, + TextColor = { 0.3, 0.3, 1.0 }, ScaleFactor = 465, TextSize = 18.3, TextMinSize = 7.3, diff --git a/data/assets/scene/digitaluniverse/milkyway.asset b/data/assets/scene/digitaluniverse/milkyway.asset index 4c0f5eb010..814ce42fe2 100644 --- a/data/assets/scene/digitaluniverse/milkyway.asset +++ b/data/assets/scene/digitaluniverse/milkyway.asset @@ -42,7 +42,7 @@ local sphere = { Type = "RenderableSphere", Size = 9.2E21, Segments = 40, - Opacity = 0.4, + Opacity = 0.35, Texture = sphereTextures .. "/DarkUniverse_mellinger_4k.jpg", Orientation = "Inside", UseAdditiveBlending = true, @@ -61,16 +61,16 @@ local plane = { Parent = "Root", Renderable = { Type = "RenderablePlanesCloud", - Enabled = false, + Enabled = true, Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.90, + Opacity = 0.99, ScaleFactor = 2.8, File = planeSpeck .. "/galaxy.speck", TexturePath = planeTextures, Luminosity = "size", ScaleLuminosity = 1.0, -- Fade in value in the same unit as "Unit" - FadeInDistances = { 1000.0, 100000.0 }, + FadeInDistances = { 3000.0, 50000.0 }, PlaneMinSize = 5.0, Unit = "pc" }, @@ -92,7 +92,7 @@ local homeLabel = { -- Texture = textures .. "/point3.png", DrawLabels = true, LabelFile = homespeck .. "/home.label", - TextColor = { 0.8, 0.8, 0.8, 1.0 }, + TextColor = { 0.8, 0.8, 0.8 }, TextSize = 20.50, TextMinSize = 16.0, TransformationMatrix = { diff --git a/data/assets/scene/digitaluniverse/obassociations.asset b/data/assets/scene/digitaluniverse/obassociations.asset index 3c68412009..ad25602989 100644 --- a/data/assets/scene/digitaluniverse/obassociations.asset +++ b/data/assets/scene/digitaluniverse/obassociations.asset @@ -26,18 +26,18 @@ local object = { ColorOption = { "arm" }, SizeOption = {"diameter"}, ExactColorMap = true, - Opacity = 0.9, + Opacity = 0.7, File = speck .. "/ob.speck", Texture = textures .. "/point4.png", PolygonSides = 7, LabelFile = speck .. "/ob.label", - TextColor = { 0.4, 0.5, 1.0, 1.0 }, + TextColor = { 0.4, 0.5, 1.0 }, ScaleFactor = 390.0, - TextSize = 17.0, - TextMinSize = 5.76, - TextMaxSize = 30.0, + TextSize = 16.24, + TextMinSize = 4.50, + TextMaxSize = 25, Unit = "pc", - --BillboardMaxSize = 21.0, + BillboardMaxSize = 450.0, EnablePixelSizeControl = true }, GUI = { diff --git a/data/assets/scene/digitaluniverse/openclusters.asset b/data/assets/scene/digitaluniverse/openclusters.asset index a99e330901..d060f744db 100644 --- a/data/assets/scene/digitaluniverse/openclusters.asset +++ b/data/assets/scene/digitaluniverse/openclusters.asset @@ -26,19 +26,19 @@ local object = { File = speck .. "/oc.speck", Texture = textures .. "/point4.png", PolygonSides = 12, - TextColor = { 0.05, 0.4, 0.2, 1.0 }, + TextColor = { 0.05, 0.4, 0.2 }, LabelFile = speck .. "/oc.label", - ScaleFactor = 418.33, - TextSize = 16.68, + ScaleFactor = 405.75, + TextSize = 15.5, TextMinSize = 4.5, TextMaxSize = 30.0, Unit = "pc", - BillboardMaxSize = 20.22, + BillboardMaxSize = 604, EnablePixelSizeControl = true }, GUI = { Name = "Open Star Clusters", - Path = "/Milky Way/Open Clusters" + Path = "/Milky Way" } } diff --git a/data/assets/scene/digitaluniverse/planetarynebulae.asset b/data/assets/scene/digitaluniverse/planetarynebulae.asset index 8bb3fab173..685cd6d21a 100644 --- a/data/assets/scene/digitaluniverse/planetarynebulae.asset +++ b/data/assets/scene/digitaluniverse/planetarynebulae.asset @@ -22,18 +22,18 @@ local object = { Type = "RenderableBillboardsCloud", Enabled = false, Color = { 0.4, 0.4, 0.9 }, - Opacity = 1.0, + Opacity = 0.65, File = speck .. "/pn.speck", Texture = textures .. "/point4.png", PolygonSides = 3, LabelFile = speck .. "/pn.label", - TextColor = { 0.25, 0.25, 0.65, 1.0 }, - ScaleFactor = 435.0, - TextSize = 16.68, + TextColor = { 0.25, 0.25, 0.65 }, + ScaleFactor = 425.0, + TextSize = 16.24, TextMinSize = 4.5, - TextMaxSize = 30.0, + TextMaxSize = 25.0, Unit = "pc", - BillboardMaxSize = 35, + BillboardMaxSize = 500, EnablePixelSizeControl = true }, GUI = { diff --git a/data/assets/scene/digitaluniverse/pulsars.asset b/data/assets/scene/digitaluniverse/pulsars.asset index 4b490fd077..bd58260f22 100644 --- a/data/assets/scene/digitaluniverse/pulsars.asset +++ b/data/assets/scene/digitaluniverse/pulsars.asset @@ -27,14 +27,14 @@ local object = { Texture = textures .. "/point4.png", PolygonSides = 4, LabelFile = speck .. "/pulsar.label", - TextColor = { 0.7, 0.0, 0.0, 1.0 }, - ScaleFactor = 418.33, - TextSize = 16.68, - TextMinSize = 7.5, - TextMaxSize = 30.0, + TextColor = { 0.7, 0.2, 0.2 }, + ScaleFactor = 424, + TextSize = 15.77, + TextMinSize = 4, + TextMaxSize = 20.0, Unit = "pc", - BillboardMaxSize = 35, - EnablePixelSizeControl = true + BillboardMaxSize = 500, + EnablePixelSizeControl = false }, GUI = { Path = "/Milky Way" diff --git a/data/assets/scene/digitaluniverse/starlabels.asset b/data/assets/scene/digitaluniverse/starlabels.asset index 5576bb4a9f..6e12b8e7eb 100644 --- a/data/assets/scene/digitaluniverse/starlabels.asset +++ b/data/assets/scene/digitaluniverse/starlabels.asset @@ -17,7 +17,7 @@ local object = { Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, LabelFile = speck .. "/stars.label", - TextColor = { 0.4, 0.4, 0.4, 1.0 }, + TextColor = { 0.4, 0.4, 0.4 }, DrawLabels = true, TextSize = 14.7, TextMinSize = 6.0, diff --git a/data/assets/scene/digitaluniverse/starorbits.asset b/data/assets/scene/digitaluniverse/starorbits.asset index 2b07b5a6f1..212d2a9b3f 100644 --- a/data/assets/scene/digitaluniverse/starorbits.asset +++ b/data/assets/scene/digitaluniverse/starorbits.asset @@ -16,13 +16,11 @@ local sunOrbit = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = { 1.0, 0.65, 0.0 }, - Transparency = 1.0, - ScaleFactor = 1.0, + Opacity = 1.0, File = speck .. "/starorbits-Sun.speck", MeshColor = {{ 1.0, 0.65, 0.0 }}, --LabelFile = speck .. "/1ld.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 10.3, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -40,13 +38,11 @@ local barnardsOrbit = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = {1.0, 1.0, 1.0}, - Transparency = 1.0, - ScaleFactor = 1.0, + Opacity = 1.0, File = speck .. "/starorbits-BarnardsStar.speck", MeshColor = {{0.39, 0.58, 0.93}}, --LabelFile = speck .. "/1ld.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 10.3, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -64,13 +60,11 @@ local kapteynsOrbit = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = {1.0, 1.0, 1.0}, - Transparency = 1.0, - ScaleFactor = 1.0, - File = speck .. "/starorbits-kapteynsStar.speck", + Opacity = 1.0, + File = speck .. "/starorbits-KapteynsStar.speck", MeshColor = {{0.6, 0.6, 0.6}}, --LabelFile = speck .. "/1ld.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 10.3, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -88,13 +82,11 @@ local lacaille9352Orbit = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = {1.0, 1.0, 1.0}, - Transparency = 1.0, - ScaleFactor = 1.0, + Opacity = 1.0, File = speck .. "/starorbits-Lacaille9352.speck", MeshColor = {{0.58, 0.0, 0.83}}, --LabelFile = speck .. "/1ld.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 10.3, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -112,13 +104,11 @@ local lSR1826Orbit = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = {1.0, 1.0, 1.0}, - Transparency = 1.0, - ScaleFactor = 1.0, + Opacity = 1.0, File = speck .. "/starorbits-LSR1826+3014.speck", MeshColor = {{0.0, 0.39, 0.0}}, --LabelFile = speck .. "/1ld.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 10.3, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -136,13 +126,11 @@ local lSRJ0822Orbit = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = {1.0, 1.0, 1.0}, - Transparency = 1.0, - ScaleFactor = 1.0, + Opacity = 1.0, File = speck .. "/starorbits-LSRJ0822+1700.speck", MeshColor = {{0.5, 1.0, 0.0}}, --LabelFile = speck .. "/1ld.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 10.3, TextMinSize = 0.5, TextMaxSize = 30.0, @@ -160,13 +148,11 @@ local pM_J13420Orbit = { Renderable = { Type = "RenderableDUMeshes", Enabled = false, - Color = {1.0, 1.0, 1.0}, - Transparency = 1.0, - ScaleFactor = 1.0, + Opacity = 1.0, File = speck .. "/starorbits-PM_J13420-3415.speck", MeshColor = {{0.70, 0.13, 0.13}}, --LabelFile = speck .. "/1ld.label", - TextColor = { 0.0, 0.2, 0.5, 1.0 }, + TextColor = { 0.0, 0.2, 0.5 }, TextSize = 10.3, TextMinSize = 0.5, TextMaxSize = 30.0, diff --git a/data/assets/scene/digitaluniverse/stars.asset b/data/assets/scene/digitaluniverse/stars.asset index 696c4aa739..0407908aab 100644 --- a/data/assets/scene/digitaluniverse/stars.asset +++ b/data/assets/scene/digitaluniverse/stars.asset @@ -58,7 +58,7 @@ local sunstar = { MagnitudeExponent = 6.2, SizeComposition = "Distance Modulus", RenderMethod = "Texture Based", -- or PSF - FadeInDistances = {0.0001, 0.1} + FadeInDistances = { 0.0001, 0.1 } }, GUI = { Name = "Sun", diff --git a/data/assets/scene/digitaluniverse/superclusters.asset b/data/assets/scene/digitaluniverse/superclusters.asset index 5ce754caa7..6ebbb1f488 100644 --- a/data/assets/scene/digitaluniverse/superclusters.asset +++ b/data/assets/scene/digitaluniverse/superclusters.asset @@ -27,7 +27,7 @@ local object = { File = speck .. "/superclust.speck", Texture = textures .. "/point3A.png", LabelFile = speck .. "/superclust.label", - TextColor = { 0.9, 0.9, 0.9, 1.0 }, + TextColor = { 0.9, 0.9, 0.9 }, ScaleFactor = 531.0, TextSize = 22.44, TextMinSize = 8.0, diff --git a/data/assets/scene/digitaluniverse/supernovaremnants.asset b/data/assets/scene/digitaluniverse/supernovaremnants.asset index 3f68374122..c821080e65 100644 --- a/data/assets/scene/digitaluniverse/supernovaremnants.asset +++ b/data/assets/scene/digitaluniverse/supernovaremnants.asset @@ -22,20 +22,20 @@ local object = { Type = "RenderableBillboardsCloud", Enabled = false, Color = { 1.0, 0.5, 0.0 }, - Opacity = 0.9, + Opacity = 0.32, File = speck .. "/snr.speck", Texture = textures .. "/point4.png", PolygonSides = 7, LabelFile = speck .. "/snr.label", - TextColor = { 0.6, 0.3, 0.0, 1.0 }, - ScaleFactor = 435, - TextSize = 17.5, - TextMinSize = 8.0, - TextMaxSize = 30.0, + TextColor = { 0.6, 0.46, 0.0 }, + ScaleFactor = 424, + TextSize = 16.44, + TextMinSize = 4.0, + TextMaxSize = 200.0, --CorrectionSizeEndDistance = 17.5, --CorrectionSizeFactor = 13.96, Unit = "pc", - BillboardMaxSize = 27.2, + BillboardMaxSize = 500, EnablePixelSizeControl = true }, GUI = { diff --git a/data/assets/scene/digitaluniverse/tully.asset b/data/assets/scene/digitaluniverse/tully.asset index e8e515e22b..45ce730432 100644 --- a/data/assets/scene/digitaluniverse/tully.asset +++ b/data/assets/scene/digitaluniverse/tully.asset @@ -32,9 +32,10 @@ local tullyPoints = { ColorOption = { "prox5Mpc" }, ColorRange = { { 1.0, 30.0 } }, LabelFile = speck .. "/tully.label", - TextColor = { 0.7, 0.7, 0.7, 1.0 }, - TextSize = 20.50, - TextMinSize = 16.0, + DrawLabels = true, + TextColor = { 0.7, 0.7, 0.7 }, + TextSize = 19.36, + TextMinSize = 8.2, TransformationMatrix = { -0.7357425748, 0.67726129641, 0.0, 0.0, -0.074553778365, -0.080991471307, 0.9939225904, 0.0, @@ -43,10 +44,10 @@ local tullyPoints = { }, Unit = "Mpc", -- Fade in value in the same unit as "Unit" - FadeInDistances = { 0.05, 1.0 }, + FadeInDistances = { 0.001, 1.0 }, -- Max size in pixels - BillboardMaxSize = 8.22, - BillboardMinSize = 0.0, + BillboardMaxSize = 5, + BillboardMinSize = 0, --CorrectionSizeEndDistance = 22.0, --CorrectionSizeFactor = 10.45 EnablePixelSizeControl = true @@ -61,9 +62,9 @@ local tullyImages = { Identifier = "TullyGalaxiesImages", Renderable = { Type = "RenderablePlanesCloud", - Enabled = false, + Enabled = true, Color = { 1.0, 1.0, 1.0 }, - Transparency = 0.99, + Opacity = 0.99, ScaleFactor = 1.0, File = speck .. "/tully.speck", TexturePath = textures, @@ -77,8 +78,8 @@ local tullyImages = { }, Unit = "Mpc", -- Fade in value in the same unit as "Unit" - FadeInDistances = {0.001, 0.05010}, - PlaneMinSize = 5.0 + FadeInDistances = {0.0005, 0.003}, + PlaneMinSize = 1.0 }, GUI = { Name = "Tully Galaxies Images", diff --git a/data/assets/scene/digitaluniverse/voids.asset b/data/assets/scene/digitaluniverse/voids.asset index 64ca8bb4ad..420ebe54b7 100644 --- a/data/assets/scene/digitaluniverse/voids.asset +++ b/data/assets/scene/digitaluniverse/voids.asset @@ -19,7 +19,7 @@ local object = { Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, LabelFile = speck .. "/voids.label", - TextColor = { 0.296, 0.629, 1.0, 1.0 }, + TextColor = { 0.296, 0.629, 1.0 }, TextSize = 20.9, TextMinSize = 8.0, Unit = "Mpc" diff --git a/data/assets/scene/milkyway/constellations/constellation_art.asset b/data/assets/scene/milkyway/constellations/constellation_art.asset new file mode 100644 index 0000000000..4d4ad4e64f --- /dev/null +++ b/data/assets/scene/milkyway/constellations/constellation_art.asset @@ -0,0 +1,106 @@ +local constellationsCSV = asset.localResource('constellation_data.csv') +local transforms = asset.require("scene/solarsystem/sun/transforms") + +local images = asset.syncedResource({ + Name = "Constellation Images", + Type = "HttpSynchronization", + Identifier = "constellation_images", + Version = 1 +}) + +--function that reads the file +local createConstellations = function (guiPath, constellationfile) + local genConstellations = {}; + --skip the first line + local notFirstLine = false; + -- define parsec to meters + local PARSEC_CONSTANT = 3.0856776E16; + -- how many parsecs away do you want the images to be? + -- this setting puts the billboards at the location of the constellation bounds grid from DU. + -- but they can really be anywhere since the billboard size will scale with distance. + local distanceMultiplier = 3.2; + local baseScale = 1e17; + for line in io.lines(openspace.absPath(constellationfile)) do + if (notFirstLine) then + -- describes the data + local matchstring = '(.-),(.-),(.-),(.-),(.-),(.-),(.-),(.-),(.-),(.-),(.-),(.-)$' + local group, abbreviation, name, x, y, z, scale, imageName, rotX, rotY, rotZ, centerStar = line:match(matchstring) + local magVec = math.sqrt(x*x + y*y + z*z) + local normx = x/magVec + local normy = y/magVec + local normz = z/magVec + + group = (group == '' and globe or group) + + local aconstellation = { + Identifier = guiPath .. '-' .. name, + Parent = transforms.SolarSystemBarycenter.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + -- position is in parsecs from the SolarSystemBarycenter, so convert to meters + Position = { + normx * PARSEC_CONSTANT * distanceMultiplier, + normy * PARSEC_CONSTANT * distanceMultiplier, + normz * PARSEC_CONSTANT * distanceMultiplier + } + }, + Rotation = { + Type = "StaticRotation", + Rotation = { tonumber(rotX), tonumber(rotY), tonumber(rotZ) } + } + + }, + Renderable = { + Type = "RenderablePlaneImageLocal", + Size = tonumber(baseScale * scale * distanceMultiplier / 10), + Enabled = false, + Origin = "Center", + Billboard = false, + LazyLoading = true, + Texture = images .. "/" .. imageName, + BlendMode = "Additive", + Opacity = 0.1 + }, + Tag = { "ConstellationArtImage", group }, + GUI = { + Name = name .. ' Image', + Path = '/Milky Way/' .. guiPath + } + } + table.insert(genConstellations, aconstellation); + + else + notFirstLine = true + end + end + return genConstellations +end + + +local nodes = {} + +asset.onInitialize(function () + local constellationsCSV = images .. "/constellation_data.csv" + + nodes = createConstellations('Constellation Art', constellationsCSV) + for _, n in ipairs(nodes) do + openspace.addSceneGraphNode(n); + end +end) + +asset.onDeinitialize(function () + for _, n in ipairs(nodes) do + openspace.removeSceneGraphNode(n.Identifier); + end +end) + + +asset.meta = { + Name = "Constellation Images", + Version = "1.0", + Description = "Artistic images depicting the constellations", + Author = "James Hedberg", + URL = "jameshedberg.com", + License = "CC-BY" +} diff --git a/data/assets/scene/milkyway/constellations/constellation_data.csv b/data/assets/scene/milkyway/constellations/constellation_data.csv new file mode 100644 index 0000000000..7c02f310de --- /dev/null +++ b/data/assets/scene/milkyway/constellations/constellation_data.csv @@ -0,0 +1,85 @@ +Data about Constellations columns are: group, name, x, y, z, scale, imageName, rotX, rotY, rotZ, centerStar +normal,Ori,Orion,-550.8742,-259.3621,-188.9620,1.5,Ori.png,1.128407,1.058407,1.668407,HD37128 +zodiac,Tau,Taurus,-18.7277,-0.3175,-6.9092,1.2,Tau.png,1.198407,0.908407,1.378407,Aldebran +zodiac,Ari,Aries,-13.2892,9.4519,-11.9378,0.8,Ari.png,0.668407,0.538407,0.518407,Hamal +zodiac,Gem,Gemini,-362.5493,-102.2245,79.4030,0.85,Gem.png,-0.731593,2.268407,-0.451593,Mekbuda +zodiac,Cnc,Cancer,-30.9209,-16.4584,22.6601,0.8,Cnc.png,-1.151593,1.888407,-1.041593,HD74442 +zodiac,Leo,Leo,-17.9030,-13.2719,31.4196,1.33,Leo.png,-0.131593,2.448407,0.418407,HD89484 +zodiac,Vir,Virgo,36.5809,-35.1877,62.3341,1.5,Vir.png,-0.371593,3.138407,0.518407,HD116658 +zodiac,Lib,Libra,17.5393,-6.2768,14.5916,1.0,Lib.png,-1.011593,3.138407,1.318407,HD130819 +zodiac,Sco,Scorpius,137.4378,-19.4456,37.3606,1.2,Sco.png,1.698407,-1.001593,-1.751593,HD148478 +zodiac,Sgr,Sagittarius,66.2304,11.1498,-14.8095,1.2,Sgr.png,1.728407,-1.321593,-1.751593,HD175191 +zodiac,Cap,Capricornus,32.9799,20.0621,-29.3945,1.3,Cap.png,1.158407,-0.881593,-0.561593,HD200761 +zodiac,Aqr,Aquarius,86.5090,149.4078,-155.8102,1.2,Aqr.png,-2.921593,-2.391593,-2.551593,-2.511593 +zodiac,Psc,Pisces,-28.0235,45.3150,-76.8893,1.6,Psc.png,0.458407,-0.001593,0.618407,HD4656 +northern,Uma,Ursa Major,-12.0503,7.1931,19.8974,1.6,UMa.png,0.748407,2.398407,0.658407,HD95418 +northern,Dra,Draco,-1.4340,20.6566,23.5098,1.9,Dra.png,0.658407,-2.541593,1.058407,HD137759 +southern,Ant,Antila,-0.2233,-103.8908,42.7940,1.3,Ant.png,1.848407,0.198407,-3.141593,HD90610 +southern,Crv,Corvus,8.0442,-16.8858,19.3984,1.1,Crv.png,2.198407,-0.041593,-2.221593,HD108767 +southern,Cet,Cetus,-28.7960,7.2425,-73.6693,1.5,Cet.png,0.238407,0.368407,0.688407,HD11353 +southern,Cha,Chameleon,53.5121,-108.3624,-38.1807,1.1,Cha.png,-1.801593,2.738407,0.448407,HD92305 +northern,Cam,Camelopardalis,-304.8155,179.0620,71.1454,1.7,Cam.png,2.128407,1.228407,1.478407,HD31910 +equatorial,Aql,Aquila,11.7741,9.7467,-1.6418,1.0,Aql.png,-2.601593,-2.511593,-3.141593,HD182640 +southern,Aps,Apus,31.6370,-32.5620,-16.5786,1.1,Aps.png,-1.691593,-2.281593,0.838407,HD149324 +northern,Lyn,Lynx,-98.3174,4.4830,67.2289,1.2,Lyn.png,1.688407,1.768407,1.668407,HD70272 +southern,Phe,Phoenix,5.0172,-4.2096,-22.8088,1.5,Phe.png,-3.141593,3.138407,-3.141593,HD6595 +northern,Cyg,Cygnus,78.7445,375.2440,12.4995,1.4,Cyg.png,1.668407,-0.931593,-0.261593,HD194093 +southern,Cen,Centaurus,20.1398,-33.1830,9.5915,2.7,Cen.png,-1.291593,3.088407,0.458407,HD110304 +northern,Aur,Auriga,-12.3062,3.8595,1.0302,1.5,Aur.png,1.378407,1.108407,1.178407,HD34029 +northern,Peg,Pegasus,0.9791,32.5947,-27.7339,2.42,Peg.png,0.918407,-0.221593,-0.191593,HD218045 +southern,Hya,Hydra,-2.9043,-33.5496,25.8962,3,Hya.png,-0.531593,2.838407,0.368407,HD93813 +southern,Oct,Octans,22.0434,-27.8601,-24.3108,1.0,Oct.png,-0.911593,0.398407,1.198407,HD214846 +southern,Nor,Norma,34.9251,-17.5643,0.0068,1.0,Nor.png,-1.631593,-2.421593,1.298407,HD146686 +southern,Mus,Musca,48.8888,-79.2952,-10.2828,1.25,Mus.png,-1.871593,3.138407,0.358407,HD109668 +southern,Hyi,Hydrus,3.2767,-4.7183,-4.7829,1.1,Hyi.png,2.438407,-3.141593,-2.381593,HD2151 +northern,Lac,Lacerta,-6.0878,30.5794,-3.6064,1.0,Lac.png,-1.521593,-2.391593,3.138407,HD213558 +equatorial,Lep,Lepus,-212.6297,-184.4909,-132.1156,1.0,Lep.png,-1.801593,-2.351593,-0.861593,HD36673 +southern,Lup,Lupus,129.1166,-102.2983,33.3251,1.2,Lup.png,-1.191593,-2.391593,0.798407,HD129056 +southern,Men,Mensa,2.4149,-8.5586,-4.8892,1.0,Men.png,-2.101593,-2.781593,0.828407,HD43834 +southern,Mic,Microscopium,51.0335,11.1671,-44.3692,1.0,Mic.png,0.728407,-0.831593,-0.561593,HD199951 +equatorial,Mon,Monoceros,-93.0725,-66.8909,8.6548,1.2,Mon.png,-1.331593,1.988407,-0.891593,HD55185 +southern,Pav,Pavo,4.4549,-2.5959,-3.2739,1.3,Pav.png,-2.391593,-2.171593,1.648407,HD190248 +southern,Ind,Indus,133.6149,-53.5569,-115.9552,1.5,Ind.png,-2.031593,-1.491593,1.758407,HD198700 +northern,LMi,Leo Minor,-23.3948,-2.5770,38.0756,1.1,LMi.png,-3.141593,0.478407,-2.201593,HD90537 +northern,Lyr,Lyra,2.8086,6.7630,2.5555,1.0,Lyr.png,-1.831593,-2.091593,3.141500,HD172167 +northern,Her,Hercules,14.0526,14.9773,12.5478,1.3,Her.png,-1.511593,-1.811593,2.288407,HD156164 +southern,Gru,Grus,18.6528,-3.2893,-24.6602,1.3,Gru.png,-3.141593,-2.511593,-2.901593,HD209952 +southern,Crt,Crater,1.5886,-43.9831,40.3390,1.3,Crt.png,-0.521593,3.140000,0.588407,HD98430 +northern,Del,Delphinus,14.8599,24.6150,-8.0550,1.2,Del.png,1.308407,-0.951593,-0.241593,HD196524 +southern,Dor,Dorado,-0.6460,-9.3172,-6.9654,1.2,Dor.png,2.118407,1.768407,-2.901593,HD33262 +northern,Equ,Equuleus,27.7363,41.7071,-27.4371,1.2,Equ.png,-1.801593,-2.511593,2.558407,HD202447 +southern,Eri,Eridanus,-37.5153,-23.5231,-65.6368,2.1,Eri.png,0.128407,0.698407,0.998407,HD20720 +southern,For,Fornax,-14.0351,-17.8282,-46.5514,1.4,For.png,3.138407,2.678407,-2.351593,HD17652 +southern,Hor,Horologium,2.1021,-27.1310,-40.5136,1.2,Hor.png,-3.141593,2.468407,-2.191593,HD16920 +southern,Pyx,Pyxis,-66.7424,-248.9639,26.0445,1.2,Pyx.png,1.838407,-1.651593,2.708407,HD74575 +southern,Ret,Reticulum,2.8130,-37.2904,-33.2644,1.5,Ret.png,1.998407,2.188407,-2.591593,HD27256 +northern,Sge,Sagitta,44.3886,70.9446,-7.6264,1.2,Sge.png,-0.741593,-2.231593,2.108407,HD189319 +southern,Scl,Sculptor,21.6545,-6.8861,-166.5240,1.3,Scl.png,-0.071593,-0.221593,0.638407,HD2429 +southern,Sct,Scutum,48.8939,21.5158,-0.1629,1.2,Sct.png,1.188407,-1.271593,-0.971593,HD171443 +southern,Tuc,Tucana,35.3950,-20.2535,-45.2324,1.1,Tuc.png,-0.351593,-0.161593,0.308407,HD211416 +northern,Tri,Triangulum,-26.6263,21.9119,-16.2254,1.2,Tri.png,1.168407,0.218407,0.558407,HD13161 +southern,TrA,Triangulum Australe,96.2283,-76.4459,-33.5257,1.2,TrA.png,-1.991593,-2.491593,1.128407,HD150798 +southern,Tel,Telescopium,72.3444,-14.5016,-20.0248,1.2,Tel.png,-0.461593,-1.731593,0.298407,HD169467 +southern,Ara,Ara,164.9273,-75.6246,-35.3100,1.1,Ara.png,-1.381593,-2.131593,1.048407,HD157244 +southern,Cae,Caelum,-6.0961,-13.7926,-13.3392,1.0,Cae.png,-0.661593,0.948407,0.418407,HD29875 +southern,CMa,Canis Major,-1.7693,-1.9125,-0.4074,1.3,CMa.png,1.128407,1.048407,1.878407,HD48915 +northern,CMi,Canis Minor,-2.8348,-1.8906,0.7881,1.2,CMi.png,2.538407,1.138407,-3.141593,HD61421 +southern,Vol,Volans,37.6000,-182.7856,-62.6559,1.2,Vol.png,-2.441593,1.988407,-0.351593,HD68520 +northern,UMi,Ursa Minor,-11.3527,27.2100,25.1835,1.3,UMi.png,-2.491593,-0.581593,-2.381593,HD131873 +northern,And,Andromdeda,-32.8276,43.3946,-27.8475,1.6,And.png,-2.021593,-3.141593,-2.521593,HD6860 +northern,Boo,Bootes,11.2468,14.9864,30.4945,2.0,Boo.png,-3.141593,-0.601593,-2.361593,HD135722 +northern,Vul,Vulpecula,46.7540,77.7780,5.3953,1.1,Vul.png,-2.301593,-2.061593,-3.141593,HD131873 +northern,CVn,Canes Venatici,-3.1198,5.7935,33.1368,1.3,CVn.png,0.148407,3.138407,0.428407,HD112413 +southern,Cir,Circinus,11.4255,-11.6937,-1.3129,1.0,Cir.png,1.448407,-0.391593,-2.211593,HD128898 +northern,Com,Coma Berenices,1.9257,-1.2062,12.2465,1.4,Com.png,3.138407,-0.051593,-2.711593,HD114378 +southern,CrA,Corona Australis,146.1322,-4.7492,-53.7124,1.0,CrA.png,-3.141593,-2.021593,-3.141593,HD178345 +northern,CrB,Corona Borealis,33.5737,32.0314,52.9729,1.3,CrB.png,-3.141593,-0.601593,-2.271593,HD143107 +northern,Cas,Cassiopeia,-36.3073,59.4424,-7.6926,1.4,Cas.png,-1.431593,3.128407,-2.331593,HD3712 +northern,Cep,Cepheus,-2.8178,14.4985,2.3848,1.7,Cep.png,-1.331593,-2.291593,-2.931593,HD203280 +southern,Car,Carina Vela Puppis,14.1325,-188.6018,-42.2785,2.0,Car.png,2.078407,1.048407,-3.111593,HD71129 +northern,Col,Columba,-11.2568,-20.5973,-11.9895,1.0,Col.png,2.518407,1.358407,-2.981593,HD39425 +northern,Per,Perseus,-139.8202,79.8063,-16.2631,1.3,Per.png,-1.751593,2.428407,-2.411593,HD22928 +northern,Oph,Ophiuchus,127.9419,14.0822,56.2015,3.2,Oph.png,2.178407,-0.781593,-1.681593,HD149757 +southern,PsA,Piscis Austrinus,99.9977,47.6679,-199.6345,1.0,PsA.png,3.138407,-2.541593,-2.881593,HD214748 +southern,Cru,Crux,49.3509,-85.0446,-0.6223,1.1,Cru.png,1.718407,0.048407,-2.741593,HD108248 +southern,Pic,Pictor,-4.5417,-45.5649,-27.1768,1.0,Pic.png,2.568407,2.138407,-2.081593,HD39523 diff --git a/data/assets/scene/milkyway/constellations/constellation_keybinds.asset b/data/assets/scene/milkyway/constellations/constellation_keybinds.asset new file mode 100644 index 0000000000..f527e59fb4 --- /dev/null +++ b/data/assets/scene/milkyway/constellations/constellation_keybinds.asset @@ -0,0 +1,38 @@ +local scene_helper = asset.require('util/scene_helper') + +local Keybindings = { + { + Key = "c", + Name = "Show Constellation Art", + Command = "openspace.setPropertyValue('Scene.Constellation Art*.Renderable.Opacity', 0);" .. + "openspace.setPropertyValue('Scene.Constellation Art*.Renderable.Enabled', true);" .. + "openspace.setPropertyValue('Scene.Constellation Art*.Renderable.Opacity', 0.1, 2);", + Documentation = "Enables and fades up constellation art work", + GuiPath = "/Rendering", + Local = false + }, + { + Key = "SHIFT+c", + Name = "Hide Constellation Art", + Command = "openspace.setPropertyValue('Scene.Constellation Art*.Renderable.Opacity', 0, 2);", + Documentation = "Fades out constellation artwork", + GuiPath = "/Rendering", + Local = false + }, + { + Key = "CTRL+c", + Name = "Disable Constellation Art", + Command = "openspace.setPropertyValue('Scene.Constellation Art*.Renderable.Enabled', false);", + Documentation = "Disable constellation artwork", + GuiPath = "/Rendering", + Local = false + } +} + +asset.onInitialize(function () + scene_helper.bindKeys(Keybindings) +end) + +asset.onDeinitialize(function () + scene_helper.unbindKeys(Keybindings) +end) diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/charon.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/charon.asset index 87139c2b9e..21b55af0f3 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/charon.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/charon.asset @@ -50,7 +50,7 @@ local Charon = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "planet_solarSystem", "planet_terrestrial" }, diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto.asset index ce98ef30f8..461228389c 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto.asset @@ -50,7 +50,7 @@ local Pluto = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "planet_solarSystem", "planet_terrestrial" }, diff --git a/data/assets/scene/solarsystem/interstellar/c-2019_q4_borisov.asset b/data/assets/scene/solarsystem/interstellar/c-2019_q4_borisov.asset index 7d41e166ec..a21679ce59 100644 --- a/data/assets/scene/solarsystem/interstellar/c-2019_q4_borisov.asset +++ b/data/assets/scene/solarsystem/interstellar/c-2019_q4_borisov.asset @@ -20,7 +20,7 @@ local C2019Q4BorisovTrail = { Color = { 0.9, 0.9, 0.0 }, StartTime = "2015 JAN 01 00:00:00", EndTime = "2024 JAN 01 00:00:00", - SampleInterval = 60 + SampleInterval = 60 * 60 * 24 * 7 }, GUI = { Name = "C-2019 Q4 Borisov Trail", diff --git a/data/assets/scene/solarsystem/missions/apollo/apollo11.asset b/data/assets/scene/solarsystem/missions/apollo/11/apollo11.asset similarity index 72% rename from data/assets/scene/solarsystem/missions/apollo/apollo11.asset rename to data/assets/scene/solarsystem/missions/apollo/11/apollo11.asset index fb55dbe9ff..c65cd3c47a 100644 --- a/data/assets/scene/solarsystem/missions/apollo/apollo11.asset +++ b/data/assets/scene/solarsystem/missions/apollo/11/apollo11.asset @@ -1,39 +1,24 @@ -local assetHelper = asset.require('util/asset_helper') -local sunTransforms = asset.require('scene/solarsystem/sun/transforms') -local descentKeyframes = asset.require('./apollo11_lem_descent.asset') -local descentRotationKeyframes = asset.require('./apollo11_lem_descent_rotation.asset') -local model = asset.require('scene/solarsystem/missions/apollo/lem_model') +local asset_helper = asset.require('util/asset_helper') +local sun_transforms = asset.require('scene/solarsystem/sun/transforms') +local moon_transforms = asset.require('scene/solarsystem/planets/earth/moon/moon') + +local descentKeyframes = asset.require('./lem_descent.asset') +local descentRotationKeyframes = asset.require('./lem_descent_rotation.asset') + +local lem_model = asset.require('scene/solarsystem/missions/apollo/lem_model') +local kernels = asset.require('./kernels').kernels + +local models = asset.require('./models').models asset.require('spice/base') -local kernelsFolder = asset.syncedResource({ - Name = "Apollo Kernels", - Type = "HttpSynchronization", - Identifier = "apollo_11_spice", - Version = 1 -}) - -local modelFolder = asset.syncedResource({ - Name = "Apollo Models", - Type = "HttpSynchronization", - Identifier = "apollo_11_models", - Version = 1 -}) - -local kernels = { - kernelsFolder .. "/moon_080317.tf", - kernelsFolder .. "/apollo_naif_ids.tf", - kernelsFolder .. "/moon_pa_de421_1900-2050.bpc", - kernelsFolder .. '/apollo11_orbits_full9km.bsp', - kernelsFolder .. '/apollo11_orbits_lm9km.bsp', -} --landing - 1969-07-20T20:17:40 local apolloSpiceId = "-911" local apolloLemSpiceId = "-911500" local Apollo11Position = { Identifier = "Apollo11Position", - Parent = "Moon", + Parent = moon_transforms.Moon.Identifier, TimeFrame = { Type = "TimeFrameInterval", Start = "1969 JUL 19 19:38:29.183", @@ -58,28 +43,27 @@ local Apollo11Position = { local Apollo11Model = { Identifier = "Apollo11", Parent = Apollo11Position.Identifier, + TimeFrame = { + Type = "TimeFrameInterval", + Start = "1969 JUL 19 19:38:29.183", + End = "1969 JUL 22 04:55:35.183" + }, Transform = { Scale = { Type = "StaticScale", Scale = 20.0 } }, - TimeFrame = { - Type = "TimeFrameInterval", - Start = "1969 JUL 19 19:38:29.183", - End = "1969 JUL 22 04:55:35.183" - }, Renderable = { Type = "RenderableModel", Geometry = { Type = "MultiModelGeometry", - GeometryFile = modelFolder .. "/Apollo_CSM_shrunk_rotated_xy_double_size.obj" + GeometryFile = models .. "/Apollo_CSM_shrunk_rotated_xy_double_size.obj" }, - ColorTexture = modelFolder .. "/gray.png", - LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier) + ColorTexture = models .. "/gray.png", + LightSources = asset_helper.getDefaultLightSources(sun_transforms.SolarSystemBarycenter.Identifier) }, GUI = { - Hidden = false, Name = "Apollo 11 CSM", Path = "/Solar System/Missions/Apollo/11" } @@ -87,7 +71,7 @@ local Apollo11Model = { local Apollo11MoonTrail = { Identifier = "Apollo11MoonTrail", - Parent = "Moon", + Parent = moon_transforms.Moon.Identifier, Renderable = { Type = "RenderableTrailTrajectory", Translation = { @@ -102,7 +86,7 @@ local Apollo11MoonTrail = { EndTime = "1969 JUL 22 04:55:35.183", SampleInterval = 60, EnableFade = false, - Enabled = false, + Enabled = false }, GUI = { Name = "Apollo 11 Moon Orbits", @@ -140,7 +124,7 @@ local lemRotation = { local Apollo11LemTrail = { Identifier = "Apollo11LemTrail", - Parent = "Moon", + Parent = moon_transforms.Moon.Identifier, Renderable = { Type = "RenderableTrailTrajectory", Translation = lemTranslation, @@ -159,7 +143,7 @@ local Apollo11LemTrail = { local Apollo11LemPosition = { Identifier = "Apollo11LemPosition", - Parent = "Moon", + Parent = moon_transforms.Moon.Identifier, TimeFrame = { Type = "TimeFrameInterval", Start = "1969 JUL 20 19:10:25.183" @@ -169,7 +153,6 @@ local Apollo11LemPosition = { Rotation = lemRotation }, GUI = { - Hidden = false, Name = "Apollo 11 Lunar Lander Position", Path = "/Solar System/Missions/Apollo/11" } @@ -194,14 +177,14 @@ local Apollo11LemDescentModel = { Type = "RenderableModel", Geometry = { Type = "MultiModelGeometry", - GeometryFile = model.modelFolder .. "/lmremoved.obj" + GeometryFile = lem_model.modelFolder .. "/lmremoved.obj" }, SpecularIntensity = 0.0, - ColorTexture = model.modelFolder .. "/LM-2_ver2clean_u1_v1.jpeg", - LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier) + RotationVector = { 273.750,28.0,309.85 }, + ColorTexture = lem_model.modelFolder .. "/LM-2_ver2clean_u1_v1.jpeg", + LightSources = asset_helper.getDefaultLightSources(sun_transforms.SolarSystemBarycenter.Identifier) }, GUI = { - Hidden = false, Name = "Apollo 11 Descent Lem", Path = "/Solar System/Missions/Apollo/11" } @@ -224,14 +207,14 @@ local Apollo11LemLandedModel = { Type = "RenderableModel", Geometry = { Type = "MultiModelGeometry", - GeometryFile = model.modelFolder .. "/LM-2_ver2clean.obj" + GeometryFile = lem_model.modelFolder .. "/LM-2_ver2clean.obj" }, SpecularIntensity = 0.0, - ColorTexture = model.modelFolder .. "/LM-2_ver2clean_u1_v1.jpeg", - LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier) + RotationVector = { 273.750,28.0,309.85 }, + ColorTexture = lem_model.modelFolder .. "/LM-2_ver2clean_u1_v1.jpeg", + LightSources = asset_helper.getDefaultLightSources(sun_transforms.SolarSystemBarycenter.Identifier) }, GUI = { - Hidden = false, Name = "Apollo 11 Landed Lem", Path = "/Solar System/Missions/Apollo/11" } @@ -248,4 +231,4 @@ local exportList = { Apollo11LemTrail, } -assetHelper.registerSceneGraphNodesAndExport(asset, exportList) +asset_helper.registerSceneGraphNodesAndExport(asset, exportList) diff --git a/data/assets/scene/solarsystem/missions/apollo/11/kernels.asset b/data/assets/scene/solarsystem/missions/apollo/11/kernels.asset new file mode 100644 index 0000000000..d1ffcf55e4 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/apollo/11/kernels.asset @@ -0,0 +1,16 @@ +local kernelsFolder = asset.syncedResource({ + Name = "Apollo Kernels", + Type = "HttpSynchronization", + Identifier = "apollo_11_spice", + Version = 1 +}) + +local kernels = { + kernelsFolder .. "/moon_080317.tf", + kernelsFolder .. "/apollo_naif_ids.tf", + kernelsFolder .. "/moon_pa_de421_1900-2050.bpc", + kernelsFolder .. '/apollo11_orbits_full9km.bsp', + kernelsFolder .. '/apollo11_orbits_lm9km.bsp', +} + +asset.export('kernels', kernels) diff --git a/data/assets/scene/solarsystem/missions/apollo/11/lem.asset b/data/assets/scene/solarsystem/missions/apollo/11/lem.asset new file mode 100644 index 0000000000..0ca61edef6 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/apollo/11/lem.asset @@ -0,0 +1,53 @@ +-- a11_lem.asset +local asset_helper = asset.require('util/asset_helper') +local sun_transforms = asset.require('scene/solarsystem/sun/transforms') +local moon_asset = asset.require('scene/solarsystem/planets/earth/moon/moon') + +local lem_model = asset.require('scene/solarsystem/missions/apollo/lem_model') + + +local Apollo11Lem = { + Identifier = "Apollo11Lem", + Parent = moon_asset.Moon.Identifier, + Transform = { + Translation = { + Type = "GlobeTranslation", + Globe = moon_asset.Moon.Identifier, + Longitude = -360+23.47306, + Latitude = 0.67402, + Altitude = -1927.65, + UseHeightMap = false + }, + }, + GUI = { + Name = "Apollo 11 Lem Position", + Path = "/Solar System/Missions/Apollo/11" + } +} + +local Apollo11LemModel = { + Identifier = "Apollo11LemModel", + Parent = Apollo11Lem.Identifier, + Transform = { + Scale = { + Type = "StaticScale", + Scale = 0.24 + } + }, + Renderable = { + Type = "RenderableModel", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = lem_model.modelFolder .. "/LM-2_ver2clean.obj" + }, + RotationVector = { 91.044090,171.229706,111.666664 }, + ColorTexture = lem_model.modelFolder .. "/LM-2_ver2clean_u1_v1.jpeg", + LightSources = asset_helper.getDefaultLightSources(sun_transforms.SolarSystemBarycenter.Identifier) + }, + GUI = { + Name = "Apollo 11 Lem", + Path = "/Solar System/Missions/Apollo/11" + } +} + +asset_helper.registerSceneGraphNodesAndExport(asset, { Apollo11Lem, Apollo11LemModel }) diff --git a/data/assets/scene/solarsystem/missions/apollo/apollo11_lem_descent.asset b/data/assets/scene/solarsystem/missions/apollo/11/lem_descent.asset similarity index 98% rename from data/assets/scene/solarsystem/missions/apollo/apollo11_lem_descent.asset rename to data/assets/scene/solarsystem/missions/apollo/11/lem_descent.asset index 93128f5181..3102e6a618 100644 --- a/data/assets/scene/solarsystem/missions/apollo/apollo11_lem_descent.asset +++ b/data/assets/scene/solarsystem/missions/apollo/11/lem_descent.asset @@ -1,16 +1,16 @@ -- The following keyframe data was converted from the_last_four_minutes_2019-06-09.kml, -- which is available at http://apollo.mem-tek.com/GoogleMoonKMZ.html --- In the conversion, some assumptions and simplifications were made: --- * The descent markers in the KML have Point nodes expressed "relative to ground" --- We assume that the ground is fixed at altitude 1927.65 meters below the reference ellipsoid, --- in order to match height data from a height map constructed from LRO data. --- * We manually offset the coordiantes slightly, by 0.013496003622691433 degrees in longitude and -0.007472581881668883 degrees in latitude, --- in order to match the landing spot specified at long: 23.47306, lat: 0.67402 extracted from footage from LRO. --- The kml file provided 23.45956399637731, lat: 0.6814925818816688 as the landing coordinates - hence the manual offset. --- If more accurate height/color maps are aqcuired, these values can be adjusted by running the conversion script again. --- For more information, contact emil.axelsson@liu.se. - +--[[ +In the conversion, some assumptions and simplifications were made: + * The descent markers in the KML have Point nodes expressed "relative to ground". + We assume that the ground is fixed at altitude 1927.65 meters below the reference ellipsoid, + in order to match height data from a height map constructed from LRO data. + * We manually offset the coordiantes slightly, by 0.013496003622691433 degrees in longitude and -0.007472581881668883 degrees in latitude, + in order to match the landing spot specified at long: 23.47306, lat: 0.67402 extracted from footage from LRO. + The kml file provided 23.45956399637731, lat: 0.6814925818816688 as the landing coordinates - hence the manual offset. + If more accurate height/color maps are aqcuired, these values can be adjusted by running the conversion script again. +]]-- local keyframes = { ['1969-07-20T20:13:40'] = { @@ -1832,4 +1832,3 @@ local keyframes = { }; asset.export('keyframes', keyframes); - diff --git a/data/assets/scene/solarsystem/missions/apollo/apollo11_lem_descent_rotation.asset b/data/assets/scene/solarsystem/missions/apollo/11/lem_descent_rotation.asset similarity index 100% rename from data/assets/scene/solarsystem/missions/apollo/apollo11_lem_descent_rotation.asset rename to data/assets/scene/solarsystem/missions/apollo/11/lem_descent_rotation.asset diff --git a/data/assets/scene/solarsystem/missions/apollo/apollo_11_lem_flipbook.asset b/data/assets/scene/solarsystem/missions/apollo/11/lem_flipbook.asset similarity index 89% rename from data/assets/scene/solarsystem/missions/apollo/apollo_11_lem_flipbook.asset rename to data/assets/scene/solarsystem/missions/apollo/11/lem_flipbook.asset index 4a342dd10f..1d0025bc74 100644 --- a/data/assets/scene/solarsystem/missions/apollo/apollo_11_lem_flipbook.asset +++ b/data/assets/scene/solarsystem/missions/apollo/11/lem_flipbook.asset @@ -1,8 +1,8 @@ ---apollo_11_lem_flipbook.asset local helper = asset.require('util/vrt_flipbook_helper') +local moon_asset = asset.require('scene/solarsystem/planets/earth/moon/moon') local assetPrefix = "A11flip"; -local assetGlobe = "Moon"; +local assetGlobe = moon_asset.Moon.Identifier; local flipbookCount = 19; local flipbook = nil; diff --git a/data/assets/scene/solarsystem/missions/apollo/11/models.asset b/data/assets/scene/solarsystem/missions/apollo/11/models.asset new file mode 100644 index 0000000000..36b3d25a94 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/apollo/11/models.asset @@ -0,0 +1,8 @@ +local modelFolder = asset.syncedResource({ + Name = "Apollo Models", + Type = "HttpSynchronization", + Identifier = "apollo_11_models", + Version = 1 +}) + +asset.export('models', modelFolder) diff --git a/data/assets/scene/solarsystem/missions/apollo/15/apollo15.asset b/data/assets/scene/solarsystem/missions/apollo/15/apollo15.asset new file mode 100644 index 0000000000..770592ba8e --- /dev/null +++ b/data/assets/scene/solarsystem/missions/apollo/15/apollo15.asset @@ -0,0 +1,115 @@ +local assetHelper = asset.require('util/asset_helper') +local moon_transforms = asset.require('scene/solarsystem/planets/earth/moon/moon') +local sun_transforms = asset.require('scene/solarsystem/sun/transforms') +local csm = asset.require('../apollo_csm') +asset.require('spice/base') + +local kernels = asset.require('scene/solarsystem/missions/apollo/15/kernels').kernels + + +-- local models = asset.syncedResource({ +-- Name = "Apollo 15 Models", +-- Type = "HttpSynchronization", +-- Identifier = "apollo_models", +-- Version = 1 +-- }) + +local LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sun_transforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + }, + -- { + -- Identifier = "Camera", + -- Type = "CameraLightSource", + -- Intensity = 0.5, + -- Enabled = false + -- } +} + + +local Apollo15 = { + Identifier = "Apollo15", + Parent = moon_transforms.Moon.Identifier, + Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "APOLLO 15", + Observer = "MOON", + Frame = "IAU_MOON", + Kernels = kernels + }, + Rotation = { + Type = "SpiceRotation", + SourceFrame = "A15_METRIC", + DestinationFrame = "GALACTIC" + } + }, + TimeFrame = { + Type = "TimeFrameInterval", + Start = "1971-07-30T02:22:00.00", + End = "1971-08-01T18:05:00.00" + }, + GUI = { + Name = "Apollo 15", + Path = "/Solar System/Missions/Apollo/15" + } +} + +-- local Apollo15Main = { +-- Identifier = "Apollo15Main", +-- Parent = Apollo15.Identifier, +-- Renderable = { +-- Type = "RenderableModel", +-- Geometry = { +-- Type = "MultiModelGeometry", +-- -- GeometryFile = models .. "/Apollo_Spacecraft.obj" +-- GeometryFile = models .. "/Apollo_CSM_shrunk_rotated_xy_doubble_size.obj" +-- }, +-- ColorTexture = models .. "/gray.png", +-- LightSources = LightSources, +-- DisableFaceCulling = true +-- }, +-- GUI = { +-- Name = "Apollo 15 Main", +-- Path = "/Solar System/Missions/Apollo 15" +-- } +-- } + +local Apollo15Trail = { + Identifier = "Apollo15Trail", + Parent = moon_transforms.Moon.Identifier, + Renderable = { + Type = "RenderableTrailTrajectory", + Translation = { + Type = "SpiceTranslation", + Target = "APOLLO 15", + Observer = "MOON", + Frame = "IAU_MOON", + Kernels = kernels + }, + Color = { 0.70, 0.50, 0.20 }, + StartTime = "1971 JUL 26", + EndTime = "1971 AUG 01 14:30:41.680", + SampleInterval = 2 + }, + GUI = { + Name = "Apollo 15 Trail", + Path = "/Solar System/Missions/Apollo/15" + } +} + + +local model_part = csm.createCsmModel(Apollo15.Identifier) + +local list = { Apollo15, Apollo15Trail } +for k,v in pairs(model_part) do + v.GUI.Path = "/Solar System/Missions/Apollo/15/Model" + table.insert(list, v) +end + + +assetHelper.registerSceneGraphNodesAndExport(asset, list) + diff --git a/data/assets/scene/solarsystem/missions/apollo/15/kernels.asset b/data/assets/scene/solarsystem/missions/apollo/15/kernels.asset new file mode 100644 index 0000000000..1b00fd7596 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/apollo/15/kernels.asset @@ -0,0 +1,92 @@ +local folder = asset.syncedResource({ + Name = "Apollo Kernels", + Type = "HttpSynchronization", + Identifier = "apollo_spice", + Version = 1 +}) + +local kernels = { + folder .. "/apollo15.0001.tsc", + + -- folder .. '/AS15-P_v01.bc', + folder .. '/apollo15.0001.tf', + folder .. '/apollo15MetricAddendum002.ti', + -- folder .. '/apollo15PanoramicAddendum001.ti', + folder .. '/apollo15_metric.0002.ti', + -- folder .. '/apollo15_panoramic.0001.ti', + folder .. '/apollo15-1.bsp', + folder .. '/AS15-M_v01.bc', + -- folder .. '/AS15-M_v01.bsp', +} + +-- local kernels = { +-- --sclk +-- folder .. "apollo15.0001.tsc", + +-- --pck +-- folder .. "moon_080317.tf", +-- folder .. "moon_assoc_me.tf", + +-- --ik +-- folder .. "apollo15_metric_v2.0001.ti", +-- folder .. "apollo15_panoramic.0001.ti", + +-- --tspk +-- folder .. "de421.bsp", +-- folder .. "moon_pa_de421_1900-2050.bpc", + +-- --iak +-- folder .. "apollo15MetricAddendum002.ti", +-- folder .. "apolloPanAddendum001.ti", + +-- --fk +-- folder .. "apollo15_v2.0001.tf", +-- folder .. "apollo15_v2.0002.tf", + +-- --spk +-- folder .. "AS15_M_REV23_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV4.bsp ", +-- folder .. "AS15_M_REV70_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV04_v2.bsp ", +-- folder .. "AS15_M_REV27_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV44_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV71_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV15_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV33_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV50_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV71_SMITHED_V02.bsp", +-- folder .. "AS15_M_REV15_v2.bsp ", +-- folder .. "AS15_M_REV34_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV60_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV72_v2.bsp", +-- folder .. "AS15_M_REV16_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV35_SMITHED_V02.bsp", +-- folder .. "AS15_M_REV62_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV22_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV38_SMITHED_V01.bsp", +-- folder .. "AS15_M_REV63_SMITHED_V01.bsp", + +-- --ck +-- folder .. "AS15_M_REV04_SMITHED_V01.bc", +-- folder .. "AS15_M_REV15_SMITHED_V01.bc", +-- folder .. "AS15_M_REV16_SMITHED_V01.bc", +-- folder .. "AS15_M_REV22_SMITHED_V01.bc", +-- folder .. "AS15_M_REV23_SMITHED_V01.bc", +-- folder .. "AS15_M_REV27_SMITHED_V01.bc", +-- folder .. "AS15_M_REV33_SMITHED_V01.bc", +-- folder .. "AS15_M_REV34_SMITHED_V01.bc", +-- folder .. "AS15_M_REV35_SMITHED_V01.bc", +-- folder .. "AS15_M_REV35_SMITHED_V02.bc", +-- folder .. "AS15_M_REV38_SMITHED_V01.bc", +-- folder .. "AS15_M_REV44_SMITHED_V01.bc", +-- folder .. "AS15_M_REV50_SMITHED_V01.bc", +-- folder .. "AS15_M_REV60_SMITHED_V01.bc", +-- folder .. "AS15_M_REV62_SMITHED_V01.bc", +-- folder .. "AS15_M_REV63_SMITHED_V01.bc", +-- folder .. "AS15_M_REV70_SMITHED_V01.bc", +-- folder .. "AS15_M_REV71_SMITHED_V01.bc", +-- folder .. "AS15_M_REV71_SMITHED_V02.bc", +-- folder .. "AS15_M_REV72_v2.bc", +-- } + +asset.export("kernels", kernels) diff --git a/data/assets/scene/solarsystem/missions/apollo/17/boulder_models.asset b/data/assets/scene/solarsystem/missions/apollo/17/boulder_models.asset new file mode 100644 index 0000000000..7868bae468 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/apollo/17/boulder_models.asset @@ -0,0 +1,8 @@ +local models = asset.syncedResource({ + Name = "Apollo Boulders Models", + Type = "HttpSynchronization", + Identifier = "apollo_boulders", + Version = 1 +}) + +asset.export('models', models) diff --git a/data/assets/scene/solarsystem/missions/apollo/bouldersstation2.asset b/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation2.asset similarity index 74% rename from data/assets/scene/solarsystem/missions/apollo/bouldersstation2.asset rename to data/assets/scene/solarsystem/missions/apollo/17/bouldersstation2.asset index 2d096b99d0..f709f0bc2b 100644 --- a/data/assets/scene/solarsystem/missions/apollo/bouldersstation2.asset +++ b/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation2.asset @@ -1,20 +1,13 @@ -local sunTransforms = asset.require('scene/solarsystem/sun/transforms') -local assetHelper = asset.require('util/asset_helper') -local earthAsset = asset.require('scene/solarsystem/planets/earth/earth') -local moonAsset = asset.require('scene/solarsystem/planets/earth/moon/moon') - -local models = asset.syncedResource({ - Name = "Apollo Models", - Type = "HttpSynchronization", - Identifier = "apollo_boulders", - Version = 1 -}) +local sun_transforms = asset.require('scene/solarsystem/sun/transforms') +local asset_helper = asset.require('util/asset_helper') +local moon_asset = asset.require('scene/solarsystem/planets/earth/moon/moon') +local models = asset.require('./boulder_models').models local LightSources = { { Type = "SceneGraphLightSource", Identifier = "Sun", - Node = sunTransforms.SolarSystemBarycenter.Identifier, + Node = sun_transforms.SolarSystemBarycenter.Identifier, Intensity = 1.0 }, { @@ -26,11 +19,11 @@ local LightSources = { local Station2Boulder1Holder = { Identifier = "Station_2_Boulder1", - Parent = moonAsset.Moon.Identifier, + Parent = moon_asset.Moon.Identifier, Transform = { Translation = { Type = "GlobeTranslation", - Globe = moonAsset.Moon.Identifier, + Globe = moon_asset.Moon.Identifier, Longitude = -360+30.5294692, Latitude = 20.098824, Altitude = -2442.8, @@ -58,6 +51,7 @@ local Station2Boulder1Model = { Type = "MultiModelGeometry", GeometryFile = models .. "/b1-v2.obj" }, + RotationVector = { 243.243256 ,206.270264, 309.677429 }, ColorTexture = models .. "/b1-v2_u1_v1.jpeg", LightSources = LightSources, PerformShading = false, @@ -71,11 +65,11 @@ local Station2Boulder1Model = { local Station2Boulder2Holder = { Identifier = "Station_2_Boulder2", - Parent = moonAsset.Moon.Identifier, + Parent = moon_asset.Moon.Identifier, Transform = { Translation = { Type = "GlobeTranslation", - Globe = moonAsset.Moon.Identifier, + Globe = moon_asset.Moon.Identifier, Longitude = -360+30.5287892, Latitude = 20.098240, Altitude = -2434.6, @@ -103,6 +97,7 @@ local Station2Boulder2Model = { Type = "MultiModelGeometry", GeometryFile = models .. "/b2model.obj" }, + RotationVector = { 66.162155, 7.783780, 114.193550 }, ColorTexture = models .. "/b2model_u1_v1.jpeg", LightSources = LightSources, PerformShading = false, @@ -116,11 +111,11 @@ local Station2Boulder2Model = { local Station2Boulder3Holder = { Identifier = "Station_2_Boulder3", - Parent = moonAsset.Moon.Identifier, + Parent = moon_asset.Moon.Identifier, Transform = { Translation = { Type = "GlobeTranslation", - Globe = moonAsset.Moon.Identifier, + Globe = moon_asset.Moon.Identifier, Longitude = -360+30.5294692, Latitude = 20.098610, Altitude = -2441.55, @@ -148,6 +143,7 @@ local Station2Boulder3Model = { Type = "MultiModelGeometry", GeometryFile = models .. "/b3model.obj" }, + RotationVector = { 161.513519 ,243.243256, 65.806450 }, ColorTexture = models .. "/b3model_u1_v1.jpeg", LightSources = LightSources, PerformShading = false, @@ -159,25 +155,8 @@ local Station2Boulder3Model = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { +asset_helper.registerSceneGraphNodesAndExport(asset, { Station2Boulder1Holder, Station2Boulder1Model, Station2Boulder2Holder, Station2Boulder2Model, Station2Boulder3Holder, Station2Boulder3Model }) - -asset.onInitialize(function () - openspace.setPropertyValueSingle( - 'Scene.Station2Boulder1Model.Renderable.RotationVector', - { 243.243256 ,206.270264, 309.677429 } - ); - - openspace.setPropertyValueSingle( - 'Scene.Station2Boulder3Model.Renderable.RotationVector', - { 161.513519 ,243.243256, 65.806450 } - ); - - openspace.setPropertyValueSingle( - 'Scene.Station2Boulder2Model.Renderable.RotationVector', - { 66.162155, 7.783780, 114.193550 } - ); -end) diff --git a/data/assets/scene/solarsystem/missions/apollo/bouldersstation6.asset b/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation6.asset similarity index 72% rename from data/assets/scene/solarsystem/missions/apollo/bouldersstation6.asset rename to data/assets/scene/solarsystem/missions/apollo/17/bouldersstation6.asset index 919de3f9a8..d013b8fea4 100644 --- a/data/assets/scene/solarsystem/missions/apollo/bouldersstation6.asset +++ b/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation6.asset @@ -1,20 +1,13 @@ - -local sunTransforms = asset.require('scene/solarsystem/sun/transforms') -local assetHelper = asset.require('util/asset_helper') - -local models = asset.syncedResource({ - Name = "Apollo Models", - Type = "HttpSynchronization", - Identifier = "apollo_boulders", - Version = 1 -}) - +local sun_transforms = asset.require('scene/solarsystem/sun/transforms') +local asset_helper = asset.require('util/asset_helper') +local moon_asset = asset.require('scene/solarsystem/planets/earth/moon/moon') +local models = asset.require('./boulder_models').models local LightSources = { { Type = "SceneGraphLightSource", Identifier = "Sun", - Node = sunTransforms.SolarSystemBarycenter.Identifier, + Node = sun_transforms.SolarSystemBarycenter.Identifier, Intensity = 1.0 }, { @@ -24,17 +17,14 @@ local LightSources = { } } -local earthAsset = asset.require('scene/solarsystem/planets/earth/earth') -local moonAsset = asset.require('scene/solarsystem/planets/earth/moon/moon') - local Station6Frag1Holder = { Identifier = "Station_6_Fragment1", - Parent = moonAsset.Moon.Identifier, + Parent = moon_asset.Moon.Identifier, Transform = { Translation = { Type = "GlobeTranslation", - Globe = moonAsset.Moon.Identifier, + Globe = moon_asset.Moon.Identifier, Longitude = -360+30.80068, Latitude = 20.2903, Altitude = -2562.6, @@ -53,7 +43,7 @@ local Station6Frag1Model = { Transform = { Translation = { Type = "GlobeTranslation", - Globe = moonAsset.Moon.Identifier, + Globe = moon_asset.Moon.Identifier, Longitude = -360+30.8007, Latitude = 20.2903, Altitude = -2562.6, @@ -72,6 +62,7 @@ local Station6Frag1Model = { Type = "MultiModelGeometry", GeometryFile = models .. "/A17-S6-frag1.obj" }, + RotationVector = { 235.909088,165.000000,286.299194 }, ColorTexture = models .. "/A17-S6-frag1.png", LightSources = LightSources, PerformShading = false, @@ -87,7 +78,7 @@ local Station6Frag1Model = { local Station6Frag23Holder = { Identifier = "Station_6_Fragments_2_3", - Parent = moonAsset.Moon.Identifier, + Parent = moon_asset.Moon.Identifier, GUI = { Name = "Station 6 Fragments 2 & 3 Holder", Path = "/Solar System/Missions/Apollo/17/Station 6" @@ -105,7 +96,7 @@ local Station6Frag2Model = { }, Translation = { Type = "GlobeTranslation", - Globe = moonAsset.Moon.Identifier, + Globe = moon_asset.Moon.Identifier, Longitude = -360+30.80055, Latitude = 20.289808, Altitude = -2566.5, @@ -118,6 +109,7 @@ local Station6Frag2Model = { Type = "MultiModelGeometry", GeometryFile = models .. "/station6_boulder_frag2.obj" }, + RotationVector = { 336.959991,210.239990,325.984253 }, ColorTexture = models .. "/frag2crop_u1_v1.jpeg", LightSources = LightSources, PerformShading = false, @@ -129,8 +121,6 @@ local Station6Frag2Model = { } } - - local Station6Frag3Model = { Identifier = "A17S6F3", Parent = Station6Frag23Holder.Identifier, @@ -141,7 +131,7 @@ local Station6Frag3Model = { }, Translation = { Type = "GlobeTranslation", - Globe = moonAsset.Moon.Identifier, + Globe = moon_asset.Moon.Identifier, Longitude = -360+30.80053, Latitude = 20.29030, Altitude = -2563.0, @@ -154,6 +144,7 @@ local Station6Frag3Model = { Type = "MultiModelGeometry", GeometryFile = models .. "/station6_boulder_frag3.obj" }, + RotationVector = { 293.181824,255.000000,4.090910 }, ColorTexture = models .. "/frag3crop_u1_v1.jpeg", LightSources = LightSources, PerformShading = false, @@ -165,22 +156,6 @@ local Station6Frag3Model = { } } - - - -assetHelper.registerSceneGraphNodesAndExport(asset, { +asset_helper.registerSceneGraphNodesAndExport(asset, { Station6Frag1Holder, Station6Frag1Model, Station6Frag23Holder, Station6Frag2Model, Station6Frag3Model, }) - - - - -asset.onInitialize(function () - - openspace.setPropertyValueSingle('Scene.Station6Frag1Model.Renderable.RotationVector', {235.909088,165.000000,286.299194}); - openspace.setPropertyValueSingle('Scene.A17S6F5.Renderable.RotationVector', {336.959991,210.239990,325.984253}); - openspace.setPropertyValueSingle('Scene.A17S6F3.Renderable.RotationVector', {293.181824,255.000000,4.090910}); - openspace.setPropertyValueSingle('Scene.Station6Frag1Model.Renderable.PerformShading', false); - openspace.setPropertyValueSingle("NavigationHandler.OrbitalNavigator.MinimumAllowedDistance", 0.050000) - -end) diff --git a/data/assets/scene/solarsystem/missions/apollo/bouldersstation7.asset b/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation7.asset similarity index 65% rename from data/assets/scene/solarsystem/missions/apollo/bouldersstation7.asset rename to data/assets/scene/solarsystem/missions/apollo/17/bouldersstation7.asset index d2eab52355..d2e9c5146c 100644 --- a/data/assets/scene/solarsystem/missions/apollo/bouldersstation7.asset +++ b/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation7.asset @@ -1,19 +1,13 @@ - -local sunTransforms = asset.require('scene/solarsystem/sun/transforms') -local assetHelper = asset.require('util/asset_helper') - -local models = asset.syncedResource({ - Name = "Apollo Models", - Type = "HttpSynchronization", - Identifier = "apollo_boulders", - Version = 1 -}) +local sun_transforms = asset.require('scene/solarsystem/sun/transforms') +local asset_helper = asset.require('util/asset_helper') +local moon_asset = asset.require('scene/solarsystem/planets/earth/moon/moon') +local models = asset.require('./boulder_models').models local LightSources = { { Type = "SceneGraphLightSource", Identifier = "Sun", - Node = sunTransforms.SolarSystemBarycenter.Identifier, + Node = sun_transforms.SolarSystemBarycenter.Identifier, Intensity = 1.0 }, { @@ -23,15 +17,13 @@ local LightSources = { } } -local moonAsset = asset.require('scene/solarsystem/planets/earth/moon/moon') - local Station7BoulderHolder = { Identifier = "Station_7_Boulder", - Parent = moonAsset.Moon.Identifier, + Parent = moon_asset.Moon.Identifier, Transform = { Translation = { Type = "GlobeTranslation", - Globe = moonAsset.Moon.Identifier, + Globe = moon_asset.Moon.Identifier, Longitude = -360+30.8165882, Latitude = 20.2908556, Altitude = -2593.5, @@ -59,6 +51,7 @@ local Station7BoulderModel = { Type = "MultiModelGeometry", GeometryFile = models .. "/b7model.obj" }, + RotationVector = { 1.945950,274.378387,212.903214 }, ColorTexture = models .. "/b7model_u1_v1.jpeg", LightSources = LightSources, PerformShading = false, @@ -70,11 +63,6 @@ local Station7BoulderModel = { } } - -assetHelper.registerSceneGraphNodesAndExport(asset, { +asset_helper.registerSceneGraphNodesAndExport(asset, { Station7BoulderHolder, Station7BoulderModel }) - -asset.onInitialize(function () - openspace.setPropertyValueSingle('Scene.Station7BoulderModel.Renderable.RotationVector', {1.945950,274.378387,212.903214}); -end) diff --git a/data/assets/scene/solarsystem/missions/apollo/a17_lem.asset b/data/assets/scene/solarsystem/missions/apollo/17/lem.asset similarity index 61% rename from data/assets/scene/solarsystem/missions/apollo/a17_lem.asset rename to data/assets/scene/solarsystem/missions/apollo/17/lem.asset index dd2d134127..50f81a1693 100644 --- a/data/assets/scene/solarsystem/missions/apollo/a17_lem.asset +++ b/data/assets/scene/solarsystem/missions/apollo/17/lem.asset @@ -1,17 +1,16 @@ ---a17_lem.asset -local assetHelper = asset.require('util/asset_helper') -local sunTransforms = asset.require('scene/solarsystem/sun/transforms') -local moonAsset = asset.require('scene/solarsystem/planets/earth/moon/moon') +local asset_helper = asset.require('util/asset_helper') +local sun_transforms = asset.require('scene/solarsystem/sun/transforms') +local moon_asset = asset.require('scene/solarsystem/planets/earth/moon/moon') local model = asset.require('scene/solarsystem/missions/apollo/lem_model') local Apollo17Lem = { Identifier = "Apollo17Lem", - Parent = moonAsset.Moon.Identifier, + Parent = moon_asset.Moon.Identifier, Transform = { Translation = { Type = "GlobeTranslation", - Globe = moonAsset.Moon.Identifier, + Globe = moon_asset.Moon.Identifier, Longitude = -329.22833, Latitude = 20.19092, UseHeightmap = true @@ -40,21 +39,14 @@ local Apollo17LemModel = { GeometryFile = model.modelFolder .. "/LM-2_ver2clean.obj" }, SpecularIntensity = 0.0, + RotationVector = { 110.255219,171.229706,126.666664 }, ColorTexture = model.modelFolder .. "/LM-2_ver2clean_u1_v1.jpeg", - LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier) + LightSources = asset_helper.getDefaultLightSources(sun_transforms.SolarSystemBarycenter.Identifier) }, GUI = { - Hidden = false, Name = "Apollo 17 Lem", Path = "/Solar System/Missions/Apollo/17" } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - Apollo17Lem, - Apollo17LemModel, -}) - -asset.onInitialize(function () - openspace.setPropertyValueSingle('Scene.Apollo17LemModel.Renderable.RotationVector', { 110.255219,171.229706,126.666664 }); -end) +asset_helper.registerSceneGraphNodesAndExport(asset, { Apollo17Lem, Apollo17LemModel }) diff --git a/data/assets/scene/solarsystem/missions/apollo/8/apollo8.asset b/data/assets/scene/solarsystem/missions/apollo/8/apollo8.asset new file mode 100644 index 0000000000..4b2a8777a1 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/apollo/8/apollo8.asset @@ -0,0 +1,3 @@ +asset.require('./model') +asset.require('./launch_model') +asset.require('./trails') diff --git a/data/assets/scene/solarsystem/missions/apollo/8/kernels.asset b/data/assets/scene/solarsystem/missions/apollo/8/kernels.asset new file mode 100644 index 0000000000..5baf800205 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/apollo/8/kernels.asset @@ -0,0 +1,17 @@ +local kernelsFolder = asset.syncedResource({ + Name = "Apollo Kernels", + Type = "HttpSynchronization", + Identifier = "apollo_spice", + Version = 1 +}) + +local kernels = { + kernelsFolder .. "/moon_080317.tf", + kernelsFolder .. "/apollo8.tf", + kernelsFolder .. "/moon_pa_de421_1900-2050.bpc", + kernelsFolder .. '/apollo8.tsc', + kernelsFolder .. '/apollo8.bsp', + kernelsFolder .. '/apollo8_earthrise.bc', +} + +asset.export('kernels', kernels) diff --git a/data/assets/scene/solarsystem/missions/apollo/8/launch_model.asset b/data/assets/scene/solarsystem/missions/apollo/8/launch_model.asset new file mode 100644 index 0000000000..1e76c60931 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/apollo/8/launch_model.asset @@ -0,0 +1,65 @@ +local asset_helper = asset.require('util/asset_helper') +local earth_transforms = asset.require('scene/solarsystem/planets/earth/transforms') +local kernels = asset.require('./kernels').kernels +local csm = asset.require('../apollo_csm') + +local apolloSpiceId = "-908" + +local Apollo8Launch = { + Identifier = "Apollo8Launch", + Parent = earth_transforms.EarthIAU.Identifier, + TimeFrame = { + Type = "TimeFrameInterval", + Start = "1968 DEC 21", + End = "1968 DEC 28" + }, + Transform = { + Translation = { + Type = "SpiceTranslation", + Target = apolloSpiceId, + Observer = "EARTH", + Frame = "IAU_EARTH", + Kernels = kernels + }, + }, + GUI = { + Name = "Apollo 8 Launch Capsule", + Path = "/Solar System/Missions/Apollo" + } +} + +local Apollo8LaunchModel = { + Identifier = "Apollo8LaunchModel", + Parent = Apollo8Launch.Identifier, + TimeFrame = { + Type = "TimeFrameInterval", + Start = "1968 DEC 21", + End = "1968 DEC 22" + }, + Transform = { + Scale = { + Type = "StaticScale", + -- The scale of the model is in cm; OpenSpace is in m + Scale = 0.01 + }, + Rotation = { + Type = "StaticRotation", + Rotation = {0.0, 0.0, -3.1415 / 2} + } + }, + GUI = { + Hidden = true, + Name = "Apollo 8 Launch Model", + Path = "/Solar System/Missions/Apollo/8" + } +} + +local launch_model_part = csm.createCsmModel(Apollo8LaunchModel.Identifier) + +local list = { Apollo8Launch, Apollo8LaunchModel } +for k,v in pairs(launch_model_part) do + v.GUI.Path = "/Solar System/Missions/Apollo/8/Model" + table.insert(list, v) +end + +asset_helper.registerSceneGraphNodesAndExport(asset, list) diff --git a/data/assets/scene/solarsystem/missions/apollo/8/model.asset b/data/assets/scene/solarsystem/missions/apollo/8/model.asset new file mode 100644 index 0000000000..4b677cc818 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/apollo/8/model.asset @@ -0,0 +1,93 @@ +local asset_helper = asset.require('util/asset_helper') +local earth_transforms = asset.require('scene/solarsystem/planets/earth/transforms') +local kernels = asset.require('./kernels').kernels +local csm = asset.require('../apollo_csm') + +local apolloSpiceId = "-908" + +local Apollo8 = { + Identifier = "Apollo8", + Parent = earth_transforms.EarthBarycenter.Identifier, + TimeFrame = { + Type = "TimeFrameInterval", + Start = "1968 DEC 21", + End = "1968 DEC 28" + }, + Transform = { + Translation = { + Type = "SpiceTranslation", + Target = apolloSpiceId, + Observer = "EARTH BARYCENTER", + Frame = "GALACTIC", + Kernels = kernels + }, + Rotation = { + Type = "SpiceRotation", + SourceFrame = "A8_EARTHRISE", + DestinationFrame = "GALACTIC", + TimeFrame = { + -- The orientation of Apollo 8 is only available during the few minutes + -- when the Earthrise picture was taken. + Type = "TimeFrameInterval", + Start = "1968 DEC 24 16:37:19", + End = "1968 DEC 24 16:40:15" + } + } + }, + GUI = { + Name = "Apollo 8", + Path = "/Solar System/Missions/Apollo" + } +} + +local Apollo8Model = { + Identifier = "Apollo8Model", + Parent = Apollo8.Identifier, + TimeFrame = { + Type = "TimeFrameInterval", + Start = "1968 DEC 22", + End = "1968 DEC 28" + }, + Transform = { + Scale = { + Type = "StaticScale", + -- The scale of the model is in cm; OpenSpace is in m + Scale = 0.01 + }, + Rotation = { + Type = "StaticRotation", + Rotation = {0.0, 0.0, -3.1415 / 2} + } + }, + GUI = { + Hidden = true, + Name = "Apollo 8 Model", + Path = "/Solar System/Missions/Apollo" + } +} + +-- The pivot node is used for navigation inside the spacecraft +local Apollo8Pivot = { + Identifier = "Apollo8Pivot", + Parent = Apollo8.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0, 2.5, 0 } + }, + }, + GUI = { + Name = "Apollo 8 Pivot", + Path = "/Solar System/Missions/Apollo" + } +} + +local model_part = csm.createCsmModel(Apollo8Model.Identifier) + +local list = { Apollo8, Apollo8Model, Apollo8Pivot } +for k,v in pairs(model_part) do + v.GUI.Path = "/Solar System/Missions/Apollo/8/Model" + table.insert(list, v) +end + +asset_helper.registerSceneGraphNodesAndExport(asset, list) diff --git a/data/assets/scene/solarsystem/missions/apollo/8/trails.asset b/data/assets/scene/solarsystem/missions/apollo/8/trails.asset new file mode 100644 index 0000000000..5919504dcd --- /dev/null +++ b/data/assets/scene/solarsystem/missions/apollo/8/trails.asset @@ -0,0 +1,82 @@ +local assetHelper = asset.require('util/asset_helper') + +local earth_transforms = asset.require('scene/solarsystem/planets/earth/transforms') +local moon_transforms = asset.require('scene/solarsystem/planets/earth/moon/moon') +local kernels = asset.require('./kernels').kernels + +local apolloSpiceId = "-908" + + +local LaunchTrail = { + Identifier = "Apollo8LaunchTrail", + Parent = earth_transforms.EarthIAU.Identifier, + Renderable = { + Type = "RenderableTrailTrajectory", + Translation = { + Type = "SpiceTranslation", + Target = apolloSpiceId, + Observer = "EARTH", + Frame = "IAU_EARTH", + Kernels = kernels + }, + Color = { 0.70, 0.50, 0.20 }, + StartTime = "1968 DEC 21 12:51:00", + EndTime = "1968 DEC 21 23:23:22", + SampleInterval = 30, + RenderBinMode = "PostDeferredTransparent" + }, + GUI = { + Name = "Apollo 8 Launch Trail", + Path = "/Solar System/Missions/Apollo" + } +} + +local MoonTrail = { + Identifier = "Apollo8MoonTrail", + Parent = moon_transforms.Moon.Identifier, + Renderable = { + Type = "RenderableTrailTrajectory", + Translation = { + Type = "SpiceTranslation", + Target = apolloSpiceId, + Observer = "MOON", + Frame = "IAU_MOON", + Kernels = kernels + }, + Color = { 0.70, 0.50, 0.20 }, + StartTime = "1968 DEC 23", + EndTime = "1968 DEC 26", + SampleInterval = 30, + Enabled = false, + }, + GUI = { + Name = "Apollo 8 Moon Trail", + Path = "/Solar System/Missions/Apollo" + } +} + +local EarthBarycenterTrail = { + Identifier = "Apollo8EarthBarycenterTrail", + Parent = earth_transforms.EarthCenter.Identifier, + Renderable = { + Type = "RenderableTrailTrajectory", + Translation = { + Type = "SpiceTranslation", + Target = apolloSpiceId, + Observer = "EARTH", + Frame = "GALACTIC", + Kernels = kernels + }, + Color = { 0.8, 0.2, 0.2 }, + StartTime = "1968 DEC 21", + EndTime = "1968 DEC 28", + SampleInterval = 30, + Enabled = true, + }, + GUI = { + Name = "Apollo 8 Earth Barycenter Trail", + Path = "/Solar System/Missions/Apollo" + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { LaunchTrail, MoonTrail, EarthBarycenterTrail }) diff --git a/data/assets/scene/solarsystem/missions/apollo/a11_lem.asset b/data/assets/scene/solarsystem/missions/apollo/a11_lem.asset deleted file mode 100644 index 05b81e0af4..0000000000 --- a/data/assets/scene/solarsystem/missions/apollo/a11_lem.asset +++ /dev/null @@ -1,60 +0,0 @@ --- a11_lem.asset -local assetHelper = asset.require('util/asset_helper') -local sunTransforms = asset.require('scene/solarsystem/sun/transforms') -local moonAsset = asset.require('scene/solarsystem/planets/earth/moon/moon') - -local model = asset.require('scene/solarsystem/missions/apollo/lem_model') - - -local Apollo11Lem = { - Identifier = "Apollo11Lem", - Parent = moonAsset.Moon.Identifier, - Transform = { - Translation = { - Type = "GlobeTranslation", - Globe = moonAsset.Moon.Identifier, - Longitude = -360+23.47306, - Latitude = 0.67402, - Altitude = -1927.65, - UseHeightMap = false - }, - }, - GUI = { - Name = "Apollo 11 Lem Position", - Path = "/Solar System/Missions/Apollo/11" - } -} - -local Apollo11LemModel = { - Identifier = "Apollo11LemModel", - Parent = Apollo11Lem.Identifier, - Transform = { - Scale = { - Type = "StaticScale", - Scale = 0.24 - } - }, - Renderable = { - Type = "RenderableModel", - Geometry = { - Type = "MultiModelGeometry", - GeometryFile = model.modelFolder .. "/LM-2_ver2clean.obj" - }, - ColorTexture = model.modelFolder .. "/LM-2_ver2clean_u1_v1.jpeg", - LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier) - }, - GUI = { - Hidden = false, - Name = "Apollo 11 Lem", - Path = "/Solar System/Missions/Apollo/11" - } -} - -assetHelper.registerSceneGraphNodesAndExport(asset, { - Apollo11Lem, - Apollo11LemModel -}) - -asset.onInitialize(function () - openspace.setPropertyValueSingle('Scene.Apollo11LemModel.Renderable.RotationVector', { 91.044090,171.229706,111.666664} ); -end) diff --git a/data/assets/scene/solarsystem/missions/apollo/a15.asset b/data/assets/scene/solarsystem/missions/apollo/a15.asset deleted file mode 100644 index 659edf4fd2..0000000000 --- a/data/assets/scene/solarsystem/missions/apollo/a15.asset +++ /dev/null @@ -1,203 +0,0 @@ -local assetHelper = asset.require('util/asset_helper') -local sunTransforms = asset.require('scene/solarsystem/sun/transforms') -asset.require('spice/base') - ---asset.require('scene/solarsystem/missions/apollo/a15kernels') - - -local models = asset.syncedResource({ - Name = "Apollo 15 Models", - Type = "HttpSynchronization", - Identifier = "apollo_models", - Version = 1 -}) - -local kernels = asset.syncedResource({ - Name = "Apollo Kernels", - Type = "HttpSynchronization", - Identifier = "apollo_spice", - Version = 1 -}) - -local Kernels = { - kernels .. "/apollo15.0001.tsc", - - -- kernels .. '/AS15-P_v01.bc', - kernels .. '/apollo15.0001.tf', - kernels .. '/apollo15MetricAddendum002.ti', - -- kernels .. '/apollo15PanoramicAddendum001.ti', - kernels .. '/apollo15_metric.0002.ti', - -- kernels .. '/apollo15_panoramic.0001.ti', - kernels .. '/apollo15-1.bsp', - kernels .. '/AS15-M_v01.bc', - -- kernels .. '/AS15-M_v01.bsp', -} - - - --- local Apollo15Kernels = { --- --sclk --- ApolloKernels .. "/apollo15.0001.tsc", - --- --pck --- ApolloKernels .. "/moon_080317.tf", --- ApolloKernels .. "/moon_assoc_me.tf", - --- --ik --- ApolloKernels .. "/apollo15_metric_v2.0001.ti", --- ApolloKernels .. "/apollo15_panoramic.0001.ti", - --- --tspk --- ApolloKernels .. "/de421.bsp", --- ApolloKernels .. "/moon_pa_de421_1900-2050.bpc", - --- --iak --- ApolloKernels .. "/apollo15MetricAddendum002.ti", --- ApolloKernels .. "/apolloPanAddendum001.ti", - --- --fk --- ApolloKernels .. "/apollo15_v2.0001.tf", --- ApolloKernels .. "/apollo15_v2.0002.tf", - --- --spk --- ApolloKernels .. "/AS15_M_REV23_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV4.bsp ", --- ApolloKernels .. "/AS15_M_REV70_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV04_v2.bsp ", --- ApolloKernels .. "/AS15_M_REV27_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV44_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV71_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV15_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV33_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV50_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV71_SMITHED_V02.bsp", --- ApolloKernels .. "/AS15_M_REV15_v2.bsp ", --- ApolloKernels .. "/AS15_M_REV34_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV60_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV72_v2.bsp", --- ApolloKernels .. "/AS15_M_REV16_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV35_SMITHED_V02.bsp", --- ApolloKernels .. "/AS15_M_REV62_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV22_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV38_SMITHED_V01.bsp", --- ApolloKernels .. "/AS15_M_REV63_SMITHED_V01.bsp", - --- --ck --- ApolloKernels .. "/AS15_M_REV04_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV15_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV16_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV22_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV23_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV27_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV33_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV34_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV35_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV35_SMITHED_V02.bc", --- ApolloKernels .. "/AS15_M_REV38_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV44_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV50_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV60_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV62_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV63_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV70_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV71_SMITHED_V01.bc", --- ApolloKernels .. "/AS15_M_REV71_SMITHED_V02.bc", --- ApolloKernels .. "/AS15_M_REV72_v2.bc", --- } - - - - -local LightSources = { - { - Type = "SceneGraphLightSource", - Identifier = "Sun", - Node = sunTransforms.SolarSystemBarycenter.Identifier, - Intensity = 1.0 - }, - -- { - -- Identifier = "Camera", - -- Type = "CameraLightSource", - -- Intensity = 0.5, - -- Enabled = false - -- } -} - - -local Apollo15 = { - Identifier = "Apollo15", - Parent = "Moon", - Transform = { - Translation = { - Type = "SpiceTranslation", - Target = "APOLLO 15", - Observer = "MOON", - Frame = "IAU_MOON", - Kernels = Kernels - }, - Rotation = { - Type = "SpiceRotation", - SourceFrame = "A15_METRIC", - DestinationFrame = "GALACTIC" - } - }, - TimeFrame = { -- Using Spice kernels for 1850-2150 - Type = "TimeFrameInterval", - Start = "1971-07-30T02:22:00.00", - End = "1971-08-01T18:05:00.00" - }, - GUI = { - Name = "Apollo 15", - Path = "/Solar System/Missions/Apollo 15" - } -} - -local Apollo15Main = { - Identifier = "Apollo15Main", - Parent = Apollo15.Identifier, - Renderable = { - Type = "RenderableModel", - Geometry = { - Type = "MultiModelGeometry", --- GeometryFile = models .. "/Apollo_Spacecraft.obj" - GeometryFile = models .. "/Apollo_CSM_shrunk_rotated_xy_doubble_size.obj" - }, - ColorTexture = models .. "/gray.png", - LightSources = LightSources, - DisableFaceCulling = true - }, - GUI = { - Name = "Apollo 15 Main", - Path = "/Solar System/Missions/Apollo 15" - } -} - -local Apollo15Trail = { - Identifier = "Apollo15Trail", - Parent = "Moon", - Renderable = { - Type = "RenderableTrailTrajectory", - Translation = { - Type = "SpiceTranslation", - Target = "APOLLO 15", - Observer = "MOON", - Frame = "IAU_MOON", - Kernels = Kernels - }, - Color = { 0.70, 0.50, 0.20 }, - StartTime = "1971 JUL 26", - EndTime = "1971 AUG 01 14:30:41.680", - SampleInterval = 2 - }, - GUI = { - Name = "Apollo 15 Trail", - Path = "/Solar System/Missions/Apollo 15" - } -} - -assetHelper.registerSceneGraphNodesAndExport(asset, { - Apollo15, - Apollo15Main, - Apollo15Trail -}) - diff --git a/data/assets/scene/solarsystem/missions/apollo/a15kernels.asset b/data/assets/scene/solarsystem/missions/apollo/a15kernels.asset deleted file mode 100644 index eca91e2614..0000000000 --- a/data/assets/scene/solarsystem/missions/apollo/a15kernels.asset +++ /dev/null @@ -1,86 +0,0 @@ -local ApolloKernels = asset.syncedResource({ - Name = "Apollo Kernels", - Type = "HttpSynchronization", - Identifier = "apollo_spice", - Version = 1 -}) - -local Apollo15Kernels = { - - - - --sclk - ApolloKernels .. "apollo15.0001.tsc", - - --pck - ApolloKernels .. "moon_080317.tf", - ApolloKernels .. "moon_assoc_me.tf", - - --ik - ApolloKernels .. "apollo15_metric_v2.0001.ti", - ApolloKernels .. "apollo15_panoramic.0001.ti", - - --tspk - ApolloKernels .. "de421.bsp", - ApolloKernels .. "moon_pa_de421_1900-2050.bpc", - - --iak - ApolloKernels .. "apollo15MetricAddendum002.ti", - ApolloKernels .. "apolloPanAddendum001.ti", - - --fk - ApolloKernels .. "apollo15_v2.0001.tf", - ApolloKernels .. "apollo15_v2.0002.tf", - - --spk - ApolloKernels .. "AS15_M_REV23_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV4.bsp ", - ApolloKernels .. "AS15_M_REV70_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV04_v2.bsp ", - ApolloKernels .. "AS15_M_REV27_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV44_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV71_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV15_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV33_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV50_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV71_SMITHED_V02.bsp", - ApolloKernels .. "AS15_M_REV15_v2.bsp ", - ApolloKernels .. "AS15_M_REV34_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV60_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV72_v2.bsp", - ApolloKernels .. "AS15_M_REV16_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV35_SMITHED_V02.bsp", - ApolloKernels .. "AS15_M_REV62_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV22_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV38_SMITHED_V01.bsp", - ApolloKernels .. "AS15_M_REV63_SMITHED_V01.bsp", - - --ck - ApolloKernels .. "AS15_M_REV04_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV15_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV16_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV22_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV23_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV27_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV33_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV34_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV35_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV35_SMITHED_V02.bc", - ApolloKernels .. "AS15_M_REV38_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV44_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV50_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV60_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV62_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV63_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV70_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV71_SMITHED_V01.bc", - ApolloKernels .. "AS15_M_REV71_SMITHED_V02.bc", - ApolloKernels .. "AS15_M_REV72_v2.bc", - - -} - - - ---asset.export("ApolloKernels", Kernels) -asset.export("Apollo15Kernels", Apollo15Kernels) diff --git a/data/assets/scene/solarsystem/missions/apollo/apollo8.asset b/data/assets/scene/solarsystem/missions/apollo/apollo8.asset deleted file mode 100644 index 627d264bef..0000000000 --- a/data/assets/scene/solarsystem/missions/apollo/apollo8.asset +++ /dev/null @@ -1,235 +0,0 @@ -local assetHelper = asset.require('util/asset_helper') -local sunTransforms = asset.require('scene/solarsystem/sun/transforms') -local csm = asset.require('./apollo_csm') - -asset.require('spice/base') - -local kernelsFolder = asset.syncedResource({ - Name = "Apollo Kernels", - Type = "HttpSynchronization", - Identifier = "apollo_spice", - Version = 1 -}) - -local kernels = { - kernelsFolder .. "/moon_080317.tf", - kernelsFolder .. "/apollo8.tf", - kernelsFolder .. "/moon_pa_de421_1900-2050.bpc", - kernelsFolder .. '/apollo8.tsc', - kernelsFolder .. '/apollo8.bsp', - kernelsFolder .. '/apollo8_earthrise.bc', -} - -local apolloSpiceId = "-908" - -local Apollo8Launch = { - Identifier = "Apollo8Launch", - Parent = "Earth", - TimeFrame = { -- Using Spice kernels for 1850-2150 - Type = "TimeFrameInterval", - Start = "1968 DEC 21", - End = "1968 DEC 28" - }, - Transform = { - Translation = { - Type = "SpiceTranslation", - Target = apolloSpiceId, - Observer = "EARTH", - Frame = "IAU_EARTH", - Kernels = kernels - }, - }, - GUI = { - Name = "Apollo 8 Launch Capsule", - Path = "/Solar System/Missions/Apollo" - } -} - - -local Apollo8 = { - Identifier = "Apollo8", - Parent = "EarthBarycenter", - TimeFrame = { -- Using Spice kernels for 1850-2150 - Type = "TimeFrameInterval", - Start = "1968 DEC 21", - End = "1968 DEC 28" - }, - Transform = { - Translation = { - Type = "SpiceTranslation", - Target = apolloSpiceId, - Observer = "EARTH BARYCENTER", - Frame = "GALACTIC", - Kernels = kernels - }, - Rotation = { - Type = "SpiceRotation", - SourceFrame = "A8_EARTHRISE", - DestinationFrame = "GALACTIC", - TimeFrame = { - -- The orientation of Apollo 8 is only - -- available during the few minutes when - -- the famous Earthrise picture was taken. - Type = "TimeFrameInterval", - Start = "1968 DEC 24 16:37:19", - End = "1968 DEC 24 16:40:15" - } - } - }, - GUI = { - Name = "Apollo 8", - Path = "/Solar System/Missions/Apollo" - } -} - -local Apollo8LaunchModel = { - Identifier = "Apollo8LaunchModel", - Parent = Apollo8Launch.Identifier, - Transform = { - Scale = { - Type = "StaticScale", - -- The scale of the model is in cm; OpenSpace is in m - Scale = 0.01 - }, - Rotation = { - Type = "StaticRotation", - Rotation = {0.0, 0.0, -3.1415/2} - } - }, - GUI = { - Hidden = true, - Name = "Apollo 8 Launch Model", - Path = "/Solar System/Missions/Apollo" - } -} - -local Apollo8Model = { - Identifier = "Apollo8Model", - Parent = Apollo8.Identifier, - Transform = { - Scale = { - Type = "StaticScale", - -- The scale of the model is in cm; OpenSpace is in m - Scale = 0.01 - }, - Rotation = { - Type = "StaticRotation", - Rotation = {0.0, 0.0, -3.1415/2} - } - }, - GUI = { - Hidden = true, - Name = "Apollo 8 Model", - Path = "/Solar System/Missions/Apollo" - } -} - -local PivotOffset = { 0, 2.5, 0 } - --- The pivot node is used for navigation inside the spacecraft - -local Apollo8Pivot = { - Identifier = "Apollo8Pivot", - Parent = Apollo8.Identifier, - Transform = { - Translation = { - Type = "StaticTranslation", - Position = PivotOffset - }, - }, - GUI = { - Name = "Apollo 8 Pivot", - Path = "/Solar System/Missions/Apollo" - } -} - - -local Apollo8LaunchTrail = { - Identifier = "Apollo8LaunchTrail", - Parent = "Earth", - Renderable = { - Type = "RenderableTrailTrajectory", - Translation = { - Type = "SpiceTranslation", - Target = apolloSpiceId, - Observer = "EARTH", - Frame = "IAU_EARTH", - Kernels = kernels - }, - Color = { 0.70, 0.50, 0.20 }, - StartTime = "1968 DEC 21 12:51:00", - EndTime = "1968 DEC 21 23:23:22", - SampleInterval = 30 - }, - GUI = { - Name = "Apollo 8 Launch Trail", - Path = "/Solar System/Missions/Apollo" - } -} - -local Apollo8MoonTrail = { - Identifier = "Apollo8MoonTrail", - Parent = "Moon", - Renderable = { - Type = "RenderableTrailTrajectory", - Translation = { - Type = "SpiceTranslation", - Target = apolloSpiceId, - Observer = "MOON", - Frame = "IAU_MOON", - Kernels = kernels - }, - Color = { 0.70, 0.50, 0.20 }, - StartTime = "1968 DEC 23", - EndTime = "1968 DEC 26", - SampleInterval = 30, - Enabled = false, - }, - GUI = { - Name = "Apollo 8 Moon Trail", - Path = "/Solar System/Missions/Apollo" - } -} - -local Apollo8EarthBarycenterTrail = { - Identifier = "Apollo8EarthBarycenterTrail", - Parent = "EarthBarycenter", - Renderable = { - Type = "RenderableTrailTrajectory", - Translation = { - Type = "SpiceTranslation", - Target = apolloSpiceId, - Observer = "EARTH", - Frame = "GALACTIC", - Kernels = kernels - }, - Color = { 0.8, 0.2, 0.2 }, - StartTime = "1968 DEC 21", - EndTime = "1968 DEC 28", - SampleInterval = 30, - Enabled = true, - }, - GUI = { - Name = "Apollo 8 Earth Barycenter Trail", - Path = "/Solar System/Missions/Apollo" - } -} - - -local exportList = { - Apollo8, - Apollo8Model, - Apollo8Launch, - Apollo8LaunchModel, - Apollo8Pivot, - - Apollo8LaunchTrail, - Apollo8MoonTrail, - Apollo8EarthBarycenterTrail -} - -assetHelper.registerSceneGraphNodesAndExport(asset, exportList) --- Registering Command and Service module needs to happen fter the export list --- has been registered, since it depends on the Apollo8Model scene graph node. -csm.registerCsm(asset, Apollo8Model.Identifier) -csm.registerCsm(asset, Apollo8LaunchModel.Identifier) diff --git a/data/assets/scene/solarsystem/missions/apollo/apollo8launchtrail.asset b/data/assets/scene/solarsystem/missions/apollo/apollo8launchtrail.asset deleted file mode 100644 index 701051ff6e..0000000000 --- a/data/assets/scene/solarsystem/missions/apollo/apollo8launchtrail.asset +++ /dev/null @@ -1,74 +0,0 @@ -local assetHelper = asset.require('util/asset_helper') -local sunTransforms = asset.require('scene/solarsystem/sun/transforms') -local kernelsFolder = asset.syncedResource({ - Name = "Apollo Kernels", - Type = "HttpSynchronization", - Identifier = "apollo_spice", - Version = 1 -}) - -local kernels = { - kernelsFolder .. "/moon_080317.tf", - kernelsFolder .. "/apollo8.tf", - kernelsFolder .. "/moon_pa_de421_1900-2050.bpc", - kernelsFolder .. '/apollo8.tsc', - kernelsFolder .. '/apollo8.bsp', - kernelsFolder .. '/apollo8_earthrise.bc', -} - -local apolloSpiceId = "-908" - - -local Apollo8LaunchTrail = { - Identifier = "Apollo8LaunchTrail", - Parent = "Earth", - Renderable = { - Type = "RenderableTrailTrajectory", - Translation = { - Type = "SpiceTranslation", - Target = apolloSpiceId, - Observer = "EARTH", - Frame = "IAU_EARTH", - Kernels = kernels - }, - Color = { 0.70, 0.50, 0.20 }, - StartTime = "1968 DEC 21 12:51:00", - EndTime = "1968 DEC 21 23:23:22", - SampleInterval = 30 - }, - GUI = { - Name = "Apollo 8 Launch Trail", - Path = "/Solar System/Missions/Apollo" - } -} - -local Apollo8EarthBarycenterTrail = { - Identifier = "Apollo8EarthBarycenterTrail", - Parent = "EarthBarycenter", - Renderable = { - Type = "RenderableTrailTrajectory", - Translation = { - Type = "SpiceTranslation", - Target = apolloSpiceId, - Observer = "EARTH BARYCENTER", - Frame = "GALACTIC", - Kernels = kernels - }, - Color = { 1, 0.0, 0.0 }, - StartTime = "1968 DEC 21", - EndTime = "1968 DEC 28", - SampleInterval = 30, - Enabled = false, - }, - GUI = { - Name = "Apollo 8 Earth Barycenter Trail", - Path = "/Solar System/Missions/Apollo" - } -} - -local exportList = { - Apollo8LaunchTrail, - Apollo8EarthBarycenterTrail, -} - -assetHelper.registerSceneGraphNodesAndExport(asset, exportList) diff --git a/data/assets/scene/solarsystem/missions/apollo/apollo_csm.asset b/data/assets/scene/solarsystem/missions/apollo/apollo_csm.asset index 3f5a1e012e..32581a1597 100644 --- a/data/assets/scene/solarsystem/missions/apollo/apollo_csm.asset +++ b/data/assets/scene/solarsystem/missions/apollo/apollo_csm.asset @@ -1,11 +1,11 @@ -- This asset exports a function to create an Apollo Command and Service Module (CSM). -- Instead of hard-coding the scene graph node parent, -- client assets can decide which object that the CSM should be attached to. --- Usage example: registerCsm(asset, Apollo8.Idenfitier) +-- Usage example: createCsmModel(asset, Apollo8.Idenfitier) -- ...where Apollo8 is the scene graph node identifier to attach the CSM to. -local assetHelper = asset.require('util/asset_helper') -local sunTransforms = asset.require('scene/solarsystem/sun/transforms') +local asset_helper = asset.require('util/asset_helper') +local sun_transforms = asset.require('scene/solarsystem/sun/transforms') local models = asset.syncedResource({ Name = "Apollo Models", @@ -18,115 +18,115 @@ local partsInfo = { -- Data is structured as: Geometry file name (except .obj suffix), texture file name, shading -- Exterior - {"AP08_cone_command_module", "Command_module_diff.png", true}, - {"AP08_cone_hatchdoor_handle_scratched_metal", "scratched_metal_gloss.png", true}, - {"AP08_cone_vent_ports_black", "black.png", true}, - {"AP08_cone_vent_ports_red", "red.png", true}, - {"AP08_cone_hatchdoor_interior", "apollo_hatchdoor_interior.jpg", false}, + { "AP08_cone_command_module", "Command_module_diff.png", true }, + { "AP08_cone_hatchdoor_handle_scratched_metal", "scratched_metal_gloss.png", true }, + { "AP08_cone_vent_ports_black", "black.png", true }, + { "AP08_cone_vent_ports_red", "red.png", true }, + { "AP08_cone_hatchdoor_interior", "apollo_hatchdoor_interior.jpg", false }, - {"AP08_service_black", "black.png", true}, - {"AP08_service_brown", "brown.png", true}, - {"AP08_service_grey", "gray.png", true}, - {"AP08_service_high_gain_antenna", "Antenna_diff.png", true}, - {"AP08_service_module", "Service_module_diff.png", true}, - {"AP08_service_nozzle", "Nozzle_diff.png", true}, - {"AP08_service_pink", "pink.png", true}, - {"AP08_service_red", "red.png", true}, - {"AP08_service_scratched_metal", "scratched_metal_gloss.png", true}, - {"AP08_service_white", "white.png", true}, + { "AP08_service_black", "black.png", true }, + { "AP08_service_brown", "brown.png", true }, + { "AP08_service_grey", "gray.png", true }, + { "AP08_service_high_gain_antenna", "Antenna_diff.png", true }, + { "AP08_service_module", "Service_module_diff.png", true }, + { "AP08_service_nozzle", "Nozzle_diff.png", true }, + { "AP08_service_pink", "pink.png", true }, + { "AP08_service_red", "red.png", true }, + { "AP08_service_scratched_metal", "scratched_metal_gloss.png", true }, + { "AP08_service_white", "white.png", true }, -- Interior - -- {"AP11_int_back_wall_left", "AP11_int_back_wall_left.png", false}, - -- {"AP11_int_back_wall_right", "AP11_int_back_wall_right.png", false}, - -- {"AP11_interior_back_wall_top_0Shape3", "back_wall_top_0Shape3_tpAmbient_paint_03.png", false}, - -- {"AP11_interior_belt_buckles_02_L2", "belt_buckles_02_L2Shape_tpAmbient.png", false}, - -- {"AP11_interior_belt_straps_02", "belt_straps_02Shape_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_black_push_buttons", "push_buttonsShape_tpAmbient.png", false}, - -- {"AP11_interior_bottom_boxes_03", "bottom_boxes_03_paint_01.png", false}, - -- {"AP11_interior_bottom_floor_tp", "bottom_floor_tpAmbient_paint_v002.png", false}, - -- {"AP11_interior_box_back_01", "box_back_01_paint_v001.png", false}, - -- {"AP11_interior_box_back_02", "box_back_02_paint_v001.png", false}, - -- {"AP11_interior_box_back_04", "box_back_04_paint_v001.png", false}, - -- {"AP11_interior_box_lft_lower_01", "box_lft_lower_01Shape_Diffuse_paint_v002.png", false}, - -- {"AP11_interior_box_lft_top", "box_lft_topShape_Diffuse_paint_v009.png", false}, - -- {"AP11_interior_box_mid_tp", "box_mid_tpDiffuse_paint_v001.png", false}, - -- {"AP11_interior_box_rt_top_02", "box_rt_top_02_paint_04.png", false}, - -- {"AP11_interior_brushed_blue_ano", "brushed_blue_ano_paint_01.png", false}, - -- {"AP11_interior_brushed_brass", "brushed_brass_paint_01.png", false}, - -- {"AP11_interior_brushed_grey_ano", "brushed_grey_ano_paint_02.png", false}, - -- {"AP11_interior_canvas_cover", "canvas_coverShape_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_Channel_attachment", "Channel_attachment_Diffuse.png", false}, - -- {"AP11_interior_Channel_baseMetal", "Channel_baseMetal_Diffuse.png", false}, - -- {"AP11_interior_Channel_Material", "Channel_Material_Diffuse.png", false}, - -- {"AP11_interior_Channel_rsMaterial2", "Channel_rsMaterial2_Diffuse.png", false}, - -- {"AP11_interior_cloth_01", "cloth_01Shape_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_coiled_hose", "coiled_hoseShape_tpAmbient.png", false}, - -- {"AP11_interior_control_panel_left_win_plates", "control_panel_left_win_platesShape_tpAmbient.png", false}, - -- {"AP11_interior_control_panel_rt_win_plates", "control_panel_rt_win_platesShape_tpAmbient.png", false}, - -- {"AP11_interior_copper_parts_main_cp", "copper_parts_main_cpShape_tpAmbient.png", false}, - -- {"AP11_interior_dials_main2", "dials_main2Shape_tpAmbient.png", false}, - -- {"AP11_interior_dials_t2", "dials_t2Shape_tpAmbient.png", false}, - -- {"AP11_interior_dial_fixes_01", "dial_fixes_01Shape_tpAmbient.png", false}, - -- {"AP11_interior_fire_ex_02", "fire_ex_02_paint_v001.png", false}, - -- {"AP11_interior_floor_panels_3", "floor_panels_3Shape_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_floor_tile_tex_01", "floor_tile_tex_01.png", false}, - -- {"AP11_interior_grey", "gray.png", false}, - -- {"AP11_interior_handholds_cp", "handholds_cpShape_tpAmbient_paint_05.png", false}, - -- {"AP11_interior_hatch_release_0Shape5", "hatch_release_0Shape5_tpAmbient_paint_02.png", false}, - -- {"AP11_interior_headrests_02", "headrests_02Shape_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_hoses_black_01", "hoses_black_01Shape_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_hoses_white_0Shape1", "hoses_white_0Shape1_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_josticks1", "joysticks1Shape_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_joysticks_fabric1", "joysticks_fabric1_Shape_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_joystick_poles_lft_05", "joystick_poles_lft_05_paint_v002.png", false}, - -- {"AP11_interior_joystick_poles_lft_long_05", "joystick_poles_lft_long_05_paint_v002.png", false}, - -- {"AP11_interior_joystick_poles_rt_05", "joystick_poles_rt_05_paint_v002.png", false}, - -- {"AP11_interior_latch_mechanisms_01", "latch_mechanisms_01Shape_tpAmbient.png", false}, - -- {"AP11_interior_lower_push_buttons", "lower_push_buttonsShape_tpAmbient.png", false}, - -- {"AP11_interior_lower_walls_back", "lower_walls_back_paint_04.png", false}, - -- {"AP11_interior_lower_walls_boxes_head", "lower_walls_boxes_headShape_tpAmbient_paint_v001.png", false}, - -- {"AP11_interior_main_cp_left_smth_03", "main_cp_left_0Shape3_tpAmbient_paint_02.png", false}, - -- {"AP11_interior_main_cp_mid_smth_02", "main_cp_mid_smth_02Shape_tpAmbient_paint_02.png", false}, - -- {"AP11_interior_main_cp_rt_smth", "main_cp_rt_smthShape_tpAmbient_paint_02.png", false}, - -- {"AP11_interior_main_cp_wheels", "main_cp_wheelsShape_tpAmbient.png", false}, - -- {"AP11_interior_metal_brackets_under_hatch", "metal_brackets_under_hatchShape_tpAmbient.png", false}, - -- {"AP11_interior_metal_tunnel_parts", "metal_tunnel_partsShape_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_metal_window_parts", "metal_window_partsShape_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_middle_walls_05", "middle_walls_05_tpAmbient_paint_02.png", false}, - -- {"AP11_interior_middle_walls_0Shape8", "middle_walls_0Shape8_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_mid_tunnel_parts", "mid_tunnel_parts_03Shape_tpAmbient_paint_02.png", false}, - -- {"AP11_interior_new_switch_rails1", "new_switch_rails1Shape_tpAmbient.png", false}, - -- {"AP11_interior_nozzles_02", "nozzles_02Shape_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_outlet_fabric3", "outlet_fabric3Shape_tpAmbient_paint_02.png", false}, - -- {"AP11_interior_pole_end_02", "pole_end_02.png", false}, - -- {"AP11_interior_pole_end_03", "pole_end_03.png", false}, - -- {"AP11_interior_pole_tex_03", "pole_tex_03.png", false}, - -- {"AP11_interior_pole_tex_04", "pole_tex_04.png", false}, - -- {"AP11_interior_pole_tex_05", "pole_tex_05.png", false}, - -- {"AP11_interior_pole_tex_lower_01", "pole_tex_lower_01.png", false}, - -- {"AP11_interior_pole_under_seat_paint_01", "pole_under_seat_paint_01.png", false}, - -- {"AP11_interior_pole_under_seat_square_bar", "pole_under_seat_square_bar_paint_01.png", false}, - -- {"AP11_interior_push_switches_lft1", "push_switches_lft1Shape_tpAmbient.png", false}, - -- {"AP11_interior_random_small_parts_01", "random_small_parts_01Shape_tpAmbient_paint_02.png", false}, - -- {"AP11_interior_red", "red.png", false}, - -- {"AP11_interior_reticle_wheel_tp", "reticle_wheel_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_rivet_paint_v001", "rivet_paint_v001.png", false}, - -- {"AP11_interior_seats_fabric", "seats_fabric_paint_01.png", false}, - -- {"AP11_interior_seat_left_tp", "seat_left_tpAmbient_paint_v001.png", false}, - -- {"AP11_interior_seat_lights_left", "seat_lights_left_Shape_tpAmbient_paint_v001.png", false}, - -- {"AP11_interior_seat_lights_rt", "seat_lights_rt_Shape_tpAmbient_paint_v001.png", false}, - -- {"AP11_interior_seat_middle_tp", "seat_middle_tpAmbient_paint_v001.png", false}, - -- {"AP11_interior_seat_poles_0Shape1", "seat_poles_0Shape1_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_seat_pole_mirror_0Shape1", "seat_pole_mirror_0Shape1_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_seat_rt_tp", "seat_rt_tpAmbient_paint_v001.png", false}, - -- {"AP11_interior_sextant_0Shape2", "sextant_0Shape2_tpAmbient.png", false}, - -- {"AP11_interior_switch_covers_main_middle1", "switch_covers_main_middle1Shape_tpAmbient.png", false}, - -- {"AP11_interior_switch_rails_lft", "switch_rails_lftShape_tpAmbient.png", false}, - -- {"AP11_interior_tunnel_main_cylinder1", "switch_rails_lftShape_tpAmbient.png", false}, - -- {"AP11_interior_tunnel_switches_01", "tunnel_switches_01Shape_tpAmbient.png", false}, - -- {"AP11_interior_tunnel_wheelsShape", "tunnel_wheelsShape_tpAmbient.png", false}, - -- {"AP11_interior_walls_mid_left", "walls_mid_leftShape_tpAmbient_paint_01.png", false}, - -- {"AP11_interior_windows_front_0Shape4", "windows_front_0Shape4_tpAmbient_paint_01.png", false} + -- { "AP11_int_back_wall_left", "AP11_int_back_wall_left.png", false}, + -- { "AP11_int_back_wall_right", "AP11_int_back_wall_right.png", false }, + -- { "AP11_interior_back_wall_top_0Shape3", "back_wall_top_0Shape3_tpAmbient_paint_03.png", false }, + -- { "AP11_interior_belt_buckles_02_L2", "belt_buckles_02_L2Shape_tpAmbient.png", false }, + -- { "AP11_interior_belt_straps_02", "belt_straps_02Shape_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_black_push_buttons", "push_buttonsShape_tpAmbient.png", false }, + -- { "AP11_interior_bottom_boxes_03", "bottom_boxes_03_paint_01.png", false }, + -- { "AP11_interior_bottom_floor_tp", "bottom_floor_tpAmbient_paint_v002.png", false }, + -- { "AP11_interior_box_back_01", "box_back_01_paint_v001.png", false }, + -- { "AP11_interior_box_back_02", "box_back_02_paint_v001.png", false }, + -- { "AP11_interior_box_back_04", "box_back_04_paint_v001.png", false }, + -- { "AP11_interior_box_lft_lower_01", "box_lft_lower_01Shape_Diffuse_paint_v002.png", false }, + -- { "AP11_interior_box_lft_top", "box_lft_topShape_Diffuse_paint_v009.png", false }, + -- { "AP11_interior_box_mid_tp", "box_mid_tpDiffuse_paint_v001.png", false }, + -- { "AP11_interior_box_rt_top_02", "box_rt_top_02_paint_04.png", false }, + -- { "AP11_interior_brushed_blue_ano", "brushed_blue_ano_paint_01.png", false }, + -- { "AP11_interior_brushed_brass", "brushed_brass_paint_01.png", false }, + -- { "AP11_interior_brushed_grey_ano", "brushed_grey_ano_paint_02.png", false }, + -- { "AP11_interior_canvas_cover", "canvas_coverShape_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_Channel_attachment", "Channel_attachment_Diffuse.png", false }, + -- { "AP11_interior_Channel_baseMetal", "Channel_baseMetal_Diffuse.png", false }, + -- { "AP11_interior_Channel_Material", "Channel_Material_Diffuse.png", false }, + -- { "AP11_interior_Channel_rsMaterial2", "Channel_rsMaterial2_Diffuse.png", false }, + -- { "AP11_interior_cloth_01", "cloth_01Shape_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_coiled_hose", "coiled_hoseShape_tpAmbient.png", false }, + -- { "AP11_interior_control_panel_left_win_plates", "control_panel_left_win_platesShape_tpAmbient.png", false }, + -- { "AP11_interior_control_panel_rt_win_plates", "control_panel_rt_win_platesShape_tpAmbient.png", false }, + -- { "AP11_interior_copper_parts_main_cp", "copper_parts_main_cpShape_tpAmbient.png", false }, + -- { "AP11_interior_dials_main2", "dials_main2Shape_tpAmbient.png", false }, + -- { "AP11_interior_dials_t2", "dials_t2Shape_tpAmbient.png", false }, + -- { "AP11_interior_dial_fixes_01", "dial_fixes_01Shape_tpAmbient.png", false }, + -- { "AP11_interior_fire_ex_02", "fire_ex_02_paint_v001.png", false }, + -- { "AP11_interior_floor_panels_3", "floor_panels_3Shape_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_floor_tile_tex_01", "floor_tile_tex_01.png", false }, + -- { "AP11_interior_grey", "gray.png", false }, + -- { "AP11_interior_handholds_cp", "handholds_cpShape_tpAmbient_paint_05.png", false }, + -- { "AP11_interior_hatch_release_0Shape5", "hatch_release_0Shape5_tpAmbient_paint_02.png", false }, + -- { "AP11_interior_headrests_02", "headrests_02Shape_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_hoses_black_01", "hoses_black_01Shape_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_hoses_white_0Shape1", "hoses_white_0Shape1_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_josticks1", "joysticks1Shape_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_joysticks_fabric1", "joysticks_fabric1_Shape_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_joystick_poles_lft_05", "joystick_poles_lft_05_paint_v002.png", false }, + -- { "AP11_interior_joystick_poles_lft_long_05", "joystick_poles_lft_long_05_paint_v002.png", false }, + -- { "AP11_interior_joystick_poles_rt_05", "joystick_poles_rt_05_paint_v002.png", false }, + -- { "AP11_interior_latch_mechanisms_01", "latch_mechanisms_01Shape_tpAmbient.png", false }, + -- { "AP11_interior_lower_push_buttons", "lower_push_buttonsShape_tpAmbient.png", false }, + -- { "AP11_interior_lower_walls_back", "lower_walls_back_paint_04.png", false }, + -- { "AP11_interior_lower_walls_boxes_head", "lower_walls_boxes_headShape_tpAmbient_paint_v001.png", false }, + -- { "AP11_interior_main_cp_left_smth_03", "main_cp_left_0Shape3_tpAmbient_paint_02.png", false }, + -- { "AP11_interior_main_cp_mid_smth_02", "main_cp_mid_smth_02Shape_tpAmbient_paint_02.png", false }, + -- { "AP11_interior_main_cp_rt_smth", "main_cp_rt_smthShape_tpAmbient_paint_02.png", false }, + -- { "AP11_interior_main_cp_wheels", "main_cp_wheelsShape_tpAmbient.png", false }, + -- { "AP11_interior_metal_brackets_under_hatch", "metal_brackets_under_hatchShape_tpAmbient.png", false }, + -- { "AP11_interior_metal_tunnel_parts", "metal_tunnel_partsShape_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_metal_window_parts", "metal_window_partsShape_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_middle_walls_05", "middle_walls_05_tpAmbient_paint_02.png", false }, + -- { "AP11_interior_middle_walls_0Shape8", "middle_walls_0Shape8_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_mid_tunnel_parts", "mid_tunnel_parts_03Shape_tpAmbient_paint_02.png", false }, + -- { "AP11_interior_new_switch_rails1", "new_switch_rails1Shape_tpAmbient.png", false }, + -- { "AP11_interior_nozzles_02", "nozzles_02Shape_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_outlet_fabric3", "outlet_fabric3Shape_tpAmbient_paint_02.png", false }, + -- { "AP11_interior_pole_end_02", "pole_end_02.png", false }, + -- { "AP11_interior_pole_end_03", "pole_end_03.png", false }, + -- { "AP11_interior_pole_tex_03", "pole_tex_03.png", false }, + -- { "AP11_interior_pole_tex_04", "pole_tex_04.png", false }, + -- { "AP11_interior_pole_tex_05", "pole_tex_05.png", false }, + -- { "AP11_interior_pole_tex_lower_01", "pole_tex_lower_01.png", false }, + -- { "AP11_interior_pole_under_seat_paint_01", "pole_under_seat_paint_01.png", false }, + -- { "AP11_interior_pole_under_seat_square_bar", "pole_under_seat_square_bar_paint_01.png", false }, + -- { "AP11_interior_push_switches_lft1", "push_switches_lft1Shape_tpAmbient.png", false }, + -- { "AP11_interior_random_small_parts_01", "random_small_parts_01Shape_tpAmbient_paint_02.png", false }, + -- { "AP11_interior_red", "red.png", false }, + -- { "AP11_interior_reticle_wheel_tp", "reticle_wheel_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_rivet_paint_v001", "rivet_paint_v001.png", false }, + -- { "AP11_interior_seats_fabric", "seats_fabric_paint_01.png", false }, + -- { "AP11_interior_seat_left_tp", "seat_left_tpAmbient_paint_v001.png", false }, + -- { "AP11_interior_seat_lights_left", "seat_lights_left_Shape_tpAmbient_paint_v001.png", false }, + -- { "AP11_interior_seat_lights_rt", "seat_lights_rt_Shape_tpAmbient_paint_v001.png", false }, + -- { "AP11_interior_seat_middle_tp", "seat_middle_tpAmbient_paint_v001.png", false }, + -- { "AP11_interior_seat_poles_0Shape1", "seat_poles_0Shape1_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_seat_pole_mirror_0Shape1", "seat_pole_mirror_0Shape1_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_seat_rt_tp", "seat_rt_tpAmbient_paint_v001.png", false }, + -- { "AP11_interior_sextant_0Shape2", "sextant_0Shape2_tpAmbient.png", false }, + -- { "AP11_interior_switch_covers_main_middle1", "switch_covers_main_middle1Shape_tpAmbient.png", false }, + -- { "AP11_interior_switch_rails_lft", "switch_rails_lftShape_tpAmbient.png", false }, + -- { "AP11_interior_tunnel_main_cylinder1", "switch_rails_lftShape_tpAmbient.png", false }, + -- { "AP11_interior_tunnel_switches_01", "tunnel_switches_01Shape_tpAmbient.png", false }, + -- { "AP11_interior_tunnel_wheelsShape", "tunnel_wheelsShape_tpAmbient.png", false }, + -- { "AP11_interior_walls_mid_left", "walls_mid_leftShape_tpAmbient_paint_01.png", false }, + -- { "AP11_interior_windows_front_0Shape4", "windows_front_0Shape4_tpAmbient_paint_01.png", false } } @@ -134,147 +134,147 @@ local partsInfoFull = { -- Data is structured as: Geometry file name (except .obj suffix), texture file name, shading -- Exterior - {"AP08_cone_command_module", "Command_module_diff.png", true}, - {"AP08_cone_hatchdoor_handle_scratched_metal", "scratched_metal_gloss.png", true}, - {"AP08_cone_vent_ports_black", "black.png", true}, - {"AP08_cone_vent_ports_red", "red.png", true}, - {"AP08_cone_hatchdoor_interior", "apollo_hatchdoor_interior.jpg", false}, + { "AP08_cone_command_module", "Command_module_diff.png", true }, + { "AP08_cone_hatchdoor_handle_scratched_metal", "scratched_metal_gloss.png", true }, + { "AP08_cone_vent_ports_black", "black.png", true }, + { "AP08_cone_vent_ports_red", "red.png", true }, + { "AP08_cone_hatchdoor_interior", "apollo_hatchdoor_interior.jpg", false }, - {"AP08_service_black", "black.png", true}, - {"AP08_service_brown", "brown.png", true}, - {"AP08_service_grey", "gray.png", true}, - {"AP08_service_high_gain_antenna", "Antenna_diff.png", true}, - {"AP08_service_module", "Service_module_diff.png", true}, - {"AP08_service_nozzle", "Nozzle_diff.png", true}, - {"AP08_service_pink", "pink.png", true}, - {"AP08_service_red", "red.png", true}, - {"AP08_service_scratched_metal", "scratched_metal_gloss.png", true}, - {"AP08_service_white", "white.png", true}, + { "AP08_service_black", "black.png", true }, + { "AP08_service_brown", "brown.png", true }, + { "AP08_service_grey", "gray.png", true }, + { "AP08_service_high_gain_antenna", "Antenna_diff.png", true }, + { "AP08_service_module", "Service_module_diff.png", true }, + { "AP08_service_nozzle", "Nozzle_diff.png", true }, + { "AP08_service_pink", "pink.png", true }, + { "AP08_service_red", "red.png", true }, + { "AP08_service_scratched_metal", "scratched_metal_gloss.png", true }, + { "AP08_service_white", "white.png", true }, -- Interior - {"AP11_int_back_wall_left", "AP11_int_back_wall_left.png", false}, - {"AP11_int_back_wall_right", "AP11_int_back_wall_right.png", false}, - {"AP11_interior_back_wall_top_0Shape3", "back_wall_top_0Shape3_tpAmbient_paint_03.png", false}, - {"AP11_interior_belt_buckles_02_L2", "belt_buckles_02_L2Shape_tpAmbient.png", false}, - {"AP11_interior_belt_straps_02", "belt_straps_02Shape_tpAmbient_paint_01.png", false}, - {"AP11_interior_black_push_buttons", "push_buttonsShape_tpAmbient.png", false}, - {"AP11_interior_bottom_boxes_03", "bottom_boxes_03_paint_01.png", false}, - {"AP11_interior_bottom_floor_tp", "bottom_floor_tpAmbient_paint_v002.png", false}, - {"AP11_interior_box_back_01", "box_back_01_paint_v001.png", false}, - {"AP11_interior_box_back_02", "box_back_02_paint_v001.png", false}, - {"AP11_interior_box_back_04", "box_back_04_paint_v001.png", false}, - {"AP11_interior_box_lft_lower_01", "box_lft_lower_01Shape_Diffuse_paint_v002.png", false}, - {"AP11_interior_box_lft_top", "box_lft_topShape_Diffuse_paint_v009.png", false}, - {"AP11_interior_box_mid_tp", "box_mid_tpDiffuse_paint_v001.png", false}, - {"AP11_interior_box_rt_top_02", "box_rt_top_02_paint_04.png", false}, - {"AP11_interior_brushed_blue_ano", "brushed_blue_ano_paint_01.png", false}, - {"AP11_interior_brushed_brass", "brushed_brass_paint_01.png", false}, - {"AP11_interior_brushed_grey_ano", "brushed_grey_ano_paint_02.png", false}, - {"AP11_interior_canvas_cover", "canvas_coverShape_tpAmbient_paint_01.png", false}, - {"AP11_interior_Channel_attachment", "Channel_attachment_Diffuse.png", false}, - {"AP11_interior_Channel_baseMetal", "Channel_baseMetal_Diffuse.png", false}, - {"AP11_interior_Channel_Material", "Channel_Material_Diffuse.png", false}, - {"AP11_interior_Channel_rsMaterial2", "Channel_rsMaterial2_Diffuse.png", false}, - {"AP11_interior_cloth_01", "cloth_01Shape_tpAmbient_paint_01.png", false}, - {"AP11_interior_coiled_hose", "coiled_hoseShape_tpAmbient.png", false}, - {"AP11_interior_control_panel_left_win_plates", "control_panel_left_win_platesShape_tpAmbient.png", false}, - {"AP11_interior_control_panel_rt_win_plates", "control_panel_rt_win_platesShape_tpAmbient.png", false}, - {"AP11_interior_copper_parts_main_cp", "copper_parts_main_cpShape_tpAmbient.png", false}, - {"AP11_interior_dials_main2", "dials_main2Shape_tpAmbient.png", false}, - {"AP11_interior_dials_t2", "dials_t2Shape_tpAmbient.png", false}, - {"AP11_interior_dial_fixes_01", "dial_fixes_01Shape_tpAmbient.png", false}, - {"AP11_interior_fire_ex_02", "fire_ex_02_paint_v001.png", false}, - {"AP11_interior_floor_panels_3", "floor_panels_3Shape_tpAmbient_paint_01.png", false}, - {"AP11_interior_floor_tile_tex_01", "floor_tile_tex_01.png", false}, - {"AP11_interior_grey", "gray.png", false}, - {"AP11_interior_handholds_cp", "handholds_cpShape_tpAmbient_paint_05.png", false}, - {"AP11_interior_hatch_release_0Shape5", "hatch_release_0Shape5_tpAmbient_paint_02.png", false}, - {"AP11_interior_headrests_02", "headrests_02Shape_tpAmbient_paint_01.png", false}, - {"AP11_interior_hoses_black_01", "hoses_black_01Shape_tpAmbient_paint_01.png", false}, - {"AP11_interior_hoses_white_0Shape1", "hoses_white_0Shape1_tpAmbient_paint_01.png", false}, - {"AP11_interior_josticks1", "joysticks1Shape_tpAmbient_paint_01.png", false}, - {"AP11_interior_joysticks_fabric1", "joysticks_fabric1_Shape_tpAmbient_paint_01.png", false}, - {"AP11_interior_joystick_poles_lft_05", "joystick_poles_lft_05_paint_v002.png", false}, - {"AP11_interior_joystick_poles_lft_long_05", "joystick_poles_lft_long_05_paint_v002.png", false}, - {"AP11_interior_joystick_poles_rt_05", "joystick_poles_rt_05_paint_v002.png", false}, - {"AP11_interior_latch_mechanisms_01", "latch_mechanisms_01Shape_tpAmbient.png", false}, - {"AP11_interior_lower_push_buttons", "lower_push_buttonsShape_tpAmbient.png", false}, - {"AP11_interior_lower_walls_back", "lower_walls_back_paint_04.png", false}, - {"AP11_interior_lower_walls_boxes_head", "lower_walls_boxes_headShape_tpAmbient_paint_v001.png", false}, - {"AP11_interior_main_cp_left_smth_03", "main_cp_left_0Shape3_tpAmbient_paint_02.png", false}, - {"AP11_interior_main_cp_mid_smth_02", "main_cp_mid_smth_02Shape_tpAmbient_paint_02.png", false}, - {"AP11_interior_main_cp_rt_smth", "main_cp_rt_smthShape_tpAmbient_paint_02.png", false}, - {"AP11_interior_main_cp_wheels", "main_cp_wheelsShape_tpAmbient.png", false}, - {"AP11_interior_metal_brackets_under_hatch", "metal_brackets_under_hatchShape_tpAmbient.png", false}, - {"AP11_interior_metal_tunnel_parts", "metal_tunnel_partsShape_tpAmbient_paint_01.png", false}, - {"AP11_interior_metal_window_parts", "metal_window_partsShape_tpAmbient_paint_01.png", false}, - {"AP11_interior_middle_walls_05", "middle_walls_05_tpAmbient_paint_02.png", false}, - {"AP11_interior_middle_walls_0Shape8", "middle_walls_0Shape8_tpAmbient_paint_01.png", false}, - {"AP11_interior_mid_tunnel_parts", "mid_tunnel_parts_03Shape_tpAmbient_paint_02.png", false}, - {"AP11_interior_new_switch_rails1", "new_switch_rails1Shape_tpAmbient.png", false}, - {"AP11_interior_nozzles_02", "nozzles_02Shape_tpAmbient_paint_01.png", false}, - {"AP11_interior_outlet_fabric3", "outlet_fabric3Shape_tpAmbient_paint_02.png", false}, - {"AP11_interior_pole_end_02", "pole_end_02.png", false}, - {"AP11_interior_pole_end_03", "pole_end_03.png", false}, - {"AP11_interior_pole_tex_03", "pole_tex_03.png", false}, - {"AP11_interior_pole_tex_04", "pole_tex_04.png", false}, - {"AP11_interior_pole_tex_05", "pole_tex_05.png", false}, - {"AP11_interior_pole_tex_lower_01", "pole_tex_lower_01.png", false}, - {"AP11_interior_pole_under_seat_paint_01", "pole_under_seat_paint_01.png", false}, - {"AP11_interior_pole_under_seat_square_bar", "pole_under_seat_square_bar_paint_01.png", false}, - {"AP11_interior_push_switches_lft1", "push_switches_lft1Shape_tpAmbient.png", false}, - {"AP11_interior_random_small_parts_01", "random_small_parts_01Shape_tpAmbient_paint_02.png", false}, - {"AP11_interior_red", "red.png", false}, - {"AP11_interior_reticle_wheel_tp", "reticle_wheel_tpAmbient_paint_01.png", false}, - {"AP11_interior_rivet_paint_v001", "rivet_paint_v001.png", false}, - {"AP11_interior_seats_fabric", "seats_fabric_paint_01.png", false}, - {"AP11_interior_seat_left_tp", "seat_left_tpAmbient_paint_v001.png", false}, - {"AP11_interior_seat_lights_left", "seat_lights_left_Shape_tpAmbient_paint_v001.png", false}, - {"AP11_interior_seat_lights_rt", "seat_lights_rt_Shape_tpAmbient_paint_v001.png", false}, - {"AP11_interior_seat_middle_tp", "seat_middle_tpAmbient_paint_v001.png", false}, - {"AP11_interior_seat_poles_0Shape1", "seat_poles_0Shape1_tpAmbient_paint_01.png", false}, - {"AP11_interior_seat_pole_mirror_0Shape1", "seat_pole_mirror_0Shape1_tpAmbient_paint_01.png", false}, - {"AP11_interior_seat_rt_tp", "seat_rt_tpAmbient_paint_v001.png", false}, - {"AP11_interior_sextant_0Shape2", "sextant_0Shape2_tpAmbient.png", false}, - {"AP11_interior_switch_covers_main_middle1", "switch_covers_main_middle1Shape_tpAmbient.png", false}, - {"AP11_interior_switch_rails_lft", "switch_rails_lftShape_tpAmbient.png", false}, - {"AP11_interior_tunnel_main_cylinder1", "switch_rails_lftShape_tpAmbient.png", false}, - {"AP11_interior_tunnel_switches_01", "tunnel_switches_01Shape_tpAmbient.png", false}, - {"AP11_interior_tunnel_wheelsShape", "tunnel_wheelsShape_tpAmbient.png", false}, - {"AP11_interior_walls_mid_left", "walls_mid_leftShape_tpAmbient_paint_01.png", false}, - {"AP11_interior_windows_front_0Shape4", "windows_front_0Shape4_tpAmbient_paint_01.png", false} + { "AP11_int_back_wall_left", "AP11_int_back_wall_left.png", false }, + { "AP11_int_back_wall_right", "AP11_int_back_wall_right.png", false }, + { "AP11_interior_back_wall_top_0Shape3", "back_wall_top_0Shape3_tpAmbient_paint_03.png", false }, + { "AP11_interior_belt_buckles_02_L2", "belt_buckles_02_L2Shape_tpAmbient.png", false }, + { "AP11_interior_belt_straps_02", "belt_straps_02Shape_tpAmbient_paint_01.png", false }, + { "AP11_interior_black_push_buttons", "push_buttonsShape_tpAmbient.png", false }, + { "AP11_interior_bottom_boxes_03", "bottom_boxes_03_paint_01.png", false }, + { "AP11_interior_bottom_floor_tp", "bottom_floor_tpAmbient_paint_v002.png", false }, + { "AP11_interior_box_back_01", "box_back_01_paint_v001.png", false }, + { "AP11_interior_box_back_02", "box_back_02_paint_v001.png", false }, + { "AP11_interior_box_back_04", "box_back_04_paint_v001.png", false }, + { "AP11_interior_box_lft_lower_01", "box_lft_lower_01Shape_Diffuse_paint_v002.png", false }, + { "AP11_interior_box_lft_top", "box_lft_topShape_Diffuse_paint_v009.png", false }, + { "AP11_interior_box_mid_tp", "box_mid_tpDiffuse_paint_v001.png", false }, + { "AP11_interior_box_rt_top_02", "box_rt_top_02_paint_04.png", false }, + { "AP11_interior_brushed_blue_ano", "brushed_blue_ano_paint_01.png", false }, + { "AP11_interior_brushed_brass", "brushed_brass_paint_01.png", false }, + { "AP11_interior_brushed_grey_ano", "brushed_grey_ano_paint_02.png", false }, + { "AP11_interior_canvas_cover", "canvas_coverShape_tpAmbient_paint_01.png", false }, + { "AP11_interior_Channel_attachment", "Channel_attachment_Diffuse.png", false }, + { "AP11_interior_Channel_baseMetal", "Channel_baseMetal_Diffuse.png", false }, + { "AP11_interior_Channel_Material", "Channel_Material_Diffuse.png", false }, + { "AP11_interior_Channel_rsMaterial2", "Channel_rsMaterial2_Diffuse.png", false }, + { "AP11_interior_cloth_01", "cloth_01Shape_tpAmbient_paint_01.png", false }, + { "AP11_interior_coiled_hose", "coiled_hoseShape_tpAmbient.png", false }, + { "AP11_interior_control_panel_left_win_plates", "control_panel_left_win_platesShape_tpAmbient.png", false }, + { "AP11_interior_control_panel_rt_win_plates", "control_panel_rt_win_platesShape_tpAmbient.png", false }, + { "AP11_interior_copper_parts_main_cp", "copper_parts_main_cpShape_tpAmbient.png", false }, + { "AP11_interior_dials_main2", "dials_main2Shape_tpAmbient.png", false }, + { "AP11_interior_dials_t2", "dials_t2Shape_tpAmbient.png", false }, + { "AP11_interior_dial_fixes_01", "dial_fixes_01Shape_tpAmbient.png", false }, + { "AP11_interior_fire_ex_02", "fire_ex_02_paint_v001.png", false }, + { "AP11_interior_floor_panels_3", "floor_panels_3Shape_tpAmbient_paint_01.png", false }, + { "AP11_interior_floor_tile_tex_01", "floor_tile_tex_01.png", false }, + { "AP11_interior_grey", "gray.png", false }, + { "AP11_interior_handholds_cp", "handholds_cpShape_tpAmbient_paint_05.png", false }, + { "AP11_interior_hatch_release_0Shape5", "hatch_release_0Shape5_tpAmbient_paint_02.png", false }, + { "AP11_interior_headrests_02", "headrests_02Shape_tpAmbient_paint_01.png", false }, + { "AP11_interior_hoses_black_01", "hoses_black_01Shape_tpAmbient_paint_01.png", false }, + { "AP11_interior_hoses_white_0Shape1", "hoses_white_0Shape1_tpAmbient_paint_01.png", false }, + { "AP11_interior_josticks1", "joysticks1Shape_tpAmbient_paint_01.png", false }, + { "AP11_interior_joysticks_fabric1", "joysticks_fabric1_Shape_tpAmbient_paint_01.png", false }, + { "AP11_interior_joystick_poles_lft_05", "joystick_poles_lft_05_paint_v002.png", false }, + { "AP11_interior_joystick_poles_lft_long_05", "joystick_poles_lft_long_05_paint_v002.png", false }, + { "AP11_interior_joystick_poles_rt_05", "joystick_poles_rt_05_paint_v002.png", false }, + { "AP11_interior_latch_mechanisms_01", "latch_mechanisms_01Shape_tpAmbient.png", false }, + { "AP11_interior_lower_push_buttons", "lower_push_buttonsShape_tpAmbient.png", false }, + { "AP11_interior_lower_walls_back", "lower_walls_back_paint_04.png", false }, + { "AP11_interior_lower_walls_boxes_head", "lower_walls_boxes_headShape_tpAmbient_paint_v001.png", false }, + { "AP11_interior_main_cp_left_smth_03", "main_cp_left_0Shape3_tpAmbient_paint_02.png", false }, + { "AP11_interior_main_cp_mid_smth_02", "main_cp_mid_smth_02Shape_tpAmbient_paint_02.png", false }, + { "AP11_interior_main_cp_rt_smth", "main_cp_rt_smthShape_tpAmbient_paint_02.png", false }, + { "AP11_interior_main_cp_wheels", "main_cp_wheelsShape_tpAmbient.png", false }, + { "AP11_interior_metal_brackets_under_hatch", "metal_brackets_under_hatchShape_tpAmbient.png", false }, + { "AP11_interior_metal_tunnel_parts", "metal_tunnel_partsShape_tpAmbient_paint_01.png", false }, + { "AP11_interior_metal_window_parts", "metal_window_partsShape_tpAmbient_paint_01.png", false }, + { "AP11_interior_middle_walls_05", "middle_walls_05_tpAmbient_paint_02.png", false }, + { "AP11_interior_middle_walls_0Shape8", "middle_walls_0Shape8_tpAmbient_paint_01.png", false }, + { "AP11_interior_mid_tunnel_parts", "mid_tunnel_parts_03Shape_tpAmbient_paint_02.png", false }, + { "AP11_interior_new_switch_rails1", "new_switch_rails1Shape_tpAmbient.png", false }, + { "AP11_interior_nozzles_02", "nozzles_02Shape_tpAmbient_paint_01.png", false }, + { "AP11_interior_outlet_fabric3", "outlet_fabric3Shape_tpAmbient_paint_02.png", false }, + { "AP11_interior_pole_end_02", "pole_end_02.png", false }, + { "AP11_interior_pole_end_03", "pole_end_03.png", false }, + { "AP11_interior_pole_tex_03", "pole_tex_03.png", false }, + { "AP11_interior_pole_tex_04", "pole_tex_04.png", false }, + { "AP11_interior_pole_tex_05", "pole_tex_05.png", false }, + { "AP11_interior_pole_tex_lower_01", "pole_tex_lower_01.png", false }, + { "AP11_interior_pole_under_seat_paint_01", "pole_under_seat_paint_01.png", false }, + { "AP11_interior_pole_under_seat_square_bar", "pole_under_seat_square_bar_paint_01.png", false }, + { "AP11_interior_push_switches_lft1", "push_switches_lft1Shape_tpAmbient.png", false }, + { "AP11_interior_random_small_parts_01", "random_small_parts_01Shape_tpAmbient_paint_02.png", false }, + { "AP11_interior_red", "red.png", false }, + { "AP11_interior_reticle_wheel_tp", "reticle_wheel_tpAmbient_paint_01.png", false }, + { "AP11_interior_rivet_paint_v001", "rivet_paint_v001.png", false }, + { "AP11_interior_seats_fabric", "seats_fabric_paint_01.png", false }, + { "AP11_interior_seat_left_tp", "seat_left_tpAmbient_paint_v001.png", false }, + { "AP11_interior_seat_lights_left", "seat_lights_left_Shape_tpAmbient_paint_v001.png", false }, + { "AP11_interior_seat_lights_rt", "seat_lights_rt_Shape_tpAmbient_paint_v001.png", false }, + { "AP11_interior_seat_middle_tp", "seat_middle_tpAmbient_paint_v001.png", false }, + { "AP11_interior_seat_poles_0Shape1", "seat_poles_0Shape1_tpAmbient_paint_01.png", false }, + { "AP11_interior_seat_pole_mirror_0Shape1", "seat_pole_mirror_0Shape1_tpAmbient_paint_01.png", false }, + { "AP11_interior_seat_rt_tp", "seat_rt_tpAmbient_paint_v001.png", false }, + { "AP11_interior_sextant_0Shape2", "sextant_0Shape2_tpAmbient.png", false }, + { "AP11_interior_switch_covers_main_middle1", "switch_covers_main_middle1Shape_tpAmbient.png", false }, + { "AP11_interior_switch_rails_lft", "switch_rails_lftShape_tpAmbient.png", false }, + { "AP11_interior_tunnel_main_cylinder1", "switch_rails_lftShape_tpAmbient.png", false }, + { "AP11_interior_tunnel_switches_01", "tunnel_switches_01Shape_tpAmbient.png", false }, + { "AP11_interior_tunnel_wheelsShape", "tunnel_wheelsShape_tpAmbient.png", false }, + { "AP11_interior_walls_mid_left", "walls_mid_leftShape_tpAmbient_paint_01.png", false }, + { "AP11_interior_windows_front_0Shape4", "windows_front_0Shape4_tpAmbient_paint_01.png", false } } -asset.export("registerCsm", function (asset, parentNodeIdentifier) +asset.export("createCsmModel", function (parentNodeIdentifier) local parts = {} for i, info in ipairs(partsInfo) do - parts[#parts + 1] = assetHelper.createModelPart( + parts[#parts + 1] = asset_helper.createModelPart( parentNodeIdentifier, - sunTransforms.SolarSystemBarycenter.Identifier, + sun_transforms.SolarSystemBarycenter.Identifier, models, info[1], info[2], info[3] ) end - assetHelper.registerSceneGraphNodesAndExport(asset, parts) + return parts end) -asset.export("registerCsmFull", function (asset, parentNodeIdentifier) +asset.export("createCsmModelFull", function (parentNodeIdentifier) local parts = {} for i, info in ipairs(partsInfoFull) do - parts[#parts + 1] = assetHelper.createModelPart( + parts[#parts + 1] = asset_helper.createModelPart( parentNodeIdentifier, - sunTransforms.SolarSystemBarycenter.Identifier, + sun_transforms.SolarSystemBarycenter.Identifier, models, info[1], info[2], info[3] ) end - assetHelper.registerSceneGraphNodesAndExport(asset, parts) -end) \ No newline at end of file + return parts +end) diff --git a/data/assets/scene/solarsystem/missions/apollo/apollo_globebrowsing.asset b/data/assets/scene/solarsystem/missions/apollo/apollo_globebrowsing.asset index fb9f1e14c5..c9664a8eeb 100644 --- a/data/assets/scene/solarsystem/missions/apollo/apollo_globebrowsing.asset +++ b/data/assets/scene/solarsystem/missions/apollo/apollo_globebrowsing.asset @@ -1,5 +1,5 @@ --apollo_globebrowsing.asset - +local moon_transforms = asset.require('scene/solarsystem/planets/earth/moon/moon') local heightmaps = asset.syncedResource({ Name = "Apollo Globebrowsing Heightmaps", @@ -30,8 +30,8 @@ local stations = asset.syncedResource({ }) asset.onInitialize(function () - openspace.globebrowsing.addBlendingLayersFromDirectory(heightmaps, "Moon") - openspace.globebrowsing.addBlendingLayersFromDirectory(basemaps, "Moon") - openspace.globebrowsing.addBlendingLayersFromDirectory(naclighting, "Moon") - openspace.globebrowsing.addBlendingLayersFromDirectory(stations, "Moon") + openspace.globebrowsing.addBlendingLayersFromDirectory(heightmaps, moon_transforms.Moon.Identifier) + openspace.globebrowsing.addBlendingLayersFromDirectory(basemaps, moon_transforms.Moon.Identifier) + openspace.globebrowsing.addBlendingLayersFromDirectory(naclighting, moon_transforms.Moon.Identifier) + openspace.globebrowsing.addBlendingLayersFromDirectory(stations, moon_transforms.Moon.Identifier) end) diff --git a/data/assets/scene/solarsystem/missions/apollo/apollo_lem.asset b/data/assets/scene/solarsystem/missions/apollo/apollo_lem.asset index 4a7a820d76..9fb6f204ef 100644 --- a/data/assets/scene/solarsystem/missions/apollo/apollo_lem.asset +++ b/data/assets/scene/solarsystem/missions/apollo/apollo_lem.asset @@ -3,11 +3,11 @@ -- This asset exports a function to create an Apollo Lunar Excursion Module (LEM). -- Instead of hard-coding the scene graph node parent, -- client assets can decide which object that the LEM should be attached to. --- Usage example: registerLem(asset, Apollo11Lem.Idenfitier) +-- Usage example: createLem(Apollo11Lem.Idenfitier) -- ...where Apollo11Lem is the scene graph node identifier to attach the LEM to. -local assetHelper = asset.require('util/asset_helper') -local sunTransforms = asset.require('scene/solarsystem/sun/transforms') +local asset_helper = asset.require('util/asset_helper') +local sun_transforms = asset.require('scene/solarsystem/sun/transforms') local models = asset.syncedResource({ Name = "Apollo Models", @@ -35,17 +35,17 @@ local partsInfo = { } -asset.export("registerLem", function (asset, parentNodeIdentifier) +asset.export("createLem", function (parentNodeIdentifier) local parts = {} for i, info in ipairs(partsInfo) do - parts[#parts + 1] = assetHelper.createModelPart( + parts[#parts + 1] = asset_helper.createModelPart( parentNodeIdentifier, - sunTransforms.SolarSystemBarycenter.Identifier, + sun_transforms.SolarSystemBarycenter.Identifier, models, info[1], info[2], info[3] ) end - assetHelper.registerSceneGraphNodesAndExport(asset, parts) + return parts end) diff --git a/data/assets/scene/solarsystem/missions/apollo/insignias_map.asset b/data/assets/scene/solarsystem/missions/apollo/insignias_map.asset index 7aa0159960..6df2f26d4b 100644 --- a/data/assets/scene/solarsystem/missions/apollo/insignias_map.asset +++ b/data/assets/scene/solarsystem/missions/apollo/insignias_map.asset @@ -2,7 +2,7 @@ -- The insignias are invisible by default, but can be enabled using shown or hidden using -- the exported functions `showInsignias(interpolationDuration)` and `hideInsignias(interpolationDuration)`. -local assetHelper = asset.require('util/asset_helper') +local asset_helper = asset.require('util/asset_helper') local insigniasPath = asset.syncedResource({ Name = "Apollo Insignias", @@ -18,37 +18,37 @@ local landingData = { Name = "Apollo 11", Name = "Apollo 11", Texture = "apollo11.png", - LunarModule = {0.67409, 23.47298, 0.0}, + LunarModule = { 0.67409, 23.47298, 0.0 } }, { Identifier = "Apollo12", Name = "Apollo 12", Texture = "apollo12.png", - LunarModule = {-3.01381, -23.41930, 0.0} + LunarModule = { -3.01381, -23.41930, 0.0 } }, { Identifier = "Apollo14", Name = "Apollo 14", Texture = "apollo14.png", - LunarModule = {-3.64544, -17.47139, 0.0} + LunarModule = { -3.64544, -17.47139, 0.0 } }, { Identifier = "Apollo15", Name = "Apollo 15", Texture = "apollo15.png", - LunarModule = {26.13224, 3.63400, 0.0} + LunarModule = { 26.13224, 3.63400, 0.0 } }, { Identifier = "Apollo16", Name = "Apollo 16", Texture = "apollo16.png", - LunarModule = {-8.97341, 15.49859, 0.0} + LunarModule = { -8.97341, 15.49859, 0.0 } }, { Identifier = "Apollo17", Name = "Apollo 17", Texture = "apollo17.png", - LunarModule = {20.18809, 30.77475, 0.0} + LunarModule = { 20.18809, 30.77475, 0.0 } } } @@ -117,4 +117,4 @@ asset.export('hideInsignias', function (interpolationDuration) openspace.setPropertyValue("Scene.Apollo*Insignia.Renderable.Opacity", 0, interpolationDuration) end) -assetHelper.registerSceneGraphNodesAndExport(asset, nodes) \ No newline at end of file +asset_helper.registerSceneGraphNodesAndExport(asset, nodes) diff --git a/data/assets/scene/solarsystem/missions/gaia/dashboard.asset b/data/assets/scene/solarsystem/missions/gaia/dashboard.asset new file mode 100644 index 0000000000..bac51a5ad2 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/gaia/dashboard.asset @@ -0,0 +1,12 @@ +local assetHelper = asset.require('util/asset_helper') +assetHelper.registerDashboardItems(asset, { + { + Type = "DashboardItemDistance", + Identifier = "GaiaEarthDistance", + GuiName = "Gaia Earth Distance", + SourceType = "Node", + SourceNodeName = "Gaia", + DestinationType = "Node Surface", + DestinationNodeName = "Earth" + } +}) diff --git a/data/assets/scene/solarsystem/missions/insight/shortcuts.asset b/data/assets/scene/solarsystem/missions/insight/shortcuts.asset new file mode 100644 index 0000000000..a5154e9fca --- /dev/null +++ b/data/assets/scene/solarsystem/missions/insight/shortcuts.asset @@ -0,0 +1,62 @@ +--insight/shortcuts.asset + +local InsightEntryTime = "2018 NOV 26 19:39:03.68" + +local insightNavigationSate = "{" .. + "Anchor = 'Insight'," .. + "Pitch = 0.567457E-4," .. + "Position = { 1.240506E1,-1.369270E1,-2.423553E0 }," .. + "ReferenceFrame = 'Root',".. + "Up = { 0.441211E0,0.247019E0,0.862737E0 }," .. + "Yaw = -0.446853E-4}" + +local Shortcuts = { + { + Command = "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', -469.300000);" .. + "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', -470.800006);", + Documentation = "Enable Insight landing height layer offset", + Name = "Insight Height Offset", + GuiPath = "/Missions/Insight", + Local = false + }, + { + Command = "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', 0);" .. + "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', 0);", + Documentation = "Disable Insight landing height layer offset", + Name = "Default Height Offset", + GuiPath = "/Missions/Insight", + Local = false + }, + { + Command = "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', true);" .. + "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', true);", + Documentation = "Enables HiRISE layer for insight landing", + Name = "Enable HiRISE", + GuiPath = "/Missions/Insight", + Local = false + }, + { + Command = "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', false);" .. + "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', false);", + Documentation = "Disables HiRISE layer used for insight landing", + Name = "Disable HiRISE", + GuiPath = "/Missions/Insight", + Local = false + }, + { + Command = "openspace.navigation.setNavigationState(" .. insightNavigationSate .. ");", + Documentation = "Change the camera state for the start of Insight EDL", + Name = "Insight EDL NavigationState", + GuiPath = "/Missions/Insight", + Local = false + }, + { + Command = "openspace.time.setPause(true);openspace.time.setTime('" .. InsightEntryTime .. "');", + Documentation = "Change the time for the start of Insight EDL", + Name = "Insight EDL Time", + GuiPath = "/Missions/Insight", + Local = false + }, +} + +asset.export("Shortcuts", Shortcuts) diff --git a/data/assets/scene/solarsystem/missions/messenger/dashboard.asset b/data/assets/scene/solarsystem/missions/messenger/dashboard.asset new file mode 100644 index 0000000000..d271c312ba --- /dev/null +++ b/data/assets/scene/solarsystem/missions/messenger/dashboard.asset @@ -0,0 +1,13 @@ +local assetHelper = asset.require('util/asset_helper') + +assetHelper.registerDashboardItems(asset, { + { + Type = "DashboardItemDistance", + Identifier = "MessengerDistance", + GuiName = "Messenger - Mercury Distance", + SourceType = "Node", + SourceNodeName = "Messenger", + DestinationType = "Node", + DestinationNodeName = "Mercury" + } +}) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/charon.asset b/data/assets/scene/solarsystem/missions/newhorizons/charon.asset index 3929571670..8f2c7d5910 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/charon.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/charon.asset @@ -100,6 +100,7 @@ local CharonShadow = { Parent = CharonProjection .Identifier, Renderable = { Type = "RenderableShadowCylinder", + Opacity = 0.25, TerminatorType = "PENUMBRAL", LightSource = "SUN", Observer = "NEW HORIZONS", diff --git a/data/assets/scene/solarsystem/missions/newhorizons/dashboard.asset b/data/assets/scene/solarsystem/missions/newhorizons/dashboard.asset new file mode 100644 index 0000000000..477303bc06 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/newhorizons/dashboard.asset @@ -0,0 +1,24 @@ +local assetHelper = asset.require('util/asset_helper') + +assetHelper.registerDashboardItems(asset, { + { + Type = "DashboardItemSpacing", + Identifier = "NewHorizonsSpacing", + GuiName = "New Horizons Spacing", + Spacing = 25 + }, + { + Type = "DashboardItemDistance", + Identifier = "NewHorizonsPlutoDistance", + GuiName = "New Horizons Pluto Distance", + SourceType = "Node", + SourceNodeName = "NewHorizons", + DestinationType = "Node Surface", + DestinationNodeName = "PlutoProjection" + }, + { + Type = "DashboardItemInstruments", + Identifier = "NewHorizonsInstruments", + GuiName = "NewHorizons Instruments", + } +}) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/pluto.asset b/data/assets/scene/solarsystem/missions/newhorizons/pluto.asset index 72eb98db1e..3a963722e2 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/pluto.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/pluto.asset @@ -226,6 +226,7 @@ local PlutoShadow = { Parent = PlutoProjection.Identifier, Renderable = { Type = "RenderableShadowCylinder", + Opacity = 0.25, TerminatorType = "PENUMBRAL", LightSource = "SUN", Observer = "NEW HORIZONS", diff --git a/data/assets/scene/solarsystem/missions/osirisrex/dashboard.asset b/data/assets/scene/solarsystem/missions/osirisrex/dashboard.asset new file mode 100644 index 0000000000..9fc97a6439 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/osirisrex/dashboard.asset @@ -0,0 +1,24 @@ +local assetHelper = asset.require('util/asset_helper') + +assetHelper.registerDashboardItems(asset, { + { + Type = "DashboardItemSpacing", + Identifier = "OsirisRexSpacing", + GuiName = "OSIRIS-REx Spacing", + Spacing = 25 + }, + { + Type = "DashboardItemDistance", + Identifier = "OsirisRexBennuDistance", + GuiName = "OSIRIS-REx Bennu Distance", + SourceType = "Node", + SourceNodeName = "OsirisRex", + DestinationType = "Node", + DestinationNodeName = "BennuBarycenter" + }, + { + Type = "DashboardItemInstruments", + Identifier = "OsirisRexInstruments", + GuiName = "OSIRIS-REx Instruments", + } +}) diff --git a/data/assets/scene/solarsystem/missions/perseverance/model.asset b/data/assets/scene/solarsystem/missions/perseverance/model.asset new file mode 100644 index 0000000000..24c0c37d9d --- /dev/null +++ b/data/assets/scene/solarsystem/missions/perseverance/model.asset @@ -0,0 +1,1204 @@ +--perseverance/model.asset +local assetHelper = asset.require('util/asset_helper') +local transforms = asset.require('./transforms') +local marsTransforms = asset.require('scene/solarsystem/planets/mars/transforms') +local sunTransforms = asset.require('scene/solarsystem/sun/transforms') +-- asset.require('./fov') + +local LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sunTransforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + }, + { + Identifier = "Camera", + Type = "CameraLightSource", + Intensity = 0.5 + } +} + +local models = asset.syncedResource({ + Name = "Mars 2020 Kernels", + Type = "HttpSynchronization", + Identifier = "perseverance_models", + Version = 1 +}) + +local textures = asset.syncedResource({ + Name = "Mars 2020 Kernels", + Type = "HttpSynchronization", + Identifier = "perseverance_textures", + Version = 1 +}) + +-- Perseverance Model -- +local Perseverance = { + Identifier = "Perseverance", + Parent = transforms.MSL_Body.Identifier, + GUI = { + Name = "Perseverance", + Path = "/Solar System/Missions/Perseverance" + } +} + +-- Perseverance Model -- +local PerseveranceModel = { + Identifier = "PerseveranceModel", + Parent = Perseverance.Identifier, + GUI = { + Name = "Perseverance Model", + Path = "/Solar System/Missions/Perseverance", + Hidden = true, + } +} + +-- Perseverance Model Instruments -- +local Body = { + Identifier = "Perseverance_body", + Parent = PerseveranceModel.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_BODY_new_1.obj" + }, + ColorTexture = textures .. "/tex_01.png", + LightSources = LightSources, + PerformShading = false, + }, + GUI = { + Name = "Perseverance Model Body", + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true, + } + +} + +local Body_detail = { + Identifier = "Perseverance_Body_detail", + Parent = Body.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_BODY_new_1_new_detail.obj" + }, + ColorTexture = textures .. "/tex_01.png", + LightSources = LightSources, + PerformShading = false, + }, + GUI = { + Name = "Body Detail", + Hidden = true, + Path = "/Solar System/Missions/Perseverance/Model" + } +} + +local Body_staticParts_1 = { + Identifier = "Perseverance_Body_staticParts_1", + Parent = Body.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_BODY_new_2.obj" + }, + ColorTexture = textures .. "/tex_02.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Body_staticParts_2 = { + Identifier = "Perseverance_Body_staticParts_2", + Parent = Body.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_BODY_new_3.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Body_staticParts_3 = { + Identifier = "Perseverance_Body_staticParts_3", + Parent = Body.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_BODY_new_4.obj" + }, + ColorTexture = textures .. "/tex_04.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Body_staticParts_4 = { + Identifier = "Perseverance_Body_staticParts_4", + Parent = Body.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_BODY_new_5.obj" + }, + ColorTexture = textures .. "/tex_05.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Body_staticParts_5 = { + Identifier = "Perseverance_Body_staticParts_5", + Parent = Body.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_BODY_new_A0.obj" + }, + ColorTexture = textures .. "/parts_AO.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +-- RA AZ +local RA_Shoulder_AZ = { + Identifier = "Perseverance_RA_Shoulder_AZ", + Parent = transforms.RA_Shoulder_AZ_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_SHOULDER_AZ_new.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local RA_Shoulder_AZ_detail_1 = { + Identifier = "Perseverance_RA_Shoulder_AZ_detail_1", + Parent = RA_Shoulder_AZ.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_SHOULDER_AZ_detail_1.obj" + }, + ColorTexture = textures .. "/tex_05.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local RA_Shoulder_AZ_detail_2 = { + Identifier = "Perseverance_RA_Shoulder_AZ_detail_2", + Parent = RA_Shoulder_AZ.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_SHOULDER_AZ_detail_2.obj" + }, + ColorTexture = textures .. "/tex_01.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +---- RA EL +local RA_Shoulder_EL_1 = { + Identifier = "Perseverance_RA_Shoulder_EL_1", + Parent = transforms.RA_Shoulder_EL_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_SHOULDER_EL_1.obj" + }, + ColorTexture = textures .. "/tex_01.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + + +local RA_Shoulder_EL_detail_1 = { + Identifier = "Perseverance_RA_Shoulder_EL_detail_1", + Parent = RA_Shoulder_EL_1.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_SHOULDER_EL_detail_1.obj" + }, + ColorTexture = textures .. "/tex_04.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local RA_Shoulder_EL_detail_2 = { + Identifier = "Perseverance_RA_Shoulder_EL_detail_2", + Parent = RA_Shoulder_EL_1.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_SHOULDER_EL_detail_2.obj" + }, + ColorTexture = textures .. "/tex_05.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + + + +local RA_Shoulder_EL_2 = { + Identifier = "Perseverance_RA_Shoulder_EL_2", + Parent = RA_Shoulder_EL_1.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_SHOULDER_EL_2.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +-- RA ELBOW +local RA_Elbow_1 = { + Identifier = "Perseverance_RA_Elbow_1", + Parent = transforms.RA_Elbow_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_ELBOW_1.obj" + }, + ColorTexture = textures .. "/tex_01.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local RA_Elbow_detail_1 = { + Identifier = "Perseverance_RA_Elbow_detail_1", + Parent = RA_Elbow_1.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_ELBOW_detail_1.obj" + }, + ColorTexture = textures .. "/tex_04.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local RA_Elbow_detail_2 = { + Identifier = "Perseverance_RA_Elbow_detail_2", + Parent = RA_Elbow_1.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_ELBOW_detail_2.obj" + }, + ColorTexture = textures .. "/tex_05.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + + +local RA_Elbow_2 = { + Identifier = "Perseverance_RA_Elbow_2", + Parent = RA_Elbow_1.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_ELBOW_2.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + + +-- RA WRIST +local RA_Wrist = { + Identifier = "Perseverance_RA_Wrist", + Parent = transforms.RA_Wrist_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_TURRET_new_1.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local RA_Wrist_details = { + Identifier = "Perseverance_RA_Wrist_details", + Parent = RA_Wrist.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_TURRET_new_1_details.obj" + }, + ColorTexture = textures .. "/tex_01.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +-- RA TURRET +local RA_Turret = { + Identifier = "Perseverance_RA_Turret", + Parent = transforms.RA_Turret_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_TURRET_new_2.obj" + }, + ColorTexture = textures .. "/tex_04.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + + +local RA_Turret_details_1 = { + Identifier = "Perseverance_RA_Turret_details_1", + Parent = RA_Turret.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_TURRET_new_2_detail_1.obj" + }, + ColorTexture = textures .. "/tex_05.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local RA_Turret_details_2 = { + Identifier = "Perseverance_RA_Turret_details_2", + Parent = RA_Turret.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RA_TURRET_new_2_detail_2.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +-- MastCam-- +local RSM_root = { + Identifier = "Perseverance_RSM_root", + Parent = transforms.RSM_ROOT_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RSM_ROOT.obj" + + }, + ColorTexture = textures .. "/tex_04.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local RSM_AZ = { + Identifier = "Perseverance_RSM_AZ", + Parent = transforms.RSM_AZ_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RSM_AZ.obj" + }, + ColorTexture = textures .. "/tex_04.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local RSM_EL = { + Identifier = "Perseverance_RSM_EL", + Parent = transforms.RSM_EL_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_RSM_EL.obj" + }, + ColorTexture = textures .. "/tex_04.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +---- HGA ---- +local HGA_AZ = { + Identifier = "Perseverance_HGA_AZ", + Parent = transforms.HGA_AZ_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_HGA_AZ_0ANGLE.obj" + }, + ColorTexture = textures .. "/tex_02.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local HGA_EL = { + Identifier = "Perseverance_HGA_EL", + Parent = transforms.HGA_EL_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_HGA_EL.obj" + }, + ColorTexture = textures .. "/tex_02.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +---- SAM & CHEMIN ---- +local SAM_Cover_1 = { + Identifier = "Perseverance_SAM_Cover_1", + Parent = transforms.SAM_Cover_1_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_SAM_FIXED_COVER_1.obj" + }, + ColorTexture = textures .. "/MSLTextureTest.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local SAM_Cover_2 = { + Identifier = "Perseverance_SAM_Cover_2", + Parent = transforms.SAM_Cover_2_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_SAM_FIXED_COVER_2.obj" + }, + ColorTexture = textures .. "/MSLTextureTest.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local CHEMIN_Bottom = { + Identifier = "Perseverance_CHEMIN_Bottom", + Parent = transforms.CHEMIN_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_CHEMIN.obj" + }, + ColorTexture = textures .. "/MSLTextureTest.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +-- Wheels -- +local Wheel_Base = { + Identifier = "Perseverance_Wheel_Base", + Parent = transforms.Wheel_base_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_BASE.obj" + }, + ColorTexture = textures .. "/tex_02.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} +local Wheel_Base_2 = { + Identifier = "Perseverance_Wheel_Base_2", + Parent = Wheel_Base.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_BASE_2.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +-- LEFT SIDE -- +local Wheel_Leg_1_L = { + Identifier = "Perseverance_Wheel_Leg_1_L", + Parent = transforms.Leg_1_L_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_LEG_1_L.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Leg_1A_L_detail = { + Identifier = "Perseverance_Wheel_Leg_1A_L_detail", + Parent = Wheel_Leg_1_L.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_LEG_1A_L_detail.obj" + }, + ColorTexture = textures .. "/tex_05.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Leg_1B_L_detail = { + Identifier = "Perseverance_Wheel_Leg_1B_L_detail", + Parent = Wheel_Leg_1_L.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_LEG_1B_L_detail.obj" + }, + ColorTexture = textures .. "/tex_05.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Leg_2_L = { + Identifier = "Perseverance_Wheel_Leg_2_L", + Parent = transforms.Leg_2_L_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_LEG_2_L_new.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Wrist_F_L = { + Identifier = "Perseverance_Wheel_Wrist_F_L", + Parent = transforms.Wrist_F_L_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_WRIST_F_L.obj" + }, + ColorTexture = textures .. "/tex_02.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Wrist_hub_F_L = { + Identifier = "Perseverance_Wheel_Wrist_hub_F_L", + Parent = Wheel_Wrist_F_L.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_WRIST_1B_F_L.obj" + }, + ColorTexture = textures .. "/tex_02.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_F_L = { + Identifier = "Perseverance_Wheel_F_L", + Parent = transforms.Wheel_F_L_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_L.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_C_L = { + Identifier = "Perseverance_Wheel_C_L", + Parent = transforms.Wheel_C_L_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_L.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Wrist_B_L = { + Identifier = "Perseverance_Wheel_Wrist_B_L", + Parent = transforms.Wrist_B_L_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_WRIST_B_L.obj" + }, + ColorTexture = textures .. "/tex_02.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Wrist_hub_B_L = { + Identifier = "Perseverance_Wheel_Wrist_hub_B_L", + Parent = Wheel_Wrist_B_L.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_WRIST_1B_B_L.obj" + }, + ColorTexture = textures .. "/tex_02.png", + LightSources = LightSources, + PerformShading = false, + }, + GUI = { + Name = "Perseverance Wheel Wrist hub B L", + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_B_L = { + Identifier = "Perseverance_Wheel_B_L", + Parent = transforms.Wheel_B_L_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_L.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +-- RIGHT SIDE -- +local Wheel_Leg_1_R = { + Identifier = "Perseverance_Wheel_Leg_1_R", + Parent = transforms.Leg_1_R_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_LEG_1_R.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Leg_1A_R_detail = { + Identifier = "Perseverance_Wheel_Leg_1A_R_detail", + Parent = Wheel_Leg_1_R.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_LEG_1A_R_detail.obj" + }, + ColorTexture = textures .. "/tex_05.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Leg_1B_R_detail = { + Identifier = "Perseverance_Wheel_Leg_1B_R_detail", + Parent = Wheel_Leg_1_R.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_LEG_1B_R_detail.obj" + }, + ColorTexture = textures .. "/tex_05.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Leg_2_R = { + Identifier = "Perseverance_Wheel_Leg_2_R", + Parent = transforms.Leg_2_R_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_LEG_2_R_new.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Wrist_F_R = { + Identifier = "Perseverance_Wheel_Wrist_F_R", + Parent = transforms.Wrist_F_R_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_WRIST_F_R.obj" + --GeometryFile = models .. "/MSL_WHEEL_WRIST_F_L.obj" + }, + ColorTexture = textures .. "/tex_02.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Wrist_hub_F_R = { + Identifier = "Perseverance_Wheel_Wrist_hub_F_R", + Parent = Wheel_Wrist_F_R.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_WRIST_1B_F_R.obj" + }, + ColorTexture = textures .. "/tex_02.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_F_R = { + Identifier = "Perseverance_Wheel_F_R", + Parent = transforms.Wheel_F_R_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_R.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_C_R = { + Identifier = "Perseverance_Wheel_C_R", + Parent = transforms.Wheel_C_R_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_R.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Wrist_B_R = { + Identifier = "Perseverance_Wheel_Wrist_B_R", + Parent = transforms.Wrist_B_R_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_WRIST_1A_B_R.obj" + }, + ColorTexture = textures .. "/tex_02.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_Wrist_hub_B_R = { + Identifier = "Perseverance_Wheel_Wrist_hub_B_R", + Parent = Wheel_Wrist_B_R.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_WRIST_1B_B_R.obj" + }, + ColorTexture = textures .. "/tex_02.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +local Wheel_B_R = { + Identifier = "Perseverance_Wheel_B_R", + Parent = transforms.Wheel_B_R_Location.Identifier, + Renderable = { + Type = "RenderableModel", + Body = "MARS SCIENCE LABORATORY", + Geometry = { + Type = "MultiModelGeometry", + GeometryFile = models .. "/MSL_WHEEL_R.obj" + }, + ColorTexture = textures .. "/tex_03.png", + LightSources = LightSources, + PerformShading = false + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Model", + Hidden = true + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { + Perseverance, + PerseveranceModel, + + Body, Body_detail, Body_staticParts_1, Body_staticParts_2, Body_staticParts_3, + Body_staticParts_4, Body_staticParts_5, + + RA_Shoulder_AZ, RA_Shoulder_AZ_detail_1, RA_Shoulder_AZ_detail_2, RA_Shoulder_EL_1, + RA_Shoulder_EL_detail_1, RA_Shoulder_EL_detail_2, RA_Shoulder_EL_2, RA_Elbow_1, + RA_Elbow_detail_1, RA_Elbow_detail_2, RA_Elbow_2, RA_Wrist, RA_Wrist_details, + RA_Turret, RA_Turret_details_1, RA_Turret_details_2, + + RSM_root, RSM_AZ, RSM_EL, + + HGA_AZ, HGA_EL, + + SAM_Cover_1, SAM_Cover_2, CHEMIN_Bottom, + + Wheel_Base, Wheel_Base_2, Wheel_Leg_1_L, Wheel_Leg_1A_L_detail, Wheel_Leg_1B_L_detail, + Wheel_Leg_2_L, Wheel_Wrist_F_L, Wheel_Wrist_hub_F_L, Wheel_F_L, Wheel_C_L, + Wheel_Wrist_B_L, Wheel_Wrist_hub_B_L, Wheel_B_L, Wheel_Leg_1_R, + Wheel_Leg_1A_R_detail, Wheel_Leg_1B_R_detail, Wheel_Leg_2_R, Wheel_Wrist_F_R, + Wheel_Wrist_hub_F_R, Wheel_F_R, Wheel_C_R, Wheel_Wrist_B_R, Wheel_Wrist_hub_B_R, + Wheel_B_R +}) diff --git a/data/assets/scene/solarsystem/missions/perseverance/perseverance.asset b/data/assets/scene/solarsystem/missions/perseverance/perseverance.asset new file mode 100644 index 0000000000..64667cbd70 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/perseverance/perseverance.asset @@ -0,0 +1,5 @@ +--perseverance.asset +asset.require('./model') +asset.require('./trail') + + diff --git a/data/assets/scene/solarsystem/missions/perseverance/shortcuts.asset b/data/assets/scene/solarsystem/missions/perseverance/shortcuts.asset new file mode 100644 index 0000000000..287cb76164 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/perseverance/shortcuts.asset @@ -0,0 +1,70 @@ +--perseverance/shortcuts.asset + +local PerseveranceLaunchTime = "2020 JUL 17 13:56:42" +local PerseveranceLandingTime = "2021 FEB 18 20:32:16" + +local PerseveranceNavigationState = "{" .. + "Anchor = 'Perseverance'," .. + "Pitch = 0.567457E-4," .. + "Position = { 1.240506E1,-1.369270E1,-2.423553E0 }," .. + "ReferenceFrame = 'Root',".. + "Up = { 0.441211E0,0.247019E0,0.862737E0 }," .. + "Yaw = -0.446853E-4}" + +local Shortcuts = { + { + Command = "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', -1677.088867);" .. + "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', -1677.088867);", + Documentation = "Enable height layer offset for Perseverance landing trail", + Name = "Perseverance Height Offset", + GuiPath = "/Missions/Insight", + Local = false + }, + { + Command = "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', 0);" .. + "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', 0);", + Documentation = "Disable Perseverance landing height layer offset", + Name = "Default Height Offset", + GuiPath = "/Missions/Insight", + Local = false + }, + { + Command = "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', true);" .. + "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', true);", + Documentation = "Enables HiRISE layer for Perseverance", + Name = "Enable HiRISE", + GuiPath = "/Missions/Insight", + Local = false + }, + { + Command = "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', false);" .. + "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', false);", + Documentation = "Disables HiRISE layer used for Perseverance", + Name = "Disable HiRISE", + GuiPath = "/Missions/Insight", + Local = false + }, + { + Command = "openspace.navigation.setNavigationState(" .. PerseveranceNavigationState .. ");", + Documentation = "Change the camera state for the start of Insight EDL", + Name = "Insight EDL NavigationState", + GuiPath = "/Missions/Insight", + Local = false + }, + { + Command = "openspace.time.setPause(true);openspace.time.setTime('" .. PerseveranceLaunchTime .. "');", + Documentation = "Change the time for Perseverance launch", + Name = "Perseverance launch time", + GuiPath = "/Missions/Perseverance", + Local = false + }, + { + Command = "openspace.time.setPause(true);openspace.time.setTime('" .. PerseveranceLandingTime .. "');", + Documentation = "Change the time for when Perseverance has landed", + Name = "Perseverance landed time", + GuiPath = "/Missions/Perseverance", + Local = false + }, +} + +asset.export("Shortcuts", Shortcuts) diff --git a/data/assets/scene/solarsystem/missions/perseverance/trail.asset b/data/assets/scene/solarsystem/missions/perseverance/trail.asset new file mode 100644 index 0000000000..a6074d4f3b --- /dev/null +++ b/data/assets/scene/solarsystem/missions/perseverance/trail.asset @@ -0,0 +1,97 @@ +--trail.asset +local assetHelper = asset.require('util/asset_helper') +local sunTransforms = asset.require('scene/solarsystem/sun/transforms') +local marsTransforms = asset.require('scene/solarsystem/planets/mars/transforms') + +local kernels = asset.syncedResource({ + Name = "Mars 2020 Kernels", + Type = "HttpSynchronization", + Identifier = "perseverance_kernels", + Version = 1 +}) + +local perseverance_id = "-168" + +local m2020_kernels = { + kernels .. "/m2020.tf", + + kernels .. "/m2020.tls", + kernels .. "/naif0012.tls", + + kernels .. "/m2020.tsc", + + kernels .. "/m2020_FMAresponse_JEZ_20200717_P000.cruise.bsp", + kernels .. "/m2020_FMAresponse_JEZ_20200717_P000.edl.bsp", +} + +local startTime = "2020 JUL 17 13:56:42" +local approachMars = "2021 FEB 11 20:32:16" +local endTime = "2021 FEB 18 20:32:16" + +local PerseveranceNode = { + Identifier = "PerseveranceNode", + Parent = sunTransforms.SolarSystemBarycenter.Identifier, + Transform = { + Translation = { + Type = "SpiceTranslation", + Target = perseverance_id, + Observer = "SUN", + Kernels = m2020_kernels + }, + }, + GUI = { + Name = "Perseverance Node", + Path = "/Solar System/Missions/Perseverance", + Hidden = true + } +} + +local PerseveranceTrailSun = { + Identifier = "PerseveranceTrailSun", + Parent = sunTransforms.SolarSystemBarycenter.Identifier, + Renderable = { + Type = "RenderableTrailTrajectory", + Translation = { + Type = "SpiceTranslation", + Target = perseverance_id, + Observer = "SUN", + Kernels = m2020_kernels + }, + Color = { 0.2, 0.7, 0.1 }, + StartTime = startTime, + EndTime = endTime, + SampleInterval = 100 + }, + GUI = { + Name = "Perseverance Trail", + Path = "/Solar System/Missions/Perseverance", + } +} + +local PerseveranceTrailMars = { + Identifier = "PerseveranceTrailMars", + Parent = marsTransforms.MarsBarycenter.Identifier, + Renderable = { + Type = "RenderableTrailTrajectory", + Translation = { + Type = "SpiceTranslation", + Target = perseverance_id, + Observer = "MARS", + Kernels = m2020_kernels + }, + Color = { 0.7, 0.9, 0.6 }, + StartTime = approachMars, + EndTime = endTime, + SampleInterval = 100 + }, + GUI = { + Name = "Perseverance Trail (Mars)", + Path = "/Solar System/Missions/Perseverance", + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { + PerseveranceNode, + PerseveranceTrailSun, + PerseveranceTrailMars +}) \ No newline at end of file diff --git a/data/assets/scene/solarsystem/missions/perseverance/transforms.asset b/data/assets/scene/solarsystem/missions/perseverance/transforms.asset new file mode 100644 index 0000000000..7197b0e59f --- /dev/null +++ b/data/assets/scene/solarsystem/missions/perseverance/transforms.asset @@ -0,0 +1,505 @@ +local assetHelper = asset.require('util/asset_helper') +local marsTransforms = asset.require('scene/solarsystem/planets/mars/transforms') +local marsAsset = asset.require('scene/solarsystem/planets/mars/mars') +local trailAsset = asset.require('./trail') + + +local MSL_Body = { + Identifier = "MSL_Body", + Parent = trailAsset.PerseveranceNode.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0, 0.0, 2.8 } + }, + Rotation = { + Type = "StaticRotation", + Rotation = { -0.521593,0.648407,2.888407 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +---- ROBOTIC ARM RA ---- +local RA_Base_Location = { + Identifier = "RA_Base_Location", + Parent = MSL_Body.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 1.111, -0.4525, -0.106 } + }, + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +--AZ +local RA_Shoulder_AZ_Location = { + Identifier = "RA_Shoulder_AZ_Location", + Parent = RA_Base_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.0, 0.0, -0.08 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +----EL +local RA_Shoulder_EL_Location = { + Identifier = "RA_Shoulder_EL_Location", + Parent = RA_Shoulder_AZ_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.17, 0.2, -0.005 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +--ELBOW +local RA_Elbow_Location = { + Identifier = "RA_Elbow_Location", + Parent = RA_Shoulder_EL_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.83, -0.2, 0.0 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +--WRIST +local RA_Wrist_Location = { + Identifier = "RA_Wrist_Location", + Parent = RA_Elbow_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.77, 0.13, 0.035 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +--TURRET +local RA_Turret_Location = { + Identifier = "RA_Turret_Location", + Parent = RA_Wrist_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.0, 0.04, -0.15 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +--MAHLI +local RA_Mahli_Location = { + Identifier = "RA_Mahli_Location", + Parent = RA_Turret_Location.Identifier +} + +---- MASTCAM RSM ---- +local RSM_ROOT_Location = { + Identifier = "RSM_ROOT_Location", + Parent = MSL_Body.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.7039, 0.5769, -0.563 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local RSM_AZ_Location = { + Identifier = "RSM_AZ_Location", + Parent = RSM_ROOT_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.0, 0.008, 0.0 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local RSM_ZERO_EL_Location = { + Identifier = "RSM_ZERO_EL_Location", + Parent = RSM_AZ_Location.Identifier, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local RSM_EL_Location = { + Identifier = "RSM_EL_Location", + Parent = RSM_AZ_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + --Position = {0.0, 0.0, -0.664} + Position = { 0.002, 0.007, -0.688 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +---- HIGH GAIN ANTENNA HGA ---- +local HGA_AZ_Location = { + Identifier = "HGA_AZ_Location", + Parent = MSL_Body.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { -0.46, -0.47, -0.55 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local HGA_EL_Location = { + Identifier = "HGA_EL_Location", + Parent = HGA_AZ_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.0, 0.0, -0.17 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +---- SAM & HEMIN ---- +local SAM_Cover_1_Location = { + Identifier = "SAM_Cover_1_Location", + Parent = MSL_Body.Identifier, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local SAM_Cover_2_Location = { + Identifier = "SAM_Cover_2_Location", + Parent = MSL_Body.Identifier, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local CHEMIN_Location = { + Identifier = "CHEMIN_Location", + Parent = MSL_Body.Identifier, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +---- Wheels ---- +local Wheel_base_Location = { + Identifier = "Wheel_base_Location", + Parent = MSL_Body.Identifier, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +-- Left side -- +local Leg_1_L_Location = { + Identifier = "Leg_1_L_Location", + Parent = Wheel_base_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.217, -0.812, -0.215 } --for the right side + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local Leg_2_L_Location = { + Identifier = "Leg_2_L_Location", + Parent = Leg_1_L_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { -0.74, -0.00380, 0.223 } --CORRECT, DONT CHANGE + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local Wrist_F_L_Location = { + Identifier = "Wrist_F_L_Location", + Parent = Leg_1_L_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.8839, -0.2659, 0.2 } --CORRECT, DONT TOUCH + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local Wheel_F_L_Location = { + Identifier = "Wheel_F_L_Location", + Parent = Wrist_F_L_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.0, 0.0, 0.426 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local Wheel_C_L_Location = { + Identifier = "Wheel_C_L_Location", + Parent = Leg_2_L_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.45, -0.4, 0.403 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local Wrist_B_L_Location = { + Identifier = "Wrist_B_L_Location", + Parent = Leg_2_L_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { -0.627, -0.2635, -0.022 } --CORRECT, DONT CHANGE + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local Wheel_B_L_Location = { + Identifier = "Wheel_B_L_Location", + Parent = Wrist_B_L_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.0, -0.0, 0.426 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +-- wheels, Right Side -- +local Leg_1_R_Location = { + Identifier = "Leg_1_R_Location", + Parent = Wheel_base_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.217, 0.812, -0.215 } --Check with caroline!!! + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local Leg_2_R_Location = { + Identifier = "Leg_2_R_Location", + Parent = Leg_1_R_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + --Position = {-0.74, 0.0, 0.24} + Position = { -0.74, 0.00380, 0.223 } --want to use this one, once the center point is changed in maya + + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local Wrist_F_R_Location = { + Identifier = "Wrist_F_R_Location", + Parent = Leg_1_R_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.882, 0.259, 0.215 } + --Position = {0.8839, 0.2659, 0.2} --position for the Wrist_F_L + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local Wheel_F_R_Location = { + Identifier = "Wheel_F_R_Location", + Parent = Wrist_F_R_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.0, 0.0, 0.426 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local Wheel_C_R_Location = { + Identifier = "Wheel_C_R_Location", + Parent = Leg_2_R_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.45, 0.4, 0.403 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local Wrist_B_R_Location = { + Identifier = "Wrist_B_R_Location", + Parent = Leg_2_R_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { -0.6208, 0.2759, -0.025 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +local Wheel_B_R_Location = { + Identifier = "Wheel_B_R_Location", + Parent = Wrist_B_R_Location.Identifier, + Transform = { + Translation = { + Type = "StaticTranslation", + Position = { 0.0, -0.0005, 0.426 } + } + }, + GUI = { + Path = "/Solar System/Missions/Perseverance/Transforms", + Hidden = true + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { + MSL_Body, + RA_Base_Location, + RA_Shoulder_AZ_Location, + RA_Shoulder_EL_Location, + RA_Elbow_Location, + RA_Wrist_Location, + RA_Turret_Location, + RA_Mahli_Location, + RSM_ROOT_Location, + RSM_AZ_Location, + RSM_ZERO_EL_Location, + RSM_EL_Location, + + HGA_AZ_Location, + HGA_EL_Location, + SAM_Cover_1_Location, + SAM_Cover_2_Location, + CHEMIN_Location, + + Wheel_base_Location, + Leg_1_L_Location, + Leg_2_L_Location, + Wrist_F_L_Location, + Wheel_F_L_Location, + Wheel_C_L_Location, + Wrist_B_L_Location, + Wheel_B_L_Location, + + Leg_1_R_Location, + Leg_2_R_Location, + Wrist_F_R_Location, + Wheel_F_R_Location, + Wheel_C_R_Location, + Wrist_B_R_Location, + Wheel_B_R_Location +}) + diff --git a/data/assets/scene/solarsystem/missions/rosetta/dashboard.asset b/data/assets/scene/solarsystem/missions/rosetta/dashboard.asset new file mode 100644 index 0000000000..c84614fe7c --- /dev/null +++ b/data/assets/scene/solarsystem/missions/rosetta/dashboard.asset @@ -0,0 +1,24 @@ +local assetHelper = asset.require('util/asset_helper') + +assetHelper.registerDashboardItems(asset, { + { + Type = "DashboardItemSpacing", + Identifier = "RosettaSpacing", + GuiName = "Rosetta Spacing", + Spacing = 25 + }, + { + Type = "DashboardItemDistance", + Identifier = "Rosetta67PDistance", + GuiName = "Rosetta 67P Distance", + SourceType = "Node", + SourceNodeName = "Rosetta", + DestinationType = "Node", + DestinationNodeName = "67P" + }, + { + Type = "DashboardItemInstruments", + Identifier = "RosettaInstruments", + GuiName = "Rosetta Instruments", + } +}) diff --git a/data/assets/scene/solarsystem/missions/voyager/dashboard.asset b/data/assets/scene/solarsystem/missions/voyager/dashboard.asset new file mode 100644 index 0000000000..777aae93c5 --- /dev/null +++ b/data/assets/scene/solarsystem/missions/voyager/dashboard.asset @@ -0,0 +1,22 @@ +local assetHelper = asset.require('util/asset_helper') + +assetHelper.registerDashboardItems(asset, { + { + Type = "DashboardItemDistance", + Identifier = "Voyager1Distance", + GuiName = "Voyager 1 - Earth Distance", + SourceType = "Node", + SourceNodeName = "Voyager_1", + DestinationType = "Node", + DestinationNodeName = "Earth" + }, + { + Type = "DashboardItemDistance", + Identifier = "Voyager2Distance", + GuiName = "Voyager 2 - Earth Distance", + SourceType = "Node", + SourceNodeName = "Voyager_2", + DestinationType = "Node", + DestinationNodeName = "Earth" + } +}) diff --git a/data/assets/scene/solarsystem/missions/voyager/voyager1.asset b/data/assets/scene/solarsystem/missions/voyager/voyager1.asset index f206b8a6b4..c5a8ae6b0c 100644 --- a/data/assets/scene/solarsystem/missions/voyager/voyager1.asset +++ b/data/assets/scene/solarsystem/missions/voyager/voyager1.asset @@ -61,7 +61,12 @@ local Voyager1 = { Rotation = { Type = "SpiceRotation", SourceFrame = "VG1_SC_BUS", - DestinationFrame = "GALACTIC" + DestinationFrame = "GALACTIC", + TimeFrame = { + Type = "TimeFrameInterval", + Start = "1977-SEP-05 14:10:11.786", + End = "2027-DEC-27" + } } }, GUI = { diff --git a/data/assets/scene/solarsystem/missions/voyager/voyager2.asset b/data/assets/scene/solarsystem/missions/voyager/voyager2.asset index 36f3d74089..f1a87c9e13 100644 --- a/data/assets/scene/solarsystem/missions/voyager/voyager2.asset +++ b/data/assets/scene/solarsystem/missions/voyager/voyager2.asset @@ -64,7 +64,12 @@ local Voyager2 = { Rotation = { Type = "SpiceRotation", SourceFrame = "VG2_SC_BUS", - DestinationFrame = "GALACTIC" + DestinationFrame = "GALACTIC", + TimeFrame = { + Type = "TimeFrameInterval", + Start = "1977-AUG-20 16:07:06.535", + End = "2027-DEC-27" + } } }, GUI = { diff --git a/data/assets/scene/solarsystem/planets.asset b/data/assets/scene/solarsystem/planets.asset index a631b33339..f2ebb05379 100644 --- a/data/assets/scene/solarsystem/planets.asset +++ b/data/assets/scene/solarsystem/planets.asset @@ -22,3 +22,13 @@ asset.request('./planets/uranus/major_moons') asset.request('./planets/neptune/neptune') asset.request('./planets/neptune/major_moons') + + +asset.meta = { + Name = "Planets", + Version = "1.0", + Description = [[ Collection of planets in the solar system ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/earth.asset b/data/assets/scene/solarsystem/planets/earth/earth.asset index 7b26c55ecc..3a86e2dab4 100644 --- a/data/assets/scene/solarsystem/planets/earth/earth.asset +++ b/data/assets/scene/solarsystem/planets/earth/earth.asset @@ -112,12 +112,12 @@ local Earth = { ) }, { - Name = "BMNH [Utah]", + Name = "BMNG [Utah]", Identifier = "BMNG_Utah", FilePath = mapServiceConfigsPath .. "/Utah/Bmng.wms" }, { - Name = "BMNH [Sweden]", + Name = "BMNG [Sweden]", Identifier = "BMNG_Sweden", FilePath = mapServiceConfigsPath .. "/LiU/Bmng.wms" }, @@ -154,6 +154,19 @@ local Earth = { FilePath = openspace.globebrowsing.createTemporalGibsGdalXml( "GHRSST_L4_G1SST_Sea_Surface_Temperature", "2010-06-21", + "2019-12-08", + "1d", + "1km", + "png" + ) + }, + { + Identifier = "GHRSST_L4_MUR_Sea_Surface_Temperature_Temporal", + Name = "GHRSST L4 MUR Sea Surface Temperature (Temporal)", + Type = "TemporalTileLayer", + FilePath = openspace.globebrowsing.createTemporalGibsGdalXml( + "GHRSST_L4_MUR_Sea_Surface_Temperature", + "2002-06-01", "Yesterday", "1d", "1km", @@ -278,7 +291,7 @@ local Earth = { FadeOutStartingDistance = 80000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1500000.0, - LabelsColor = {1.0, 0.0, 0.0, 1.0} + LabelsColor = { 1.0, 0.0, 0.0 } } }, Tag = { "planet_solarSystem", "planet_terrestrial" }, @@ -329,3 +342,13 @@ local EarthLabel = { assetHelper.registerSceneGraphNodesAndExport(asset, { Earth, EarthLabel }) + + +asset.meta = { + Name = "Earth", + Version = "1.0", + Description = [[ Earth is a special planet with special needs ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/moon.asset b/data/assets/scene/solarsystem/planets/earth/moon/moon.asset index 851e8d135c..0fb4c42957 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/moon.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/moon.asset @@ -100,12 +100,12 @@ local Moon = { }, { Identifier = "Lola_Clr_Shade_Utah", - Name = "Lola Clear Shade [Utah]", + Name = "Lola Color Shade [Utah]", FilePath = mapServiceConfigs .. "/Utah/LolaClrShade.wms" }, { Identifier = "Lola_Clr_Shade_Sweden", - Name = "Lola Clear Shade [Sweden]", + Name = "Lola Color Shade [Sweden]", FilePath = mapServiceConfigs .. "/LiU/Lola_Clr_Shade.wms" }, { @@ -162,7 +162,7 @@ local Moon = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, GUI = { diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/misc/iss.asset b/data/assets/scene/solarsystem/planets/earth/satellites/misc/iss.asset index 4f36cfc683..72fabc4988 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/misc/iss.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/misc/iss.asset @@ -9,25 +9,20 @@ local filename = "ISS.txt" local nodes = {} local tle = satelliteHelper.downloadTLEFile(asset, url, identifier, filename) -local modelsLocation = asset.syncedResource({ +local models = asset.syncedResource({ Name = "ISS Models", Type = "HttpSynchronization", Identifier = "iss_model", - Version = 1 + Version = 2 }) local initializeAndAddNodes = function() - local lineElement = satelliteHelper.makeSingleLineElement(tle, filename) local period = satelliteHelper.getPeriodFromElement(lineElement) local path = tle .. "/" .. filename --- TLE data is only relevant in EarthInertial frame which means the model --- will inherit some irrelevant rotations from its parent. To get around that --- we perform the reverse rotation back to EarthBarycenter frame after applying --- the TLE translation local iss = { - Identifier = identifier, + Identifier = "ISS", Parent = transforms.EarthInertial.Identifier, Transform = { Translation = { @@ -45,38 +40,47 @@ local initializeAndAddNodes = function() }, Tag = { "earth_satellite", "ISS" }, GUI = { - Path = "/Solar System/Planets/Earth/Satellites/ISS", - Hiden = true + Path = "/Solar System/Planets/Earth/Satellites/ISS" } } - local issModel = { - Identifier = identifier .. "_model", - Parent = iss.Identifier, - Transform = { - Rotation = { - Type = "FixedRotation", - Attached = "ISS_model", - XAxis = { 1.0, 0.0, 0.0 }, - XAxisOrthogonal = true, - ZAxis = transforms.EarthInertial.Identifier - } - }, - Renderable = { - Type = "RenderableModel", - Geometry = { - Type = "MultiModelGeometry", - GeometryFile = modelsLocation .. "/iss.obj" + local parentNode = { + Identifier = "ISSparentNode", + Parent = iss.Identifier, + Transform = { + Rotation = { + Type = "FixedRotation", + Attached = "ISSparentNode", + XAxis = { 0.01, -1.0, 0.56 }, + XAxisOrthogonal = true, + YAxis = transforms.EarthInertial.Identifier + } }, - ColorTexture = modelsLocation .. "/gray.png", - LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier) - }, - Tag = { "earth_satellite", "ISS" }, - GUI = { - Path = "/Solar System/Planets/Earth/Satellites/ISS" - } + GUI = { + Name = "ISSparentNode", + Path = "/Solar System/Planets/Earth/Satellites/ISS", + Hidden = true, + } } + local list = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "10", "11", + "13", "14", "15", "16", "17", "19", "21", "22", "23", "24", "25", + "foilsilver", "olive", "basemetal", "white_20", "plasticblack", "ecostresswhite", + "plain"} + + local nodes = { iss, parentNode } + for i, info in ipairs(list) do + n = assetHelper.createModelPart( + parentNode.Identifier, + sunTransforms.SolarSystemBarycenter.Identifier, + models, + info, + info .. ".png", + true + ) + table.insert(nodes, n) + end + local issTrail = { Identifier = identifier .. "_trail", Parent = transforms.EarthInertial.Identifier, @@ -87,7 +91,8 @@ local initializeAndAddNodes = function() Body = identifier, Observer = transforms.EarthInertial.Identifier, File = path, - LineNumber = 1 + LineNumber = 1, + RenderBinMode = "PostDeferredTransparent" }, Color = { 0.9, 0.6715, 0.0 }, Fade = 1.5, @@ -96,24 +101,19 @@ local initializeAndAddNodes = function() }, Tag = { "earth_satellite", "ISS" }, GUI = { - Path = "/Solar System/Planets/Earth/Satellites/ISS" + Name = "ISS Trail", + Path = "/Solar System/Planets/Earth/Satellites/ISS" } } - local myNodes = { iss, issModel, issTrail } - - for _, node in ipairs(myNodes) do - openspace.addSceneGraphNode(node) - end - - return myNodes + table.insert(nodes, issTrail) + return nodes end asset.onInitialize(function () nodes = initializeAndAddNodes() -end) - -asset.onDeinitialize(function () - openspace.removeSceneGraphNode(nodes[3].Identifier) -- Removing trail - openspace.removeSceneGraphNode(nodes[1].Identifier) -- Removing ISS and model recursively + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end + openspace.setPropertyValueSingle("Scene.ISSparentNode.Rotation.yAxis-InvertObject", true) end) diff --git a/data/assets/scene/solarsystem/planets/earth/transforms.asset b/data/assets/scene/solarsystem/planets/earth/transforms.asset index 39fe3a9304..c0052befb6 100644 --- a/data/assets/scene/solarsystem/planets/earth/transforms.asset +++ b/data/assets/scene/solarsystem/planets/earth/transforms.asset @@ -10,7 +10,7 @@ local EarthBarycenter = { Transform = { Translation = { Type = "SpiceTranslation", - Target = "EARTH", + Target = "EARTH BARYCENTER", Observer = "SUN" } }, @@ -21,10 +21,27 @@ local EarthBarycenter = { } } +local EarthCenter = { + Identifier = "EarthCenter", + Parent = EarthBarycenter.Identifier, + Transform = { + Translation = { + Type = "SpiceTranslation", + Target = "EARTH", + Observer = "EARTH BARYCENTER" + } + }, + GUI = { + Name = "Earth Center", + Path = "/Solar System/Planets/Earth", + Hidden = true + } +} + local EarthInertial = { -- The default reference frame for Earth-orbiting satellites Identifier = "EarthInertial", - Parent = EarthBarycenter.Identifier, + Parent = EarthCenter.Identifier, Transform = { Rotation = { Type = "SpiceRotation", @@ -41,7 +58,7 @@ local EarthInertial = { local EarthIAU = { Identifier = "EarthIAU", - Parent = EarthBarycenter.Identifier, + Parent = EarthCenter.Identifier, Transform = { Rotation = { Type = "SpiceRotation", @@ -58,6 +75,7 @@ local EarthIAU = { assetHelper.registerSceneGraphNodesAndExport(asset, { EarthBarycenter, + EarthCenter, EarthInertial, EarthIAU }) diff --git a/data/assets/scene/solarsystem/planets/jupiter/callisto/callisto.asset b/data/assets/scene/solarsystem/planets/jupiter/callisto/callisto.asset index d0b2496e52..a0aeaa4b69 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/callisto/callisto.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/callisto/callisto.asset @@ -58,7 +58,7 @@ local Callisto = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "moon_solarSystem", "moon_giants", "moon_jupiter" }, diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/europa.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/europa.asset index d5e455bb9f..aa71361517 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/europa/europa.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/europa.asset @@ -67,7 +67,7 @@ local Europa = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "moon_solarSystem", "moon_giants", "moon_jupiter" }, diff --git a/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset b/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset index 513136ef98..d53036f909 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset @@ -58,7 +58,7 @@ local Ganymede = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = {1.0, 1.0, 0.0} } }, Tag = { "moon_solarSystem", "moon_giants", "moon_jupiter" }, diff --git a/data/assets/scene/solarsystem/planets/jupiter/io/io.asset b/data/assets/scene/solarsystem/planets/jupiter/io/io.asset index fb10f0b3a8..802c862dcc 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/io/io.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/io/io.asset @@ -58,7 +58,7 @@ local Io = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "moon_solarSystem", "moon_giants", "moon_jupiter" }, diff --git a/data/assets/scene/solarsystem/planets/mars/mars.asset b/data/assets/scene/solarsystem/planets/mars/mars.asset index bd330c8c01..cdd1a58f33 100644 --- a/data/assets/scene/solarsystem/planets/mars/mars.asset +++ b/data/assets/scene/solarsystem/planets/mars/mars.asset @@ -117,8 +117,8 @@ local color_layers = { BlendMode = "Color" }, { - Identifier = "CTX_belended_01", - Name = "CTX Belended beta01", + Identifier = "CTX_blended_01", + Name = "CTX Blended beta01", FilePath = mapServiceConfigs .. "/ESRI/CTX/CTXblended.vrt", BlendMode = "Color", Settings = { @@ -196,7 +196,7 @@ local Mars = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "planet_solarSystem", "planet_terrestrial" }, diff --git a/data/assets/scene/solarsystem/planets/mercury/mercury.asset b/data/assets/scene/solarsystem/planets/mercury/mercury.asset index 8eda6c5eb9..71c7ff4ded 100644 --- a/data/assets/scene/solarsystem/planets/mercury/mercury.asset +++ b/data/assets/scene/solarsystem/planets/mercury/mercury.asset @@ -20,7 +20,7 @@ local color_layers = { { Identifier = "Messenger_MDIS_Utah", Name = "Messenger MDIS [Utah]", - FilePath = mapServiceConfigs .. "/Utah/MessengerMDIS.wms", + FilePath = mapServiceConfigs .. "/Utah/MessengerMdis.wms", Enabled = false }, { @@ -122,7 +122,7 @@ local color_layers = { { Identifier = "Messenger_SHADE_Sweden", Name = "Messenger SHADE [Sweden]", - FilePath = mapServiceConfigs .. "/LiU/Messenger_SHADE.wms", + FilePath = mapServiceConfigs .. "/LiU/Messenger_Shade.wms", Settings = { Gamma = 1.33, Multiplier = 1.15 @@ -214,7 +214,7 @@ local Mercury = { FadeOutStartingDistance = 80000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1500000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "planet_solarSystem", "planet_terrestrial" }, diff --git a/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset b/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset index ded4b6ae73..9e6c7e980a 100644 --- a/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset +++ b/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset @@ -56,7 +56,7 @@ local Dione = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "moon_solarSystem", "moon_giants", "moon_saturn" }, diff --git a/data/assets/scene/solarsystem/planets/saturn/enceladus/enceladus.asset b/data/assets/scene/solarsystem/planets/saturn/enceladus/enceladus.asset index 8a66735198..8e0f929c1d 100644 --- a/data/assets/scene/solarsystem/planets/saturn/enceladus/enceladus.asset +++ b/data/assets/scene/solarsystem/planets/saturn/enceladus/enceladus.asset @@ -63,7 +63,7 @@ local Enceladus = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "moon_solarSystem", "moon_giants", "moon_saturn" }, diff --git a/data/assets/scene/solarsystem/planets/saturn/iapetus/iapetus.asset b/data/assets/scene/solarsystem/planets/saturn/iapetus/iapetus.asset index 892cc2c13e..e858a866fd 100644 --- a/data/assets/scene/solarsystem/planets/saturn/iapetus/iapetus.asset +++ b/data/assets/scene/solarsystem/planets/saturn/iapetus/iapetus.asset @@ -56,7 +56,7 @@ local Iapetus = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "moon_solarSystem", "moon_giants", "moon_saturn" }, diff --git a/data/assets/scene/solarsystem/planets/saturn/mimas/mimas.asset b/data/assets/scene/solarsystem/planets/saturn/mimas/mimas.asset index 53d9b7da21..1cc2009017 100644 --- a/data/assets/scene/solarsystem/planets/saturn/mimas/mimas.asset +++ b/data/assets/scene/solarsystem/planets/saturn/mimas/mimas.asset @@ -56,7 +56,7 @@ local Mimas = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "moon_solarSystem", "moon_giants", "moon_saturn" }, diff --git a/data/assets/scene/solarsystem/planets/saturn/rhea/rhea.asset b/data/assets/scene/solarsystem/planets/saturn/rhea/rhea.asset index 008663ecf5..5ce62dc9e6 100644 --- a/data/assets/scene/solarsystem/planets/saturn/rhea/rhea.asset +++ b/data/assets/scene/solarsystem/planets/saturn/rhea/rhea.asset @@ -56,7 +56,7 @@ local Rhea = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "moon_solarSystem", "moon_giants", "moon_saturn" }, diff --git a/data/assets/scene/solarsystem/planets/saturn/tethys/tethys.asset b/data/assets/scene/solarsystem/planets/saturn/tethys/tethys.asset index fea8618180..61c0b44d83 100644 --- a/data/assets/scene/solarsystem/planets/saturn/tethys/tethys.asset +++ b/data/assets/scene/solarsystem/planets/saturn/tethys/tethys.asset @@ -56,7 +56,7 @@ local Tethys = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "moon_solarSystem", "moon_giants", "moon_saturn" }, diff --git a/data/assets/scene/solarsystem/planets/saturn/titan/titan.asset b/data/assets/scene/solarsystem/planets/saturn/titan/titan.asset index a086c9eecb..785f62691d 100644 --- a/data/assets/scene/solarsystem/planets/saturn/titan/titan.asset +++ b/data/assets/scene/solarsystem/planets/saturn/titan/titan.asset @@ -63,7 +63,7 @@ local Titan = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 1350000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "moon_solarSystem", "moon_giants", "moon_saturn" }, diff --git a/data/assets/scene/solarsystem/planets/uranus/uranus.asset b/data/assets/scene/solarsystem/planets/uranus/uranus.asset index db3fb11848..4eca496359 100644 --- a/data/assets/scene/solarsystem/planets/uranus/uranus.asset +++ b/data/assets/scene/solarsystem/planets/uranus/uranus.asset @@ -58,7 +58,7 @@ local UranusLabel = { }, Tag = { "solarsystem_labels" }, GUI = { - Name = "Neptune Label", + Name = "Uranus Label", Path = "/Solar System/Planets/Uranus" } } diff --git a/data/assets/scene/solarsystem/planets/venus/venus.asset b/data/assets/scene/solarsystem/planets/venus/venus.asset index 486f2d2cab..8ccab1e13a 100644 --- a/data/assets/scene/solarsystem/planets/venus/venus.asset +++ b/data/assets/scene/solarsystem/planets/venus/venus.asset @@ -87,7 +87,7 @@ local Venus = { FadeOutStartingDistance = 1000000.0, LabelsForceDomeRendering = true, LabelsDistanceEPS = 3500000.0, - LabelsColor = {1.0, 1.0, 0.0, 1.0} + LabelsColor = { 1.0, 1.0, 0.0 } } }, Tag = { "planet_solarSystem", "planet_terrestrial" }, diff --git a/data/assets/scene/solarsystem/sssb/amor_asteroid.asset b/data/assets/scene/solarsystem/sssb/amor_asteroid.asset index b091b688fc..99658a50f5 100644 --- a/data/assets/scene/solarsystem/sssb/amor_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/amor_asteroid.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'amor_asteroid', 'sssb_data_amor_asteroid') -local object = sharedSssb.createSssbGroupObject('sssb_data_amor_asteroid.csv', "Amor Asteroids", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_amor_asteroid.csv', "Amor Asteroids", filepath, { 1.0, 1.0, 1.0 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 4 object.Renderable.TrailFade = 11 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Amor Asteroids", + Version = "1.0", + Description = [[ Earth-approaching Near-Earth-Asteroids with orbits exterior to Earth's but interior to Mars'. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset b/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset index 8c86d4e990..258ff6c01f 100644 --- a/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'apollo_asteroid', 'sssb_data_apollo_asteroid') -local object = sharedSssb.createSssbGroupObject('sssb_data_apollo_asteroid.csv', "Apollo Asteroids", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_apollo_asteroid.csv', "Apollo Asteroids", filepath, { 0.7, 0.7, 1.0 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 6 object.Renderable.TrailFade = 10 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Apollo Asteroids", + Version = "1.0", + Description = [[ Earth-crossing Near-Earth-Asteroids with semi-major axes larger than Earth's. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/aten_asteroid.asset b/data/assets/scene/solarsystem/sssb/aten_asteroid.asset index 1dd7af7f10..c768ccac07 100644 --- a/data/assets/scene/solarsystem/sssb/aten_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/aten_asteroid.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'aten_asteroid', 'sssb_data_aten_asteroid') -local object = sharedSssb.createSssbGroupObject('sssb_data_aten_asteroid.csv', "Aten Asteroids", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_aten_asteroid.csv', "Aten Asteroids", filepath, { 0.15, 0.15, 1.0 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 2 object.Renderable.TrailFade = 18 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Aten Asteroids", + Version = "1.0", + Description = [[ Earth-crossing Near-Earth-Asteroids with semi-major axes smaller than Earth's. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/atira_asteroid.asset b/data/assets/scene/solarsystem/sssb/atira_asteroid.asset index 1029f31430..9a7ec7ddaf 100644 --- a/data/assets/scene/solarsystem/sssb/atira_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/atira_asteroid.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'atira_asteroid', 'sssb_data_atira_asteroid') -local object = sharedSssb.createSssbGroupObject('sssb_data_atira_asteroid.csv', "Atira Asteroids", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_atira_asteroid.csv', "Atira Asteroids", filepath, { 0.5, 0.8, 1.0 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 2 object.Renderable.TrailFade = 25 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Atira Asteroids", + Version = "1.0", + Description = [[ Near-Earth-Asteroids whose orbits are contained entirely within the orbit of the Earth. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset b/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset index 68d97d2d9c..1584ab3c91 100644 --- a/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'centaur_asteroid', 'sssb_data_centaur_asteroid') -local object = sharedSssb.createSssbGroupObject('sssb_data_centaur_asteroid.csv', "Centaur Asteroids", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_centaur_asteroid.csv', "Centaur Asteroids", filepath, { 0.94, 0.96, 0.94 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 6 object.Renderable.TrailFade = 18 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Centaur Asteroids", + Version = "1.0", + Description = [[ Asteroids with either a perihelion or a semi-major axis between those of the four outer planets. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset b/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset index e19c58b335..faad6f4c8e 100644 --- a/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'chiron-type_comet', 'sssb_data_chiron-type_comet') -local object = sharedSssb.createSssbGroupObject('sssb_data_chiron-type_comet.csv', "Chiron-type Comets", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_chiron-type_comet.csv', "Chiron-type Comets", filepath, { 0.15 ,0.1 ,1.0 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 10 object.Renderable.TrailFade = 25 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Chiron-Type Comets", + Version = "1.0", + Description = [[ Comets with a Tisserand's parameter with respect to Jupiter of greater than 3 and a semi-major axis greater than that of Jupiter. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/encke-type_comet.asset b/data/assets/scene/solarsystem/sssb/encke-type_comet.asset index 451433e6f1..8a51d5c041 100644 --- a/data/assets/scene/solarsystem/sssb/encke-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/encke-type_comet.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'encke-type_comet', 'sssb_data_encke-type_comet') -local object = sharedSssb.createSssbGroupObject('sssb_data_encke-type_comet.csv', "Encke-type Comets", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_encke-type_comet.csv', "Encke-type Comets", filepath, { 0.8, 0.34, 1.0 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 2 object.Renderable.TrailFade = 23 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Encke-Type Comets", + Version = "1.0", + Description = [[ Comets with a Tisserand's parameter with respect to Jupiter of greater than 3 and a semi-major axis less than that of Jupiter. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/halley-type_comet.asset b/data/assets/scene/solarsystem/sssb/halley-type_comet.asset index c92a0e1c83..004ff8ce03 100644 --- a/data/assets/scene/solarsystem/sssb/halley-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/halley-type_comet.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'halley-type_comet', 'sssb_data_halley-type_comet') -local object = sharedSssb.createSssbGroupObject('sssb_data_halley-type_comet.csv', "Halley-type Comets", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_halley-type_comet.csv', "Halley-type Comets", filepath, { 0.66, 0.66, 0.66 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 9 object.Renderable.TrailFade = 18 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Halley-Type Comets", + Version = "1.0", + Description = [[ Periodic comets with an orbital period between 20 and 200 years. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset b/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset index 02426fdbeb..aef5fba263 100644 --- a/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'inner_main_belt_asteroid', 'sssb_data_inner_main_belt_asteroid') -local object = sharedSssb.createSssbGroupObject('sssb_data_inner_main_belt_asteroid.csv', "Inner Main Asteroid Belt", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_inner_main_belt_asteroid.csv', "Inner Main Asteroid Belt", filepath, { 1.0, 1.0, 0.0 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 1 object.Renderable.TrailFade = 0.5 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Inner Main Asteroid Belt", + Version = "1.0", + Description = [[ Asteroids with a semi-major axis less than 2.0 au and a perihelion distance greater than 1.666 au. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset b/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset index b42e8ac0be..2046630045 100644 --- a/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset +++ b/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'jupiter-family_comet', 'sssb_data_jupiter-family_comet') -local object = sharedSssb.createSssbGroupObject('sssb_data_jupiter-family_comet.csv', "Jupiter-family Comets", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_jupiter-family_comet.csv', "Jupiter-family Comets", filepath, { 0.2, 0.8, 0.2 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 10 object.Renderable.TrailFade = 28 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Jupiter Family Comets", + Version = "1.0", + Description = [[ Comets with a Tisserand's parameter with respect to Jupiter of between 2 and 3. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset b/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset index 6be40249c7..e12ef74aae 100644 --- a/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'jupiter_trojan_asteroid', 'sssb_data_jupiter_trojan_asteroid') -local object = sharedSssb.createSssbGroupObject('sssb_data_jupiter_trojan_asteroid.csv', "Jupiter Trojan Asteroids", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_jupiter_trojan_asteroid.csv', "Jupiter Trojan Asteroids", filepath, { 0.5, 0.8, 0.5 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 1 object.Renderable.TrailFade = 5 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Jupiter Trojan Asteroids", + Version = "1.0", + Description = [[ Asteroids trapped in Jupiter's L4/L5 Lagrange points (semimajor axis of between 4.6 and 5.5 au), with an eccentricity of less than 0.3. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset b/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset index 503a00dc04..8154d3643f 100644 --- a/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset @@ -2,10 +2,20 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'main_belt_asteroid', 'sssb_data_main_belt_asteroid') -local object = sharedSssb.createSssbGroupObject('sssb_data_main_belt_asteroid.csv', "Main Asteroid Belt", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_main_belt_asteroid.csv', "Main Asteroid Belt", filepath, { 0.0, 0.5, 0.0 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 1 object.Renderable.TrailFade = 0.1 object.Renderable.UpperLimit = 50000 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Main Asteroid Belt", + Version = "1.0", + Description = [[ Asteroids with a semi-major axis of between 2.0 and 3.2 au, and a perihelion distance greater than 1.666 au. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset b/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset index 98cdda1f80..8bded6abe9 100644 --- a/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'mars-crossing_asteroid', 'sssb_data_mars-crossing_asteroid') -local object = sharedSssb.createSssbGroupObject('sssb_data_mars-crossing_asteroid.csv', "Mars-crossing Asteroids", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_mars-crossing_asteroid.csv', "Mars-crossing Asteroids", filepath, { 0.814, 0.305, 0.220 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 1 object.Renderable.TrailFade = 13 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Mars-Crossing Asteroids", + Version = "1.0", + Description = [[ Asteroids that cross the orbit of Mars, with a semi-major axis of less than 3.2 au, and a perihelion distance of between 1.3 and 1.666 au. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset b/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset index 995b7623ea..a1b5dc806f 100644 --- a/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'outer_main_belt_asteroid', 'sssb_data_outer_main_belt_asteroid') -local object = sharedSssb.createSssbGroupObject('sssb_data_outer_main_belt_asteroid.csv', "Outer Main Asteroid Belt", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_outer_main_belt_asteroid.csv', "Outer Main Asteroid Belt", filepath, { 0.4, 0.4, 1.0 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 1 object.Renderable.TrailFade = 2 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Outer Main Asteroid Belt", + Version = "1.0", + Description = [[ Asteroids with a semi-major axis of between 3.2 and 4.6 au. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/pha.asset b/data/assets/scene/solarsystem/sssb/pha.asset index 4a66174fdf..41639b39a0 100644 --- a/data/assets/scene/solarsystem/sssb/pha.asset +++ b/data/assets/scene/solarsystem/sssb/pha.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'pha', 'sssb_data_pha') -local object = sharedSssb.createSssbGroupObject('sssb_data_pha.csv', "Potentially Hazardous Asteroids", filepath, { 0.75, 0.2, 0.2 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_pha.csv', "Potentially Hazardous Asteroids", filepath, { 0.98, 0.09, 0.06}) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 3 object.Renderable.TrailFade = 17 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Potentially-Hazardous Asteroids", + Version = "1.0", + Description = [[ Asteroids that are deemed potentially hazardous to Earth based on their close approaches. All asteroids with an Earth Minimum Orbit Intersection Distance (MOID) of 0.05 au or less, and with an absolute magnitude (H) of 22.0 or less. ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset b/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset index 5ef5e3b1e9..7a8104fadd 100644 --- a/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset @@ -2,9 +2,19 @@ local assetHelper = asset.require('util/asset_helper') local sharedSssb = asset.require('./sssb_shared') local filepath = sharedSssb.downloadSssbDatabaseFile(asset, 'transneptunian_object_asteroid', 'sssb_data_transneptunian_object_asteroid') -local object = sharedSssb.createSssbGroupObject('sssb_data_transneptunian_object_asteroid.csv', "Transneptunian Object Asteroids", filepath, { 0.9, 0.3, 0.1 }) +local object = sharedSssb.createSssbGroupObject('sssb_data_transneptunian_object_asteroid.csv', "Transneptunian Object Asteroids", filepath, {0.56, 0.64, 0.95 }) object.Renderable.Enabled = false object.Renderable.SegmentQuality = 8 object.Renderable.TrailFade = 10 assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + + +asset.meta = { + Name = "Trans-Neptunian Asteroids", + Version = "1.0", + Description = [[ Any minor or dwarf planets in the solar system that orbit the Sun at a greater average distance than Neptune (semi-major axis of 30.1 AU). ]], + Author = "JPL Small-Body Database hosted by California Institute of Technology", + URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", + License = "JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and Foreign Copyright Laws." +} \ No newline at end of file diff --git a/data/assets/scene/solarsystem/sun/glare.asset b/data/assets/scene/solarsystem/sun/glare.asset index 8d13f5fa9a..57d3a6eed3 100644 --- a/data/assets/scene/solarsystem/sun/glare.asset +++ b/data/assets/scene/solarsystem/sun/glare.asset @@ -16,7 +16,7 @@ local SunGlare = { Texture = textures .. "/halo.png", BlendMode = "Additive", Opacity = 0.65, - RenderableType = "Transparency" + RenderableType = "PreDeferredTransparency" }, Transform = { Translation = { diff --git a/data/assets/touch.scene b/data/assets/touch.scene deleted file mode 100644 index d981a1ebcb..0000000000 --- a/data/assets/touch.scene +++ /dev/null @@ -1,37 +0,0 @@ -local has_touch = openspace.modules.isLoaded('Touch') -if not has_touch then - openspace.printFatal('Could not load scene "' .. asset.filePath .. '" due to missing module "touch"') - do return end -end - -asset.require('./base') -local webGui = asset.require('util/webgui') - -local earthAsset = asset.require('scene/solarsystem/planets/earth/earth') - -asset.onInitialize(function () - local now = openspace.time.currentWallTime() - -- Jump back one day to be able to show complete weather data on Earth. - openspace.time.setTime(openspace.time.advancedTime(now, "-1d")) - - openspace.markInterestingNodes( - { "Earth", "Mars", "Moon" } - ) - - openspace.navigation.setNavigationState({ - Anchor = earthAsset.Earth.Identifier, - Position = { 58.5877, 16.1924, 20000000 } - }) - - openspace.setPropertyValueSingle('Scene.Pluto.Renderable.Enabled', false) - openspace.setPropertyValueSingle('Scene.Charon.Renderable.Enabled', false) - openspace.setPropertyValueSingle('Scene.PlutoBarycenterTrail.Renderable.Enabled', false) - - webGui.setCefRoute("ontouch") -end) - -asset.onDeinitialize(function () - openspace.removeInterestingNodes( - { "Earth", "Mars", "Moon" } - ) -end) diff --git a/data/assets/util/debug_helper.asset b/data/assets/util/debug_helper.asset index 2a1175ee84..f01d50824d 100644 --- a/data/assets/util/debug_helper.asset +++ b/data/assets/util/debug_helper.asset @@ -61,8 +61,8 @@ local addCartesianAxes = function (specification) local name = specification.Name or specification.Identifier local parent = specification.Parent or "Root" local scale = specification.Scale or 1.0 - local position = specification.Position or {0.0, 0.0, 0.0} - local rotation = specification.Rotation or {0.0, 0.0, 0.0} + local position = specification.Position or { 0.0, 0.0, 0.0 } + local rotation = specification.Rotation or { 0.0, 0.0, 0.0 } local axes = { Identifier = identifier, @@ -84,9 +84,9 @@ local addCartesianAxes = function (specification) Renderable = { Type = "RenderableCartesianAxes", Enabled = true, - XColor = {1.0, 0.0, 0.0, 1.0}, - YColor = {0.0, 1.0, 0.0, 1.0}, - ZColor = {0.0, 0.0, 1.0, 1.0} + XColor = { 1.0, 0.0, 0.0 }, + YColor = { 0.0, 1.0, 0.0 }, + ZColor = { 0.0, 0.0, 1.0 } }, GUI = { Name = name, @@ -128,6 +128,6 @@ end asset.export("addGrid", addGrid) asset.export("registerGrid", registerGrid) -asset.export("addCartesianAxes", addGrid) +asset.export("addCartesianAxes", addCartesianAxes) asset.export("registerCartesianAxes", registerCartesianAxes) diff --git a/data/assets/util/generate_bookmarks.asset b/data/assets/util/generate_bookmarks.asset index c312b0cfee..2e3da2a9e3 100644 --- a/data/assets/util/generate_bookmarks.asset +++ b/data/assets/util/generate_bookmarks.asset @@ -22,17 +22,22 @@ local getBookmarks = function (guiPath, bookmarkfile) Scale = { Type = 'StaticScale', Scale = tonumber(scale); - } + }, + Rotation = { + Type = "StaticRotation", + Rotation = { + -0.05487554, 0.4941095, -0.8676661, + -0.9938214 , -0.1109906, -0.0003515167, + -0.09647644, 0.8622859, 0.4971472 + } + } }, Renderable = { Type = 'RenderableSphericalGrid', Enabled = false, - GridColor = { 0.3, 0.84, 1.0, 0.3}, - LineWidth = linewidth, - GridMatrix = { -0.05487554, 0.4941095, -0.8676661 , 0.0, - -0.9938214 , -0.1109906, -0.0003515167, 0.0, - -0.09647644, 0.8622859, 0.4971472 , 0.0, - 0.0 , 0.0 , 0.0 , 1.0 } + Opacity = 0.3, + GridColor = { 0.3, 0.84, 1.0}, + LineWidth = linewidth }, GUI = { Name = name, diff --git a/data/assets/util/scene_helper.asset b/data/assets/util/scene_helper.asset index 3bf977dc1b..9e7a87cc3c 100644 --- a/data/assets/util/scene_helper.asset +++ b/data/assets/util/scene_helper.asset @@ -9,7 +9,6 @@ local bindKeys = function(t, ignoreWarning) local currentKey = openspace.getKeyBinding(k.Key) if (next(currentKey) ~= nil) and (not ignoreWarning) then - openspace.printWarning('New keybind for "' .. k.Key .. '" is added, but a previous keybind already existed. If you want to silence this warning, pass "true", to this call to bindKeys') end @@ -66,3 +65,80 @@ local setDeltaTimeKeys = function(t) return result end asset.export("setDeltaTimeKeys", setDeltaTimeKeys) + + +--shortcut function +local function has_value (tab, val) + for index, value in ipairs(tab) do + -- We grab the first index of our sub-table instead + if value[1] == val then + return true + end + end + + return false +end + +local extractShortcuts = function(names, shortcuts) + local foundShortcuts = {}; + + if type(names) ~= "table" then + openspace.printWarning("scene_helper.extractShortcuts invalid paramater names (not Table)") + end + + if type(shortcuts) ~= "table" then + openspace.printWarning("scene_helper.extractShortcuts invalid paramater shortcuts (not Table)") + end + + for _, shortcut in ipairs(shortcuts) do + for _, name in ipairs(names ) do + if (shortcut.Name == name) then + foundShortcuts[#foundShortcuts+1] = shortcut + end + end + end + + return foundShortcuts +end +asset.export("extractShortcuts", extractShortcuts) + +local createKeyBindFromShortcuts = function(key, shortcuts, guipath, title, documentation) + if type(key) ~= "string" then + openspace.printWarning("scene_helper.createKeyBindFromShortcuts invalid paramater key (not String)") + end + + if type(shortcuts) ~= "table" or #shortcuts == 0 then + openspace.printWarning("scene_helper.createKeyBindFromShortcuts invalid paramater shortcuts (not Table or empty)") + end + + -- if type(guipath) ~= "string" then + -- guipath = shortcuts[0].GuiPath + -- end + + local concatTitle = type(title) ~= "string" + local concatDocumentation = type(documentation) ~= "string" + + local keybind = { + Key = key, + Command = "", + Name = name or "", + Documentation = documentation or "", + GuiPath = guipath or "", + Local = false + } + + for _, shortcut in ipairs(shortcuts) do + keybind.Command = keybind.Command .. shortcut.Command + if concatTitle then + keybind.Name = keybind.Name .. "/" .. shortcut.Name + end + if concatDocumentation then + keybind.Documentation = keybind.Documentation .. "," .. shortcut.Documentation + end + + keybind.Local = keybind.Local and shortcut.Local + end + + return keybind +end +asset.export("createKeyBindFromShortcuts", createKeyBindFromShortcuts) diff --git a/data/assets/util/tle_helper.asset b/data/assets/util/tle_helper.asset index 9aa08a3c71..c87a21b231 100644 --- a/data/assets/util/tle_helper.asset +++ b/data/assets/util/tle_helper.asset @@ -84,7 +84,8 @@ function satellites(title, file, color, group) Path = file, SegmentQuality = 3, Color = color, - Fade = 1.5 + Fade = 1.5, + RenderBinMode = "PostDeferredTransparent" }, Tag = { "earth_satellites" }, GUI = { diff --git a/data/assets/util/webgui.asset b/data/assets/util/webgui.asset index 13baac61cb..27209f9080 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 = "c2d8ff7419b82a614b6cdc02fbe391e0862279de" +local frontendHash = "6673d083bf2629502ce7f809610509f29ad444b7" local dataProvider = "data.openspaceproject.com/files/webgui" local frontend = asset.syncedResource({ @@ -82,3 +82,13 @@ end asset.export("setCefRoute", setCefRoute) + + +asset.meta = { + Name = "WebGUI", + Version = "0.1", + Description = [[ insert CEF rant ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/voyager.scene b/data/assets/voyager.scene deleted file mode 100644 index c5789bf926..0000000000 --- a/data/assets/voyager.scene +++ /dev/null @@ -1,61 +0,0 @@ -asset.require('./base') - -local assetHelper = asset.require('util/asset_helper') -local sceneHelper = asset.require('util/scene_helper') - -asset.require('scene/solarsystem/planets/jupiter/minor_moons') -asset.require('scene/solarsystem/planets/saturn/minor_moons') -asset.require('scene/solarsystem/planets/uranus/minor_moons') -asset.require('scene/solarsystem/planets/neptune/inner_moons') -asset.require('scene/solarsystem/planets/neptune/irregular_prograde_moons') -asset.require('scene/solarsystem/planets/neptune/irregular_retrograde_moons') -asset.require('scene/solarsystem/missions/voyager/voyager1') -asset.require('scene/solarsystem/missions/voyager/voyager2') - -local VoyagerAsset = asset.require('scene/solarsystem/missions/voyager/voyager1') - -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemDistance", - Identifier = "Voyager1Distance", - GuiName = "Voyager 1 - Earth Distance", - SourceType = "Node", - SourceNodeName = "Voyager_1", - DestinationType = "Node", - DestinationNodeName = "Earth" - }, - { - Type = "DashboardItemDistance", - Identifier = "Voyager2Distance", - GuiName = "Voyager 2 - Earth Distance", - SourceType = "Node", - SourceNodeName = "Voyager_2", - DestinationType = "Node", - DestinationNodeName = "Earth" - } -}) - -asset.onInitialize(function () - openspace.time.setTime("1977 SEP 10 12:00:00") - - sceneHelper.setDeltaTimeKeys({ - 1, 5, 10, 20, 40, 90, 360, 720, 2880, 14400, - 28800, 57600, 115200, 230400, 460800, 921600, 1843200, 3686400, 7372800, 14745600 - }) - - openspace.markInterestingNodes({ - "Earth", "Voyager 1", "Voyager 2", "Jupiter", "Saturn", "Uranus", "Neptune" - }) - - openspace.navigation.setNavigationState({ - Anchor = VoyagerAsset.Voyager_1.Identifier, - ReferenceFrame = "Root", - Position = { 526781518487.171326, 257168309890.072144, -1381125204152.817383 } - }) -end) - -asset.onDeinitialize(function () - openspace.removeInterestingNodes({ - "Earth", "Voyager 1", "Voyager 2", "Jupiter", "Saturn", "Uranus", "Neptune" - }) -end) diff --git a/data/assets/apollo8.profile b/data/profiles/apollo8.profile similarity index 92% rename from data/assets/apollo8.profile rename to data/profiles/apollo8.profile index f9a9c003fc..e4cf732215 100644 --- a/data/assets/apollo8.profile +++ b/data/profiles/apollo8.profile @@ -2,13 +2,14 @@ 1.0 #Asset -scene/solarsystem/planets/earth/moon/moon required -scene/solarsystem/missions/apollo/apollo8 required -scene/solarsystem/planets/earth/earth required +util/property_helper propertyHelper +base +scene/solarsystem/planets/earth/moon/moon +scene/solarsystem/missions/apollo/8/apollo8 +scene/solarsystem/planets/earth/earth earthAsset #Property setPropertyValueSingle NavigationHandler.OrbitalNavigator.MinimumAllowedDistance 0.000000 -setPropertyValueSingle Scene.Moon.Renderable.LodScaleFactor 24.0 #Keybinding E Jump to right before the earthrise photo Set Earthrise time /Missions/Apollo/8 false "openspace.time.setPause(true); openspace.time.setDeltaTime(1); openspace.time.setTime('1968 DEC 24 16:37:31'); openspace.navigation.setNavigationState({Anchor = 'Apollo8', Position = { 1.494592E1, 3.236777E1, -4.171296E1 }, ReferenceFrame = 'Root', Up = { 0.960608E0, -0.212013E0, 0.179675E0 }}); openspace.setPropertyValue('*Trail.Renderable.Enabled', false)" @@ -26,7 +27,7 @@ HOME Set camera focus to the Earth Focus on Earth /Missions/Apollo false "opensp absolute 1968-12-21T12:51:51.0 #Camera -goToGeo "Earth" 20 -60 15000000 +goToGeo earthAsset.Earth.Identifier 20 -60 15000000 #MarkNodes Earth diff --git a/data/assets/apollo_sites.profile b/data/profiles/apollo_sites.profile similarity index 83% rename from data/assets/apollo_sites.profile rename to data/profiles/apollo_sites.profile index f014e5b36d..20cad5733f 100644 --- a/data/assets/apollo_sites.profile +++ b/data/profiles/apollo_sites.profile @@ -2,18 +2,17 @@ 1.0 #Asset -scene/solarsystem/planets/earth/moon/moon required -scene/solarsystem/missions/apollo/apollo8 required -scene/solarsystem/missions/apollo/apollo11 required -scene/solarsystem/missions/apollo/a17_lem required -scene/solarsystem/missions/apollo/apollo_globebrowsing required -scene/solarsystem/missions/apollo/apollo_11_lem_flipbook required -scene/solarsystem/missions/apollo/insignias_map required +base +scene/solarsystem/planets/earth/moon/moon moonAsset +scene/solarsystem/missions/apollo/8/apollo8 +scene/solarsystem/missions/apollo/11/apollo11 +scene/solarsystem/missions/apollo/17/lem +scene/solarsystem/missions/apollo/apollo_globebrowsing +scene/solarsystem/missions/apollo/11/lem_flipbook +scene/solarsystem/missions/apollo/insignias_map #Property setPropertyValueSingle Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.BlendMode 0 -setPropertyValueSingle Scene.Apollo11LemDescentModel.Renderable.RotationVector { 273.750,28.0,309.85 } -setPropertyValueSingle Scene.Apollo11LemLandedModel.Renderable.RotationVector { 273.750,28.0,309.85 } setPropertyValueSingle Scene.Moon.Renderable.PerformShading false #Keybinding @@ -26,7 +25,7 @@ F7 Setup for A17 site Setup A17 site /Missions/Apollo/17 false "openspace.time.s absolute 1972 DEC 12 19:47:11 #Camera -goToGeo "Moon" 20 -60 15000000 +goToGeo moonAsset.Moon.Identifier 20 -60 15000000 #MarkNodes Moon diff --git a/data/profiles/asteroids.profile b/data/profiles/asteroids.profile new file mode 100644 index 0000000000..9e0495975f --- /dev/null +++ b/data/profiles/asteroids.profile @@ -0,0 +1,34 @@ +#Version +1.0 + +#Asset +base +scene/solarsystem/planets/earth/earth earthAsset +scene/solarsystem/sssb/amor_asteroid +scene/solarsystem/sssb/apollo_asteroid +scene/solarsystem/sssb/aten_asteroid +scene/solarsystem/sssb/atira_asteroid +scene/solarsystem/sssb/centaur_asteroid +scene/solarsystem/sssb/chiron-type_comet +scene/solarsystem/sssb/encke-type_comet +scene/solarsystem/sssb/halley-type_comet +scene/solarsystem/sssb/inner_main_belt_asteroid +scene/solarsystem/sssb/jupiter_trojan_asteroid +scene/solarsystem/sssb/jupiter-family_comet +scene/solarsystem/sssb/main_belt_asteroid +scene/solarsystem/sssb/mars-crossing_asteroid +scene/solarsystem/sssb/outer_main_belt_asteroid +scene/solarsystem/sssb/transneptunian_object_asteroid +scene/solarsystem/sssb/pha + +#Time +relative -1d + +#Camera +goToGeo earthAsset.Earth.Identifier 58.5877 16.1924 2.7e12 + +#MarkNodes +Earth +Mars +Moon +Sun diff --git a/data/profiles/dawn.profile b/data/profiles/dawn.profile new file mode 100644 index 0000000000..d61491cc3f --- /dev/null +++ b/data/profiles/dawn.profile @@ -0,0 +1,19 @@ +#Version +1.0 + +#Asset +base +scene/solarsystem/missions/dawn/ceres +scene/solarsystem/missions/dawn/dawn DawnAsset +scene/solarsystem/missions/dawn/vesta + +#Time +absolute 2011 AUG 06 00:00:00 + +#Camera +setNavigationState DawnAsset.Dawn.Identifier 526781518487.171326, 257168309890.072144, -1381125204152.817383 + +#MarkNodes +Dawn +Ceres +Vesta diff --git a/data/profiles/default.profile b/data/profiles/default.profile new file mode 100644 index 0000000000..cedf4ad6d7 --- /dev/null +++ b/data/profiles/default.profile @@ -0,0 +1,22 @@ +#Version +1.0 + +#Asset +base +scene/solarsystem/planets/earth/earth earthAsset +scene/solarsystem/planets/earth/satellites/satellites + +#Property +setPropertyValue {earth_satellites}.Renderable.Enabled false + +#Time +relative -1d + +#Camera +goToGeo earthAsset.Earth.Identifier 58.5877 16.1924 20000000 + +#MarkNodes +Earth +Mars +Moon +Sun diff --git a/data/profiles/default_full.profile b/data/profiles/default_full.profile new file mode 100644 index 0000000000..6e0644ddde --- /dev/null +++ b/data/profiles/default_full.profile @@ -0,0 +1,28 @@ +#Version +1.0 + +#Asset +base +scene/solarsystem/planets/earth/earth +scene/solarsystem/planets/earth/satellites/satellites +scene/solarsystem/planets/jupiter/minor_moons +scene/solarsystem/planets/saturn/minor_moons +scene/solarsystem/planets/uranus/minor_moons +scene/solarsystem/planets/neptune/inner_moons +scene/solarsystem/planets/neptune/irregular_prograde_moons +scene/solarsystem/planets/neptune/irregular_retrograde_moons + +#Property +setPropertyValue {earth_satellites}.Renderable.Enabled false + +#Time +relative -1d + +#Camera +goToGeo "Earth" 58.5877 16.1924 20000000 + +#MarkNodes +Earth +Mars +Moon +Sun diff --git a/data/profiles/gaia.profile b/data/profiles/gaia.profile new file mode 100644 index 0000000000..9b123c9933 --- /dev/null +++ b/data/profiles/gaia.profile @@ -0,0 +1,24 @@ +#Version +1.0 + +#Module +Gaia openspace.printFatal('Could not load gaia profile due to missing module "gaia"') + +#Asset +base +scene/solarsystem/planets/earth/earth +scene/milkyway/gaia/gaiastars +scene/milkyway/gaia/apogee +scene/milkyway/gaia/galah +scene/solarsystem/missions/gaia/gaia +scene/solarsystem/missions/gaia/trail +scene/solarsystem/missions/gaia/dashboard + +#Property +setPropertyValueSingle Scene.Stars.Renderable.Enabled false + +#Camera +setNavigationState "Earth" 1000000000000.0, 1000000000000.0, 1000000000000.0 + +#MarkNodes +Gaia diff --git a/data/assets/insight.profile b/data/profiles/insight.profile similarity index 93% rename from data/assets/insight.profile rename to data/profiles/insight.profile index 0491c3e059..8367730f5e 100644 --- a/data/assets/insight.profile +++ b/data/profiles/insight.profile @@ -2,7 +2,8 @@ 1.0 #Asset -scene/solarsystem/missions/insight/edl required +base +scene/solarsystem/missions/insight/edl insightAsset #Property setPropertyValueSingle Scene.PlutoBarycenterTrail.Renderable.Enabled false @@ -23,7 +24,7 @@ SHIFT+i Undo Insight landing layers setup Unset Insight layers /Missions/Insight absolute 2018 NOV 26 19:39:03.68 #Camera -setNavigationState "Insight" "Root" 8.430115E0, -1.791710E1, 2.813660E0 0.494659E0,0.357162E0,0.792306E0 +setNavigationState insightAsset.Insight.Identifier "Root" 8.430115E0, -1.791710E1, 2.813660E0 0.494659E0,0.357162E0,0.792306E0 #MarkNodes Insight diff --git a/data/assets/juno.profile b/data/profiles/juno.profile similarity index 94% rename from data/assets/juno.profile rename to data/profiles/juno.profile index d2bb28a316..e1d1a021d5 100644 --- a/data/assets/juno.profile +++ b/data/profiles/juno.profile @@ -2,7 +2,8 @@ 1.0 #Asset -scene/solarsystem/missions/juno/juno required +base +scene/solarsystem/missions/juno/juno junoAsset #Keybinding 1 Setting the simulation speed to 1 seconds per realtime second Set sim speed 1 /Simulation Speed false "openspace.time.interpolateDeltaTime(1)" @@ -30,7 +31,7 @@ Shift+0 Setting the simulation speed to 14745600 seconds per realtime second Set absolute 2016-07-01T10:05:00.00 #Camera -setNavigationState "Juno" "Root" 1.243398E8, 7.176068E7, -1.519733E7 -0.377400E0, 0.764573E0, 0.522492E0 +setNavigationState junoAsset.Juno.Identifier "Root" 1.243398E8, 7.176068E7, -1.519733E7 -0.377400E0, 0.764573E0, 0.522492E0 #MarkNodes Jupiter diff --git a/data/profiles/mars.profile b/data/profiles/mars.profile new file mode 100644 index 0000000000..bcd26230b8 --- /dev/null +++ b/data/profiles/mars.profile @@ -0,0 +1,25 @@ +#Version +1.0 + +#Asset +util/scene_helper sceneHelper +base +scene/solarsystem/missions/perseverance/perseverance +scene/solarsystem/missions/perseverance/shortcuts perseveranceShortcuts +scene/solarsystem/missions/insight/edl insightAsset +scene/solarsystem/missions/insight/shortcuts insightShortcuts + +#Camera +goToGeo "Mars" 58.5877 16.1924 8000000 + +#MarkNodes +Mars +Insight +Perseverance + +#AdditionalScripts +local insightEDLShortcuts = sceneHelper.extractShortcuts({"Insight Height Offset", "Enable HiRISE", "Insight EDL Time", "Insight EDL NavigationState"}, insightShortcuts.Shortcuts) +local insightDisableShortcuts = sceneHelper.extractShortcuts({"Default Height Offset", "Disable HiRISE"}, insightShortcuts.Shortcuts) +local PerseverenceLandedShortcuts = sceneHelper.extractShortcuts({"Perseverance Height Offset", "Perseverance landed time", "Enable HiRISE"}, perseveranceShortcuts.Shortcuts) +local Keybindings = { sceneHelper.createKeyBindFromShortcuts("i", insightEDLShortcuts, "/Missions/Insight", "Set and goto Insight Landing", "Setup scene for insight EDL" ), sceneHelper.createKeyBindFromShortcuts("SHIFT+i", insightDisableShortcuts, "/Missions/Insight", "Unset Insight Landing", "Disable Mars layer settings used for insight EDL" ), sceneHelper.createKeyBindFromShortcuts("p", PerseverenceLandedShortcuts, "/Missions/Perseverance" )} +sceneHelper.bindKeys(Keybindings) diff --git a/data/assets/messenger.profile b/data/profiles/messenger.profile similarity index 97% rename from data/assets/messenger.profile rename to data/profiles/messenger.profile index 8a508388d9..bdbb7d2722 100644 --- a/data/assets/messenger.profile +++ b/data/profiles/messenger.profile @@ -5,7 +5,9 @@ Volume asset.require('scene/solarsystem/missions/messenger/mercurymagnetosphere') openspace.printWarning("Volume module is not loaded, skipping asset: mercurymagnetosphere") #Asset -scene/solarsystem/missions/messenger/messengerSC required +base +scene/solarsystem/missions/messenger/dashboard +scene/solarsystem/missions/messenger/messengerSC #Keybinding 1 Setting the simulation speed to 1 seconds per realtime second Set sim speed 1 /Simulation Speed false "openspace.time.interpolateDeltaTime(1)" diff --git a/data/assets/newhorizons.profile b/data/profiles/newhorizons.profile similarity index 97% rename from data/assets/newhorizons.profile rename to data/profiles/newhorizons.profile index ff3a46a096..f7be9639a7 100644 --- a/data/assets/newhorizons.profile +++ b/data/profiles/newhorizons.profile @@ -2,8 +2,12 @@ 1.0 #Asset -scene/solarsystem/missions/newhorizons/newhorizons required -scene/solarsystem/missions/newhorizons/model required +util/property_helper propertyHelper +util/renderable_helper renderableHelper +base +scene/solarsystem/missions/newhorizons/newhorizons +scene/solarsystem/missions/newhorizons/model +scene/solarsystem/missions/newhorizons/dashboard #Property setPropertyValueSingle NavigationHandler.OrbitalNavigator.FollowAnchorNodeRotationDistance 20.000000 diff --git a/data/assets/osirisrex.profile b/data/profiles/osirisrex.profile similarity index 64% rename from data/assets/osirisrex.profile rename to data/profiles/osirisrex.profile index eec35f2466..c7b783877e 100644 --- a/data/assets/osirisrex.profile +++ b/data/profiles/osirisrex.profile @@ -2,8 +2,11 @@ 1.0 #Asset -scene/solarsystem/missions/osirisrex/model required -scene/solarsystem/missions/osirisrex/osirisrex required +util/property_helper propertyHelper +base +scene/solarsystem/missions/osirisrex/model OsirisRexAsset +scene/solarsystem/missions/osirisrex/osirisrex +scene/solarsystem/missions/osirisrex/dashboard #Property setPropertyValueSingle NavigationHandler.OrbitalNavigator.FollowAnchorNodeRotationDistance 20.000000 @@ -12,13 +15,13 @@ setPropertyValueSingle Scene.Charon.Renderable.Enabled false setPropertyValueSingle Scene.PlutoBarycenterTrail.Renderable.Enabled false #Keybinding -a Sets the focus of the camera on 'OsirisRex'. Focus on OsirisRex /Missions/Osiris Rex false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'OsirisRex'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)" +a Sets the focus of the camera on 'OsirisRex' Focus on OsirisRex /Missions/Osiris Rex false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'OsirisRex'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)" s Sets the focus of the camera on 'Bennu' Focus on Bennu /Missions/Osiris Rex false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'BennuBarycenter'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)" -F8 Sets the time to the approach at Bennu. Set Bennu approach time /Missions/Osiris Rex false "openspace.printInfo('Set time: Approach'); openspace.time.setTime('2018-SEP-11 21:31:01.183')" -F9 Sets the time to the preliminary survey of Bennu. Set Bennu survey time /Missions/Osiris Rex false "openspace.printInfo('Set time: Preliminary Survey'); openspace.time.setTime('2018-NOV-20 01:13:12.183')" -F10 Sets the time to the orbital B event. Set orbital B event time /Missions/Osiris Rex false "openspace.printInfo('Set time: Orbital B'); openspace.time.setTime('2019-APR-08 10:35:27.186')" -F11 Sets the time to the recon event. Set recon event time /Missions/Osiris Rex false "openspace.printInfo('Set time: Recon'); openspace.time.setTime('2019-MAY-25 03:50:31.195')" -q Toggles the visibility of the text marking the location of the Sun. Toggle Sun marker /Missions/Osiris Rex false propertyHelper.invert('Scene.SunMarker.Renderable.Enabled') +F8 Sets the time to the approach at Bennu Set Bennu approach time /Missions/Osiris Rex false "openspace.printInfo('Set time: Approach'); openspace.time.setTime('2018-SEP-11 21:31:01.183')" +F9 Sets the time to the preliminary survey of Bennu Set Bennu survey time /Missions/Osiris Rex false "openspace.printInfo('Set time: Preliminary Survey'); openspace.time.setTime('2018-NOV-20 01:13:12.183')" +F10 Sets the time to the orbital B event Set orbital B event time /Missions/Osiris Rex false "openspace.printInfo('Set time: Orbital B'); openspace.time.setTime('2019-APR-08 10:35:27.186')" +F11 Sets the time to the recon event Set recon event time /Missions/Osiris Rex false "openspace.printInfo('Set time: Recon'); openspace.time.setTime('2019-MAY-25 03:50:31.195')" +q Toggles the visibility of the text marking the location of the Sun Toggle Sun marker /Missions/Osiris Rex false propertyHelper.invert('Scene.SunMarker.Renderable.Enabled') 1 Setting the simulation speed to 1 seconds per realtime second Set sim speed 1 /Simulation Speed false "openspace.time.interpolateDeltaTime(1)" 2 Setting the simulation speed to 5 seconds per realtime second Set sim speed 5 /Simulation Speed false "openspace.time.interpolateDeltaTime(5)" 3 Setting the simulation speed to 10 seconds per realtime second Set sim speed 10 /Simulation Speed false "openspace.time.interpolateDeltaTime(10)" @@ -37,7 +40,7 @@ Shift+3 Setting the simulation speed to 8640 seconds per realtime second Set sim absolute 2018 10 30 23:00:00.500 #Camera -setNavigationState "OsirisRex" 26974590199.661884, 76314608558.908020, -127086452897.101791 +setNavigationState OsirisRexAsset.OsirisRex.Identifier 26974590199.661884, 76314608558.908020, -127086452897.101791 #MarkNodes OsirisRex diff --git a/data/assets/rosetta.profile b/data/profiles/rosetta.profile similarity index 66% rename from data/assets/rosetta.profile rename to data/profiles/rosetta.profile index 0b0bd37881..dd27b61191 100644 --- a/data/assets/rosetta.profile +++ b/data/profiles/rosetta.profile @@ -5,29 +5,33 @@ Volume asset.require('scene/solarsystem/missions/messenger/mercurymagnetosphere') openspace.printWarning("Volume module is not loaded, skipping asset: mercurymagnetosphere") #Asset -scene/solarsystem/missions/rosetta/67p required -scene/solarsystem/missions/rosetta/rosetta required +util/property_helper propertyHelper +util/renderable_helper renderableHelper +base +scene/solarsystem/missions/rosetta/67p Comet67PAsset +scene/solarsystem/missions/rosetta/rosetta +scene/solarsystem/missions/rosetta/dashboard #Property setPropertyValue Scene.67P.Renderable.PerformShading false setPropertyValue Scene.ImagePlaneRosetta.Renderable.Enabled false #Keybinding -a Sets the focus of the camera on '67P'. Focus on 67P /Missions/Rosetta false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', '67P'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)" +a Sets the focus of the camera on '67P' Focus on 67P /Missions/Rosetta false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', '67P'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)" s Sets the focus of the camera on 'Rosetta' Focus on Rosetta /Missions/Rosetta false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Rosetta'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)" -F5 Jumps to the time of initial approach of Rosetta to 67P. Set initial approach time /Missions/Rosetta false "openspace.time.setTime('2014-08-01T03:05:18.101')" F6 Jumps to the time when the Philae lander is released. Set lander release time /Missions/Rosetta false "openspace.time.setTime('2014-11-12T08:20:00.00')" +Shift+F6 Jumps to the time of initial approach of Rosetta to 67P. Set initial approach time /Missions/Rosetta false "openspace.time.setTime('2014-08-01T03:05:18.101')" F8 Removes all image projections from 67P. Clear 67P projections /Missions/Rosetta false "openspace.setPropertyValue('Scene.67P.Renderable.ProjectionComponent.ClearAllProjections', true)" e Toggles the visibility of all trails further from the Sun than 67P. Toggle outer planetary trails /Missions/Rosetta false renderableHelper.toggle('Scene.JupiterTrail')..renderableHelper.toggle('Scene.SaturnTrail')..renderableHelper.toggle('Scene.UranusTrail')..renderableHelper.toggle('Scene.NeptuneTrail') i Toggles the visibility of the free floating image plane. Toggle image plane /Missions/Rosetta false renderableHelper.toggle('Scene.ImagePlaneRosetta') -g Toggles the visibility of Philae's trail. Toggle Philae trail /Missions/Rosetta false renderableHelper.toggle('Scene.PhilaeTrail') +o Toggles the visibility of Philae's trail. Toggle Philae trail /Missions/Rosetta false renderableHelper.toggle('Scene.PhilaeTrail') p Enables or disables the image projection on 67P. Toggle 67P projection /Missions/Rosetta false propertyHelper.invert('Scene.67P.Renderable.ProjectionComponent.PerformProjection') #Time absolute 2014-08-01T03:05:00.000 #Camera -setNavigationState "67P" "Root" -7.294781E5 , -6.657894E5, 2.509047E6 0.146529E0, 0.944727E0, 0.293290E0 +setNavigationState Comet67PAsset.Comet67P.Identifier "Root" -7.294781E5 , -6.657894E5, 2.509047E6 0.146529E0, 0.944727E0, 0.293290E0 #MarkNodes 67P diff --git a/data/assets/touch.profile b/data/profiles/touch.profile similarity index 75% rename from data/assets/touch.profile rename to data/profiles/touch.profile index 237a1c79b5..8fe818c78b 100644 --- a/data/assets/touch.profile +++ b/data/profiles/touch.profile @@ -5,8 +5,9 @@ Touch local webGui = asset.require('util/webgui'); webGui.setCefRoute("ontouch") openspace.printFatal('Could not load scene due to missing module "touch"') #Asset -scene/solarsystem/planets/earth/earth required -util/webgui required +base +scene/solarsystem/planets/earth/earth earthAsset +util/webgui #Property setPropertyValueSingle Scene.Pluto.Renderable.Enabled false @@ -17,7 +18,7 @@ setPropertyValueSingle Scene.PlutoBarycenterTrail.Renderable.Enabled false relative -1d #Camera -setNavigationState "Earth" 58.5877,16.1924,20000000 +setNavigationState earthAsset.Earth.Identifier 58.5877,16.1924,20000000 #MarkNodes Earth diff --git a/data/assets/voyager.profile b/data/profiles/voyager.profile similarity index 85% rename from data/assets/voyager.profile rename to data/profiles/voyager.profile index 150344f1e1..a95f48581e 100644 --- a/data/assets/voyager.profile +++ b/data/profiles/voyager.profile @@ -2,14 +2,16 @@ 1.0 #Asset -scene/solarsystem/planets/jupiter/minor_moons required -scene/solarsystem/planets/saturn/minor_moons required -scene/solarsystem/planets/uranus/minor_moons required -scene/solarsystem/planets/neptune/inner_moons required -scene/solarsystem/planets/neptune/irregular_prograde_moons required -scene/solarsystem/planets/neptune/irregular_retrograde_moons required -scene/solarsystem/missions/voyager/voyager1 required -scene/solarsystem/missions/voyager/voyager2 required +base +scene/solarsystem/planets/jupiter/minor_moons +scene/solarsystem/planets/saturn/minor_moons +scene/solarsystem/planets/uranus/minor_moons +scene/solarsystem/planets/neptune/inner_moons +scene/solarsystem/planets/neptune/irregular_prograde_moons +scene/solarsystem/planets/neptune/irregular_retrograde_moons +scene/solarsystem/missions/voyager/voyager1 VoyagerAsset +scene/solarsystem/missions/voyager/voyager2 +scene/solarsystem/missions/voyager/dashboard #Keybinding 1 Setting the simulation speed to 1 seconds per realtime second Set sim speed 1 /Simulation Speed false "openspace.time.interpolateDeltaTime(1)" @@ -42,7 +44,7 @@ setPropertyValueSingle Scene.PlutoBarycenterTrail.Renderable.Enabled false absolute 1977 SEP 10 12:00:00 #Camera -setNavigationState "Voyager_1" "Root" 526781518487.171326, 257168309890.072144, -1381125204152.817383 +setNavigationState VoyagerAsset.Voyager_1.Identifier "Root" 526781518487.171326, 257168309890.072144, -1381125204152.817383 #MarkNodes Earth diff --git a/data/web/documentation/scenelicense.hbs b/data/web/documentation/scenelicense.hbs index 0399a74564..ee9bce0479 100644 --- a/data/web/documentation/scenelicense.hbs +++ b/data/web/documentation/scenelicense.hbs @@ -3,14 +3,12 @@

- - {{module}} - -

{{name}}

-
-

{{attribution}}

-

{{url}}

-

{{licenseText}}

+

Asset - {{name}}

+

{{description}}

+

Version - {{version}}

+

Author - {{author}}

+

Associated URL - {{url}}

+

Filepath - {{path}}

diff --git a/ext/ghoul b/ext/ghoul index df1522a1fe..d35be27b61 160000 --- a/ext/ghoul +++ b/ext/ghoul @@ -1 +1 @@ -Subproject commit df1522a1fe6f02b4d03cd36478d9d36f4384e93e +Subproject commit d35be27b61140e76d8283999d9faee16977b1bfc diff --git a/include/openspace/engine/configuration.h b/include/openspace/engine/configuration.h index 907ccd0e3f..41643b3041 100644 --- a/include/openspace/engine/configuration.h +++ b/include/openspace/engine/configuration.h @@ -91,6 +91,7 @@ struct Configuration { glm::dvec3 screenSpaceRotation = glm::dvec3(0.0); glm::dvec3 masterRotation = glm::dvec3(0.0); bool isConsoleDisabled = false; + bool usingProfile = false; std::map moduleConfigurations; diff --git a/include/openspace/engine/globals.h b/include/openspace/engine/globals.h index 523936c496..0bf76957f5 100644 --- a/include/openspace/engine/globals.h +++ b/include/openspace/engine/globals.h @@ -65,6 +65,7 @@ namespace scripting { class ScriptEngine; class ScriptScheduler; } // namespace scripting +class Profile; namespace global { @@ -100,6 +101,7 @@ properties::PropertyOwner& gRootPropertyOwner(); properties::PropertyOwner& gScreenSpaceRootPropertyOwner(); scripting::ScriptEngine& gScriptEngine(); scripting::ScriptScheduler& gScriptScheduler(); +Profile& gProfile(); } // namespace detail @@ -139,6 +141,7 @@ static properties::PropertyOwner& screenSpaceRootPropertyOwner = detail::gScreenSpaceRootPropertyOwner(); static scripting::ScriptEngine& scriptEngine = detail::gScriptEngine(); static scripting::ScriptScheduler& scriptScheduler = detail::gScriptScheduler(); +static Profile& profile = detail::gProfile(); void initialize(); void initializeGL(); diff --git a/include/openspace/engine/openspaceengine.h b/include/openspace/engine/openspaceengine.h index 2e076e82c4..967629e94b 100644 --- a/include/openspace/engine/openspaceengine.h +++ b/include/openspace/engine/openspaceengine.h @@ -76,6 +76,7 @@ public: const glm::mat4& projectionMatrix); void drawOverlays(); void postDraw(); + void resetPropertyChangeFlags(); void keyboardCallback(Key key, KeyModifier mod, KeyAction action); void charCallback(unsigned int codepoint, KeyModifier modifier); void mouseButtonCallback(MouseButton button, MouseAction action, KeyModifier mods); @@ -110,6 +111,7 @@ private: void runGlobalCustomizationScripts(); void configureLogging(); std::string generateFilePath(std::string openspaceRelativePath); + void resetPropertyChangeFlagsOfSubowners(openspace::properties::PropertyOwner* po); std::unique_ptr _scene; std::unique_ptr _assetManager; @@ -120,6 +122,8 @@ private: bool _hasScheduledAssetLoading = false; std::string _scheduledAssetPathToLoad; + glm::vec2 _mousePosition; + //grabs json from each module to pass to the documentation engine. std::string _documentationJson; diff --git a/include/openspace/engine/windowdelegate.h b/include/openspace/engine/windowdelegate.h index 4dbbae6d95..0fd27ba589 100644 --- a/include/openspace/engine/windowdelegate.h +++ b/include/openspace/engine/windowdelegate.h @@ -40,8 +40,6 @@ struct WindowDelegate { void (*setSynchronization)(bool enabled) = [](bool) {}; - void (*clearAllWindows)(const glm::vec4& clearColor) = [](const glm::vec4&) {}; - bool (*windowHasResized)() = []() { return false; }; double (*averageDeltaTime)() = []() { return 0.0; }; @@ -56,47 +54,29 @@ struct WindowDelegate { double (*applicationTime)() = []() { return 0.0; }; - glm::vec2 (*mousePosition)() = []() { return glm::vec2(0.f); }; - - uint32_t (*mouseButtons)(int maxNumber) = [](int) { return uint32_t(0); }; - glm::ivec2 (*currentWindowSize)() = []() { return glm::ivec2(0); }; glm::ivec2 (*currentSubwindowSize)() = []() { return glm::ivec2(0); }; - glm::ivec2 (*currentWindowResolution)() = []() { return glm::ivec2(0); }; - glm::ivec2 (*currentDrawBufferResolution)() = []() { return glm::ivec2(0); }; glm::ivec2 (*currentViewportSize)() = []() { return glm::ivec2(0); }; glm::vec2 (*dpiScaling)() = []() { return glm::vec2(1.f); }; - int (*currentNumberOfAaSamples)() = []() { return 1; }; - bool (*hasGuiWindow)() = []() { return false; }; bool (*isGuiWindow)() = []() { return false; }; - bool (*isMaster)() = []() { return false; }; - - int (*clusterId)() = []() { return 0; }; - - bool (*isUsingSwapGroups)() = []() { return false; }; - - bool (*isSwapGroupMaster)() = []() { return false; }; - - glm::mat4 (*viewProjectionMatrix)() = []() { return glm::mat4(1.f); }; + bool (*isMaster)() = []() { return true; }; glm::mat4 (*modelMatrix)() = []() { return glm::mat4(1.f); }; void (*setNearFarClippingPlane)(float near, float far) = [](float, float) {}; - void (*setEyeSeparationDistance)(float distance) = [](float) {}; - bool (*isFisheyeRendering)() = []() { return false; }; - unsigned int(*takeScreenshot)(bool applyWarping) = [](bool) { return 0u; }; + unsigned int (*takeScreenshot)(bool applyWarping) = [](bool) { return 0u; }; void (*swapBuffer)() = []() {}; diff --git a/include/openspace/interaction/sessionrecording.h b/include/openspace/interaction/sessionrecording.h index b3856c5981..98ceb9b5ff 100644 --- a/include/openspace/interaction/sessionrecording.h +++ b/include/openspace/interaction/sessionrecording.h @@ -27,6 +27,7 @@ #include #include +#include #include #include @@ -65,6 +66,12 @@ public: */ void preSynchronization(); + /** + * If enabled, calling this function will render information about the session + * recording that is currently taking place to the screen. + */ + void render(); + /** * Current time based on playback mode */ @@ -209,6 +216,8 @@ public: std::vector playbackList() const; private: + properties::BoolProperty _renderPlaybackInformation; + enum class RecordedType { Camera = 0, Time, diff --git a/include/openspace/properties/property.h b/include/openspace/properties/property.h index 1e5dd5c8b3..ce92102ece 100644 --- a/include/openspace/properties/property.h +++ b/include/openspace/properties/property.h @@ -495,6 +495,18 @@ public: */ virtual std::string generateAdditionalJsonDescription() const; + /** + * Returns whether or not the property value has changed. + * + * \return true if the property has changed + */ + bool hasChanged() const; + + /** + * Reset the valChanged flag to an unchanged state, as if value has not been changed. + */ + void resetToUnchanged(); + protected: static const char* IdentifierKey; static const char* NameKey; @@ -531,6 +543,9 @@ protected: /// The callback function sthat will be invoked whenever the value changes std::vector>> _onDeleteCallbacks; + /// Flag indicating that this property value has been changed after initialization + bool _isValueDirty = false; + private: void notifyDeleteListeners(); diff --git a/include/openspace/properties/templateproperty.inl b/include/openspace/properties/templateproperty.inl index 56fdca6a1a..f8bdb0ecd3 100644 --- a/include/openspace/properties/templateproperty.inl +++ b/include/openspace/properties/templateproperty.inl @@ -176,6 +176,7 @@ void openspace::properties::TemplateProperty::setValue(T val) { if (val != _value) { _value = std::move(val); notifyChangeListeners(); + _isValueDirty = true; } } @@ -196,6 +197,7 @@ void TemplateProperty::set(std::any value) { if (v != _value) { _value = std::move(v); notifyChangeListeners(); + _isValueDirty = true; } } diff --git a/include/openspace/rendering/helper.h b/include/openspace/rendering/helper.h index dbe6bfef42..a26eb9aab6 100644 --- a/include/openspace/rendering/helper.h +++ b/include/openspace/rendering/helper.h @@ -91,6 +91,22 @@ VertexObjects& gVertexObjectsConstructor(); static Shaders& shaders = detail::gShadersConstructor(); static VertexObjects& vertexObjects = detail::gVertexObjectsConstructor(); +struct Vertex { + GLfloat xyz[3]; + GLfloat uv[2]; + GLfloat rgba[4]; +}; + +struct VertexXYZ { + GLfloat xyz[3]; +}; + +VertexXYZ convertToXYZ(const Vertex& v); + +std::vector convert(std::vector v); + +std::vector createRing(int nSegments, float radius, glm::vec4 colors = glm::vec4(1.f)); + } // namespace openspace::rendering::helper #endif // __OPENSPACE_CORE___HELPER___H__ diff --git a/include/openspace/rendering/renderable.h b/include/openspace/rendering/renderable.h index d43b8f9bb7..1b2817c946 100644 --- a/include/openspace/rendering/renderable.h +++ b/include/openspace/rendering/renderable.h @@ -53,8 +53,9 @@ public: enum class RenderBin : int { Background = 1, Opaque = 2, - Transparent = 4, - Overlay = 8 + PreDeferredTransparent = 4, + PostDeferredTransparent = 8, + Overlay = 16 }; static std::unique_ptr createFromDictionary( diff --git a/include/openspace/rendering/renderengine.h b/include/openspace/rendering/renderengine.h index 29f12f2c4a..f850018ea2 100644 --- a/include/openspace/rendering/renderengine.h +++ b/include/openspace/rendering/renderengine.h @@ -189,6 +189,7 @@ private: properties::BoolProperty _showOverlayOnSlaves; properties::BoolProperty _showLog; + properties::FloatProperty _verticalLogOffset; properties::BoolProperty _showVersionInfo; properties::BoolProperty _showCameraInfo; diff --git a/include/openspace/scene/asset.h b/include/openspace/scene/asset.h index 13b7fe650f..83749a11ba 100644 --- a/include/openspace/scene/asset.h +++ b/include/openspace/scene/asset.h @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -37,7 +38,7 @@ class AssetLoader; class Asset : public std::enable_shared_from_this { public: - enum class State : unsigned int { + enum class State { Unloaded, LoadingFailed, Loaded, @@ -48,8 +49,14 @@ public: InitializationFailed }; - using StateChangeCallback = std::function; - using CallbackHandle = size_t; + struct MetaInformation { + std::string name; + std::string version; + std::string description; + std::string author; + std::string url; + std::string license; + }; /** * Root asset constructor @@ -69,10 +76,9 @@ public: AssetLoader* loader() const; State state() const; - void addSynchronization(std::shared_ptr synchronization); + void addSynchronization(std::unique_ptr synchronization); void clearSynchronizations(); - const std::vector>& - ownSynchronizations() const; + std::vector ownSynchronizations() const; void syncStateChanged(ResourceSynchronization* sync, ResourceSynchronization::State state); @@ -92,12 +98,6 @@ public: * its own synchronizations and required assets' synchronizations could start. */ bool startSynchronizations(); - bool hasSyncingOrResolvedParent() const; - bool isSynchronized() const; - bool isSyncingOrResolved() const; - bool cancelAllSynchronizations(); - bool cancelUnwantedSynchronizations(); - bool restartAllSynchronizations(); float requiredSynchronizationProgress() const; float requestedSynchronizationProgress(); @@ -120,21 +120,16 @@ public: void request(std::shared_ptr child); void unrequest(Asset* child); - const std::vector>& requestedAssets() const; - std::vector> requestingAssets() const; - const std::vector>& requiredAssets() const; - std::vector> requiringAssets() const; + std::vector requestedAssets() const; + std::vector requestingAssets() const; + std::vector requiredAssets() const; + std::vector requiringAssets() const; - std::vector> requiredSubTreeAssets() const; - std::vector> subTreeAssets() const; - std::vector> childAssets() const; - std::vector> parentAssets() const; + std::vector subTreeAssets() const; + std::vector childAssets() const; - bool isRequired() const; - bool isRequested() const; - bool shouldBeInitialized() const; - - std::string resolveLocalResource(std::string resourceName); + void setMetaInformation(MetaInformation metaInformation); + std::optional metaInformation() const; private: void setState(State state); @@ -142,7 +137,14 @@ private: void requiredAssetChangedState(Asset::State childState); void requestedAssetChangedState(Asset* child, Asset::State childState); + bool isSynchronized() const; + bool isSyncingOrResolved() const; bool isSyncResolveReady(); + bool hasSyncingOrResolvedParent() const; + bool cancelAllSynchronizations(); + bool cancelUnwantedSynchronizations(); + + std::vector requiredSubTreeAssets() const; std::atomic _state; AssetLoader* _loader; @@ -157,6 +159,8 @@ private: // Absolute path to asset file std::string _assetPath; + std::optional _metaInformation; + // Required assets std::vector> _requiredAssets; diff --git a/include/openspace/scene/assetlistener.h b/include/openspace/scene/assetlistener.h index 60061fd263..62041a919f 100644 --- a/include/openspace/scene/assetlistener.h +++ b/include/openspace/scene/assetlistener.h @@ -32,12 +32,9 @@ namespace openspace { class AssetListener { public: virtual ~AssetListener() = default; - virtual void assetStateChanged(std::shared_ptr asset, Asset::State state) = 0; - virtual void assetRequested(std::shared_ptr parent, - std::shared_ptr child) = 0; - - virtual void assetUnrequested(std::shared_ptr parent, - std::shared_ptr child) = 0; + virtual void assetStateChanged(Asset* asset, Asset::State state) = 0; + virtual void assetRequested(Asset* parent, std::shared_ptr child) = 0; + virtual void assetUnrequested(Asset* parent, std::shared_ptr child) = 0; }; } // namespace openspace diff --git a/include/openspace/scene/assetloader.h b/include/openspace/scene/assetloader.h index ea32931835..4d99b176f8 100644 --- a/include/openspace/scene/assetloader.h +++ b/include/openspace/scene/assetloader.h @@ -49,15 +49,13 @@ int request(lua_State* state); int exists(lua_State* state); int localResource(lua_State* state); int syncedResource(lua_State* state); -int noOperation(lua_State* state); int exportAsset(lua_State* state); } // namespace assetloader -class Asset; +class AssetListener; class ResourceSynchronization; class SynchronizationWatcher; -class AssetListener; class AssetLoader { public: @@ -87,30 +85,26 @@ public: void untrackAsset(Asset* asset); /** - * Return the asset identified by the identifier, - * if the asset is tracked. Otherwise return nullptr. - */ + * Return the asset identified by the identifier, + * if the asset is tracked. Otherwise return nullptr. + */ std::shared_ptr has(const std::string& identifier) const; - /** - * Return the lua state - */ - ghoul::lua::LuaState* luaState(); + /// Return the root asset + const Asset& rootAsset() const; + + /// Return the root asset + Asset& rootAsset(); /** - * Return the root asset + * Return the asset root directory */ - std::shared_ptr rootAsset() const; - - /** - * Return the asset root directory - */ const std::string& assetRootDirectory() const; /** * Load an asset */ - bool loadAsset(std::shared_ptr asset); + bool loadAsset(Asset* asset); /** * Unload an asset @@ -157,30 +151,29 @@ public: /** * Notify listeners about asset state change */ - void assetStateChanged(std::shared_ptr asset, Asset::State state); + void assetStateChanged(Asset* asset, Asset::State state); /** * Notify listeners about new requests */ - void assetRequested(std::shared_ptr parent, std::shared_ptr child); + void assetRequested(Asset* parent, std::shared_ptr child); /** * Notify listeners about removed requests */ - void assetUnrequested(std::shared_ptr parent, std::shared_ptr child); + void assetUnrequested(Asset* parent, std::shared_ptr child); private: - std::shared_ptr require(const std::string& identifier); std::shared_ptr request(const std::string& identifier); void unrequest(const std::string& identifier); void setUpAssetLuaTable(Asset* asset); void tearDownAssetLuaTable(Asset* asset); - std::shared_ptr getAsset(std::string name); + std::shared_ptr getAsset(const std::string& name); ghoul::filesystem::Directory currentDirectory() const; - void setCurrentAsset(std::shared_ptr asset); + void setCurrentAsset(Asset* asset); void addLuaDependencyTable(Asset* dependant, Asset* dependency); // Lua functions @@ -195,7 +188,7 @@ private: int syncedResourceLua(Asset* asset); int exportAssetLua(Asset* asset); - // Friend c closures (callable from lua, and maps to lua functions above) + // Friend C closures (callable from Lua, and maps to Lua functions above) friend int assetloader::onInitialize(lua_State* state); friend int assetloader::onDeinitialize(lua_State* state); friend int assetloader::onInitializeDependency(lua_State* state); @@ -209,7 +202,7 @@ private: // Member variables std::shared_ptr _rootAsset; - std::shared_ptr _currentAsset; + Asset* _currentAsset = nullptr; std::unordered_map> _trackedAssets; SynchronizationWatcher* _synchronizationWatcher; std::string _assetRootDirectory; @@ -218,14 +211,15 @@ private: // State change listeners std::vector _assetListeners; - // References to lua values + // References to Lua values std::unordered_map> _onInitializationFunctionRefs; std::unordered_map> _onDeinitializationFunctionRefs; std::unordered_map>> _onDependencyInitializationFunctionRefs; std::unordered_map>> _onDependencyDeinitializationFunctionRefs; - int _assetsTableRef; + + int _assetsTableRef = 0; }; } // namespace openspace diff --git a/include/openspace/scene/assetmanager.h b/include/openspace/scene/assetmanager.h index d279219463..8ed157d56d 100644 --- a/include/openspace/scene/assetmanager.h +++ b/include/openspace/scene/assetmanager.h @@ -27,9 +27,12 @@ #include +#include +#include +#include #include -#include #include +#include namespace openspace { @@ -41,18 +44,14 @@ class SynchronizationWatcher; /** * Interface for managing assets. - * The asset manager interface is only concerned with "top level" assets, - * i.e. assets that are loaded using setTargetAssetState, and not their dependencies. - * However, an asset is not considered synchronized before all its deps are - * synchronized. - * Also, setting a target state of an asset to Unloaded will only unload an asset - * from the system if it is not a dependency of a loaded asset. + * The asset manager interface is only concerned with "top level" assets, and not their + * dependencies. However, an asset is not considered synchronized before all its deps are + * synchronized. Also, setting a target state of an asset to Unloaded will only unload an + * asset from the system if it is not a dependency of a loaded asset. */ - class AssetManager : AssetListener { public: - AssetManager(std::unique_ptr loader, - std::unique_ptr syncWatcher); + AssetManager(ghoul::lua::LuaState* state, std::string assetRootDirectory); virtual ~AssetManager() = default; @@ -61,13 +60,12 @@ public: void add(const std::string& path); void remove(const std::string& path); void removeAll(); - std::shared_ptr rootAsset(); + const Asset& rootAsset() const; + Asset& rootAsset(); - void assetStateChanged(std::shared_ptr asset, Asset::State state) override; - void assetRequested(std::shared_ptr parent, - std::shared_ptr child) override; - void assetUnrequested(std::shared_ptr parent, - std::shared_ptr child) override; + void assetStateChanged(Asset* asset, Asset::State state) override; + void assetRequested(Asset* parent, std::shared_ptr child) override; + void assetUnrequested(Asset* parent, std::shared_ptr child) override; bool update(); scripting::LuaLibrary luaLibrary(); @@ -77,8 +75,8 @@ private: std::mutex _pendingInitializationsMutex; std::vector> _pendingInitializations; - std::unique_ptr _synchronizationWatcher; - std::unique_ptr _assetLoader; + SynchronizationWatcher _synchronizationWatcher; + AssetLoader _assetLoader; }; } // namespace openspace diff --git a/include/openspace/scene/profile.h b/include/openspace/scene/profile.h new file mode 100644 index 0000000000..71473693ee --- /dev/null +++ b/include/openspace/scene/profile.h @@ -0,0 +1,163 @@ +/***************************************************************************************** + * * + * OpenSpace * + * * + * Copyright (c) 2014-2020 * + * * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this * + * software and associated documentation files (the "Software"), to deal in the Software * + * without restriction, including without limitation the rights to use, copy, modify, * + * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * + * permit persons to whom the Software is furnished to do so, subject to the following * + * conditions: * + * * + * The above copyright notice and this permission notice shall be included in all copies * + * or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * + * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + ****************************************************************************************/ + +#ifndef __OPENSPACE_CORE___PROFILE___H__ +#define __OPENSPACE_CORE___PROFILE___H__ + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace openspace { + +namespace scripting { struct LuaLibrary; } + +class Profile { +public: + // Version + struct Version { + int major = 0; + int minor = 0; + }; + struct Module { + std::string name; + std::string loadedInstruction; + std::string notLoadedInstruction; + }; + struct Meta { + std::string name; + std::string version; + std::string description; + std::string author; + std::string url; + std::string license; + }; + struct Asset { + std::string path; + std::string name; + }; + struct Property { + enum class SetType { + SetPropertyValue, + SetPropertyValueSingle + }; + + SetType setType; + std::string name; + std::string value; + }; + struct Keybinding { + KeyWithModifier key; + std::string documentation; + std::string name; + std::string guiPath; + bool isLocal; + std::string script; + }; + struct Time { + enum class Type { + Absolute, + Relative + }; + + Type type; + std::string time; + }; + struct CameraNavState { + static constexpr const char* Type = "setNavigationState"; + + std::string anchor; + std::string aim; + std::string referenceFrame; + glm::dvec3 position; + std::optional up; + std::optional yaw; + std::optional pitch; + }; + struct CameraGoToGeo { + static constexpr const char* Type = "goToGeo"; + + std::string anchor; + double latitude; + double longitude; + std::optional altitude; + }; + using CameraType = std::variant; + + Profile() = default; + Profile(const std::vector& content); + std::string serialize() const; + + std::string convertToScene() const; + + /** + * Saves all current settings, starting from the profile that was loaded at startup, + * and all of the property & asset changes that were made since startup. + */ + void saveCurrentSettingsToProfile(const properties::PropertyOwner& rootOwner, + const std::string& currentTime, + interaction::NavigationHandler::NavigationState navState); + + /// If the value passed to this function is 'true', the addAsset and removeAsset + /// functions will be no-ops instead + void setIgnoreUpdates(bool ignoreUpdates); + + /// Adds a new asset and checks for duplicates + void addAsset(const std::string& path); + + /// Removes an asset + void removeAsset(const std::string& path); + + /** + * Returns the Lua library that contains all Lua functions available to provide + * profile functionality. + * \return The Lua library that contains all Lua functions available for profiles + */ + static scripting::LuaLibrary luaLibrary(); + +private: + static constexpr const Version CurrentVersion = Version { 1, 0 }; + + Version version = CurrentVersion; + std::vector modules; + std::optional meta; + std::vector assets; + std::vector properties; + std::vector keybindings; + std::optional