Draw both arms on the supine motions and retire the hide list
Hollow Body Hold, Leg Raises, and Reverse Crunch hid the far arm because it was never authored - a leftover from the planar rig. Both arms are now posed, so the far arm reads as the standard light member behind the near one, the same visual language every other exercise uses, and the figures stay truthful from any viewpoint. With no remaining users, the hide mechanism is deleted from both renderers, the motion schema, and the docs. Claude-Session: https://claude.ai/code/session_01HJDQQDA9QdP8zByg43H5v3
This commit is contained in:
@@ -602,23 +602,18 @@ def prepare(motion, figure="neutral", flip=False, strict=False):
|
||||
def render_exercise(folder, figure="neutral", flip=False, strict=False):
|
||||
motion = load_motion(folder)
|
||||
working = set(motion.get("working", []))
|
||||
hide = set(motion.get("hide", []))
|
||||
norms, prof, cam, pitch, props = prepare(motion, figure, flip, strict)
|
||||
|
||||
mat = mat_bounds(norms, prof, cam, pitch)
|
||||
|
||||
def geometry(nf):
|
||||
_, geo, order, shade = frame_geometry(nf, prof, cam, flip, pitch, mat)
|
||||
for limb in hide:
|
||||
geo.pop(limb, None)
|
||||
return geo, order, shade
|
||||
|
||||
resolved = []
|
||||
key_cells = []
|
||||
for nf in norms:
|
||||
out, geo, order, shade = frame_geometry(nf, prof, cam, flip, pitch, mat)
|
||||
for limb in hide:
|
||||
geo.pop(limb, None)
|
||||
resolved.append(out)
|
||||
key_cells.append((geo, order, shade, resolve_props(props, geo, nf["root"]["pos"])))
|
||||
|
||||
@@ -653,7 +648,6 @@ def render_orbit(folder, figure="neutral"):
|
||||
motion authors one). Props rotate with the figure about the root anchor."""
|
||||
motion = load_motion(folder)
|
||||
working = set(motion.get("working", []))
|
||||
hide = set(motion.get("hide", []))
|
||||
norms, prof, cam, pitch, props = prepare(motion, figure)
|
||||
resolved = [frame_geometry(nf, prof, cam, pitch=pitch)[0] for nf in norms]
|
||||
mat = mat_bounds(norms, prof, cam, pitch)
|
||||
@@ -671,8 +665,6 @@ def render_orbit(folder, figure="neutral"):
|
||||
posed, auth_geo, _, _ = frame_geometry(nf, prof, cam, pitch=pitch)
|
||||
posed["pins"] = {}
|
||||
_, geo, order, shade = frame_geometry(posed, prof, cam + off, pitch=pitch, mat=mat)
|
||||
for limb in hide:
|
||||
geo.pop(limb, None)
|
||||
prims = resolve_props(props, geo, nf["root"]["pos"],
|
||||
prop_rotation(pitch, off), auth_geo)
|
||||
imgs.append(draw_geo(geo, order, shade, working, colors, font=font, prims=prims))
|
||||
@@ -686,13 +678,11 @@ def contact_sheet(folders, figure="neutral", out=None):
|
||||
cells = []
|
||||
for folder in folders:
|
||||
motion = load_motion(folder)
|
||||
working, hide = set(motion.get("working", [])), set(motion.get("hide", []))
|
||||
working = set(motion.get("working", []))
|
||||
norms, prof, cam, pitch, props = prepare(motion, figure)
|
||||
mat = mat_bounds(norms, prof, cam, pitch)
|
||||
for i, nf in enumerate(norms, start=1):
|
||||
_, geo, order, shade = frame_geometry(nf, prof, cam, pitch=pitch, mat=mat)
|
||||
for limb in hide:
|
||||
geo.pop(limb, None)
|
||||
prims = resolve_props(props, geo, nf["root"]["pos"])
|
||||
cells.append((f"{motion['name']} {i}/{len(norms)}",
|
||||
draw_geo(geo, order, shade, working, PALETTES["default"],
|
||||
@@ -705,7 +695,7 @@ def demo_sheet(folder):
|
||||
opens: neutral / female / male profiles (same motion script, different
|
||||
proportions), the flipped camera, an alternate theme."""
|
||||
motion = load_motion(folder)
|
||||
working, hide = set(motion.get("working", [])), set(motion.get("hide", []))
|
||||
working = set(motion.get("working", []))
|
||||
idx = motion.get("primary", 1) - 1
|
||||
font = legend_font()
|
||||
variants = [("neutral", "neutral", False, "default"),
|
||||
@@ -718,8 +708,6 @@ def demo_sheet(folder):
|
||||
norms, prof, cam, pitch, props = prepare(motion, figure, flip)
|
||||
mat = mat_bounds(norms, prof, cam, pitch)
|
||||
_, geo, order, shade = frame_geometry(norms[idx], prof, cam, flip, pitch, mat)
|
||||
for limb in hide:
|
||||
geo.pop(limb, None)
|
||||
prims = resolve_props(props, geo, norms[idx]["root"]["pos"])
|
||||
cells.append((f"{motion['name']} — {label}",
|
||||
draw_geo(geo, order, shade, working, PALETTES[palette],
|
||||
|
||||
Reference in New Issue
Block a user