# Scroll is the director.

Independent article case study. Domain: website consumer / Design Engineering presentation.

A software-projected cylinder samples an original procedural panel atlas. Document progress sets the camera path, base rotation and chapter selection. A closed-form exponentially decaying spin impulse derives rotation and particle energy from the same scrubbed time. This is a deterministic study of inertia, not a claim that live wheel velocity was measured.

## Attribution and evidence

Studied: [How to Build Cinematic 3D Scroll Experiences with GSAP](https://tympanus.net/codrops/2025/11/19/how-to-build-cinematic-3d-scroll-experiences-with-gsap/), Joseph Santamaria. Article SHA-256: b7ff66ce6b3cf474031c92389920fbf616745fcd9be29128f9dd60fed1ebec30. Analysis SHA-256: fd3287489b4338d3e998935bc548b3ae5d23a7d5c02b66abaa9e60e784c78e4d. Source revision: 37d499287bc9b7f243aa6bedad3f27f6d0a2f28986d55dbd755b99196b7b8467. The revision hashes the article/analysis hashes, the analyst principle and code-block evidence references; it identifies studied evidence, not a claim that the original demo executes.

Original acquisition: unresolved. Original license: unverified. originalSourceAcquired: false. The public article provides 22 rendering/animation fragments; complete application scaffolding, helper functions, image atlas and the original model were not acquired as a source package.

No original article prose, code, artwork, source project or screenshot is distributed here. The authored-code MIT notice applies only to the independent implementation. Uses an original procedural atlas and a software-projected cylinder. It does not recover the omitted OGL/R3F helpers or reproduce the second source scene’s model. Spin decay is an explicit analytical exercise input rather than hidden live wheel history.

## Initial state and controls

One progress value steers a cylinder of original visual panels, a camera path and its chapter typography. Inspect an analytical spin impulse without depending on scroll-event history.

The page starts stationary. Play motion, where present, advances this study’s presentation until paused; text, bounce, portrait, orbit, strand and mascot motion loops, while the event composer stops at its endpoint. Scroll studies advance through ordinary document scroll or their chapter buttons. Static view stops time-based motion; manual controls still inspect values. The three scroll studies instead show every chapter in ordinary reading flow. Pointer parallax centers its decorative layers.

Initial control values:

| Control key | Value |
| --- | --- |
| story | 0 |
| impulse | 2.5 |
| decay | 1.2 |
| rotation | 0 |

## Running and editing

Open index.html directly. It contains all runtime code and visuals and needs no package install, account, network, remote asset or browser-origin storage. Edit its inline style and script to change the downloaded page. styles.css and script.js are reference copies of the inline source; changing those copies alone does not change the running page. Repository regeneration overwrites index.html and all generated copies, including any manual edits. Keep a separate copy when editing a download. The repository authoring modules in vendor/codrops-article-studies/scenes-*.mjs and runtime.mjs regenerate these copies through node scripts/build-codrops-article-studies.mjs. Repository regeneration also needs the private source evidence; downloaded-page execution does not.

## Verification boundary

This generation passed the captured article/analysis hash checks, exact ID membership, local canonical Markdown anchor/hash checks, implementation-symbol checks, JavaScript parsing, semantic main/title counts, duplicate-ID checks and runtime URL/storage exclusion. The manifest codeFiles entries identify every emitted file by SHA-256. Each code symbol is a searchable named function, not a claimed executed call trace. Proposed checks are in KNOWLEDGE.json. runtime_verified: false. SG artifact capture proves only a recorded initial render; no interactive runtime, keyboard, accessibility, comfort or performance result is claimed.

Manual Chrome interaction is blocked by extension UI in this session. No alternate browser-control route was used. Preview sizing is native responsive width. Initial-render captures are tracked separately at site/artifacts/full-import/preview-posters/index.json and site/artifacts/full-import/preview-posters/visual-review.json in the repository. No capture receipt is bundled with this download. The bounded initial-render matrix requests all 21 studies at 320 pixels and three representative studies at 1280 pixels; the separate poster surface is 640 × 420. The authored CSS also adapts at 375 and 768 pixels, without claiming those widths were captured. A width request does not mean that capture exists or passed. Motion starts on explicit playback; system reduced motion and the Static view switch stop it.

consumer_reference: consumer-reference/agent-native/registry.json
