Skip to content

Commit a284898

Browse files
TMHSDigitalclaude
andauthored
fix: gallery quality audit pass two — restage the seven pre-#61 examples and codify the visual style (#62)
* docs: codify the gallery visual style in docs/VISUAL-STYLE.md and fix the color-attribute-wheel card stutter Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix: restage swatch-grid to the gallery visual style (3x2 grid framed, dark backdrop, distinct metals) * fix: relight turntable to the dark staged studio (Standard transform, wall, wedge) * fix: show shape-key-blend as a basis-to-full progression on the dark stage * fix: reframe driver-wave so the skyline fits and relight to the house style * fix: saturate and restage gn-instance-grid to the gallery visual style * fix: darken and relight depsgraph-export to the gallery visual style * fix: reframe and relight curve-bevel-arc to the gallery visual style * chore: regenerate gallery pages for the pass-two audit --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent 3ddac9a commit a284898

35 files changed

Lines changed: 435 additions & 130 deletions

‎AGENTS.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ The content base (counts are CI-enforced against README.md and the manifest):
3131
API contract with deterministic checks, exit non-zero on failure, and
3232
optionally render a still via `--output`. Each is executed headless on
3333
Blender 4.5 LTS and 5.1 by `blender-smoke.yml`; its render ships in the
34-
site gallery. Anatomy and authoring rules: copy `examples/bmesh-gear/`.
34+
site gallery. Anatomy and authoring rules: copy `examples/bmesh-gear/`;
35+
the render look is specified in `docs/VISUAL-STYLE.md`.
3536

3637
## Repository structure
3738

‎CLAUDE.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ gallery's source of truth. When authoring a new one, copy the anatomy of
9191
wire all of: gallery.json entry, `.cursor-plugin/plugin.json` examples array (CI-gated),
9292
a `blender-smoke.yml` step, a README gallery row, hero webp (1280×720) in
9393
`docs/gallery/assets/` + preview webp (1200×675), then run `python scripts/build_gallery.py`.
94+
Renders must conform to the gallery look spec at `docs/VISUAL-STYLE.md`.
9495

9596
## Development Workflow
9697

‎README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ that actually runs. Browse them in the
5353
<table>
5454
<tr>
5555
<td width="46%" valign="middle">
56-
<a href="examples/swatch-grid/"><img src="examples/swatch-grid/preview.webp" alt="Swatch grid: a row of six shaded spheres - gold and copper metals, red and blue plastics, an emissive orange, and a matte white - on a reflective studio floor, rendered with EEVEE" /></a>
56+
<a href="examples/swatch-grid/"><img src="examples/swatch-grid/preview.webp" alt="Swatch grid: a three-by-two grid of shaded spheres - polished gold and brushed copper metals, red and blue plastics, an emissive orange, and a matte white - against a dark studio backdrop, rendered with EEVEE" /></a>
5757
</td>
5858
<td valign="middle">
5959

@@ -193,7 +193,7 @@ verts = 72, faces = 54, and `Set Material` carries the lime accent.
193193
</tr>
194194
<tr>
195195
<td width="46%" valign="middle">
196-
<a href="examples/shape-key-blend/"><img src="examples/shape-key-blend/preview.webp" alt="Shape-key blend: a violet truncated pyramid on a dark studio floor, lifted and flared by a relative Tall shape key at value 0.5" /></a>
196+
<a href="examples/shape-key-blend/"><img src="examples/shape-key-blend/preview.webp" alt="Shape-key blend: three violet blocks on a dark studio floor showing a relative Tall shape key at values 0, 0.25, and 0.5 - plain cube to lifted, flared truncated pyramid, left to right" /></a>
197197
</td>
198198
<td valign="middle">
199199

‎docs/VISUAL-STYLE.md‎

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# Gallery Visual Style
2+
3+
The spec for every example render that ships in the gallery. New examples must
4+
conform; deviations are defects. Calibration references: `armature-bend`,
5+
`color-attribute-wheel`, `grease-pencil-rosette`, `compositor-glare`,
6+
`damped-track-aim`, `parent-inverse-orrery`.
7+
8+
## The look in one sentence
9+
10+
A dark staged studio — near-black floor and back wall, one shaped warm key, a
11+
warm light pool raking the backdrop — with a saturated hero subject filling
12+
the frame.
13+
14+
## Color management
15+
16+
- `scene.view_settings.view_transform = 'Standard'`, always, with a comment.
17+
AgX (the 4.x/5.x default) desaturates hero materials toward pastel and
18+
lifts the stage toward grey — the washed look of the pre-audit gallery
19+
traces to renders that never set a transform.
20+
- Standard does not compress highlights: tune light energies so nothing
21+
clips. If a region reads pure white at full size, the key is too hot.
22+
23+
## Stage
24+
25+
- Floor: 30-unit `create_grid` plane. Wall: a copy at `y ≈ 7–9`, rotated 90°
26+
about X. Both share one Principled material:
27+
`Base Color (0.03, 0.032, 0.037)`, `Roughness 0.7`.
28+
- World background: `(0.02, 0.021, 0.025)`.
29+
- The floor/wall seam is acceptable only where it falls into shadow; never
30+
let it cross the subject.
31+
32+
## Lighting (all AREA lights)
33+
34+
- **Key** — warm white `(1.0, 0.96, 0.9)`, upper left, ~`(-4, -5, 6)`,
35+
size 4–6, 300–700 W depending on subject albedo. It must shape: visible
36+
falloff across the subject, a readable cast shadow.
37+
- **Fill** — cool `(0.75, 0.85, 1.0)`, low right, size ~9, ~100 W. Just
38+
enough that shadow sides stay legible; if the image looks flat, the fill
39+
is too strong.
40+
- **Rim** — cool `(0.6, 0.78, 1.0)`, behind, 200–400 W, to lift silhouettes
41+
off the backdrop.
42+
- **Wedge** — the signature: warm `(1.0, 0.76, 0.5)`, 200–500 W, size 5–7,
43+
raking the back wall so a soft pool of light sits behind the subject.
44+
Place it **between the subject and the wall**. A grazing area light draws
45+
a hard terminator line across any flat surface it skims — if a stray
46+
bright band crosses the subject, a light is grazing it.
47+
48+
## Materials
49+
50+
- Hero materials are designed, never Principled defaults: saturated base
51+
colors, roughness chosen (0.3–0.6 glossy, 0.7+ matte), optional faint
52+
emission (~0.1) when the subject carries color data that must read exactly.
53+
- Surfaces that display flat color data (attribute fills, pixel buffers) go
54+
fully matte: `Specular IOR Level = 0`, otherwise the wall/floor horizon
55+
reflects as a line across the face.
56+
57+
## Framing
58+
59+
- The subject fills roughly 70–90 % of the frame in at least one axis.
60+
Nothing that matters may touch or cross the frame edge; no featureless
61+
quadrant of empty wall or floor.
62+
- Camera: 45–55 mm lens, slightly above subject height, aimed with a
63+
`TRACK_TO` constraint at an empty on the subject — a chosen angle, not the
64+
default. Flat subjects present toward the camera (lean or tilt them);
65+
progressions read left to right.
66+
- The image must still read in under a second at thumbnail scale, and it
67+
must witness the API: if the contract failed, the render should visibly
68+
break.
69+
70+
## Output
71+
72+
- Render 1280×720 PNG (`taa_render_samples`/`cycles.samples` 32–64).
73+
- Gallery assets: hero webp 1280×720 and preview webp 1200×675, quality 85
74+
(load the PNG in Blender, `save(filepath=..., quality=85)`, `scale()` for
75+
the preview — this preserves pixels without re-applying color management).
76+
- After touching any example: `python scripts/build_gallery.py`, and update
77+
the README gallery-row alt text if the composition changed.
-3.05 KB
Loading
-4.79 KB
Loading
-5.75 KB
Loading
-402 Bytes
Loading
380 Bytes
Loading
9.61 KB
Loading

0 commit comments

Comments
 (0)