Beta-12 (Patch-1) [0.19.1]


  • Add the ability to show a border around ScreenSpaceRenderables
  • Add a trigger property to delete a GeoJSON component
  • Added the option to disable roll and zoom for during interaction (#2866)
  • Add the ability to specify the angular size of the Sun in the atmosphere
  • Add the ability to fade in and out RenderableFieldLinesSequences


  • Update example in openspace.cfg to use correct pos instead of windowPos

User interface

  • Prevent checkbox from shrinking for profiles with long name (#2804)
  • Fix issue where user interface icons would not show up when starting OpenSpace without an internet connection (#2794)
  • Fix issue so that objects are only disblaed on fade to 0 if the checkbox was actually clicked (#2873)
  • Revert the accidental style change of the settings buttons causing them to be darker


New Assets/Profiles

  • Add a new eclipse profile with new assets
    • Add a new asset showing the eclipse shadow cone in the Earth/Moon system
    • Add “mission” file giving access to all eclipses between 1900 and 2100
    • Add mission file for ESA’s Juice mission (#2823)
    • Add radial grids showing a comparison between the Earth ecliptic plane and the Moon’s orbital plane
    • Add GeoJSON files showing the paths many eclipses of this century
    • Add an asset that shows the corona of the Sun during the last US eclipse in 2017
  • Add new asset showing a text marker for the Moon (#2831)

Updates to existing Assets/Profiles

  • Update faulty tags for Charon and update other Pluto Moon tags for consistency

Content creation

  • Add a new Renderable to show the shadow cone between two celestial bodies


  • Add new function that resets the camera back to the start position (#2825)
  • Add new function to remove all loaded assets (#2812)

Bug Fixes

  • Fix issues that would prevent scripts from being executed twice in a dome environment, that would break stateful actions (#2872)
  • Fix an issue where the start time would not be set correctly when starting a profile paused (#2826)
  • Fix crash when trying to start a profile with a navigation state camera settings
  • Fix issue where scripts from the Additional Scripts dialog would not be added in the order of the list, but in selection order instead (#2862)
  • Fix issue where the Sun and Moon were not layered correctly during an eclipse
  • Fix issue where the Apollo 17 insignia would not show up correctly
  • Fix issue with fisheye configurations created through the window configurator (#2818)
  • Fix issue where a non-square image would be shown at a wrong aspect ratio (#2815)
  • Prevent crash on AMD cards when trying to upload textures with MipMapping enabled (#2843)
  • Fix potential crash in the RenderableShadowCylinder
  • Fix issue that would ping the camera to infinity when trying to jump to an object with a bounding sphere of 0
  • Fix issue that prevented the action to hide all constellation lines from working
  • Improve quality of error messages when loading illformed GeoJSON file
  • Fix issue where trying to include an invalid image as a screenspace image would produce infinite error messages
  • Fix issue where transparency for movies would not work (#2792)
  • Fix issue that would cause GeoJSON rendering from not working on some graphics cards
  • Make the loading of GeoJSON files more flexible by allowing .json files (#2797) and allowing null geometries that will no longer fail, but instead produce an error (#2811)
  • Update offline Mars map to fix 180 degree offset
  • Fix potential crash when no shadow caster was specified in an eclipse scenario
  • Fix issue that would cause many scene graph nodes from now being deinitialized correctly (#2851)
  • Fix crash when flying to navigation state with non-existing anchor
  • Prevent crash when the cache folder is left in an inconsistent state after the application closes (#2850)
  • Prevent rendering errors in the galaxy rendering when minimizing the window (#2852)
  • Fix crash that would occur when trying to delete an asset that is also a root asset
  • Fix issue that prevented the Voyager 1 and 2 trails from showing up
  • Fix issue where the educational asset of the Statue of Liberty was located at the wrong place (#2787)
  • Fix issue that would be raised when trying to create an identifier from non-ASCII characters
  • Allow negative values for KeplerTranslation that wrap around correctly (#2784)

Beta-12 [0.19.0]


  • Add the ability to customize the complexity of the user interface by choosing the visibility level of settings to determine how many of the properties are visible. The visibility settings can be set from the openspace.cfg file or by specifying an environment variable OPENSPACE_LEVEL. (#166)
  • Toggling objects in the scene menu will now fade them in and out over a given time, rather than toggling them instantaneously. The default duration can be changed in the Setting / OpenSpace Engine / Fade Duration (#1827)
  • Add the ability to add videos to globes, sphere, and planes. The videos can be played back at their native speed or stretched to cover arbitrary time ranges. The data/asset/examples/video asset files include examples of how to use this feature. More information on how to use your own videos with this feature can be found here (#2608)
  • A complete redesign of the documentation generated by OpenSpace. The new documentation now includes more information, is a lot easier to navigate, and includes links to other important sources of information. It can be found in the same location as before under documentation/index.html (#2604)
  • Include a new technique to display GeoJSON files on globes. This feature can be used to render line strips and polygons onto the surface of any planet. More information about this feature can be found here (#2595)
  • Add a new GUI for ongoing missions that provides information about mission duration and milestones. This is a first step towards making mission profiles more accessible to users without prior knowledge (#2603)
  • Add a new user interface that can be toggled through the … menu in the bottom right that is a Getting Started Tour to teach new OpenSpace users how the navigation system works and how to operate the different settings in the menus (#2189)
  • Replace the previous caching method for GlobeBrowsing layers with an MRF-based cache. This allows the caching of any remote layers locally on the computer. More information about this feature can be found here (#929)
  • Fade out stars and other objects in atmosphere during daylight (#1148)
  • SkyBrowser
    • Add the ability for the image inset to have both sharp or rounded corners (#2029)
    • Add the ability to the Skybrowser to drag and drop images to change their order in the viewer
    • Add the loading of a hash for WWT image files and automatically force a redownload of the files if the hash has changed
    • Move the wwtdataimages location into the sync folder (#2115)
  • Various performance optimizations
    • Move calculations for bounding sphere to only be executed during a full sweep, which improves overall performance (2726)
    • Switch multiple OpenGL calls to a single call for increased efficiency in the asteroid rendering (#2724)
    • Improve the performance of the SkyBrowser for both rendering and image loading
    • Add a property to make it possible to set if the browser display copies should animate while the target is moving (#2773)
  • Add the ability to instantaneously jump to the end point of a path (#2568)
  • Add the ability to fade out a model that consists of multiple components (#2550)
  • Add the ability to provide both minimum and maximum distances in which the camera can be relative to the current focus node. This also adds the ability to disable the limit entirely (#2570)
  • Add the ability to select individual constellations (#1682)
  • Add support for other file formats for general pertubation information, in particular OMM KVN style (#1778)
  • Add the ability to disable the automatic slowdown when the camera approaches the surface of a planet in order to provide a flight that has a constant linear velocity (#2150)
  • Add the option to invert the direction of the camera during an idle behavior. This can be achieved both through a separate property that inverts the direction and also by allowing negative speed factors (#2379)
  • Add new configuration file that also adds 3D graphics to the UI window (#2530)
  • Enable highlighting of lines in grids (#1683)
  • Automatically abort an ongoing shutdown when interacting with the mouse or the keyboard (#2393)
  • Add the ability to disable mouse input (#2361), zoom and roll for touch interaction, and keybindings (#2238)
  • Expose the ambient intensity lighting value for globes as a property
  • Add the ability to configure the Console key through the openspace.cfg (#2573)
  • Add an enable/disable property to toggle the use of a TimelineRotation (#1607)
  • Expose the SGCT statistics information through a property in the RenderEngine (#2195)
  • Update Spice repository


  • Add info tooltips to profile dropdown
  • Add the ability to edit previously created configuration files through the editor (#2574)
  • Changes to the configuration editor with regards to the behavior of the GUI portion of the window and the 3D rendering. There is now a combobox in the editor to specify how the different windows should behave (#2531)
  • Option to specify a scene graph node in profile editor camera dialog to start the camera at the given scene graph node (#2227)
  • The properties panel now makes use of the script log dialog (#2253)
  • Allow the script log dialog to return multiple scripts
  • Replace profile actions/keybind editor button with single close button (#2497)
  • Rename “Keybindings” panel to “Actions & Keybindings” (#2363)
  • Add the ability to open a different scriptlog file when changing the additional scripts (#1545)
  • Reduce the forced height of the asset editor, making it possible to resize the editor to increase legibility on low resolution displays (#2547)
  • Remove explicit specification of read-only profiles and read-only configuration files. Now every profile and configuration file that is not in the user folder is read-only
  • Increase the size of the configuration boxes in the launcher to make files with long names easier to read (#1785)
  • Add a display of the version number in the bottom right of the launcher (#2365)


New Assets/Profiles

  • Add layer files that use the new AMNH-based WMS server (#2451)
  • Add objects that can be used to show the scale of other objects, for example the Eiffel Tower, the Statue of Liberty, the Golden Gate Bridge, etc (#2273)
  • Add new offline profile that can be used without internet access (#1714)
  • Add top dwarf planets (#1712)
  • Add Ceres in dwarf planet folder (#2260) (#2261)
  • Add assets for the Shepherd moon group of Saturn system (#2157)
  • Update existing outer planets SPICE Kernels and adding new moons to outer planets (#2556)
  • Add Itokawa model (#1264)
  • Add v3 WAC layer for the Moon (#886)
  • Add a new empty profile “empty.profile” that can be used as a starting point for custom profiles

New Profiles

  • Add a new profile showing ESA’s JUICE mission (#2155)
  • Add new profile to show the Artemis-1 mission (#2597)

New Maps

  • Add new 99.5% coverage CTX layer for Mars
  • Add new layer for the moon of Triton using Voyager2 information (#2198)
  • Add new Mosaic layer from the Lunar Orbiter Mosaic
  • Add a new combined clouds-magellan layer for Venus (#1534)
  • Add a combo layer that shows the NOAA20 VIIRS layer and transitions to the ESRI ground layer (#2538)

Updates to existing Assets/Profiles

  • Data Updates
    • Update the data from the exoplanets archive (#2450)
    • Update Digital Universe catalogue (#2729)
    • Update small solar system body assets to use updated Horizons data (#2614)
  • Action updates
    • Harmonize capitalization of action names (#2579)
    • Move actions defined in profiles into assets to increase their reusability (#2408)
    • Add actions for minor moons (#2476)
    • Add new actions to show the zodiac constellations (#2272)
    • Add action to control the global lighting of all globes (#2494)
    • Add new action to toggle dwarf planet visibility (#2674)
    • Add new actions for hiding/showing major moons and their trails (#2675)
  • Rename ISS scene graph node and remove the previous ISSPosition node (#2245)
  • Create labels for all moons and grids (#1486, #1244)
  • Create a better organization for moons of gas giants by introducing subgroups #2609
  • Add lighthour grid to Digital Universe, and light minute and light second grids to Earth (#2439)
  • Move Gaia and JWST from missions to new telescopes folder
  • Update all assets to a new consistent coding style (#2713)
    • Moves default_actions and default_keybindings asset file locations
    • Change procedural globes to explicitly specified globes
    • Remove unused asset files, asset_helper, script_scheduler_helper, testing_keybindings, and procedural_globe
  • Move the Milky Way Image and arm labels from /Universe/Galaxies to /Milky Way
  • Some simplifications to joystick assets and enable reversal of axes
  • Show animation in example asset modelshader.asset
  • Set default settings for blue marble height to make it look similar to the ESRI terrain layer (#891)
  • Change layer name/description to match image cloud image for the BlueMarble clouds (#2285)
  • Update the Ipac example asset
  • Remove luastatemachine example asset as it was superseded by the new native statemachine introduced in 0.18.0 (#2193)


  • Asteroids
    • Disable most objects in the asteroids profile at startup (#2477)
  • Bastille Day
    • Add more explanation about the static magnetosphere
    • Resetting the CME loop also sets the delta time to 1 in the bastille profile (#2516)
  • Juno
    • Update Juno kernels
  • JWST
    • Add trail that co-revolves with L2 around the Sun (#2220)
    • Change terra layer to viirs20 in the jwst profile (#2631)
    • Switch MessengerTrail to RenderableTrailTrajectory in order to match start/end times, and add corresponding sample interval (#2292)
    • Remove camera lighting from MESSENGER spacecraft
  • New Horizons
    • Update sample interval for New Horizons trail
    • Disable New Horizons labels by default (#2743)
  • Rosetta
    • Add scheduled scripts to enable shading outside of image acquisitions for the rosetta profile (#2514)
  • Voyager
    • Add tags to Voyager models in assets

Content creation

  • Add the ability to start a profile paused (#2228)
  • Add new dashboard item to show elapsed times (#2234)
  • Move the keybindings out of the base.asset and the specific label keybinding out of the default_keybindings
  • Remove the exoplanets and skybrowser module specifications from base_blank. Add the skybrowser and exoplanet module specifications to base asset
  • Add events when paths are started or finished (#1834)
  • Add events for when renderables are enabled/disabled that can be used to link renderables together (#2132)
  • Add a new portrait window config (#2383)
  • Add a new dashboard item that shows the state of input devices (#2415)
  • Make the argument in asset.localResource optional. If nothing is provided, then the path to the current directory that the asset is located in is returned
  • Make the numeric value of the model scale a property allowing the size of models to be adjusted at run-time
  • Add the ability to use integer NAIF IDs in a SpiceTranslation
  • Add the ability to pass a boolean value into the asset.require function that gets passed into the loaded asset as a enabled property (#1279)
  • Add property that contains the list of all compiled modules (#1021)
  • Make it possible to individually set the base radius for RenderablePrism shape which can be a cone, a pyramid, or any other shape
  • Add new property to the IndexSequenceTileProvider that shows the number of available images in a sequence (#2688)
  • Add a missing dimensions property to the screenspace browser
  • Add option to specify an offset distance for the start and end points of the RenderableNodeLine (#2483)
  • Remove unused Roll Y movement for camera
  • Add the ability to provide a random background image to the TileIndexTileProvider
  • Add an option to the HttpSynchronization to automatically unzip downloaded files (#1852)


  • Add the ability to pass a script to the setPropertyValue function that is called after interpolation has finished
  • Make it possible to trigger camera path with zero duration
  • Add function that creates a valid identifier from any string
  • Add function to load CSV file, utilize new function to correctly load bookmark values (#2124)
  • Update documentation for setPropertyValueSingle with all available easing functions
  • Add the ability to move globe layers based on their name (#2411)
  • Changes to the addCustomProperty function to restore functionality and make it more useful (#2433)
  • Add function to target the previous and next interesting focus node
  • Add function to return a list of all defined tags
  • Add function that returns information about the current OpenSpace version (#2136)
  • Add some helper scripts to modify property values (appendToList, add, invertBoolean)
  • Add functions to get distance to bounding and interaction sphere
  • Add function to get the current distance to the focus object
  • Add function that resets the screenshot index of the current session back to 0

Bug Fixes

  • Fix for the issue that prevented inputting underscores and period characters in the WebUI (#853, #896)
  • Fix an issue that caused a subsampling of the height map on planets (#2472)
  • Correctly show all points, including the proper end point for a RenerableTrailTrajectory (#2540)
  • Fix a bug that would cause 8 bit grayscale images showing up in red colors (#2330)
  • Fix an issue that caused the adding and removing of assets to happen in different orders on Windows and Linux (#2513)
  • Fix an issue where the behavior for a GUI window and a separate render window was causing the UI to disappear (#2372)
  • Use correct FOV calculations to handle portrait or landscape windows (#2546)
  • Disable too aggressive culling of RenderableTrails that caused some trails to not render at all (#2653)
  • Move model loading code to initialiseGL which caused models to sometimes load without textures (#1838)
  • Prevent crash when moving to an early date in the JWST profile (#2617)
  • Fix issue where whitespaces in bookmark locations would cause a loading failure by replacing them with underscores
  • Properly report an error when an .info file is missing the identifier, preventing the addition of a layer without one (#2490)
  • Fix an issue that caused multiple viewports and stereo rendering to not render correctly and prevent overlays on windows and viewports (#2542, #1645)
  • Make the local bookmarks file print their error message if they fail and continue evaluating the file (#1483)
  • Only reject major version changes in the JPL Horizons interface and allow minor version changes (#2507)
  • Fix an issue where property owners would show the identifier and not their name in GUI (#2521)
  • Check for invalid indices in the Gaia stars to prevent crashes in the gaia profile (#2495)
  • Prevent an infinite loop when extracting invalid commandline arguments when starting OpenSpace from the commandline (#2349)
  • Fix bug where triggering an action via keybinds would not work
  • Do not crash when trying to add assets with invalid path (#2299)
  • Fix issue that would cause actions in the Action panel to not be sorted based on their name or identifier
  • Make the travel indicator take floating point length values smaller than 1 (#2459)
  • Fix a bug in the gamma correction of dark screen-space renderables (#2776)
  • Fix issue that would cause some GlobeBrowsing Lua functions to not be documented correctly (#2732)
  • Fix an issue where it was not possible to set the WebGUI port from the openspace.cfg file (#2279)
  • Fix issue that caused a mask file in SGCT config to not load correctly (#2370)
  • Fix crash when calling openspace.getProperty() with only a tag
  • Remove unintentional default value for skybrowser/exoplanet module enabled property that would cause them to show in the UI even though they are disabled #2464
  • Fix an issue where the Constellation selection did not apply to labels (#2382)
  • Fix drag-drop error for the interesting nodes panel when trying to rearrange the list in the profile editor (#2346)
  • Correctly parse SSSB files that use an integer, rather than a floating point, epoch (#2551)
  • DashboardItem now listens to parameter ‘enabled’ in constructor
  • Fix issue where the GUI allows, and then crashes, when a numeric input field has NaN value (#2452)
  • Fix issue with some action folders in the Action panel not being clickable (#2467)
  • Fix issue where we would use the SSB position instead of the Sun position in light sources (#2223)
  • Add special case to the string tokenizer for “Keypad +” which caused an issue binding an action to that key (#2358)
  • Do not render RenderableTrailTrajectory if the time is exactly the start time, which causes a crash (#2314)
  • Prevent a crash in the SGCT Editor when trying to add more than 2 windows on a computer with only 1 monitor
  • Various precision fixes for camera paths that caused erratic behaviors (#2212)
  • Move the Lua Console updating into the actual postSyncPreDraw function so that it gets called accurately when GUI windows are present (#2141)
  • Fix crash when a profile would contain an empty profile line
  • Remove the flickering that would occur during TileIndex tile provider loading
  • Check for illegal keywords in the header of Speck files to detect invalid files (#2549)
  • Provide a proper error message when trying to overwrite a hidden profile (#2575)
  • Add more description to the –config command when starting OpenSpace on the commandline
  • Provide informational text in the actions panel if the user tries to create an illegal identifier (#2289)
  • Show error message when trying to save navigation state to an invalid file path rather than failing silently (#2508)
  • Provide error message when running OpenSpace from a folder containing a ‘, “, [, or ] rather than providing obscure error messages (#2563)
  • Fixed bug where Lua function openspace.pathnavigation.isFlying() returned an unexpected value
  • Fix an issue that would cause a failure to download when providing a URL that ends in / in a UrlSynchronization (#2435)
  • Fix collision between rendering of the native ImGui and the WebGui
  • Remove legacy geometry specification from RenderablePlanetProjection (#1967)
  • Fix issue with the ImGui GIBS panel where it did not create the new tileprovider format (#2108)
  • Fix broken ImGui time picker unit dropdown (#2639)
  • Do not crash when trying to access a module folder that does not exist (#2703)
  • Prevent Lua error when trying to load a constellations file that does not exist
  • Fix for preventing adding property from scriptlog if already in add mode (#2735)
  • Remove check for boundingsphere among child nodes when flying to small objects that could cause issues if a child has a bigger bounding sphere than the parent (#2257)
  • Fixes line ending problems with horizons vector files on Linux (#2588)
  • Remove the registered actions before updating the delta time keybindings that prevented the rebinding of delta times at runtime (#2764)
  • SkyBrowser
    • Ensure all nodes in a cluster load the image collection in the sky browser (#2313)
    • Fix issue with the sky browser space craft pointing where it would not point correctly under some circumstances
    • Fix bug where some channels in a cluster do not set the field of view to the same value after animating (#2425)
    • Fix a crash that could occur in the screenspace sky browser scaling (#2280)
    • Fix bug that caused the master node to have no rendering output
    • Fix issue where the scale sometimes did not update the border radius in time (#2266)
    • Ensure browser is initialized properly before executing JavaScript
    • Make it harder to input wrong values in the interface
    • Disable hover circle per default when setting renderable and show a warning if setting to non-existing node (#2153)

Breaking Changes

  • Removal of the previously deprecated asset_helper asset file


    1. Any asset.require('util/asset_helper') must be removed from the asset file
    2. Any usage of assetHelper.registerSceneGraphNodesAndExport(asset, { foobar, fizzbuzz }) should be replaced with:

    In the case of fewer or more elements being added, the replacement text can be adjust as required

  • Make the check for whitespaces and dots in identifiers fatal also in non-Debug builds


    Any identifier for any scene graph node in an asset file (for example Identifier = "Hello World") should be replaced with some other whitespace. In this example replacing the line with Identifier = "HelloWorld", Identifier = "Hello_World", or Identifier = "Hello_World" will all work

  • Provide error message if a GuiPath does not start with /


    Add a / in the beginning of the Gui/GuiPath key

  • Remove Earth layers that no longer work

Additional information

Atmosphere fadeout

Stars and other marked objects in the scene now automatically fade out when the camera enters the atmosphere of a planet during the day. These objects do not fade out when there is an eclipse at the specific location. Each atmosphere has properties to control the angle at which the sunrise/sunset starts and ends as well as a percentage value of the atmosphere scale height below which the fading should happen.


This feature replaces the previous WMSCaching setting in the openspace.cfg file and enables globe-browsing data to be cached using caching MRF’s as it is loaded from the original dataset. Subsequent reads of tiles that have been cached do not query the original dataset but picks it up from the MRF data. The caching supports anything that can be used a dataset for a GDAL raster but raw images such as JPGs are explicitly disallowed as they lack necessary geotransform data and result in warnings.

The caching is activated on a global scale by setting the following keys in openspace.cfg:

  • ModuleConfigurations/GlobeBrowsing/MRFCacheEnabled to true
  • ModuleConfigurations/GlobeBrowsing/MRFCacheLocation to some path where you want to store the MRF cache.

Settings can be overriden on a per-layer basis by adding the following entries to the layer entity of an asset: CacheSettings = { Enabled = true, Compression = "LERC", BlockSize = 512, Quality=25 }, The following per-layer settings are available and override the global module settings:

  • Enabled: Enable/disable caching for this layer
  • Compression: The compression algorithm to use for tile cache storage. (JPEG, PNG, or LERC)
  • BlockSize: Size of tiles in cache, should be a multiple of 2 although this is not required.
  • Quality: The quality setting of the JPEG compression (when used) Note that heightlayers must use LERC compresison and this is the default unless overridden by a layer.

Also note that there is currently no way to limit the size of the MRF cache folder. This means that over extended time, that folder will grow to fill the entire hard drive. To prevent that, you can either occasionally delete any subfolders that are no longer needed or set the .mrfcache file to be read-only using the mechanisms of the operating system. On Windows this is achieved by right-clicking on the file and selecting “Read-Only”. An example for this file is mrf_cache/Earth/Color Layers/ESRI_World_Imagery/13017050040333536902/13017050040333536902.mrfcache.


This feature adds the abililty to load GeoJSON files and show their features on planetary surfaces. One GeoJSON file creates one GeoJsonComponent, which in turn may contain multiple features. GeoJSON is a format that supports points, lines, and polygons. The data/assets/examples/geojson folder includes example files that have been used for testing. Any GeoJSON file can also be added through drag and drop. Note however that you might need to change the AltitudeMode or HeightOffset properties for the feature to be visible.