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 and a dynamic Three.js web viewer that supports real-time synchronization, telemetry plotting, and timeline playback.
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.
- 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.
- 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 CanvasJS for real-time telemetry plots.
- Back-end Server: A lightweight WebSocket-based server (Flask/Socket.IO) 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.
The source code is available on GitHub (vlk-jan/simview). For a mock demonstration showing the trajectory comparison of a three-wheeled robot on wavy terrain, visit the Live Interactive Demo.
