Projective Media
A Three.js library for projecting moving media onto 3D surfaces and turning geometry into an image carrier.
Open standalone sandbox
Runtime trace
- Status
- Pre-release 0.1.0
- Role
- Library design, rendering integration, API design, lifecycle hardening and demo direction.
- Core stack
- Three.js · JavaScript · WebGL · GLSL
- Period
- 2026
Technical context
Context
Projective Media explores a projector-like relationship between video, light and form. The pre-release grew from a working Garden Planner integration and was then extracted into an independent, host-neutral Three.js package boundary.
Outcome
A host-neutral Three.js library that projects HTML video onto explicitly registered meshes while managing projector camera, shader material, VideoTexture, receiver overlays and cleanup as a coherent runtime.
Runtime constraint
Build more than a working shader: a reusable runtime that remains predictable through receiver rebuilds, media changes, project persistence, autoplay and audio policy, authoring, partial construction failures and teardown.
Media narrative
Projection workflow


Engineering lifecycle
Engineering
- Coordinating ownership of the video element, VideoTexture, projector camera, shader material and receiver overlays.
- Preserving session continuity while the host rebuilds or refreshes registered receivers.
- Keeping projector position and orientation stable in world space.
- Replacing media without damaging authored projector state or leaking resources.
- Extracting the proven integration into a neutral public package boundary.
Decision ledger
Library decisions
- Require explicit receiver registration instead of scanning the host scene globally.
- Keep projector pose independent from the host's receiver-selection policy.
- Leave interface, persistence, media catalog and asset resolution with the host application.
- Construct runtime resources transactionally so partial failures can be unwound safely.
- Make disposal idempotent and best-effort, then validate the boundary in an application-scale host before the standalone sandbox.
Proof ledger
Evidence
The library source is publicly available under an MIT license.
A standalone browser sandbox demonstrates the package boundary.
Nocturne Garden remains a public reference integration in the original Garden Planner host.
The repository documents the validation sequence from host integration to extracted package and standalone sandbox.
Package-owned tests and the npm run verify workflow exercise the distributable boundary before publication.
The package manifest identifies version 0.1.0.
The repository documentation identifies distribution as an unpublished pre-release.
Scope
Limitations
- Version 0.1.0 is a pre-release and is not published to npm.
- The project does not currently make a production-support commitment.
- Projector depth maps, scene occlusion and keystone correction are not implemented.
- SkinnedMesh and InstancedMesh receivers are outside the current supported surface.
- Full Safari and Firefox support is not declared, and multi-projector edge blending is not implemented.
Destinations