* Add sonification module * WIP: Extract planet positions in own thread * WIP Extract camera position and angle * Extract distance to camera and fix angle * WIP: Extract focus node * Optimize and clean up * Fix signed angle for surround sound * WIP add solar system view sonification * Extract time Extract the speed of time in OpenSpace and send it to supercollider. Needed to scale the sonification time in sync with OpenSpace * Extract moon angles Extract the angle from the planet to the major moons. Used in sonification to position the moons in surround. * Add easy change of angles Easier to switch what angle is calculated and sent to the sonification. Preperation for test in Dome * Fix shutdown error and nullptr error Add deinitialize for sonification module. Make sure pointers are initialized to nullptrs at start. Check in sonification main in the start if the scene is initialized * Add properties to contol sonification * Add property to turn on/off sonification for each planet * Change so the data only send for those planets that are enabled with the property * WIP: Improve GUI for sonification control * Add GUI for every sonification parameter per planet * However, only for Earth and Mars so far * Make data send more often and not just when the planet is enabled * Add sonification GUI for Mercury and Venus * GUI for each parameter for Marcury and Venus * Send a shutdown message to SuperCollider during deinitialization * Group properties together * Gather the planets properties under a planets property owner * Prepare to expand GUI * Name changes * Add Solar view in GUI * Add GUI that controls the solar sonification * Remove the all enabled slot in the settings arrays * No longer sends the all enabled slot in teh settings arrays * WIP Compare view * Add compare view in GUI. Allows to compare two planets sonification. * Finish compare view * Add connection to sonification for compare view * Improve responsiveness of GUI * Expand GUI with the outer planets * Add GUI for the outer planets * Increase array sizes to compe with all the planets * Add functionality for the outer planets GUI * Add temperature option in GUI * Fix so that compare cannot compare to itself * Scale selected planets in compare view * Fix reset of compare view * Add Rings sonification to GUI * Fix solar sonification GUI * Bind onChange function for the outer planets in the solar GUI * Add comment about where in the settings array the setting for rings are * Add master buttuns in GUI * Add button to turn on/off all the planets * Add button to turn on/off everything, solar when sun is in focus and planetary otherwise. * Add function to easier turn on/off all the parameters of solar and planetary * Only master start sonification module * Add check that only the master start the sonification thread * Clean up a few lines in the angle calculation * Optimize the sending of time * Time is not sent with every message but only when it changes instead * Add GUI for choosing what parts to compare * More GUI in compare view to control which sonification to compare * Fix deinitialize turn off sounds * Make sure the auto (enable all) now also work with the new compare GUI * Fix socket problem and code clean up * Only use one socket to send information to supercollider * General code clean up * Remove sending of focus node since supercollider does not use it * Adjust to new master * Fix oscpack linker issues * Update to new master * Add start of SonificationEngine * Move osc code into SonificationEngine * Add function for the planetary settings * Add function to access SonificationEngine via the module * Add base sonification class * Start seperating into different sonification classes * Add PlanetarySonification to the internal list * Move osc to its own module * Seperate planet sonifications into seperate sonification classes * Make time sonification its own class * Some clean up * Update to new cmake version * Add proper module dependency for the sonification module * Fix thread issue * Temporary fix with a sleep, works for now * Fix log messages issue * Add enabled property for the sonification module * Some clean up * More clean up * More clean up * Make it possible to send in node position directly for helper function * Add stop function for sonifications * Make possible to specify sonification destination ip and port in cfg file * Use Parameters struct for the sonification module dictionary * Make sonification module a singleton * Minor code style fix * Use module engine module function for singleton pattern instead * Add angle calculations for the surround modes * Use codegen map function for surround mode enum * Improve data storage and sending for planet sonificaitons * Add focus sonification * Fix elevation angle calculation for circular surround mode * Add Lua function to add entries for the PlanetsSonification * Add sonification profile * Add lua library file for planets sonification * Fix gui osc messages sending * Update to latest master * Rename planets sonificaitons to reflect they only work for planets * Add generic nodes sonification * Clean up Time sonification * plus a little in the nodes sonification * Add current time information to the time sonification * Add precision propertysubowner to structure Gui and make it flexible * Some general clean up * Rename solar sonification to planets overview sonification * Add Camera sonification * Fix some bugs with the camera sonificaiton * Make sure the sonificaiton thread is synced with the main thread * Fix camera and scene bug in sonificaiton * Dont hold up the main thread while sonificaiton thread does its work * Use the current frame time for speed calculaiton instead of average * Fix osc::Blob memory bug * Wait max 30 seconds in the sonification thread for the main thread * Make sure deinitialize of sonificaiton thread does not halt * Add the mode sonification as a proper sonification * Add nodes sonification example with ISS and Tiangong * Some renaming and restructuring * Add more detailed documentation for the sonification math * The util functions for different angles in the sonificaiton/telemetry module * Major clean up and restructuring * Rename module to telemetry to make it more clear that we do not produce the sonifications, we just spit out data used by a sonificaiton software * Add the new moon of Neptune to sonification and add sonification files * And add the test osc supercollider file * Add the OpenSpace header to the supercollider example file * Apply suggestions from code review Co-authored-by: Alexander Bock <alexander.bock@liu.se> * Adjust suggestions to fix errors * Address more PR comments * Address more PR comments * More PR comments * More PR comments * More PR comments * Even more PR comments * Update to latest master * More PR comments * Add OSC as a submodule * NOTE that due to path issues this commit will not build with the osc module, you will need to change the paths inside two osc files for it to build. Will fix very soon * Fix issue with oscpack not setting correct include directory * Address PR comments * Address PR comments * Update the SuperCollider files --------- Co-authored-by: Alexander Bock <alexander.bock@liu.se> Co-authored-by: Ivar Gorenko <ivago071@student.liu.se>
OpenSpace is an open source, non-commercial, and freely available interactive data visualization software designed to visualize the entire known universe and portray our ongoing efforts to investigate the cosmos. Bringing the latest techniques from data visualization research to the general public, OpenSpace supports interactive presentation of dynamic data from observations, simulations, and space mission planning and operations. The software works on multiple operating systems (Windows, Linux, MacOS) with an extensible architecture capable of powering both personal computers and also high resolution tiled displays and planetarium domes. In addition, OpenSpace enables simultaneous connections across the globe creating opportunity for shared experiences among audiences worldwide. The target audience of the software reaches from the general public who wishes to explore our universe, enthusiasts interested in hacking the underlying components in OpenSpace to create unique experiences, informal science institutions wishing to create a low-cost, yet powerful exhibition piece, but also scientists desiring to visualize their datasets in a contextualized, powerful software.
Background
OpenSpace started as a collaboration between Sweden's Linköping University (LiU) and the American Museum of Natural History (AMNH). Development of the software began several years ago through a close collaboration with NASA Goddard's Community Coordinated Modeling Center (CCMC) to model space weather forecasting and continued with visualizations of NASA's New Horizons mission to Pluto and ESA's Rosetta mission to 67P/Churyumov-Gerasimenko. This promising set of preliminary work provided a foundation for continued funding from NASA, the Swedish eScience Research Centre, and the Knut and Alice Wallenberg foundation, which has extended the collaboration to include the University of Utah's Scientific Computing and Imaging (SCI) Institute, New York University's Tandon School of Engineering, multiple informal science institutions across the world, and multiple, international vendors.
Features
Some of the high-level features supported in OpenSpace are:
- AMNH's Digital Universe catalog of extrasolar datasets (stars, galaxies, quasars, ...)
- High-resolution planetary images for major objects in the solar system (Earth, Moon, Mars, Venus, ...)
- Animated 3D models representing space missions (ISS, New Horizons, JWST, ...)
- Support for custom profiles with arbitrary user-defined content
- Ability to drive any type of display environment (flat screen, multi-projector, planetariums, ...)
- Lua and JavaScript interface into the engine allowing highly customized controls
- Native support to export an interactive sessions as individual frames for video export
- much much more (see our Changelog)
OpenSpace requires at least support for OpenGL version 3.3, some custom components require at least version 4.2.
Getting Started
This repository contains the source code and example profiles for OpenSpace, but does not contain any data. To build and install the application, please check out the Documentation. Here, you will find the build instructions for all operating systems. Please note that the Apple Silicon series of chips do not support OpenGL natively and Metal 2 does not support double precision accuracy (see here Section 2.1), therefore only the Intel processors for MacOS are supported and maintained.
Requirements for compiling are:
- CMake version 3.25 or above
- C++ compiler supporting C++20/C++23 (Visual Studio 2022 17.11, GCC13, Clang17, AppleClang 15.0.0)
- Qt
💡 Asking Questions
Feel free to create issues for missing features, bug reports, or compile problems or contact us via email. Regarding any issues, you are very welcome on our Slack support channel to which you can freely sign-up.
❤️ Contributing
Any contributions to the software are very welcome and can take a multitude of forms, from reporting a bug, fixing bugs, creating new content, writing new features, and even creating and sharing images and videos you have made with the software. Please feel free to share anything you want in the #sharespace channel on the Slack.
License
The contents of this repository provided under an MIT license.
Support
OpenSpace is supported by the following institutions:




