home/ modules/ three-d-and-node-based-graphics

3D scenes and node-based graphics tools

  • learner can build a three.js scene/camera/renderer with meshes, a scene graph, lighting, and post-processing
  • learner can render 3D in p5.js/Processing (P3D, WEBGL origin, lighting, sphere coordinates)
  • learner can reason about node-based procedural graphics paradigms (cables.gl, Geometry Nodes, EEVEE)

Compose an animated 3D scene for projection: first prototype its central form as a lit sphere-coordinate sketch in p5.js WEBGL or Processing P3D (centre origin, directional vs ambient light), then rebuild and extend it in three.js — meshes in a lit scene graph, a perspective camera, an animation mixer, and a post-processing pass — and reproduce one element as a node graph in cables.gl or Blender Geometry Nodes.

This module takes you from flat generative sketches to full 3D — the visual vocabulary of the modern AV set, where a rotating deformed sphere behind a techno drop or a camera drifting through a lit scene graph reads far bigger on a projector than any 2D canvas. The whole task is a three-stage pipeline: prototype the central form as a lit p5.js/Processing 3D sketch, rebuild it as a projection-ready animated three.js scene, then translate one element into the node-based world (cables.gl or Geometry Nodes) that dominates VJ tooling.

The arc starts on familiar ground — and this is the capstone’s first deliverable, not just a warm-up: flip Processing into P3D and p5.js into WEBGL, immediately confronting the recentred origin and the fact that unlit 3D reads flat — the ambient-vs-directional lighting distinction is your first how-to stop. Computing sphere-surface points from two nested angles bridges the trig you already know into genuinely 3D form-making, and yields the prototype form you carry forward. From there the supported exercises move to three.js: wire the scene/camera/renderer triad (drill it — it is the boilerplate of every project), combine geometry and material into meshes (drill this too), parent them in the scene graph, and frame them with a perspective frustum before layering an animation mixer and an EffectComposer post chain.

Every required atom gates the capstone directly: the prototype stage cannot ship without the P3D/WEBGL renderers, the recentred origin, lighting, and sphere coordinates; the three.js stage needs the triad, meshes, hierarchy, camera, mixer, and post pipeline; and the node stage rests on the patch-cable paradigm, procedural node trees, and EEVEE’s real-time trade-off — what let you reproduce your element as a graph and reason about why. Supporting atoms enrich rather than gate: Shadertoy integration and custom JavaScript ops extend your shader and patching reach, drivers make Blender parameters live, and the abstraction principle plus Processing’s primitives frame why these layered APIs feel learnable at all.

Atoms in this module

Required — these gate the capstone

Processing supports 3D via P3D and OPENGL renderers, specified as a third size() argument
Concept L3 Craft H
3D geometry in p5.js needs a light source to convey shape and depth; ambient vs directional/point light differ
Concept L2 First instrument HG
In p5.js WEBGL mode the coordinate origin is at the canvas center, not the top-left
Concept L2 First instrument HG
Points on a sphere's surface are computed from two angles using nested sin and cos
Procedure L3 Craft H
Every three.js program is built from a Scene and Camera passed to a Renderer that draws them to a canvas
Concept L2 First instrument H
A three.js Mesh is the combination of a Geometry (shape) and a Material (appearance) and nothing is drawn until both are combined
Concept L2 First instrument H
The three.js scene graph is a hierarchy where child object transforms are always relative to their parent
Concept L2 First instrument H
A PerspectiveCamera's frustum determines exactly what is visible and what is clipped in three.js
Concept L2 First instrument H
Three.js AnimationMixer plays and blends AnimationClips on a 3D object by being updated each frame with a delta time
Concept L3 Craft H
Three.js post-processing chains render passes through an EffectComposer that processes them in order of addition
Procedure L3 Craft HG
cables.gl builds interactive WebGL scenes by connecting operator nodes with virtual cables in a browser-based patch editor
Concept L1 Foundations HG
Geometry Nodes builds geometry procedurally as a node tree flowing from Group Input to Group Output
Concept L3 Craft HN
EEVEE is Blender's real-time renderer that uses rasterization, trading physical accuracy for speed
Concept L2 First instrument HN

Supporting — enrichment, not gating

Shadertoy fragment shaders run in three.js on a fullscreen quad by mapping iTime and iResolution uniforms into the render loop
Procedure L3 Craft HG
cables.gl operators are programmable in JavaScript with typed ports, extending the patch beyond the built-in op library
Concept L3 Craft HG
A driver computes a property's value from other properties via a function or Python expression
Concept L3 Craft HN
Abstraction hides implementation details so programmers focus on what code does, not how
Concept L1 Foundations H
Processing provides point, line, rect, ellipse, and bezier as core drawing primitives
Fact L1 Foundations H