The chapter viewport — a Blender-style 3D window around a cloud of real chapters
Continues LAB.04 The chapter globe, built — round one on the real surfaces
What was tried
Rebuilt the chapter globe in the language of a 3D window: a Blender-style viewport frame (orbit/pan/zoom camera, preset views, gizmo, major/minor grid, Text Info and Statistics overlays, an Item panel, Blender 5.2's keymap) wrapped around a cloud of real chapters. One dot is one chapter; its place in the cloud is seeded from book and chapter number and deliberately means nothing, while colour, size and opacity carry the data. Drawn with three.js, loaded only when this entry scrolls near the screen; a server-rendered top-view SVG is the first WebGL frame and the fallback when WebGL is unavailable.
What was learned
Halos around read chapters drawn with ink blending versus plain over-painting were indistinguishable by eye at this many dots, so a single draw pass remains · Blender's keymap does not fully survive the browser: Ctrl+digit is taken for tab switching, so 9 flips to the opposite view instead, and 1/3/7 must be read from key position rather than character so a Thai keyboard works · Auto Perspective (dragging out of an orthographic side view snaps back to perspective) turned out to be essential, otherwise side views distort when turned · Blender's own defaults (smooth view 200 ms, 15-degree orbit steps) transferred without tuning.
What fell short
The three.js engine actually shipped weighs 137 KB compressed, a price paid for being sustainable, not because this many dots need it · positions in the cloud mean nothing, so preset views reveal nothing new, chosen knowingly · no outliner/properties/timeline yet · and judged by an audience of one, as every round before
Line of experiments
- LAB.02 Separating the play zone from the read zone
- LAB.03 The chapter globe — ten forms before the final one
- LAB.04 The chapter globe, built — round one on the real surfaces
- LAB.05 The chapter viewport — a Blender-style 3D window around a cloud of real chapters (this entry)