I gave Claude Code a stadium model and 1 prompt. It came back with a 30 second film: a fire in the west stand, 33,365 people getting out, and the smoke filling the roof.
A fire engineer's report gives you a number for the evacuation time. It rarely shows you where that number comes from: which exits get crowded, who waits, and for how long.
I wanted to see it. So I asked for a film. These are my prompts, what came back, what I rejected, and what it showed about the exits. A few people asked for the code, so the whole pipeline is free to download below.
Download the source code (zip, 72 KB) p390-stadium-fire.zip · Python pipeline · three.js film · README · free, no gate
The model was a SketchUp stadium I downloaded. This was the whole brief. (I've fixed typos in my prompts. Otherwise they're exactly as I typed them.)
new P folder. copy in this model. the idea is to create a 3D animation of this stadium for fire engineering analysis. 1. egress path: number of people exiting, where are the pinch points etc. Visualised using this 3D model from plan view. You can actually see people exiting and therefore identify the pinch area. 2. smoke simulation: visualise how smoke exhaust will work in the event of a fire. 16:9, 2 panels. Left panel is the 3D, takes up 2/3 of the screen. Right panel is a floor plan diagram showing a coloured diagram of egress, then smoke.
I used Claude Code running Opus 5.5 for all of it. It read the model before doing anything: 33,365 seats, 68 vomitories in 2 rows, a roof that rises from about 23 m at the inner edge to 26 m at the back, with an open oculus over the pitch.
Then it built 2 models of its own. A crowd model, where every person walks from their seat along the row, down the aisle and through a vomitory to 1 of 16 gates. And a smoke model, where smoke from the fire spreads under the roof like water poured upside down.
The first cut was 15 seconds of evacuation, then 15 seconds of smoke. It was correct and it told 2 separate stories. My note:
combine them. I want to see the fire location and then how people run away from the fire.
So it became 1 scenario on 1 clock. A fire starts in the upper west stand and grows to 5 MW. The 3 vomitories within 15 m of it are lost. Everyone else in the bowl has to find another way out.
This is where most of my prompts went. The numbers looked fine. The people didn't.
something weird, those people are just standing around the fire and waiting for others to evacuate. Naturally they would want to go away ASAP.
naturally those away from the fire source would be a bit delayed. Information takes time to register.
I think you need to consider that there are 2 alternative ways of escape. People in this situation will naturally go to the next exit.
Each one was a bug in behaviour, not in maths. People beside the fire now start moving in 10 to 30 seconds. People across the bowl wait for the alarm, 30 seconds to 4 minutes. Anyone stuck in a long queue switches to the next exit they can see.
I also asked it to bring in a second opinion: an agent briefed as an expert fire engineer, to review the work. It flagged that the first reaction times were too fast, that the fire and no-fire runs came from different versions of the model, and that the on-screen wording could mislead a client. All 3 were fixed.
This is the part worth saving. With the behaviour fixed, the film answers 4 questions a design team should ask.
Where is the fire, and how fast does it grow? A t² fast fire in the upper west stand, reaching 5 MW at about 5:30. That's an assumed design fire, not a measured one.
Which exits are affected? West 3, 4 and 5 are lost. Their people turn to the vomitories either side, so West 9 ends up with 831 people through one 2.2 m opening, and it's the last exit to clear, at 11:53.
How long does it take, and what does the fire cost? The bowl clears in 9:55 with no fire, and 11:54 with it. 3 lost vomitories cost about 2 minutes for the whole stadium.
Who is challenged most? The lower tier. You can see it in the plan: the lower rows have no vomitories of their own, so they climb to the gangway and queue behind the upper tier. Their median time to leave the bowl is 4:43, against 3:26 for the upper tier. I spotted this watching the film before the numbers showed it:
your evacuation should look at how each floor evacuates, because it looks like the ground floor evacuation is slower
So I asked for 1 design test: give the lower tier its own exits at the front, onto the pitch. With the fire, the bowl then clears in 9:18 instead of 11:54, and the lower tier's median drops from 4:43 to 2:52.
On smoke, the roof does its job. Because it rises to the back, smoke collects over the top rows, then spills out under the inner edge into the open roof from about 3:15. Over 20 minutes the smoke stays at least 3.3 m above the top seating row. The NFPA 101 standard for smoke-protected seating asks for 1.83 m.
The last rounds were about the film, not the analysis. A slow-motion moment where small call-out boxes explain what's happening beside the fire. An escape-time map where every seat is coloured by when its occupant got out. A section with a dimension from the smoke to the top row.
I also cut things. A fire brigade arriving to put the fire out:
cut out the fire fighting, it looks stupid.
And a coloured smoke map I couldn't read:
I'm not sure what this shot is showing. Remove if not adding more info.
AI did the making: reading the model, both simulations, the film, the music, and a fire engineering review of its own work. It didn't notice that people were waiting beside the fire, that the lower tier looked slow, or that a shot said nothing. I did. Most of my prompts were 1 line about something that looked wrong.
The zip has everything Claude Code wrote for the film:
.dae, finds the seats and vomitories, builds the egress field and runs the crowd, maps the roof underside, and draws the plan diagram.It doesn't include the stadium model (a third-party SketchUp model, not mine to share), the low-poly people pack (download it yourself), or the 500 MB of generated data, which the scripts rebuild from your own model. START-HERE.md in the zip says how to run it.
.dae file.The egress and smoke numbers are tuned to this stadium: vomitory positions, fire location and roof heights. Expect to adjust them for yours.
Download the source code (zip, 72 KB) p390-stadium-fire.zip · Python pipeline · three.js film · README · free, no gateThis is an indicative study, not a fire engineering report. The crowd and smoke models are simplified and haven't been checked against published flow rates. The fire size, reaction times and exit widths are assumptions. A real performance solution needs a fire engineer, certified tools and the actual drawings.
The lower tier finding comes from this model's geometry. It needs checking against the real drawings before anyone acts on it.
What it's good for is the conversation before that: seeing which exits matter, where the queues form, and what a design change might buy you. Give it your model, name the fire location, and ask it to show you where people get stuck.
Stadium model: a downloaded third-party SketchUp model, not included in the download. Low-poly people: Low Poly People Free Sample Pack. Music: original, synthesised for this film.
Built with Claude Code (Opus 5.5) and three.js. Crowd and smoke models are my own indicative studies, not certified egress or CFD software.