Skip to content

Storm Crowd

One figure stands perfectly still while rows of identical uniformed figures behind it erupt on the beat, bowing and head-banging in unison. Loops perfectly.

Effect, V1 Effects3DSeamless loop, verified416 lines of codev1.0.0

In Music & sound, Nature & weather

Next: Music BoxSurprise me

Storm Crowd preview
Starting live preview…
00:00:00:00 / 00:00:00:01

Live, running the real source at reduced resolution.

Your current settings go with it. Combine several clips and hand them over together from your sequence.

Effect controls

Presets

The one figure who never moves.

Beats per minute. The storm always lands on the second bar.

1

How deep the bows and how hard the head snaps.

0.35

0 is perfectly in sync; higher lets each figure land a touch early or late.

4

Off keeps the camera locked, as in the original.

7

The preview runs the same code your AI receives. These settings travel with the hand-off.

Info

What it is

The look of the STORM trend: a locked-off shot of rows of identical figures in matching uniforms on raw concrete steps, a board-marked concrete wall behind, flat overcast light. For the first bar everyone is frozen. On the second bar the crowd detonates: deep bows, heads snapping back, chests popping, head-banging on every beat, all in sync, while the one figure in front, in a white shirt, never moves. Then they settle and stand still again, so the clip loops. Choose the crowd's outfit, what the still figure wears, the tempo, how hard they move, how tightly they keep time, the number of rows and the light. The figures are faceless mannequins: the crowd is the motion and composition part of the trend, ready for a video model to dress with your own face and footage, or to use as it is as a striking stylised loop.

Reuse it in your own idea

  • Make your own STORM video: export the default loop and give it to a video model with a photo, asking it to keep the crowd's motion and camera and put your face on the still figure.
  • Music drop or track announcement: Black suits at night, red rim, with Kinetic Title Reveal over the top of the frame from the first hit.
  • "Stand out from the crowd" ad or recruiting clip: White shirts, one in black, with your line in a lower third.

Which part is reusable

src/storm-crowd.js is the ingredient your AI reuses. demo.js is only the example scene around it, and uses chrome-material only for the demo.

Good to know

  • The figures are faceless mannequins with simple hair caps, not people: for a photoreal STORM video use the loop as the motion reference for a video model.
  • The choreography is one fixed two-bar routine (bows, head snaps, double-time head-bangs); energy, looseness and tempo change how it is performed, not the moves.
  • No sound: set the tempo to your track and line the first hit (the start of bar two) up with the drop in your edit.

Technical details

Technical details
Implementation
Three.js 0.185.1 (WebGL) · ES module src/storm-crowd.js
Exports
  • createStormCrowd({ rows?, perRow?, spacing?, rise?, depth?, outfit?, lead?, beats?, bpm?, start?, energy?, looseness?, contactShadow?, seed? }) => { group, lead, figures, beats, secondsPerBeat, setTime(seconds), dispose() }
  • stormPose(beat, { start?, end?, energy? }) => { bow, head, chest, dip, swing }
  • OUTFITS: { school, black, white, khaki }
Dependencies (exact)
  • three@0.185.1 (source) — Renderer, instanced meshes, lights and shadows.
  • chrome-material@1.1.0 (demo) — Studio environment light and renderer settings.
  • apw-runtime@1.0.0 (demo) — Demo harness and loop helpers.
How it fits a scene

Coordinates: Metres: figures about 1.75 tall stand on y = 0; row r stands at height r × 0.32 and depth −r × 0.95; the still figure stands 0.55 in front of the front row at x = 0. The demo camera looks from z ≈ 8.3 at a point 1.3 high.

Lighting: A shadow-casting directional key, a hemisphere fill and a rim light per look (flat overcast, night with a red rim, low golden sun), the studio environment from chrome-material for the sheen, and a soft contact shadow under every figure.

Timing: setTime(seconds) poses every figure as a pure function of time; the routine repeats every `beats` beats. At 120 BPM the crowd is still until 2.0 s, storms until 7.0 s and is still again by 7.6 s.

Output
1080×1080, 30 fps, 8 s · procedural (computed from the frame number) · seamless loop — Every tempo fits a whole number of beats into the 8 seconds (90 BPM = 12, 105 = 14, 120 = 16, 135 = 18). The crowd stands still for the first bar, the storm runs to two beats before the end, every move has released by then, and the breathing and the optional camera drift are sines of whole cycles, so the last frame meets the first.
Tested
Rendered 240 frames on 2026-10-10 in Chrome 154.0.8037.97 headless on Linux 7.0.0-38-generic (x64), Node 22.14.0 (WebGL 2 via SwiftShader (software)). Same frame twice from fresh pages: identical. Loop: Frame 0 vs end state (progress 1): mean |Δ| 0.0000, max |Δ| 0 of 255.
Performance
34 figures at about 19 000 triangles each in 15 instanced draw calls, one 2048 shadow map, anti-aliasing. Real time on any GPU; about 5 seconds a frame under software WebGL (SwiftShader). Six rows of nine is the largest crowd the parameters allow; the code takes more, but the camera is framed for up to six rows.
Export a video yourself
Download the source, then in the folder: npm install npm run render -- storm-crowd/1.0.0 --out my-video.mp4Needs Node 18+, ffmpeg and Chrome/Chromium. Add --params my-settings.json (from Copy settings) for your own settings.
Version
1.0.0 · sha256:d085c2067972c849…
Files
License
MIT. Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder. License details
Provenance
Original code written for AI Pixel Wizard on 2026-10-10 by an automated agent (Claude), inspired by the STORM crowd trend on X, TikTok and Reels in September and October 2026, itself based on the GENER8ION "STORM" music video with Yung Lean. No footage, images, models or code from the video or from any source were used: the mannequins are lathe and sphere geometry, the concrete is drawn with seeded Canvas 2D noise, and the choreography is written from the trend's description (a still lead, a frozen crowd that detonates on the beat with bows and head-banging).
BinMore like this

Music Box

3D object3DSeamless loop12 seconds

Piano Keys

3D object3DSeamless loop16 seconds