From bf6306691da53dc3ca5d692eacd4431087b58deb Mon Sep 17 00:00:00 2001 From: fOuttaMyPaint Date: Wed, 22 Jul 2026 16:47:34 -0400 Subject: [PATCH 1/4] feat: add shared framing-measurement helper for gallery renders Layer 1 framing was the only mandatory render rule with no number attached, so agents eyeballed it and overshot in both directions. examples/gallery_framing.py measures hero fill (0.70-0.90 of frame in at least one axis) and all-elements edge margins (>= 0.02) on a staged scene, defaulting to a silhouette alpha matte (exact for round or angled subjects) with a bbox-projection strategy documented as the cheap alternative for boxy subjects. check_framing prints the measured values in the house log style and exits 10 on violation, render path only, so check-only smoke runtimes are untouched. It also establishes the repo's cross-example sharing mechanism: a __file__-relative sys.path shim that keeps every example standalone-runnable from the repository root. Signed-off-by: fOuttaMyPaint --- examples/gallery_framing.py | 344 ++++++++++++++++++++++++++++++++++++ 1 file changed, 344 insertions(+) create mode 100644 examples/gallery_framing.py diff --git a/examples/gallery_framing.py b/examples/gallery_framing.py new file mode 100644 index 0000000..9e59831 --- /dev/null +++ b/examples/gallery_framing.py @@ -0,0 +1,344 @@ +"""Gallery framing measurement — the numeric form of VISUAL-STYLE Layer 1 framing. + +Layer 1 mandates: the hero subject fills 70–90 % of the frame in at least +one axis, and nothing that matters touches or crosses a frame edge. This +module turns that prose into measured numbers so renders are gated by +measurement instead of eyeballing. + +Sharing mechanism (the only cross-example import in this repository): +examples stay standalone-runnable — +`blender --background --python examples//