Keep the racket in one hand through the wind-up

Oliver, off the file browser: "the racket changes the hand in 3 and 4". It did —
the generator drew frames 1-2 right-handed and 3-4 left-handed. Both mirrored into
line with the rest of the serve (a back-view figure mirrors for free), and the
batch prompt now names the side, since the generator will not hold a prop in one
hand across a sheet unless told to.

The convention the rest of the art already uses: racket on the LEFT-HAND SIDE OF
THE IMAGE, free arm on the RIGHT — the side the game drops the bounced ball and
tosses the served one. p_smash keeps the racket on the right: that is the frame
where it has come over the top to meet the ball it is hitting.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-07-31 23:54:27 +02:00
1 parent b1f8ea3240
commit 231cd8650a
4 files changed
+9 -1

No files matched your search

+8
View File
@@ -419,6 +419,14 @@ player has three problems. All four fixed, all four measured first.
`drawChar` off `pullFrac(G.aim.mag)`, the same 0..1 that sets the shot's power. Drag further, coil
further; release fires `p_smash`. Verified per stage with drawImage instrumentation:
mag 10/50/90/130 -> pull1/pull2/pull3/pull4.
- **The racket must stay in ONE hand across a whole sheet, and the generator will not do it unasked.**
Oliver, straight off the file browser: *"the racket changes the hand in 3 and 4"*. It did — frames
1-2 came back right-handed and 3-4 left-handed. Both mirrored into line (a back-view figure mirrors
for free) and the batch prompt now names the side explicitly. The convention the rest of the art
uses: **racket on the LEFT-HAND SIDE OF THE IMAGE, free arm on the RIGHT** — which is also the side
the game drops the bounced ball (`BOUNCE_IDLE.dx` > 0) and tosses the served one (`P.x + 0.35`).
`p_smash` is the deliberate exception: the racket comes over to the right to meet the ball it is
actually hitting.
- **The bounce pair is now ONE drawing.** `p_bounce2` is `p_bounce` with the free arm sheared up 12
px (0.10 m) — everything else is pixel-identical, so the swap cannot flicker. The swap follows the
BALL now (`|sin| > 0.5`) instead of its rising phase, and `BOUNCE_IDLE` was re-measured off the