Architectural scrollytelling · real footage driven by scroll
ATELIER VERTEX

Problem
Architecture firm sites are almost always static photo catalogs. They show the result, never the process, and don't convince clients who value execution.
Solution
A real construction film (from scaffolding to finished façade) whose video time is 100% tied to scroll, with no autoplay: scrolling down builds the building, scrolling up tears it down. The floor plan draws itself over the video like on a light table, a dimension line measures the build in days, and after the film the site becomes the studio's full archive, with delivered work, process and contact.
How it was built
The architecture splits video from scroll via a shared mutable state (world.ts), the same base as AUREX MOTORS. One ScrollTrigger per section writes (scene, progress), and a rAF loop reads it every frame to chase the video's currentTime with damping, so jumping scenes becomes a time dolly, never a hard cut. The film's script lives in one file (scenes.ts) mapping each scene to a fraction of the video's duration. The video itself is encoded with GOP 1, meaning every frame is a keyframe, because without it seeking during scrub stutters. The tradeoff is a larger file, paid knowingly.
The most distinctive scene is 'Prancha' (Blueprint): the video darkens into a light table and the floor plan draws itself in sync with scroll, with walls, furniture, dimension lines carrying real measurements and a drafting stamp, using the same pathLength=1 technique from an earlier project in the same family. The script's boundaries weren't guessed. I extracted frames from the source video every 0.5s to find where the real visual transformation happens, which turned out to be concentrated between 40% and 70% of the duration, then recalibrated the scenes so 'Vedação' and 'Fachada' actually read as different stages. Before that fix, two of the three scenes showed nearly the same static scaffolding.
Like the earlier stadiums project, the site went through a critical self-audit of its design (hero, storytelling, UX, UI, responsiveness, scored 0-10 per axis), run against the actual production build rather than against intent. The most serious finding was the fixed header, which had no real opaque background: any light-colored heading scrolling underneath it turned into illegible text-on-text. The fix surfaced a subtle CSS gotcha. A 'backdrop-filter' on the header becomes a containing block for 'position: fixed', so the fullscreen mobile menu was being sized relative to the header's own height instead of the viewport, until the panel was moved outside that element. After the audit came a real hamburger mobile nav, differentiated CTAs (one closes the film, only the other converts), a film progress rail and a custom cursor.
100% scroll-driven video
No autoplay: video currentTime chased by a damped rAF loop, GOP 1 for instant seek.
Self-drawing floor plan
'Blueprint' scene with walls, dimensions and stamp drawn live over the dimmed video.
Design self-audit
Critical 0-10 review run against the real build; found and fixed an illegible nav bug and a broken mobile menu.
More screens
Stack
- Next.js
- TypeScript
- GSAP
- ScrollTrigger
- Lenis
- Tailwind
- FFmpeg

