Berkay Orhan
WorkResearchExperienceAboutAskContact
Contact
← All projects

PROJECT / 2026

Ignition Lab

An Interactive V8 from Equations

A V8 engine built from equations in the browser: live thermodynamics, synthesized exhaust sound and an open Blender assembly of 1,494 named parts. Strict TypeScript with zero runtime dependencies.

type
Interactive engineering study
model
4.0 L V8, Wiebe burn, RK4 integration
runtime dependencies
None
3d assets
Blender scene + GLB, MIT licensed
stack
TypeScript · WebGL · Web Audio · AudioWorklet · Blender · glTF · Vercel · GitHub Actions

Open the LabSource ↗Project showcase ↗Download Blender scene ↗

Ignition Lab cutaway view of the V8 with the pressure-volume diagram, cycle work and exhaust pulse trace
Ignition Lab cutaway view of the V8 with the pressure-volume diagram, cycle work and exhaust pulse trace

01 / Overview

Ignition Lab is a V8 engine you can turn, cut open and listen to, with the engine's numbers computed from equations. Cylinder volume comes from slider-crank geometry, a Wiebe burn curve releases heat into an ideal gas, and a fourth-order Runge-Kutta integrator follows the energy through compression and expansion. The signed area inside the pressure-volume loop gives cycle work. A separate driving lab integrates wheel force, traction, drag and rolling resistance for six vehicle profiles, and the exhaust sound is synthesized from the engine's own events instead of played back from a recording. The whole thing is strict TypeScript compiled to native browser modules, with zero runtime dependencies.

02 / Key features

  • –Three views of the same engine: assembled, cutaway and exploded across ten layers, with orbit, zoom, part picking, and hide or isolate per assembly
  • –Live cycle model: adjust RPM, throttle, compression and ignition advance and the cycle is solved again, with a pressure-volume diagram, cycle work and indicated power next to the engine
  • –Crank angle scrubbing and a firing-sequence strip: select a cylinder to follow its intake, compression, power and exhaust strokes while the pistons, rods and valve gear move
  • –Driving lab with six vehicle profiles and scenarios for 0 to 100, 100 to 200, 80 to 160 km/h, braking, a single-gear dyno sweep and free drive, with a speed trace and run comparison
  • –Synthesized exhaust: separate exhaust banks with cross-plane or flat-plane cadence, blowdown pulses, pipe reflections and resonant body tones, with stock, sports and open exhausts and a choice of tailpipe, engine bay, cabin or roadside listening position
  • –Export and recording: completed runs export as JSON, and video with sound can be recorded locally, capturing the engine, telemetry and generated audio
  • –Open assets: a Blender scene with named collections and an explode controller, plus a static GLB, both built from 1,494 named parts

03 / Challenges

  • –Keeping the physics honest: the engine study uses a prescribed RPM and a steady cycle, so it can show cycle work without pretending to simulate crank acceleration, knock or mechanical losses
  • –Making sound without recordings: exhaust pulses, pipe reflections and body resonances have to follow RPM and cylinder pressure in real time, independently of the slower study animation
  • –Zero runtime dependencies for a WebGL scene, an audio engine and a UI, including a typed boundary for the generated Blender mesh data and for audio worklet messages
  • –Separating what is sourced from what is estimated: manufacturer peak figures are cited, while estimated torque curves and unverified inputs are marked as such

04 / Solution

The cycle is solved from first principles: slider-crank volume, a Wiebe burn curve and an RK4 energy integration, with work taken as the signed area of the pressure-volume loop. The driving model is built on integrated wheel force rather than target times, so no acceleration figure is prescribed. Sound is generated in an AudioWorklet from exhaust events, with pressure-derived load shaping strength and brightness and smoothed RPM transitions. The 3D assembly is authored in Blender, exported as meshes validated at the typed renderer boundary, and the model and assumptions are written up in the repo. Tests cover 81 thermodynamic parameter combinations, energy balance, integration convergence, the audio configurations, all 36 vehicle profile and scenario combinations and the 1,494-part GLB, and run in GitHub Actions on every push.

05 / Outcome

A deployed interactive lab at ignition-lab-berkay.vercel.app with a showcase page, generated sound demos and downloadable Blender and GLB assets under the MIT license. At the default settings the model gives 663.2 J per cylinder per cycle and 106.1 kW indicated power, with an energy residual of 0.042 J. The repo is clear that these checks show internal consistency, not agreement with a real engine.

06 / Screens

01 / 02

Driving lab after a 0 to 100 km/h run, with the speed trace, run comparison and exhaust pulses
01Driving lab: a calculated 0 to 100 km/h run with speed trace and exhaust pulses
Exploded view of the V8 separated into its ten layers
02Exploded view: the ten layers of the assembly pulled apart

Berkay Orhan© 2026

WorkResearchExperienceCVBack to top ↑