1. SpaceSim
  2. News

SpaceSim News

Update 0.10 - Changelog

[h3]Improved black holes for the real-time renderer[/h3][p]When using the real-time renderer, black holes will now distort the background in a realistic way. Instead of the semi-transparent shell used previously, the effect is more similar to the raymarched appearance. [/p][p]Furthermore, rigid (non-deformable) objects are also distorted by black holes and they themselves can bend light if they are dense enough. Previously, this was only possible with the raymarcher.[/p][p][/p][p][/p][p][/p][h3]See through the wormholes[/h3][p]Wormholes now act as a light portal when rendering with the raymarcher, allowing us to see objects located behind the wormhole destination. Furthermore, it’s now also possible to connect a wormhole to another wormhole, creating a two-way connection between two points in space. Finally, wormholes can transport rigid objects, which wasn’t possible before.
[/p][p]Planets located behind the white hole can be seen through the wormhole.[/p][p][/p][p][/p][h3]Shadows from starlight[/h3][p]Speaking of raymarcher improvements, stars and other hot objects can now cast shadows if occluded by a rigid object. Optionally, the renderer can sample the light source to create soft shadows. Similar to other effects the raymarcher supports, such as global illumination, this introduces noise in the rendered image, which can be controlled by the number of shadow samples and the total number of render iterations.[/p][p]Shadows from stars are currently limited to the raymarcher and not available for the real-time renderer.[/p][p][/p][p]Jupiter illuminated by starlight, with soft shadows cast by other planets.[/p][p][/p][p][/p][h3]Elastic and plastic deformations[/h3][p]The hydrodynamics solver now supports more complex material models. Objects can ‘remember’ their initial configuration and deform elastically, retaining their previous shape over time. However, if a certain threshold of the material is exceeded, objects deform plastically, making the deformation irreversible. The elasticity of the material and the threshold of plasticity can be set by material parameters shear modulus and tensile yield strength, respectively.[/p][p]The shear strength of the material can be enabled in the simulation settings. Since this effect is usually negligible on planetary scales, it is disabled by default to avoid the performance penalty and the time step limitations.[/p][p][/p][p]Two rubber bands colliding, deforming, and bouncing off each other. [/p][p][/p][h3]Visualization of orbital elements[/h3][p]The update adds a new overlay option, displayed when selecting an orbiting object. It shows the orbital plane, the pericenter of the orbit, and the angles defining the position of the satellite - the true anomaly, argument of periapsis, and longitude of the ascending node.[/p][p][/p][p][/p][p][/p][h3]Hill spheres[/h3][p]Another overlay option adds Hill spheres around objects. A Hill sphere is a region of dominant gravitational influence, showing where a moon can be placed and keep a stable orbit around the planet. Objects outside the Hill sphere are swept away by the gravity of the star.[/p][p][/p][p]Hill spheres around planets.[/p][p][/p][h3]Automatic exposure[/h3][p]The camera exposure can be set to automatic, adjusting to the average brightness of the image. This is especially useful in simulations where the particle temperature changes rapidly, such as stellar collisions or supernovae.[/p][p]
Exposure is decreased automatically due to a supernova.[/p][p][/p][p][/p][h3]Magnetic dipoles[/h3][p]The update lays a foundation for magnetic fields. It adds a magnetic moment to rigid objects, turning them into permanent magnets with a dipole field and a fixed magnetic axis. Particles do not currently have a permanent magnetic moment, but they can exhibit ferromagnetism, an induced magnetic field. Magnetic behavior of particles can be set using the parameter susceptibility in the material editor.[/p][p]The magnetic interactions are currently limited to:[/p]
  • [p]Force and torque between two permanent magnets (dipole-dipole interaction),[/p]
  • [p]Force between a permanent magnet and particles.[/p]
[p]The magnetic fields are currently highly simplified, and a number of important effects are missing. More options will be added in future updates.[/p][p]You can visualize magnetic fields by using the overlay option ‘potential field’, by setting the mode to ‘equipotentials’ and the force to ‘magnetism’.
[/p][p]Magnetic equipotentials of two permanent magnets.[/p][p][/p][p][/p][h3]Scripted simulation setup[/h3][p]If you want to set up a complex simulation and precisely position a large number of objects, you can now do it via a Lua script. Using the script, you can create objects, change their positions and velocities, adjust their properties and textures, etc. Basic documentation can be found on the website.[/p][p]
Planets created and rearranged by a Lua script.[/p][p][/p][h3]
More improvements[/h3]
  • [p]In addition to using Proton to run SpaceSim on Linux, you can now also run the native Linux build, using the Steam Linux runtime.[/p]
  • [p]Added options for taking screenshots. The new dialog allows you to specify resolution, set transparency and save the image to clipboard.[/p]
  • [p]Export options for Alembic and OpenVDB formats. You can set which particle attributes to export or the cell size of the VDB grid.[/p]
  • [p]Tweaked the default grid cell size for the VDB grid, significantly reducing the memory required to save a galaxy and other “gaseous” objects.[/p]
  • [p]Changed the default time step for simulations containing only rigid objects.[/p]
  • [p]Reworked the precise gravity of rigid objects, improving the conservation of linear and angular momentum.[/p]
  • [p]Added support for integer and boolean parameters to Lua scripts.[/p]
  • [p]The ring object can have multiple materials. You can now combine solid and gas particles without creating multiple overlapping rings.[/p]
  • [p]The GPU solver now supports periodic and removing boundary conditions. Periodic gravity is not implemented yet.[/p]
  • [p]The raymarcher now displays impact marks correctly.[/p]
  • [p]Added a 3D mode to the potential lattice. Each vertex is displaced proportionally to the local gravitational acceleration.[/p]
  • [p]When moving objects using the transform gizmo in the setup page, the update is now much faster. [/p]
  • [p]The rendered background can now be rotated arbitrarily.[/p]
  • [p]Object paths (past and predicted) can be set relative to another object or viewed in a co-rotating reference frame.[/p]
  • [p]Added an option to estimate past paths of objects at the beginning of the simulation.[/p]
  • [p]Objects in the simulation page can now be disabled. They will still be available, can be modified and saved in the session, but they won’t be included in the simulation.[/p]
  • [p]Added object tracking to the Free camera.[/p]
  • [p]Added an option to keep the camera “upright” (zero roll angle) during transitions.[/p]
  • [p]Added an option to calculate the normal map from the elevation texture.[/p]
  • [p]Increased speed of reading history files from disk.[/p]
  • [p]Deleting custom objects is now an undoable action.[/p]
[p][/p][h3]New content[/h3]
  • [p]Added random planetary systems. Create a star with several procedurally generated terrestrial planets and gas giants with a single button.[/p]
  • [p]New preset ‘Armor Penetration’ showcases plastic deformations.[/p]
  • [p]New preset ‘Circumbinary Disk’ is a simulation of a disk and a planetary system around a binary star. It used the raymarcher by default, showing shadows cast by planets.[/p]
  • [p]New preset ‘Donut Earth’ demonstrates the gravitational field of shaped objects.[/p]
  • [p]New preset ‘Planetary Magnet’ shows the effect of a strong permanent magnet on the Earth’s iron core.
    [/p]
[h3]Bug fixes[/h3]
  • [p]Fixed a crash when adding an extremely large (universe-sized) object into a simulation containing smaller (planetary-sized) objects.[/p]
  • [p]Fixed momentum conservation when a rigid object absorbs particles.[/p]
  • [p]Fixed saving PNG images with a transparent background.[/p]
  • [p]Fixed light bending caused by non-spherical objects (mainly stars).[/p]
  • [p]Fixed a bug causing gas particles to disappear at high resolutions.[/p]
  • [p]The pulsar beams now render with correct depth.[/p]
  • [p]The raymarcher now respects the ‘light bending’ toggle.[/p]
  • [p]Fixed saving procedurally generated planets with custom textures.[/p]
  • [p]Fixed reading files from network drives.[/p]
  • [p]Fixed loading of .obj meshes with non-ASCII file paths.[/p]
  • [p]Fixed incorrect normal orientation of .obj meshes.[/p]
  • [p]Fixed adaptive origin working incorrectly when some particles are absorbed.[/p]
  • [p]Fixed camera objects not updating correctly.
    [/p]

Patch 0.9.260108

  • [p]Fixed changes of camera field of view during recording[/p]
  • [p]Fixed parameter updates of Lua objects and Lua simulation systems[/p]
  • [p]Fixed saving supernova colors and opacities to history when using the 'full' history mode.[/p]

Update 0.9 - Changelog

[p]This changelog is mostly for people who have been following the development for longer time. It contains all added features and changes compared to the previous version that was available to Patreon subscribers.[/p][h3]Steam integration[/h3][p]Steam manages installation, provides automatic updates and allows users to easily switch between versions. Finally, no more .msi installers blocked by Windows Defender every time you run it![/p][p]Besides making downloads and updates much easier, Steam also gives us a way to share objects and simulations with other people using the Workshop. If you're missing a planet, a moon or another object, check out the workshop - maybe someone already made it. If so, you can simply subscribe to the item and it will show up next time you start the application.[/p][p]There are currently two types of workshop items:[/p]
  • [p]Objects are added into the list of objects you can add to your simulation, next to the built-in objects.[/p]
  • [p]Simulations are added into the simulation presets. Use ‘File > Open Preset’ and select the ‘Workshop’ filter to see all simulations you’re subscribed to. [/p]
[h3]GPU solver improvements[/h3][p]The GPU solver has been improved significantly compared to the previous version. Although there is still a lot of work that needs to be done in the future, this version has made decent progress, including but not limited to:[/p]
  • [p]Phase changes[/p]
  • [p]Emission and opacity from materials[/p]
  • [p]Moving and rotating rigid objects[/p]
  • [p]Impact marks[/p]
  • [p]Object trajectories[/p]
  • [p]Ability to track an object during the simulation[/p]
  • [p]Viewing properties & graphs of simulated objects[/p]
  • [p]Support of color modes (object and material view)[/p]
[h3]Simulation import & export[/h3][p]The update adds an option to export the simulation data to a number of formats. You can get the raw numbers in a .txt file if you want to analyze them yourself or compare the data with another simulation software.[/p][p]You can also export the simulation as Alembic (point geometric data) or OpenVDB (volumetric data), which allows you to import and render the data using rendering software, such as Blender. Note that if you want to use Alembic files generated by SpaceSim in Blender, it's necessary to download the latest version Blender 5.0.[/p][p]The import of simulations into SpaceSim has also been improved. In short, it just works without the previous limitations. Whenever you export a simulation, the current simulation setup (meaning all the object data, materials, textures, etc.) is now saved alongside the particle data from the simulation. This means that you can import any simulation into your session, regardless of the number of objects or particle count, even if the session is empty, which wasn’t possible before.[/p][p]A Moon-forming simulation imported into Blender. [/p][h3]Light bending for the real-time renderer[/h3][p]The black holes are once again more realistic. The real-time renderer now approximates the effect of gravitational lensing, creating a black hole appearance similar to the raymarcher. It works by moving particle images around and potentially creating duplicate images, depending on the camera angle. The effect is quite simple and does not reach the same quality as the raymarcher, but it has a real-time performance and it’s a significant improvement compared to the previous version.[/p][p]A black hole with an accretion disk, rendered using the real-time renderer and the raymarcher.[/p][p][/p][h3]Visualization of gravitational potential[/h3][p]Previous versions of SpaceSim had an option to visualize the gravitational field as equipotentials (curves of constant potential). Now there is another option - display a lattice where each vertex is displaced proportionally to the local gravitational potential. This clearly shows the relative gravitational pull of objects and gives us a convenient visualization of gravity wells (Hill spheres) around objects.[/p][p]Furthermore, it adds an option to view the effective potential, a combined potential of gravity and centrifugal force. This potential comes into play when discussing the three-body problem and Lagrange points. You can check out the simulation preset ‘Capturing Trojans’ to see the field lines of the effective potential.[/p][p]Planets creating local gravity wells as they orbit the star.[/p][p][/p][p][/p][h3]Accurate gravity of rigid objects[/h3][p]Rigid (non-deformable) objects now have two gravity modes. Spherical gravity treats the object as a point mass, regardless of its shape. It’s a fast method, but it can be inaccurate for objects with complex shapes. Precise gravity takes into account the shape and correctly calculates the force and torque that the object’s gravity exerts on particles and other rigid objects.[/p][p]It works by discretizing the rigid object into a number of ‘virtual’ particles and computing the gravitational interactions between the virtual and the real particles in the simulation. The number of virtual particles can be set in the ‘simulation’ tab of the rigid object.[/p][p]Earth dropped to the center of a rigid donut-shaped object. [/p][p][/p][h3]Lua simulation systems[/h3][p]If you are missing some simulation options or want to experiment with your own physics equations, it is now possible with the Lua simulation systems. The script can be set to run every time step or with a specified period, e.g. once every hour. For more information, see Lua scripting.[/p][p]The scripting options are currently quite basic. They’ve been mainly added to see if there is any interest in the community for similar functionality. If there is, I’ll add more entry points for mods and customization using Lua in the future.[/p][h3]Composite boundary conditions[/h3][p]This is a new type of boundary condition that allows combining boundary types and setting a different condition in each direction. For example, you can set a removing condition to the top of the domain, a solid condition to the bottom, and a periodic to the sides, to simulate a small part of an infinite two-dimensional surface.[/p][p]Note that this feature is currently only supported by the CPU solver.[/p][p]A periodic boundary on one side and a solid boundary on the other side.[/p][p][/p][p][/p][h3]Orbital integrator[/h3][p]The update adds an alternative to the N-body solver for the computation of gravitational interaction between objects. Instead of directly calculating gravitational accelerations between each pair of objects, it moves objects along their orbit and changes the orbits over time according to Lagrange planetary equations. While this makes the simulation much more limited, it allows us to run it with a significantly larger time step and simulate the evolution of planetary systems for millions of years.[/p][p]The intent for this solver is to use it alongside the stellar evolution model. When using the N-body gravitational solver, it’s not realistically possible to simulate the evolution of stars due to the time step limitations. The orbital integrator makes a simulation like that feasible.[/p][p]The stellar evolution model is currently mostly a placeholder. It's a simple parametric relation that increases the radii of stars over time, depending on their mass. In the future, it will be replaced by a more accurate stellar model.[/p][p]Orbital integrator evolves orbits of planets over millions of years.[/p][p][/p][p][/p][h3]Progress with Linux version[/h3][p]Besides Windows, SpaceSim now also runs on Linux, using the Steam Linux Runtime. It has the same feature set as the Windows version, with two notable exceptions:[/p]
  • [p]The .mp4 encoder is missing. It uses Windows Media Foundation, which obviously isn’t present on Linux.[/p]
  • [p]OpenVDB exporter is not supported. This might be added in the future.[/p]
[p]That being said, there are still a couple of known issues with the Linux version, so it isn't available for download on Steam yet.[/p][p]If you're a Linux user and would like to test this version, please reach out to me. It could use more testers before it is made available to the public.[/p][p]SpaceSim running on Manjaro Linux.[/p][p][/p][p][/p][h3]More features & improvements[/h3]
  • [p]The scatter object is a new type of object that allows you to easily create copies of other objects in your simulation setup. If you want to create a group of 100 galaxies, no need to manually add and set the position of each and every galaxy. Just set the scatter object to create 100 copies.[/p]
  • [p]You can now add pulsar beams to your stars, helping to visualize the fast rotation of neutron stars.[/p]
  • [p]Rotational flattening of stars. Fast-rotating stars are automatically flattened to account for the centrifugal force. You can see it when looking at the preset stars, such as Achernar.[/p]
  • [p]Emission texture for stars. You can add a custom emission image to the surface of stars, showing granulations or sunspots. This works for both deformable and non-deformable objects.[/p]
  • [p]Fading of impact marks. The impact marks on rigid objects can be set to disappear after some time. This is supported by both the CPU and the GPU solver and is correctly stored in the simulation history.[/p]
  • [p]Raymarcher now supports overlays, such as trajectories, the potential field, or the Roche limit.[/p]
  • [p]Mirror reflections. The update adds an option to customize the index of refraction of transparent objects, making it possible to create mirror-like surfaces.[/p][p]Mirrors creating repeated images of Earth.[/p][p][/p]
  • [p]Besides the polytropic stars, you can now create red giants. The main difference between the two is that red giants hold most of their mass in the core, which is represented by a single particle located in the center of the star.[/p]
  • [p]Physical topography allows to deform the surface of non-deformable planets according to their height map.[/p]
  • [p]Added the frame dragging, a correction of general relativity that affects the motion around massive objects (e.g. black holes).[/p]
  • [p]More options for comets - ion tail and comet jets.[/p]
  • [p]Customizable units. Do you want to use inches, yards or furlongs instead of meters? You can add them in the application preferences.[/p]
  • [p]When adding objects, you can search for an object by name or filter only specific types (for example, Steam workshop objects).[/p]
  • [p]The objects in the setup page can now be easily replaced with another object.[/p]
  • [p]Two more tutorials, helping new users get familiar with the application. One tutorial explains how to set up camera paths and the other shows how to adjust the accuracy and speed of the simulation.[/p]
  • [p]Added an option to save the procedurally generated textures of planets.[/p]
  • [p]New benchmark runs a simulation using both the CPU and the GPU solver and assigns a score to both devices.[/p]
  • [p]Basic antialiasing (FXAA) for the real-time renderer. It helps to suppress the “jaggies” at the edges of objects.[/p]
  • [p]Improved selection outlines of gas particles.[/p]
  • [p]Raymarcher now simulates the light bending effect from all dense objects, not just the black holes.[/p]
[h3]Bugfixes[/h3]
  • [p]Gas raymarching. The default method of gas rendering sometimes creates noticeable grid-like artifacts, usually with dense high-opacity gas. Unfortunately, this cannot be solved without sacrificing the performance and potentially also the stability of the renderer, due to limitations of the method. Instead, there is an alternative render mode that overcomes this limitation entirely. The new method can be significantly slower in some cases, so it's currently not enabled by default. It's recommended to enable it only if you notice artifacts in the rendered image. I hope to come up with a method in the future that combines the best of both approaches.[/p]
  • [p]The orthographic camera now uses the perspective projection for rendering the background. Previously, the background was always a single color, given by the pixel selected by the camera direction, which - although technically correct - isn't very useful.[/p]
  • [p]Galaxies now look consistently between the setup and the simulation page.[/p]
  • [p]Improved particle generation at low resolutions. The radius of spherical objects should now be much closer to the expected value, even for a low number of particles. Previously, it would consistently underestimate the density of objects.[/p]
  • [p]Error recovery. When the conditions are too extreme for the solver (objects being too big or too small, a large difference in densities or temperatures, etc.), it often causes overflow/underflow, resulting in NaNs in simulation data. This would most likely crash the application in previous versions. The solver now checks if the simulation data are valid and stops the simulation when a NaN is detected. This comes with a very minor performance penalty and can be turned off if needed.[/p]
  • [p]Improved import of textured meshed. Previously, it was only possible to import meshes with a single material, meaning any mesh with multiple textures would not import correctly. The new version automatically merges the textures into a single texture atlas, allowing to import meshes with any number of materials.[/p][p]Spaceship models imported to SpaceSim (created by blaice and Aditya Voxel).[/p][p][/p]
[h3]Content[/h3][p]New objects:[/p]
  • [p]Enceladus[/p]
  • [p]Achernar[/p]
  • [p](101955) Bennu[/p]
[p]New presets:[/p]
  • [p]Blood Moon is a simple simulation that demonstrates objects casting colored shadows.[/p]
  • [p]Capture of Triton shows the potential origin story of Neptune's moon Triton.[/p]
  • [p]Comet jets is a showcase for the newly added comet option.[/p]
  • [p]Evolution of the Solar System shows how planetary orbits change over time, and the Sun that slowly grows and consumes inner planets of the Solar System at the end of its life.[/p]
  • [p]Mirrors in orbit is mainly a demonstration of the mirror material.[/p]
  • [p]Mixing of atmospheres is a collision simulation involving gas giants with semi-transparent atmospheres.[/p]
  • [p]Three-body problem is a simple preset showing the chaotic behavior of three stars (and one planet) orbiting each other.[/p]
[h3]What's next?[/h3][p]I regularly update the development progress on SpaceSim Roadmap. Check it out if you want to see what changed, or come chat on Discord if you have a suggestion for what to add.[/p]