Cast portraits round 2: 8 characters x 2 ratio batches on a keyed ground, transparent cutouts
One byte-identical style block per batch; batch A two heads tall, batch B three. Libby pushed from Nibu (braid, black and gold), Weksa a tomboyish archaeologist, Eureka hood up with blue-grey eyes. Web-sized assets only; 2k originals kept out of git. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
@ -97,3 +97,108 @@ r1a.
|
|||
- The flat navy ground renders lighter than `#07111a`. A pale ground traces better for dark-clad
|
||||
characters. Choosing the ground per character, or one shared choice, is a ruling for the operator.
|
||||
- Negative style instructions ("no outlines") are weak against the word "anime".
|
||||
|
||||
# Round 2
|
||||
|
||||
Operator verdict on round 1 (ruling `site-masthead:ruling:cast-portrait-canon-r1`): "Hood up, blue-grey
|
||||
eyes, push Libby further from Nibu, Weksa is a girl (if tomboyish, she's kind of an indiana jones type after
|
||||
all). No backgrounds. See if you can get a consistent batch now." The hood and the eyes are Eureka's.
|
||||
|
||||
Files are in `r2/<name>/`: `<name>-r2a|b.webp` (lossless, 1024 px), `<name>-r2a|b-cutout.png` (transparent,
|
||||
1024 px) and `<name>-r2a|b.txt` (hypothesis, variable, render record, exact prompt). The 2k originals stay out
|
||||
of git in `F:\Projects\cast-art-originals\r2\`. `r2/contact-r2-A.png` and `r2/contact-r2-B.png` show each
|
||||
batch's eight cutouts at one scale on mid-grey.
|
||||
|
||||
## Canon changes in round 2
|
||||
|
||||
- **Eureka**: hood up, framing her face, piped in ember orange; blue-grey eyes; black hair with one orange streak.
|
||||
- **Libby, pushed away from Nibu** using levers from her own sheet and none of Nibu's. Changed: her hair is a
|
||||
deeper, warmer dusky violet-lavender (Nibu stays pale lavender), gathered into one loose, fat wavy braid over
|
||||
her right shoulder with the diamond-pattern bow at the top of the braid. The braid replaces the sheet's loose
|
||||
fall of hair and gives her a different silhouette from Nibu's long straight curtain. Emphasised: black and gold
|
||||
as her palette (gold embroidery, gold-set brooch, gold earrings, gold-cornered book) against Nibu's lilac,
|
||||
pink and cyan; round glasses; an open, happy smile against Nibu's half-lidded calm; a book hugged to her
|
||||
chest against Nibu's folded arms. Nibu is unchanged apart from her clip.
|
||||
- **Weksa** is a tomboyish young woman, a field archaeologist of the Indiana Jones type: a confident lopsided
|
||||
grin, dust on one cheek, robe sleeves rolled to the elbows, a weathered leather vest and a chest strap. Her
|
||||
sheet's canon is kept: gold round glasses, beaded and feathered topknot, cream robe with teal trim, scroll
|
||||
backpack with a carved idol, glyph card. She has no hat, so the topknot stays visible.
|
||||
- **Nibu**: the clip is described as a small data-connector plug, a rectangular body with a pink bead at each end.
|
||||
- **Aqua**: overlapping scales are drawn on the body, with a round fish mouth and no beak, legs or feet. Aqua's
|
||||
canon is a whole fish, so his prompt asks for the whole body instead of a bust.
|
||||
|
||||
## Shared style block and ground
|
||||
|
||||
Every prompt is one shared style block, byte-identical within a batch, then a blank line, then a block that
|
||||
describes only the character. The style block fixes:
|
||||
|
||||
- the framing: a bust cut at mid-chest by the bottom edge, three-quarter view turned right, head centred, 4:5 at 2k
|
||||
- the proportions, as a head count
|
||||
- the line: one bold dark outline of even weight, thinner inner lines
|
||||
- the shading: flat cel, one base tone and one shadow tone per material, light from the upper left
|
||||
- the palette rule: five or six flat colours from the character's key colours
|
||||
- the ground
|
||||
|
||||
Round 1's rim light is dropped. It took only where the outline turned the key colour, and a coloured rim at
|
||||
the matte edge makes the key less clean.
|
||||
|
||||
The ground is one flat chroma-key green, because green is the only hue no character uses. FLUX cannot emit
|
||||
transparency, so `matte_r2.py` (Pillow only, no models) keys the ground out deterministically:
|
||||
|
||||
- Greenness is G - max(R, B).
|
||||
- Alpha ramps from opaque at a greenness of 40 to clear at 110, so ground enclosed between an arm and the body
|
||||
is keyed too.
|
||||
- G is clamped to max(R, B) only in a thin band at the edge (despill).
|
||||
- The alpha edge gets a 0.8 px feather.
|
||||
|
||||
All 16 grounds came out flat: corner standard deviation was 1 to 3 per channel, with one corner of void-r2a at 7.
|
||||
The strength of the green varied between renders. After the key, no pixel above half opacity is still strongly
|
||||
green, and no halo shows on a dark or a light checker. FLUX drew a thin light sticker border outside the dark
|
||||
outline on several figures (Kiko, Nibu, Eureka). The border is part of the drawing, not left over from the key,
|
||||
and it stays in the cutout.
|
||||
|
||||
## Hypotheses
|
||||
|
||||
- **r2a (batch A)**: a byte-identical shared block that states the proportions as a head count ("two heads
|
||||
tall") instead of the bare word "chibi" gives a consistent chibi batch. A flat green ground gives clean,
|
||||
deterministic cutouts.
|
||||
- **r2b (batch B)**: identical to r2a except for "three heads tall", to test whether a milder ratio is followed
|
||||
more evenly. Each render changes one variable against the same character's r2a.
|
||||
|
||||
## Results
|
||||
|
||||
| Render | Observation | Agent verdict | Operator verdict |
|
||||
|---|---|---|---|
|
||||
| libby-r2a | Deep violet braid over the shoulder, bone clip, diamond bow, round glasses, gold earrings, black and gold robe, book. Clearly chibi. | Holds. She reads apart from Nibu. | |
|
||||
| libby-r2b | The same design, with a slightly smaller head. The braid and the black and gold palette carry the separation. | Holds. | |
|
||||
| heimdall-r2a | Chibi, curly hair with gold highlights, black and blue coat with gold filigree, gold key. | Holds. | |
|
||||
| heimdall-r2b | Older and longer-faced, closer to round 1's standard proportions. The hair is less curly. | Weaker: the ratio pulls him toward generic. | |
|
||||
| kiko-r2a | Mask, bells, tassels, fang grin, wave, magenta and teal kimono, pink-tipped tail. | Holds. | |
|
||||
| kiko-r2b | Almost the same as r2a. | Holds. | |
|
||||
| aqua-r2a | Round goldfish with headphones, crest fin and a small fish mouth, no beak. The body is smooth, with no scales. He is smaller in frame than the busts. | Partial: the species is fixed, the scales are missing. | |
|
||||
| aqua-r2b | Clearly drawn scales, fish mouth, forked tail, headphones with cyan rings. | Holds. Closest to canon so far. | |
|
||||
| weksa-r2a | Reads as a young woman: topknot, gold glasses, teal trim, scroll backpack, chest strap, glyph card. The grin is soft, not lopsided. | Holds. | |
|
||||
| weksa-r2b | A tomboyish young woman with a grimy field look, an idol in the backpack and a glyph card. The dust smudge reads as heavy grime on her cheek. | Holds. The grime may be too much. | |
|
||||
| nibu-r2a | Calm, arms folded, pale lavender hair, cyan device. The clip is a plain pin and the bow is small. | Partial: the clip is still not the connector. | |
|
||||
| nibu-r2b | The clip is a rectangular plug with a bead at each end, the first time it reads as the connector. Her body is longer and more adult. | Holds on canon. Less chibi. | |
|
||||
| eureka-r2a | Hood up and piped in orange, black hair with an orange streak, blue-grey eyes, chest rig, probe. | Holds. | |
|
||||
| eureka-r2b | The same design, slightly less chibi. | Holds. | |
|
||||
| void-r2a | Pointed hood, black face with white oval eyes, frayed orange scarf, gloves. | Holds. | |
|
||||
| void-r2b | The same design, smaller in frame. | Holds. | |
|
||||
|
||||
## Consistency
|
||||
|
||||
Both batches are far more uniform than round 1: one line weight, one shading model, one crop and one turn
|
||||
across all eight characters. Batch A is the more consistent one. "Two heads tall" put the human busts on one
|
||||
chibi scale. "Three heads tall" let Heimdall and Nibu drift back toward round 1's ordinary anime proportions,
|
||||
while Kiko and Libby stayed chibi. The wording of the ratio decides how consistent the batch is: a milder ratio
|
||||
leaves FLUX room to fall back on each character's default proportions. Batch B's gains (Nibu's connector clip,
|
||||
Aqua's scales) are per-render chance, not an effect of the ratio. Neither batch matched the scale of the
|
||||
non-human figures: Aqua and Void sit smaller in frame than the busts.
|
||||
|
||||
## Open for round 3
|
||||
|
||||
- Getting batch A's style block together with Nibu's connector clip and Aqua's scales from batch B needs a re-render.
|
||||
- The scale of Aqua and Void needs a framing statement in their character blocks, for example "fills the frame
|
||||
as fully as the others".
|
||||
- Weksa's dust smudge may need toning down.
|
||||
|
|
|
|||
BIN
cast-portraits/r2/aqua/aqua-r2a-cutout.png
Normal file
|
After Width: | Height: | Size: 344 KiB |
25
cast-portraits/r2/aqua/aqua-r2a.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Aqua r2a
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Consistency: one shared style block, byte-identical across all eight prompts, states the proportions as an explicit head count (two heads tall) instead of the bare word chibi that failed in round 1, and fixes framing, line, shading, palette rule and a flat chroma-key green ground for a deterministic cutout. Per-character text describes only the character.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Batch A baseline: shared style block with ratio two heads tall, then the character block.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/aqua-r2a.png
|
||||
- Committed: aqua-r2a.webp (lossless, 1024 px long side) and aqua-r2a-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: b8f7dd8b-9148-4649-b3f3-825f0e2f3e37
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is two heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Aqua, a cartoon goldfish DJ. He is a fish, so his whole body is in the frame instead of a bust: a round chubby goldfish with a golden-yellow face and an orange body covered in clearly drawn overlapping fish scales, big round blue eyes with white highlights, a small round fish mouth, no beak, no bill, no legs and no feet; a little orange crest fin on top of the head; large black over-ear studio headphones with cyan rings on the ear cups. Bright orange pectoral fins, one raised, and a flowing forked orange tail fin. Key colours: orange and cyan.
|
||||
BIN
cast-portraits/r2/aqua/aqua-r2a.webp
Normal file
|
After Width: | Height: | Size: 348 KiB |
BIN
cast-portraits/r2/aqua/aqua-r2b-cutout.png
Normal file
|
After Width: | Height: | Size: 482 KiB |
25
cast-portraits/r2/aqua/aqua-r2b.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Aqua r2b
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Same as r2a with one variable changed: the figure is three heads tall instead of two, testing whether a milder, more achievable ratio is followed more uniformly across the cast.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Ratio only: 'two heads tall' became 'three heads tall' in the shared block, against the same character's r2a. Character block identical.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/aqua-r2b.png
|
||||
- Committed: aqua-r2b.webp (lossless, 1024 px long side) and aqua-r2b-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: 54fc49c2-e641-4189-bf0e-db08954beca6
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is three heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Aqua, a cartoon goldfish DJ. He is a fish, so his whole body is in the frame instead of a bust: a round chubby goldfish with a golden-yellow face and an orange body covered in clearly drawn overlapping fish scales, big round blue eyes with white highlights, a small round fish mouth, no beak, no bill, no legs and no feet; a little orange crest fin on top of the head; large black over-ear studio headphones with cyan rings on the ear cups. Bright orange pectoral fins, one raised, and a flowing forked orange tail fin. Key colours: orange and cyan.
|
||||
BIN
cast-portraits/r2/aqua/aqua-r2b.webp
Normal file
|
After Width: | Height: | Size: 514 KiB |
BIN
cast-portraits/r2/contact-r2-A.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
cast-portraits/r2/contact-r2-B.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
cast-portraits/r2/eureka/eureka-r2a-cutout.png
Normal file
|
After Width: | Height: | Size: 682 KiB |
25
cast-portraits/r2/eureka/eureka-r2a.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Eureka r2a
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Consistency: one shared style block, byte-identical across all eight prompts, states the proportions as an explicit head count (two heads tall) instead of the bare word chibi that failed in round 1, and fixes framing, line, shading, palette rule and a flat chroma-key green ground for a deterministic cutout. Per-character text describes only the character.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Batch A baseline: shared style block with ratio two heads tall, then the character block.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/eureka-r2a.png
|
||||
- Committed: eureka-r2a.webp (lossless, 1024 px long side) and eureka-r2a-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: 8210c514-182d-4cc7-959b-2b786d18160c
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is two heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Eureka, a neon-noir bug hunter: a young woman with messy shoulder-length black hair with one bright orange streak in the fringe, sharp focused blue-grey eyes, a slight knowing smile. She wears a dark charcoal trenchcoat with the hood up, framing her face, and a high collar; the hood's edge and the coat's seams are piped with ember-orange lines, over tactical gear: chest straps, buckles and pouches. Fingerless gloves; she holds a slim orange metal probe. Key colour: ember orange.
|
||||
BIN
cast-portraits/r2/eureka/eureka-r2a.webp
Normal file
|
After Width: | Height: | Size: 563 KiB |
BIN
cast-portraits/r2/eureka/eureka-r2b-cutout.png
Normal file
|
After Width: | Height: | Size: 672 KiB |
25
cast-portraits/r2/eureka/eureka-r2b.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Eureka r2b
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Same as r2a with one variable changed: the figure is three heads tall instead of two, testing whether a milder, more achievable ratio is followed more uniformly across the cast.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Ratio only: 'two heads tall' became 'three heads tall' in the shared block, against the same character's r2a. Character block identical.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/eureka-r2b.png
|
||||
- Committed: eureka-r2b.webp (lossless, 1024 px long side) and eureka-r2b-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: a78e3e35-95ef-40b6-a982-c7e5f36e753d
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is three heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Eureka, a neon-noir bug hunter: a young woman with messy shoulder-length black hair with one bright orange streak in the fringe, sharp focused blue-grey eyes, a slight knowing smile. She wears a dark charcoal trenchcoat with the hood up, framing her face, and a high collar; the hood's edge and the coat's seams are piped with ember-orange lines, over tactical gear: chest straps, buckles and pouches. Fingerless gloves; she holds a slim orange metal probe. Key colour: ember orange.
|
||||
BIN
cast-portraits/r2/eureka/eureka-r2b.webp
Normal file
|
After Width: | Height: | Size: 558 KiB |
BIN
cast-portraits/r2/heimdall/heimdall-r2a-cutout.png
Normal file
|
After Width: | Height: | Size: 613 KiB |
25
cast-portraits/r2/heimdall/heimdall-r2a.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Heimdall r2a
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Consistency: one shared style block, byte-identical across all eight prompts, states the proportions as an explicit head count (two heads tall) instead of the bare word chibi that failed in round 1, and fixes framing, line, shading, palette rule and a flat chroma-key green ground for a deterministic cutout. Per-character text describes only the character.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Batch A baseline: shared style block with ratio two heads tall, then the character block.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/heimdall-r2a.png
|
||||
- Committed: heimdall-r2a.webp (lossless, 1024 px long side) and heimdall-r2a-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: eb45ea01-2744-4e0b-bf44-5ade8328dd9f
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is two heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Heimdall, a stern young gatekeeper: dark brown skin, a mop of messy dark brown curly hair with golden highlights, glowing golden amber eyes, a serious frown, one small gold earring. He wears a high-collared black coat with royal blue lapels and a royal blue cape trimmed in gold filigree, small blue gems on the shoulder armour, and a gold key-shaped clasp at the throat. He holds an ornate golden key raised beside his shoulder. Key colours: gold and cobalt blue.
|
||||
BIN
cast-portraits/r2/heimdall/heimdall-r2a.webp
Normal file
|
After Width: | Height: | Size: 535 KiB |
BIN
cast-portraits/r2/heimdall/heimdall-r2b-cutout.png
Normal file
|
After Width: | Height: | Size: 544 KiB |
25
cast-portraits/r2/heimdall/heimdall-r2b.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Heimdall r2b
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Same as r2a with one variable changed: the figure is three heads tall instead of two, testing whether a milder, more achievable ratio is followed more uniformly across the cast.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Ratio only: 'two heads tall' became 'three heads tall' in the shared block, against the same character's r2a. Character block identical.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/heimdall-r2b.png
|
||||
- Committed: heimdall-r2b.webp (lossless, 1024 px long side) and heimdall-r2b-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: c458a271-89ca-4961-aac9-b3b2bde445a7
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is three heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Heimdall, a stern young gatekeeper: dark brown skin, a mop of messy dark brown curly hair with golden highlights, glowing golden amber eyes, a serious frown, one small gold earring. He wears a high-collared black coat with royal blue lapels and a royal blue cape trimmed in gold filigree, small blue gems on the shoulder armour, and a gold key-shaped clasp at the throat. He holds an ornate golden key raised beside his shoulder. Key colours: gold and cobalt blue.
|
||||
BIN
cast-portraits/r2/heimdall/heimdall-r2b.webp
Normal file
|
After Width: | Height: | Size: 416 KiB |
BIN
cast-portraits/r2/kiko/kiko-r2a-cutout.png
Normal file
|
After Width: | Height: | Size: 765 KiB |
25
cast-portraits/r2/kiko/kiko-r2a.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Kiko r2a
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Consistency: one shared style block, byte-identical across all eight prompts, states the proportions as an explicit head count (two heads tall) instead of the bare word chibi that failed in round 1, and fixes framing, line, shading, palette rule and a flat chroma-key green ground for a deterministic cutout. Per-character text describes only the character.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Batch A baseline: shared style block with ratio two heads tall, then the character block.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/kiko-r2a.png
|
||||
- Committed: kiko-r2a.webp (lossless, 1024 px long side) and kiko-r2a-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: 82bacb1a-bbb6-49f2-81a1-6d088e79a89c
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is two heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Kiko, an excitable fox-girl streamer: messy white shoulder-length hair, tall white fox ears with pink insides, a white kitsune fox mask with red and magenta markings worn pushed up on top of her head, black hair ornaments with gold bells and magenta tassels, bright cyan eyes, a wide open-mouthed grin with one small fang, one hand raised in a wave. She wears a black kimono-style jacket with magenta and teal trim and a gold bell at the collar. A fluffy white fox tail with pink tips curls up behind one shoulder. Key colours: magenta and cyan.
|
||||
BIN
cast-portraits/r2/kiko/kiko-r2a.webp
Normal file
|
After Width: | Height: | Size: 638 KiB |
BIN
cast-portraits/r2/kiko/kiko-r2b-cutout.png
Normal file
|
After Width: | Height: | Size: 724 KiB |
25
cast-portraits/r2/kiko/kiko-r2b.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Kiko r2b
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Same as r2a with one variable changed: the figure is three heads tall instead of two, testing whether a milder, more achievable ratio is followed more uniformly across the cast.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Ratio only: 'two heads tall' became 'three heads tall' in the shared block, against the same character's r2a. Character block identical.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/kiko-r2b.png
|
||||
- Committed: kiko-r2b.webp (lossless, 1024 px long side) and kiko-r2b-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: 68a940d5-65e0-4f9f-afe5-93c1193c7b93
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is three heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Kiko, an excitable fox-girl streamer: messy white shoulder-length hair, tall white fox ears with pink insides, a white kitsune fox mask with red and magenta markings worn pushed up on top of her head, black hair ornaments with gold bells and magenta tassels, bright cyan eyes, a wide open-mouthed grin with one small fang, one hand raised in a wave. She wears a black kimono-style jacket with magenta and teal trim and a gold bell at the collar. A fluffy white fox tail with pink tips curls up behind one shoulder. Key colours: magenta and cyan.
|
||||
BIN
cast-portraits/r2/kiko/kiko-r2b.webp
Normal file
|
After Width: | Height: | Size: 624 KiB |
BIN
cast-portraits/r2/libby/libby-r2a-cutout.png
Normal file
|
After Width: | Height: | Size: 738 KiB |
25
cast-portraits/r2/libby/libby-r2a.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Libby r2a
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Consistency: one shared style block, byte-identical across all eight prompts, states the proportions as an explicit head count (two heads tall) instead of the bare word chibi that failed in round 1, and fixes framing, line, shading, palette rule and a flat chroma-key green ground for a deterministic cutout. Per-character text describes only the character.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Batch A baseline: shared style block with ratio two heads tall, then the character block.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/libby-r2a.png
|
||||
- Committed: libby-r2a.webp (lossless, 1024 px long side) and libby-r2a-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: cb9498b4-3f5c-415b-bc12-2f322898d391
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is two heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Libby, a cheerful young librarian-witch, warm and bookish: thick voluminous wavy hair in a deep dusky violet-lavender with a big swept side fringe, gathered into one loose, fat wavy braid that falls forward over her right shoulder; a white crossed-bone hair clip on the left side of her head; a dark purple ribbon bow with a mauve diamond pattern tied at the top of the braid. Round thin black-framed glasses, large grey-violet eyes, small gold drop earrings, pale skin with rosy cheeks, a big open-mouthed happy smile. She wears a high-collared black scholar's robe with wide sleeves, embroidered in gold and dusky mauve diamond and rune patterns, with a violet gem brooch in a gold setting at the collar. She hugs an old brown leather book with gold corners against her chest, a faint violet light along its page edges. Key colours: black and gold with violet.
|
||||
BIN
cast-portraits/r2/libby/libby-r2a.webp
Normal file
|
After Width: | Height: | Size: 633 KiB |
BIN
cast-portraits/r2/libby/libby-r2b-cutout.png
Normal file
|
After Width: | Height: | Size: 700 KiB |
25
cast-portraits/r2/libby/libby-r2b.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Libby r2b
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Same as r2a with one variable changed: the figure is three heads tall instead of two, testing whether a milder, more achievable ratio is followed more uniformly across the cast.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Ratio only: 'two heads tall' became 'three heads tall' in the shared block, against the same character's r2a. Character block identical.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/libby-r2b.png
|
||||
- Committed: libby-r2b.webp (lossless, 1024 px long side) and libby-r2b-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: 4fdcbfdc-8a3e-4c83-9a73-d28fcde40b6b
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is three heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Libby, a cheerful young librarian-witch, warm and bookish: thick voluminous wavy hair in a deep dusky violet-lavender with a big swept side fringe, gathered into one loose, fat wavy braid that falls forward over her right shoulder; a white crossed-bone hair clip on the left side of her head; a dark purple ribbon bow with a mauve diamond pattern tied at the top of the braid. Round thin black-framed glasses, large grey-violet eyes, small gold drop earrings, pale skin with rosy cheeks, a big open-mouthed happy smile. She wears a high-collared black scholar's robe with wide sleeves, embroidered in gold and dusky mauve diamond and rune patterns, with a violet gem brooch in a gold setting at the collar. She hugs an old brown leather book with gold corners against her chest, a faint violet light along its page edges. Key colours: black and gold with violet.
|
||||
BIN
cast-portraits/r2/libby/libby-r2b.webp
Normal file
|
After Width: | Height: | Size: 606 KiB |
98
cast-portraits/r2/matte_r2.py
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
"""Deterministic chroma matte, web assets and contact sheets for round 2 (Pillow only).
|
||||
|
||||
Key: greenness = G - max(R, B). The ground colour is sampled from the four corners and must be
|
||||
strongly green. Alpha ramps from opaque at greenness <= LO to transparent at >= HI, so enclosed
|
||||
ground (between an arm and the body) is keyed too, not only ground connected to the corners.
|
||||
Despill clamps G to max(R, B) inside a thin band around the edge only, so character greens stay.
|
||||
A 0.8 px Gaussian feather softens the alpha edge.
|
||||
"""
|
||||
import pathlib, sys
|
||||
from PIL import Image, ImageChops, ImageFilter, ImageDraw, ImageFont, ImageStat
|
||||
|
||||
ORIG = pathlib.Path(r"F:/Projects/cast-art-originals/r2")
|
||||
REC = pathlib.Path(r"F:/Projects/gamecult-site-wt-portraits/cast-portraits/r2")
|
||||
SCR = pathlib.Path(__file__).parent / "checks"
|
||||
NAMES = ["libby", "heimdall", "kiko", "aqua", "weksa", "nibu", "eureka", "void"]
|
||||
LO, HI = 40, 110
|
||||
|
||||
def greenness(im):
|
||||
r, g, b = im.split()
|
||||
return ImageChops.subtract(g, ImageChops.lighter(r, b))
|
||||
|
||||
def matte(im):
|
||||
im = im.convert("RGB")
|
||||
w, h = im.size
|
||||
gr = greenness(im)
|
||||
corners = [gr.crop(box) for box in ((0, 0, 24, 24), (w - 24, 0, w, 24))]
|
||||
cg = [ImageStat.Stat(c).mean[0] for c in corners]
|
||||
span = 255.0 / (HI - LO)
|
||||
a = gr.point(lambda v: 255 if v <= LO else (0 if v >= HI else int(255 - (v - LO) * span)))
|
||||
band = ImageChops.subtract(a.filter(ImageFilter.MaxFilter(7)), a.filter(ImageFilter.MinFilter(7)))
|
||||
band = band.point(lambda v: 255 if v > 0 else 0)
|
||||
r, g, b = im.split()
|
||||
g2 = Image.composite(ImageChops.darker(g, ImageChops.lighter(r, b)), g, band)
|
||||
a = a.filter(ImageFilter.GaussianBlur(0.8))
|
||||
out = Image.merge("RGBA", (r, g2, b, a))
|
||||
# ground flatness: std of RGB in top corners
|
||||
std = [round(max(ImageStat.Stat(im.crop(bx)).stddev), 1) for bx in ((0, 0, 64, 64), (w - 64, 0, w, 64))]
|
||||
# residual green: opaque-ish pixels that are still strongly green
|
||||
resid = ImageChops.multiply(greenness(out.convert("RGB")).point(lambda v: 255 if v > 60 else 0), a.point(lambda v: 255 if v > 128 else 0))
|
||||
rc = sum(resid.histogram()[255:])
|
||||
return out, cg, std, rc
|
||||
|
||||
def fit(im, long_side=1024):
|
||||
w, h = im.size; s = long_side / max(w, h)
|
||||
return im.resize((round(w * s), round(h * s)), Image.LANCZOS)
|
||||
|
||||
def checker(size, dark):
|
||||
a, b = ((40, 40, 40), (70, 70, 70)) if dark else ((235, 235, 235), (205, 205, 205))
|
||||
c = Image.new("RGB", size, a); d = ImageDraw.Draw(c); t = 24
|
||||
for y in range(0, size[1], t):
|
||||
for x in range((y // t % 2) * t, size[0], 2 * t):
|
||||
d.rectangle([x, y, x + t - 1, y + t - 1], fill=b)
|
||||
return c
|
||||
|
||||
def font(sz):
|
||||
for f in ("C:/Windows/Fonts/consola.ttf", "C:/Windows/Fonts/arial.ttf"):
|
||||
try: return ImageFont.truetype(f, sz)
|
||||
except OSError: pass
|
||||
return ImageFont.load_default()
|
||||
|
||||
def process(suf):
|
||||
SCR.mkdir(exist_ok=True)
|
||||
cut = {}
|
||||
for n in NAMES:
|
||||
src = ORIG / f"{n}-{suf}.png"
|
||||
if not src.exists():
|
||||
print(f"{n}-{suf}: missing"); continue
|
||||
im = Image.open(src)
|
||||
out, cg, std, rc = matte(im)
|
||||
d = REC / n; d.mkdir(parents=True, exist_ok=True)
|
||||
fit(im.convert("RGB")).save(d / f"{n}-{suf}.webp", "WEBP", lossless=True, quality=100, method=6)
|
||||
c = fit(out); c.save(d / f"{n}-{suf}-cutout.png", optimize=True)
|
||||
cut[n] = c
|
||||
# checks on dark and light checker, half size
|
||||
pair = Image.new("RGB", (c.width * 2, c.height))
|
||||
for i, dark in enumerate((True, False)):
|
||||
bg = checker(c.size, dark); bg.paste(c, (0, 0), c); pair.paste(bg, (i * c.width, 0))
|
||||
pair.resize((pair.width // 2, pair.height // 2)).save(SCR / f"{n}-{suf}-check.png")
|
||||
print(f"{n}-{suf}: corner greenness {[round(x) for x in cg]}, corner std {std}, residual green px {rc}")
|
||||
contact(suf, cut)
|
||||
|
||||
def contact(suf, cut):
|
||||
cw, ch, pad, lab = 400, 500, 16, 44
|
||||
W = pad + len(NAMES) * (cw + pad); H = lab + ch + pad
|
||||
sheet = Image.new("RGB", (W, H), (128, 128, 128)); d = ImageDraw.Draw(sheet); f = font(26)
|
||||
for i, n in enumerate(NAMES):
|
||||
x = pad + i * (cw + pad)
|
||||
d.text((x, 10), f"{n} {suf}", fill=(20, 20, 20), font=f)
|
||||
if n in cut:
|
||||
c = cut[n].resize((cw, ch), Image.LANCZOS)
|
||||
sheet.paste(c, (x, lab), c)
|
||||
p = REC / f"contact-r2-{'A' if suf == 'r2a' else 'B'}.png"
|
||||
sheet.save(p, optimize=True)
|
||||
print(f"{p.name}: {sheet.size}, {p.stat().st_size / 1e6:.2f} MB")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for s in sys.argv[1:] or ("r2a", "r2b"):
|
||||
process(s)
|
||||
BIN
cast-portraits/r2/nibu/nibu-r2a-cutout.png
Normal file
|
After Width: | Height: | Size: 606 KiB |
25
cast-portraits/r2/nibu/nibu-r2a.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Nibu r2a
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Consistency: one shared style block, byte-identical across all eight prompts, states the proportions as an explicit head count (two heads tall) instead of the bare word chibi that failed in round 1, and fixes framing, line, shading, palette rule and a flat chroma-key green ground for a deterministic cutout. Per-character text describes only the character.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Batch A baseline: shared style block with ratio two heads tall, then the character block.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/nibu-r2a.png
|
||||
- Committed: nibu-r2a.webp (lossless, 1024 px long side) and nibu-r2a-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: db1cfa35-2b1d-489e-81b4-294c93a91d3a
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is two heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Nibu, a quiet, serious worldbuilder girl: very long pale lavender hair with a swept side fringe, a pink hair clip on the left shaped like a small data connector plug, a short rectangular plug body with a round pink bead at each end; a large pink ribbon bow on the right, half-lidded violet eyes, a calm unsmiling expression, arms folded. Wears a sleeveless lilac blouse with a frilled collar, detached dark purple sleeves with circuit-pattern embroidery, a small cyan ring device on the shoulder, and a long dark purple coat. Key colours: violet and pink with a cyan accent.
|
||||
BIN
cast-portraits/r2/nibu/nibu-r2a.webp
Normal file
|
After Width: | Height: | Size: 503 KiB |
BIN
cast-portraits/r2/nibu/nibu-r2b-cutout.png
Normal file
|
After Width: | Height: | Size: 688 KiB |
25
cast-portraits/r2/nibu/nibu-r2b.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Nibu r2b
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Same as r2a with one variable changed: the figure is three heads tall instead of two, testing whether a milder, more achievable ratio is followed more uniformly across the cast.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Ratio only: 'two heads tall' became 'three heads tall' in the shared block, against the same character's r2a. Character block identical.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/nibu-r2b.png
|
||||
- Committed: nibu-r2b.webp (lossless, 1024 px long side) and nibu-r2b-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: b7333263-1bc3-4899-a754-06f175354568
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is three heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Nibu, a quiet, serious worldbuilder girl: very long pale lavender hair with a swept side fringe, a pink hair clip on the left shaped like a small data connector plug, a short rectangular plug body with a round pink bead at each end; a large pink ribbon bow on the right, half-lidded violet eyes, a calm unsmiling expression, arms folded. Wears a sleeveless lilac blouse with a frilled collar, detached dark purple sleeves with circuit-pattern embroidery, a small cyan ring device on the shoulder, and a long dark purple coat. Key colours: violet and pink with a cyan accent.
|
||||
BIN
cast-portraits/r2/nibu/nibu-r2b.webp
Normal file
|
After Width: | Height: | Size: 584 KiB |
125
cast-portraits/r2/render_r2.py
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
"""Round 2 cast portraits. Key read from F:/Projects/bfl-api.txt inside this process only; never printed or written."""
|
||||
import json, time, urllib.request, urllib.error, io, sys, datetime, pathlib, concurrent.futures as cf
|
||||
from PIL import Image
|
||||
|
||||
REC = pathlib.Path(r"F:/Projects/gamecult-site-wt-portraits/cast-portraits/r2")
|
||||
ORIG = pathlib.Path(r"F:/Projects/cast-art-originals/r2")
|
||||
ENDPOINT = "https://api.bfl.ai/v1/flux-3-image"
|
||||
|
||||
STYLE_T = (
|
||||
"Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, "
|
||||
"the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin "
|
||||
"below the top edge, the same crop and scale for every character. "
|
||||
"Super-deformed chibi proportions: the character is {N} heads tall in total, so the head is very large compared with the small shoulders and narrow torso. "
|
||||
"Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, "
|
||||
"thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. "
|
||||
"No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. "
|
||||
"A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. "
|
||||
"The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, "
|
||||
"no cast shadow, no particles, no props or scenery behind the figure."
|
||||
)
|
||||
RATIO = {"r2a": "two", "r2b": "three"}
|
||||
|
||||
C = {}
|
||||
C["libby"] = ("Libby, a cheerful young librarian-witch, warm and bookish: thick voluminous wavy hair in a deep dusky violet-lavender with a big swept side fringe, "
|
||||
"gathered into one loose, fat wavy braid that falls forward over her right shoulder; a white crossed-bone hair clip on the left side of her head; "
|
||||
"a dark purple ribbon bow with a mauve diamond pattern tied at the top of the braid. Round thin black-framed glasses, large grey-violet eyes, "
|
||||
"small gold drop earrings, pale skin with rosy cheeks, a big open-mouthed happy smile. She wears a high-collared black scholar's robe with wide sleeves, "
|
||||
"embroidered in gold and dusky mauve diamond and rune patterns, with a violet gem brooch in a gold setting at the collar. "
|
||||
"She hugs an old brown leather book with gold corners against her chest, a faint violet light along its page edges. Key colours: black and gold with violet.")
|
||||
C["heimdall"] = ("Heimdall, a stern young gatekeeper: dark brown skin, a mop of messy dark brown curly hair with golden highlights, "
|
||||
"glowing golden amber eyes, a serious frown, one small gold earring. He wears a high-collared black coat with royal blue lapels and a royal blue cape "
|
||||
"trimmed in gold filigree, small blue gems on the shoulder armour, and a gold key-shaped clasp at the throat. "
|
||||
"He holds an ornate golden key raised beside his shoulder. Key colours: gold and cobalt blue.")
|
||||
C["kiko"] = ("Kiko, an excitable fox-girl streamer: messy white shoulder-length hair, tall white fox ears with pink insides, "
|
||||
"a white kitsune fox mask with red and magenta markings worn pushed up on top of her head, black hair ornaments with gold bells and magenta tassels, "
|
||||
"bright cyan eyes, a wide open-mouthed grin with one small fang, one hand raised in a wave. "
|
||||
"She wears a black kimono-style jacket with magenta and teal trim and a gold bell at the collar. "
|
||||
"A fluffy white fox tail with pink tips curls up behind one shoulder. Key colours: magenta and cyan.")
|
||||
C["aqua"] = ("Aqua, a cartoon goldfish DJ. He is a fish, so his whole body is in the frame instead of a bust: a round chubby goldfish with a golden-yellow face "
|
||||
"and an orange body covered in clearly drawn overlapping fish scales, big round blue eyes with white highlights, a small round fish mouth, "
|
||||
"no beak, no bill, no legs and no feet; a little orange crest fin on top of the head; large black over-ear studio headphones with cyan rings on the ear cups. "
|
||||
"Bright orange pectoral fins, one raised, and a flowing forked orange tail fin. Key colours: orange and cyan.")
|
||||
C["weksa"] = ("Weksa, a tomboyish young woman, an adventurous field archaeologist in the Indiana Jones mould: warm brown skin, a confident lopsided grin, "
|
||||
"a smudge of dust on one cheek, messy dark brown shoulder-length hair tied partly up in a topknot with turquoise and amber beads and small feathers, "
|
||||
"large round gold-rimmed glasses, warm amber-brown eyes, dangling turquoise earrings. She wears a cream linen robe with teal embroidered trim, "
|
||||
"its sleeves rolled up to the elbows, over a weathered brown leather vest, with beaded necklaces and wooden bead bracelets and a leather strap across her chest; "
|
||||
"a battered brown leather backpack stuffed with rolled scrolls and a small carved idol shows behind one shoulder. "
|
||||
"She holds up a small paper card with a hand-drawn glyph between two fingers. No hat. Key colours: teal and amber on earthy browns.")
|
||||
C["nibu"] = ("Nibu, a quiet, serious worldbuilder girl: very long pale lavender hair with a swept side fringe, "
|
||||
"a pink hair clip on the left shaped like a small data connector plug, a short rectangular plug body with a round pink bead at each end; "
|
||||
"a large pink ribbon bow on the right, half-lidded violet eyes, a calm unsmiling expression, arms folded. "
|
||||
"Wears a sleeveless lilac blouse with a frilled collar, detached dark purple sleeves with circuit-pattern embroidery, "
|
||||
"a small cyan ring device on the shoulder, and a long dark purple coat. Key colours: violet and pink with a cyan accent.")
|
||||
C["eureka"] = ("Eureka, a neon-noir bug hunter: a young woman with messy shoulder-length black hair with one bright orange streak in the fringe, "
|
||||
"sharp focused blue-grey eyes, a slight knowing smile. She wears a dark charcoal trenchcoat with the hood up, framing her face, and a high collar; "
|
||||
"the hood's edge and the coat's seams are piped with ember-orange lines, over tactical gear: chest straps, buckles and pouches. "
|
||||
"Fingerless gloves; she holds a slim orange metal probe. Key colour: ember orange.")
|
||||
C["void"] = ("Void, a small hooded shadow figure: a deep indigo-violet robe with a large pointed hood, the face inside the hood completely black "
|
||||
"with no features except two tall white glowing oval eyes, a thick bright orange scarf wrapped around the neck with frayed ends trailing to one side, "
|
||||
"dark gloved hands. Key colours: indigo violet and orange.")
|
||||
|
||||
HYP = {
|
||||
"r2a": ("Consistency: one shared style block, byte-identical across all eight prompts, states the proportions as an explicit head count "
|
||||
"(two heads tall) instead of the bare word chibi that failed in round 1, and fixes framing, line, shading, palette rule and a flat "
|
||||
"chroma-key green ground for a deterministic cutout. Per-character text describes only the character."),
|
||||
"r2b": ("Same as r2a with one variable changed: the figure is three heads tall instead of two, testing whether a milder, more achievable "
|
||||
"ratio is followed more uniformly across the cast."),
|
||||
}
|
||||
VAR = {"r2a": "Batch A baseline: shared style block with ratio two heads tall, then the character block.",
|
||||
"r2b": "Ratio only: 'two heads tall' became 'three heads tall' in the shared block, against the same character's r2a. Character block identical."}
|
||||
|
||||
NAMES = ["libby", "heimdall", "kiko", "aqua", "weksa", "nibu", "eureka", "void"]
|
||||
JOBS = [(n, s) for s in ("r2a", "r2b") for n in NAMES]
|
||||
|
||||
def prompt_for(n, suf):
|
||||
return STYLE_T.format(N=RATIO[suf]) + "\n\n" + C[n]
|
||||
|
||||
def req(url, key, data=None):
|
||||
r = urllib.request.Request(url, data=json.dumps(data).encode() if data else None,
|
||||
headers={"x-key": key, "Content-Type": "application/json", "accept": "application/json"})
|
||||
return json.load(urllib.request.urlopen(r, timeout=60))
|
||||
|
||||
def run(job, key):
|
||||
n, suf = job
|
||||
d = REC / n; d.mkdir(parents=True, exist_ok=True)
|
||||
png = ORIG / f"{n}-{suf}.png"
|
||||
if png.exists():
|
||||
return f"{n}-{suf}: exists, skipped"
|
||||
prompt = prompt_for(n, suf)
|
||||
try:
|
||||
j = req(ENDPOINT, key, {"prompt": prompt, "aspect_ratio": "4:5", "resolution": "2k"})
|
||||
except urllib.error.HTTPError as e:
|
||||
return f"{n}-{suf}: submit HTTP {e.code} {e.read()[:300]!r}"
|
||||
rid, poll = j.get("id"), j.get("polling_url")
|
||||
for _ in range(240):
|
||||
time.sleep(6)
|
||||
try: s = req(poll, key)
|
||||
except Exception: continue
|
||||
st = s.get("status")
|
||||
if st == "Ready":
|
||||
raw = urllib.request.urlopen(s["result"]["sample"], timeout=120).read()
|
||||
im = Image.open(io.BytesIO(raw)); fmt = im.format; im.save(png, "PNG")
|
||||
txt = (f"# {n.capitalize()} {suf}\n\n## Hypothesis\n\n{HYP[suf]}\n\n## Variable changed\n\n{VAR[suf]}\n\n"
|
||||
f"## Render record\n\n- Model: FLUX 3 Image, `POST {ENDPOINT}`\n"
|
||||
f"- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; "
|
||||
f"rendered from scratch with no reference image or edit\n- Output: {im.size[0]}x{im.size[1]}, source format {fmt}; "
|
||||
f"2k original kept out of git at F:/Projects/cast-art-originals/r2/{n}-{suf}.png\n"
|
||||
f"- Committed: {n}-{suf}.webp (lossless, 1024 px long side) and {n}-{suf}-cutout.png (transparent, 1024 px long side)\n"
|
||||
f"- Request id: {rid}\n- Date: {datetime.date.today().isoformat()}\n"
|
||||
f"- Composition: shared style block (byte-identical within the batch), blank line, character block\n\n"
|
||||
f"## Prompt\n\n{prompt}\n")
|
||||
(d / f"{n}-{suf}.txt").write_text(txt, encoding="utf-8")
|
||||
return f"{n}-{suf}: Ready {im.size}"
|
||||
if st in ("Error", "Failed", "Content Moderated", "Request Moderated", "Task not found"):
|
||||
return f"{n}-{suf}: {st} {str(s)[:200]}"
|
||||
return f"{n}-{suf}: timeout"
|
||||
|
||||
if __name__ == "__main__":
|
||||
key = pathlib.Path(r"F:/Projects/bfl-api.txt").read_text().strip()
|
||||
only = sys.argv[1:]
|
||||
jobs = [j for j in JOBS if not only or f"{j[0]}-{j[1]}" in only]
|
||||
with cf.ThreadPoolExecutor(max_workers=6) as ex:
|
||||
for r in ex.map(lambda j: run(j, key), jobs):
|
||||
print(r, flush=True)
|
||||
print("DONE", flush=True)
|
||||
BIN
cast-portraits/r2/void/void-r2a-cutout.png
Normal file
|
After Width: | Height: | Size: 337 KiB |
25
cast-portraits/r2/void/void-r2a.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Void r2a
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Consistency: one shared style block, byte-identical across all eight prompts, states the proportions as an explicit head count (two heads tall) instead of the bare word chibi that failed in round 1, and fixes framing, line, shading, palette rule and a flat chroma-key green ground for a deterministic cutout. Per-character text describes only the character.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Batch A baseline: shared style block with ratio two heads tall, then the character block.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/void-r2a.png
|
||||
- Committed: void-r2a.webp (lossless, 1024 px long side) and void-r2a-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: f993169b-5c84-4a79-a2b8-ea925264bea5
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is two heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Void, a small hooded shadow figure: a deep indigo-violet robe with a large pointed hood, the face inside the hood completely black with no features except two tall white glowing oval eyes, a thick bright orange scarf wrapped around the neck with frayed ends trailing to one side, dark gloved hands. Key colours: indigo violet and orange.
|
||||
BIN
cast-portraits/r2/void/void-r2a.webp
Normal file
|
After Width: | Height: | Size: 328 KiB |
BIN
cast-portraits/r2/void/void-r2b-cutout.png
Normal file
|
After Width: | Height: | Size: 424 KiB |
25
cast-portraits/r2/void/void-r2b.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Void r2b
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Same as r2a with one variable changed: the figure is three heads tall instead of two, testing whether a milder, more achievable ratio is followed more uniformly across the cast.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Ratio only: 'two heads tall' became 'three heads tall' in the shared block, against the same character's r2a. Character block identical.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/void-r2b.png
|
||||
- Committed: void-r2b.webp (lossless, 1024 px long side) and void-r2b-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: 50814117-a779-4f9b-9ae6-c813eb19b605
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is three heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Void, a small hooded shadow figure: a deep indigo-violet robe with a large pointed hood, the face inside the hood completely black with no features except two tall white glowing oval eyes, a thick bright orange scarf wrapped around the neck with frayed ends trailing to one side, dark gloved hands. Key colours: indigo violet and orange.
|
||||
BIN
cast-portraits/r2/void/void-r2b.webp
Normal file
|
After Width: | Height: | Size: 405 KiB |
BIN
cast-portraits/r2/weksa/weksa-r2a-cutout.png
Normal file
|
After Width: | Height: | Size: 883 KiB |
25
cast-portraits/r2/weksa/weksa-r2a.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Weksa r2a
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Consistency: one shared style block, byte-identical across all eight prompts, states the proportions as an explicit head count (two heads tall) instead of the bare word chibi that failed in round 1, and fixes framing, line, shading, palette rule and a flat chroma-key green ground for a deterministic cutout. Per-character text describes only the character.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Batch A baseline: shared style block with ratio two heads tall, then the character block.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/weksa-r2a.png
|
||||
- Committed: weksa-r2a.webp (lossless, 1024 px long side) and weksa-r2a-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: 26468ef4-3f36-48cd-b401-837a10f6b8d8
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is two heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Weksa, a tomboyish young woman, an adventurous field archaeologist in the Indiana Jones mould: warm brown skin, a confident lopsided grin, a smudge of dust on one cheek, messy dark brown shoulder-length hair tied partly up in a topknot with turquoise and amber beads and small feathers, large round gold-rimmed glasses, warm amber-brown eyes, dangling turquoise earrings. She wears a cream linen robe with teal embroidered trim, its sleeves rolled up to the elbows, over a weathered brown leather vest, with beaded necklaces and wooden bead bracelets and a leather strap across her chest; a battered brown leather backpack stuffed with rolled scrolls and a small carved idol shows behind one shoulder. She holds up a small paper card with a hand-drawn glyph between two fingers. No hat. Key colours: teal and amber on earthy browns.
|
||||
BIN
cast-portraits/r2/weksa/weksa-r2a.webp
Normal file
|
After Width: | Height: | Size: 718 KiB |
BIN
cast-portraits/r2/weksa/weksa-r2b-cutout.png
Normal file
|
After Width: | Height: | Size: 811 KiB |
25
cast-portraits/r2/weksa/weksa-r2b.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Weksa r2b
|
||||
|
||||
## Hypothesis
|
||||
|
||||
Same as r2a with one variable changed: the figure is three heads tall instead of two, testing whether a milder, more achievable ratio is followed more uniformly across the cast.
|
||||
|
||||
## Variable changed
|
||||
|
||||
Ratio only: 'two heads tall' became 'three heads tall' in the shared block, against the same character's r2a. Character block identical.
|
||||
|
||||
## Render record
|
||||
|
||||
- Model: FLUX 3 Image, `POST https://api.bfl.ai/v1/flux-3-image`
|
||||
- Parameters: aspect_ratio 4:5, resolution 2k, safety_tolerance default, grounding default; no seed field; rendered from scratch with no reference image or edit
|
||||
- Output: 1824x2288, source format PNG; 2k original kept out of git at F:/Projects/cast-art-originals/r2/weksa-r2b.png
|
||||
- Committed: weksa-r2b.webp (lossless, 1024 px long side) and weksa-r2b-cutout.png (transparent, 1024 px long side)
|
||||
- Request id: 40eb9b88-269f-44d4-b0da-72fa719ae5ac
|
||||
- Date: 2026-10-10
|
||||
- Composition: shared style block (byte-identical within the batch), blank line, character block
|
||||
|
||||
## Prompt
|
||||
|
||||
Character portrait for a game cast lineup: a bust, head and shoulders cropped at mid-chest by the bottom edge of the frame, the character in three-quarter view turned toward the right side of the frame, the head centred horizontally with its top a small margin below the top edge, the same crop and scale for every character. Super-deformed chibi proportions: the character is three heads tall in total, so the head is very large compared with the small shoulders and narrow torso. Clean 2D anime illustration drawn to be traced into vector art: one bold dark outline of even weight around the whole silhouette, thinner inner lines, flat cel shading with exactly one base tone and one shadow tone per material, light from the upper left. No gradients, no texture, no painterly blending, no glow halos, no pixel art, no 3D rendering. A limited palette of five or six flat colours taken from the character's key colours. Large expressive anime eyes with two white highlights. The background is one perfectly flat, uniform, solid bright chroma-key green from edge to edge: no gradient, no vignette, no floor, no cast shadow, no particles, no props or scenery behind the figure.
|
||||
|
||||
Weksa, a tomboyish young woman, an adventurous field archaeologist in the Indiana Jones mould: warm brown skin, a confident lopsided grin, a smudge of dust on one cheek, messy dark brown shoulder-length hair tied partly up in a topknot with turquoise and amber beads and small feathers, large round gold-rimmed glasses, warm amber-brown eyes, dangling turquoise earrings. She wears a cream linen robe with teal embroidered trim, its sleeves rolled up to the elbows, over a weathered brown leather vest, with beaded necklaces and wooden bead bracelets and a leather strap across her chest; a battered brown leather backpack stuffed with rolled scrolls and a small carved idol shows behind one shoulder. She holds up a small paper card with a hand-drawn glyph between two fingers. No hat. Key colours: teal and amber on earthy browns.
|
||||
BIN
cast-portraits/r2/weksa/weksa-r2b.webp
Normal file
|
After Width: | Height: | Size: 675 KiB |