Berkay Orhan
WorkResearchExperienceAboutAskContact
Contact
← All projects

PROJECT / 2025 / LINKÖPING UNIVERSITY

Interactive Solar System Simulation

Blender add-on that simulates planetary orbits using Euler approximation, with keyframe animations, procedural shaders, and a sidebar UI for building custom solar systems.

stack
Blender · Python · NumPy · Blender API (bpy) · Euler Method

Download Add-on (.zip)Source ↗

How it works

  1. bodies
    planets and moons

  2. Euler
    NumPy integration loop

  3. keyframes
    every 100 steps

  4. Blender
    animated orbits

Interactive Solar System Simulation screenshot
Interactive Solar System Simulation screenshot

01 / Overview

A Blender 4.0+ add-on that models planetary orbits around a sun using Euler integration. Planets are created as UV spheres with procedural noise-based materials or mapped textures for the eight real planets. The simulation runs in two modes: standard (only sun gravity) and advanced (N-body with inter-planet gravitational forces). Results are baked into keyframe animations so you can scrub through the timeline or render the orbits directly in Blender.

02 / Key features

  • –Euler integration: calculates orbital positions step-by-step using gravitational acceleration from the sun, with configurable time steps and simulation duration
  • –Preset planets: Mercury through Neptune with real aphelion distances, masses, and orbital velocities baked in
  • –Advanced N-body mode: toggles inter-planet gravitational forces on top of sun gravity, which gets expensive fast with more planets
  • –Procedural materials: custom planets get randomized noise-based shaders through a color ramp, while preset planets load actual texture maps
  • –Sun shader: emission-based material with noise textures and a cardinal color ramp for that fiery look
  • –Keyframe baking: simulation results are written directly to Blender keyframes, so orbits play back in the viewport timeline

03 / Challenges

  • –Blender's shader node API changed names between versions, so the material code had to be rewritten to work with Blender 4.0+
  • –The advanced simulation scales quadratically — every planet pair needs force calculations each timestep, and with 300-second steps over simulated years, that adds up
  • –Keeping the custom UI responsive while a long simulation runs, since Blender's Python execution blocks the main thread

04 / Solution

Built as a standard Blender add-on with register/unregister hooks and a custom N-panel. The physics uses a CelestialBody base class with Planet and Moon subclasses, NumPy arrays for position/velocity/acceleration vectors, and Euler integration in a tight loop. Positions are sampled every 100 steps and converted to keyframes after the simulation finishes. The UI disables itself during simulation to prevent conflicting state.

05 / Outcome

The add-on installs into Blender's sidebar and lets you build a solar system from scratch or use real planet presets, run the simulation, and get a playable animation out of it. The standard mode handles quick visualizations in seconds. The advanced mode with N-body gravity is more accurate but can take a while depending on planet count and simulation length — the README warns you to save your project first, which about sums it up.

Berkay Orhan© 2026

WorkResearchExperienceCVBack to top ↑