PANELS

A personal comic-panel blocking & lighting reference tool — manual

Panels builds high-contrast, toon-shaded reference images for drawing comics. You stage simple 3D figures and props, light them with a single key light, frame the shot at a comic panel aspect ratio, and export a PNG that sits next to your drawing board. It is a blocking and lighting reference generator — not a renderer, not a drawing tool. Everything renders in three grayscale values (white, mid, black) with hard band edges, in the spirit of Wally Wood's spotted blacks.

The loop: build → light → frame → export. A scene takes a few minutes; the drawing it supports takes as long as it takes.

The Panels editor: scenes list left, 3D viewport center, inspector right
The editor. Scenes on the left, viewport with panel frame in the middle, everything adjustable on the right. A figure is selected, showing its full inspector: gizmo modes, pose, height, clip + frame scrubber, silhouette.

1 · Scenes

Every composition is a scene, stored in your browser (IndexedDB) — your work never leaves your machine, and the server stores nothing. The left sidebar lists your saved scenes as thumbnails — actual renders of each panel — newest first. On launch, your most recent scene opens automatically — and on a first visit, a starter scene (“Happy Walker”) is seeded so there’s something to play with immediately.

Because scenes live in the browser, a different browser or profile has its own separate library. To back up a scene or move it between machines, use Dev mode’s Serialize (copies the scene as JSON) and Load JSON.

2 · Building a scene

Figures

Props

Box, Plank, and Cylinder cover tables, walls, doors, lamps, phones, newspapers — anything at a squint. Exact W / H / D fields plus free gizmo scaling.

Assemblies

Prebuilt multi-part props that behave as a single object everywhere: window-frame (mullioned), doorframe, vehicle-mass (car massing), sill-clutter. Click any part and the whole assembly selects; it moves, rotates, scales (uniformly), duplicates, and deletes as one.

3 · Selecting & editing

4 · Camera

5 · Lighting & the look

Convention over configuration: the visible controls are the one key light — azimuth, elevation, intensity. Everything else follows smart defaults: hard-edged cast shadows always on, black background, ground plane present, elevation runs negative for underlighting (horror/campfire light), no fill light, 5-step value shading (the art-class value scale), and editor-only edge guides that keep same-value objects readable (never in exports).

The full machinery is still inside, just tucked away for now — toon band shading with a threshold slider, natural smooth shading, background values (white/mid/black/split), fill light, and per-control toggles. Scenes saved with those settings load faithfully, and Dev mode’s Load JSON can set any of them. A future expert mode may surface them again.

6 · Panel & export

Tall 1:2 panel frame letterboxed in the viewport, silhouette figure on mid background
The frame overlay at 1:2 — compose against the frame; everything outside is dimmed. Silhouette figure on a mid background.
Exported PNG: silhouette walking figure, mid background, black borders
The exported PNG of that framing: 2048px long edge, per-side borders, no gizmos or guides — exactly the frame region.

7 · Dev mode

The Dev button reveals plumbing: Serialize scene copies the current scene as formatted JSON to the clipboard, and Load JSON applies pasted scene JSON. Useful for backing up scenes as text, hand-tweaking values, or moving a scene between machines.

Keyboard reference

KeyAction
G / R / SGizmo: move / rotate / scale
FFocus orbit on selected object
EscDeselect
Del / BackspaceDelete selected
⌘DDuplicate selected
⌘Z / ⌘⇧ZUndo / redo
HomeReset camera
Enter (in name field)Confirm name

Under the hood

ASP.NET Core + vanilla three.js ES modules — no build step, no frameworks. Scenes are a single JSON document (schema v1) stored in the browser via IndexedDB — the server is fully stateless and serves only the app itself; the dev serializer speaks the same format. Figures are Mixamo's X Bot / Y Bot mannequins with retargeted clips, toon-shaded by a shared gradient-map material so a threshold change is one cheap update. Run it with dotnet run (or dotnet watch) in Panels.Web/ and open http://localhost:5099.

This manual was generated from the live tool — the screenshots are real captures of a real scene ("Happy Walker").