03. Interactive 3D Graphics

Seven stages, one rendering pipeline.

A progressive series of interactive 3D graphics demos built in three.js, ported from a graduate course in OpenGL. Each stage introduces one new concept: shaders, keyframes, curves, path following, skeletal animation, and full physically based rendering. The source for all original C++ implementations lives in the repository alongside the web ports.

Stack three.js, TypeScript, Vite, WebGL Origin Computer Graphics graduate coursework Status All demos live.

Setup

A0

Hello Shader

A rotating cube with per-vertex color, using GLSL-style ShaderMaterial. The starting point of every graphics course: get a triangle on screen and understand how vertex data flows through the pipeline.

Live

Animation

A1

Keyframe Animation

Discrete poses, continuous motion. Linear interpolation between authored keyframes using the same mathematical foundation as every production animation system.

Live

A2

Bezier Curves

Four points, infinite paths. Interactive cubic Bezier editor with a traveler following the reparametrized arc. The same math used in every font renderer and CSS animation engine.

Live

A3

Aircraft Along Curve

Follow the path, own the frame. An aircraft navigates a looping spline path with orientation computed from the curve's Frenet frame at every step.

Live

A4

Aircraft Extended

Same path, deeper scene. A closed multi-segment course with a follow camera that trails through every maneuver and a minimal HUD overlay.

Live

Skeletal animation

A5

Skeletal Bone Animation

Bones move, skin follows. A hierarchical skeleton drives a skinned mesh using linear blend skinning, the mathematics behind every character in a modern game engine.

Live

Full scene

A6

Full Lit Scene

Everything on, all at once. Directional and point lights, shadow maps, physically based materials, environment reflections, and all the animated objects from previous stages.

Live

Web particles

SVG Canvas

Particle System

Four particle simulations in a single page: random walk, gravity, elastic collisions, and a full particle emitter. Built with the HTML5 Canvas API and TypeScript.

Live