SimView: Batched 3D Simulation Visualizer

Project Overview

SimView is a powerful and interactive web-based visualization tool designed for exploring 3D models and terrain datasets in parallel simulation runs. It enables researchers, roboticists, and simulation engineers to visualize and compare multiple simulation scenarios (batches) side-by-side or overlaid directly within a shared 3D environment, helping debug control algorithms and analyze trajectory deviations.

The package consists of an easy-to-use Python API for compiling simulation scene graphs, a dynamic Three.js web viewer that supports real-time synchronization, telemetry plotting, and timeline playback, and a CLI for scripted inspection, diffing, and CI regression checks — all installable from PyPI.


Key Features

  • Parallel Batched Simulations: Render multiple simulation runs side-by-side or overlaid to inspect control offsets and trajectory deviations in real-time.
  • Efficient Shared Terrain: Optimize memory and rendering by sharing a single wavy heightmap terrain across all simulation batches.
  • Terrain-Along-Path Analysis: Sample any terrain layer (height/friction/stiffness) bilinear-interpolated along a body’s driven path — via the CLI or a dedicated “Terrain” tab in the browser Analysis panel — with a diverging diff color overlay to spot where batches diverge.
  • Interactive Timeline Playback: Play, pause, scrub, and loop through simulation frames with adjustable playback speeds (0.1x to 5.0x).
  • Multi-Channel Error Plotting: Real-time interactive graphs displaying tracking errors (e.g. position and rotation errors) for all batches simultaneously with tracking indicators.
  • Dynamic Body State HUD: Live telemetry display of position, rotation, and active tracking metrics of the robot chassis.
  • Self-Describing Scenes: Optional free-form metadata (engine, checkpoint, git commit, CLI args) travels with the scene JSON and surfaces in a read-only “Scene Info” panel and the simview info CLI command.
  • Flexible Visualization Settings: Toggle between Solid Mesh, Wireframe, and Point Cloud rendering modes; toggle Axes Helpers and customize heightmap colormaps (e.g. Magma, Thermal, Grayscale, Terrain).

Technical Stack

  • Front-end Visualizer: Structured as a responsive WebGL viewport using Three.js, OrbitControls for 3D camera navigation, Vanilla CSS for the dark HUD theme, and uPlot for real-time telemetry and terrain plots.
  • Back-end Server: A lightweight WebSocket-based server (FastAPI/uvicorn) serving static assets and streaming simulation state frames directly to client sessions.
  • Python API: Provides high-level scene layout utilities leveraging PyTorch and NumPy to compile terrains, bodies, collision points, and time-series data into a portable, structured JSON format.

Install it from PyPI with pip install simview (add the authoring extra for the scene-building API), or grab the source on GitHub (vlk-jan/simview). Full docs — usage guides, CLI reference, JSON format spec, and API reference — live at the documentation site, which also hosts a self-updating Live Interactive Demo showing the trajectory comparison of a three-wheeled robot on wavy terrain.