Off-axis (asymmetric-frustum) projection demo: a virtual "window" into a wireframe room whose perspective follows your viewpoint, creating a glasses-free 3D illusion.
Pick a model from the bar at the top — the procedural RGB wireframe cube, or real glTF models (shoe, toy car, damaged helmet, duck, avocado) streamed from the Khronos glTF-Sample-Models repo.
Move the viewpoint with:
- Mouse / touch — move the pointer or drag; scroll wheel changes depth
- Device tilt — opt-in on mobile
- Webcam head tracking — opt-in, via MediaPipe FaceMesh
The projection math follows Robert Kooima's Generalized Perspective Projection: the screen is a fixed rectangle in world space and the camera frustum is recomputed from the tracked eye position every frame.
It's a static site — serve the repo root and open index.html:
python3 -m http.server 8000
# → http://localhost:8000Browsers without WebGL get a Canvas-2D wireframe fallback (?fallback=1
forces it), which supports the cube only.