Skip to content
motionprompts motionprompts

ThreeJS 3D Video Gallery

WebGL animation component · Published 2026-07-27 · by vanguardia.dev

ThreeJS 3D Video Gallery animation preview
Open live demo ↗ Download source

What it does

A Three.js WebGL grid of video-textured planes curved into a parabolic wall, each plane mapped to a looping muted video texture. Mouse movement drives a per-frame requestAnimationFrame loop that applies parallax, oscillation and rotation to every plane, eases the camera lookAt target, and tilts the CSS-3D headline via a cubic-bezier transform.

How it's built

Category3d-webgl
Techthree, lil-gui
Complexitypage
Performance costheavy
Mobile-safedesktop-first

three.js webgl video-texture gallery parallax mouse-interaction curved-grid cinematic experimental

Rebuild it with AI

This component's prompt is part of the paid library. Below you can read how it starts; the full prompt, the exact structure, timing and easing an AI agent needs to rebuild the effect, unlocks with any paid plan, yearly or lifetime.

# Framecast — 3D Curved Video Wall (Three.js)
## Goal
Build a full-viewport, white WebGL scene: a **7×7 grid of 49 flat planes**, each textured with a **looping muted video**, bent into a **parabolic wall** that curves back toward the viewer on both the horizontal and vertical axes (a shallow satellite-dish / IMAX-screen shape). As the user **moves the mouse**, the whole wall reacts: every plane gets independent **parallax + gentle sinusoidal oscillation**, the **camera eases its `lookAt` target** around so the wall appears to turn, and a fixed CSS-3D headline ("FRAMECAST") **tilts in 3D** like a card catching the light. A small lime nav badge ("FRAMES 2024") floats top-center. This is a pure Three.js piece — **no GSAP at all**; all motion lives in a `requestAnimationFrame` loop driven by mouse position through eased/`lerp`-style interpolation.
## Tech
Vanilla HTML/CSS/JS with ES module imports. Use **`three` (npm) only** — no GSAP, no Lenis. (`lil-gui` is imported for an optional debug panel that is disabled by default; you can omit it entirely.) Import:
```js
import * as THREE from "three";
// optional, debug only: import GUI from "lil-gui";
```
## Layout / HTML
Almost empty — the canvas is injected by JS into `<body>`:
```html
…

Premium prompt

Unlock this prompt, and every other one

From $99/year, or $139 once for lifetime access. Commercial license included.

See pricing Or start with the free set Already bought? Sign in

New components in your inbox

One email a week, only when new components ship, each with its live demo and prompt.