The friend across the net wears your kit, drawn from the front
His colour landed on the shirt while yours lands on the shorts, because he was drawn on the roster opponent's red sheets and dyed on an arc of his own. Red is the one hue that art cannot hang a kit on: the men's shorts are neutral grey at saturation 0.05, so no rotation ever reached them, and the women's red top sits at her skin's and her hair's hue — a dark pick was painting her arms and her ponytail, live, on the shipped build. So he gets his own sheets. `assets/_frontroll.py` is `_famroll`'s trick pointed at the tennis poses — image 1 is the ten `o_*` frames composed from disk, image 2 is the player from behind — and two calls drew all twenty. He rides the PLAYER's arcs and the tour's own mode now: his shorts dye, her whites wash. `TINT.oKit` is gone. The roster CPU keeps the red art; it is not a person. The setup screen shows that front too — picking a face off the back of a head was only ever what the art allowed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4052ab1404
commit
5f9170b7d7
27 files changed
+324
-31
No files matched your search
+12
-3
@@ -56,8 +56,11 @@ def bands(a):
|
||||
return out
|
||||
|
||||
|
||||
def cut(sheet, fam, outdir):
|
||||
want = layout(fam)
|
||||
def cut(sheet, fam, outdir, want=None, level=None):
|
||||
# `want`/`level` let a NON-zombie family reuse this cutter: the netplay opponent's ten tennis
|
||||
# poses are not nine rows of walk/wound (see _frontroll.py). `level` names the frame groups that
|
||||
# must come back the same height, which is what the zombie branch below works out by name.
|
||||
want = want or layout(fam)
|
||||
src = Image.open(sheet).convert('RGB')
|
||||
a = key(src)
|
||||
# THE ENCLOSED MAGENTA IS THE RACKET, AND HERE IT IS MEANT TO GO. _fine.py repaints magenta that
|
||||
@@ -105,8 +108,14 @@ def cut(sheet, fam, outdir):
|
||||
# racket family's, at 224/224) gets a factor of 1.0 and is untouched — which is the check that
|
||||
# this rule is the right one rather than a fudge for one bad sheet.
|
||||
mult = [1.0] * len(crops)
|
||||
if level is not None:
|
||||
at = {n: j for j, n in enumerate(flat)}
|
||||
for grp in level:
|
||||
h0 = crops[at[grp[0]]].shape[0]
|
||||
for n in grp[1:]:
|
||||
if crops[at[n]].shape[0]: mult[at[n]] = h0 / crops[at[n]].shape[0]
|
||||
i = 0
|
||||
for row in want:
|
||||
for row in want if level is None else []:
|
||||
if row[0].endswith('fall1') and crops[i].shape[0]:
|
||||
k_row = crops[0].shape[0] / crops[i].shape[0]
|
||||
for j in range(i, i + len(row)):
|
||||
|
||||
Reference in new issue
Block a user