A modular Blender add-on for authoring physically based procedural cinematic explosions with Mantaflow.
Blast FX builds ground-blast scenes from a coherent physical configuration — SI units, FPS-independent timing, scale-aware domains — rather than hand-keyframed fire and smoke. One click creates a full blast stack: gas domain with a deterministic pre-bake envelope, fireball, rising column, ground dust, shockwave, debris, flash, camera shake, exposure impulse and heat haze. Bakes run in a background Blender worker so the UI stays responsive, and caches are content-addressed: nothing is re-baked unless the physical state actually changed.
Blast FX is a visual simulation system. It produces cinematic explosions; it is not an engineering model of real blasts, yields or damage.
- Profiles, not magic numbers — deterministic
ExplosionProfiledata (source topology, combustion, buoyancy, turbulence, timing, camera framing) drives the sim;large_groundpreset rides the LARGE profile. - Physically timed secondary FX — flash, shockwave geometry, camera impulse and dust derive their timing from the physical event timeline, not from independent keyframes.
- Background bake worker — one non-blocking job at a time, atomic status, cancel-safe; incomplete generations are never reported as baked.
- Cache you can trust — state-hash identity covers envelope, profile, seed, FPS, gravity and units; stale or lying caches are detected and invalidated on file load.
- Quality tiers — Draft / Preview / Final change only numerical resolution, noise and solver quality, never the underlying event.
- Scene safety — generated objects are tagged (
blastfx_role/blastfx_id/blastfx_component) and every blast lives in its own removable collection.
- Blender 5.2+ (Mantaflow gas with adaptive domain)
- Cycles for rendering (recommended; renderer choice is a scene setting)
The add-on enforces one Blender unit = one metre. Scenes with other scale_length values are rejected at creation rather than mis-simulated.
- Download or build the add-on zip (
tools/package.py→blastfx_v1.zip). - In Blender:
Edit > Preferences > Add-ons > Install...and select the zip. - Enable Blast FX.
The repository also ships ready-made example scenes under examples/ (test_small, test_medium, test_large, test_large_event) — open one, press Bake Simulation, and render.
- Open
3D View > N > Blast FX. - Pick an explosion type and preset (or a scale/duration directly).
- Create the blast at the 3D cursor.
- Tune artistic parameters (components, appearance, cinematic FX).
- Run a preview bake — inspect motion and silhouette.
- Run the final bake — full resolution.
- Render with Cycles.
| Document | Contents |
|---|---|
docs/ARCHITECTURE.md |
System layers, blast entity, identity model, rebuild semantics, UI layout, engine services, Blender 5.2 API audit, bake-worker architecture, cache identity |
docs/PHYSICS.md |
Physics pipeline, SI units, FPS conversion, scale handling, realism tiers and policy, preset profiles, large-blast scope |
docs/DEVELOPMENT.md |
Install, dev loop, coding rules, test matrix, bake worker details, Mantaflow calibration workflow, physics validation plan |
docs/HISTORY.md |
Original prototype mapping, implementation order as built, milestone status/open roadmap |
Contributions are welcome — bug fixes, Blender-version compat fixes, and open roadmap items (see docs/HISTORY.md).
- Read the coding rules in
docs/DEVELOPMENT.md. Highlights: no simulation construction in UI panels, nobpy.contextdeep inside pure config code, tagged generated objects, explicit cache invalidation, a useful report from every operator. - Set up a developer loop (symlink or zip install; see
docs/DEVELOPMENT.md). - Keep pure logic importable without
bpy—bpy/mathutilsare only imported inside Blender; the pytest suite runs under plain Python. - Add or update tests:
.venv/bin/python -m pytest -q(profile/config/cache-identity tests live intests/). - Validate in Blender with the runtime tools:
tools/blender_runtime_smoke_test.py(API audit),tools/physics_validation.py(units/FPS/scale). - Visual/calibration changes go through the controlled workflow in
docs/DEVELOPMENT.md(Mantaflow visual calibration) — one-factor sweeps, results recorded, no fake precision.
- Blender version compat reports (5.2 first, then newer builds)
- Headless/CLI workflow hardening
- Geometry Nodes debris, Asset Browser integration (Milestone 7 in
docs/HISTORY.md)
Blast FX is free software, licensed under the GNU GPL-3.0 or later — see LICENSE.txt.
This keeps the add-on compatible with Blender's own GPL codebase and with the Blender Extensions platform. Contributions you submit fall under the same license.
speedis a simulation-time multiplier, not a playback control — it changes the physical event timeline for emitters, FX, cache ranges and cache identity.- Deterministic envelope: the Mantaflow domain is sized before baking from radius, velocity, gravity/buoyancy, timeline and voxel margin; bounds are part of cache identity. Adaptive-domain mode only shapes gas inside it.
- One bake at a time: per-blast job state, expected-state manifest + completion marker, confirmed-cache-file progress, no fabricated ETAs.
- Mantaflow is not an explosion solver: parameters are normalized/proxy controls; a parameter is called "physical" only when its unit, transformation and solver mapping are documented (acceptance rule in
docs/DEVELOPMENT.md).