
props from superquadric parts
152 images across 6 assets. Click an image to open it; tick two to compare them.

refit against the Sphynx aligned by face landmarks; not adopted, the skull hit its lower bounds

brow close-up; Rafael: "completely poor", the eye region has no depth

head refitted to the three domestic cats (Tabby, walker, idle): smaller, wider ears, broader head

the mean of 33 reference cats' face landmarks (blue, circle = spread across cats) against the SDF head fitted.json (orange), front and side, and the proportions table

Cycles: the step 4 SDF head (fitted.json) above, adjusted to the mean of 33 cats' face landmarks below (sdf_mean.json: rounder eye opening, wider and lower mouth, wider whisker pads, lower ears); the wide mouth reads as a long seam

cat face proportions on 1027 frontal photos (Oxford-IIIT Pet, 12 breeds, CC BY-SA 4.0) against the SDF head now and at step 4; per-breed medians below

Cycles: the SDF head fitted to the 3D models' mean (above) and to the 1,027 frontal photo medians (below, landmarks computed from the head's construction, least squares in seconds); eyes smaller and slanted like cats, mouth seam gone, ears apart; whisker pads grew into a ball

Cycles: whisker pads as a front-facing ellipse (top), flattened and turned around the muzzle (middle), and refitted to the photos with the new pad (bottom)

Cycles close-ups: eyes as before (bulging, stuck on), D2 (eyeball 0.45 radii deeper, socket opened in the almond's shape, thicker upper-lid fold, tear groove) and D3 (0.75 deeper: two concentric rims like goggles, too far); D2 chosen as params/sdf_head.json

Cycles, same scale and alignment: our SDF head (D2) next to the Tabby, Bengal S1234, Siamese S634 and the Murdered cat (original surfaces), front, three quarter and side; ours is a ball with a muzzle stuck under it, theirs a long wedge with a straight forehead-to-nose line, ears further back

key curves of 12 good cats (grey, median blue) against the SDF head (orange): midline profile, half front silhouette, six horizontal sections seen from above

Cycles: the head before (sdf_head) and after fitting its big forms to the 12 cats' curves by gradient descent (sdf_rebuild1: lower and shorter skull, fuller jowls, bigger muzzle; mean curve error 0.039 to 0.021), next to the Tabby, Bengal S1234, Siamese S634 and Murdered; still reads as a vinyl toy: round goggle eyes, big thin ears, no nose bridge plane

Cycles close-ups: the rebuilt head's round goggle eyes (sdf_rebuild1), almond openings with pointed corners and the upper lid lowered (lid1, lid2), against the Tabby, Siamese S634 and Murdered

Cycles close-ups: lid2 shows a second outline (the socket 18% larger than the lids); lid3 and lid4 tighten the socket and soften the lid join; lid4 chosen (almond, thin lid merging into the face, upper lid covering the top of the eye)

Cycles close-ups of the nose: before (sdf_lid4: round bridge, blob leather, lip cut surfacing as holes) and after (sdf_nose4: flat-topped bridge narrowing to the nose, rounded leather tip with nostrils, open mouth slot, philtrum groove, chin back), against the Tabby, Siamese S634 and Murdered

Cycles: whole heads before (sdf_lid4) and after the nose step (sdf_nose4) next to tabby, sf1234, sf634, murdered

front and side outlines of 12 good cats (grey coverage, blue median line) against sdf_nose4, sdf_ears3; ear tip, notch, base width and height below

Cycles: ears before (sdf_nose4: tall, thin, far out and high), fitted to the cats' outlines (sdf_ears), and with a solid base fused into the skull and a thicker rim (sdf_ears3, chosen), next to tabby, sf1234, sf634, murdered

Cycles close-ups: before (sdf_ears3: creases from the inner eye corner, beside the nose bridge and around the muzzle) and after (sdf_planes: tear groove off, softer joins of the upper jaw side, pads and muzzle mass, lighter lid fold, muzzle refitted), against the Tabby, Siamese S634 and Murdered

Cycles: the head before the four parts (sdf_rebuild1) and after eyelids, nose, ears and face planes (sdf_planes), next to tabby, sf1234, sf634, murdered

Eyes measured on the 12 good cats (tools/fit_eyes.py): before (sdf_head = planes), a smaller almond (eyes8c) and the fit (eyes9), close up next to Murdered, Siamese S634 and Tabby. Visible width 0.154 -> 0.167 (cats 0.167), upper lid overhang 0.046 -> -0.003 (cats -0.003), eye hollow 0.057 -> 0.028 (cats 0.024), lid edge sharpness 26/35 -> 5/6 (cats up to 5). The socket ring of shadow is gone; eyes9 adopted.

Cycles: the whole head before (planes) and with the measured eyes (eyes9), next to Tabby, Bengal S1234, Siamese S634 and Murdered.

Nose relief around the tip (0.0025 grid, lit like clay): the cats' median, sdf_head, sdf_nose6, and each good cat

Nose close-ups: before (sdf_head = eyes9, a triangle drawn with grooves), the new leather (nose5b: a broad rounded shield with comma nostrils, fitted to per-cat features) and with an even bridge (nose6), next to Tabby, Murdered and Siamese S634. Bridge half width 0.02 above the tip 0.0325 -> 0.0375 (cats 0.042, p10 0.036), leather half width 0.02 below the tip 0.0175 -> 0.0375 (cats 0.033), nostrils at x 0.018 -> 0.027 (cats 0.031). nose6 adopted.

Cycles: the whole head before (eyes9) and with the new nose leather (nose6), next to Tabby, Bengal S1234, Siamese S634 and Murdered.

Mouth close-ups: before (sdf_head = nose6: a long lip line on a flat front, 0.04 too low), mouth raised and narrowed to the cats' landmarks (mouth_b) and with the lower lip set back under the whisker pads (mouth_i, tools/fit_mouth.py), next to Tabby, Murdered and Siamese S634. Midline 0.13 under the nose tip: 0.048 -> 0.072 behind it (cats 0.070); lower face relief window 0.0067 -> 0.0046. mouth_i adopted.

Cycles: the whole head before (nose6) and with the mouth raised and the lower lip under the pads (mouth_i), next to Tabby, Bengal S1234, Siamese S634 and Murdered.

Lip line and whisker pads: before (sdf_head = mouth_i: a crisp lip groove running far to the side, a deep philtrum), hand variant e (bulgier, tighter pads: looked rounder but the relief sank 0.006 to 0.01 behind the cats) and the fit lip_f (lip line fading toward the corners, pads rounder and further apart, philtrum half as deep; fit_mouth.py --part pads), next to Murdered, Siamese S634 and Tabby. Pad window 0.0047 -> 0.0023, whole muzzle relief 0.0083 -> 0.0072. lip_f adopted.

Cycles: the whole head before (mouth_i) and with the fading lip line and rounder pads (lip_f), next to Tabby, Bengal S1234, Siamese S634 and Murdered.

Chin: before (sdf_head = lip_f: a knob under the mouth, chin narrowed to 0.55 and kept forward), the chin wider and back by hand (chin_back) and refitted (sdf_chin: broad, 0.95, forward 0.10). The knob came from the median: at y -0.29 two deep cats (Murdered, Bengal S1234) leave the data and the median of the rest reads as a chin coming forward; no single cat has it. fit_mouth.py now uses only the cats with skin over the whole window, and chin_w stays at 0.95 or more. Lower window 0.0091 -> 0.0035. sdf_chin adopted.

Neck and nape (tools/compare_necks.py, cats with their necks): before (sdf_head = sdf_chin: a thin upright column, a notch under the skull), and hand variants b, c, d (neck_blend, neck_tilt, neck_top_*, throat), side and back three quarter, next to Tabby, Murdered and Siamese S634. Nape line on the midline from y 0.30 to -0.05: ours sat up to 0.22 in front of the cats; c matches within 0.02. neck_c adopted. The throat follows each model's pose and waits for the idle-pose body.

Cycles: the whole head before (sdf_chin) and with the neck leaning back into the nape (neck_c), next to Tabby, Bengal S1234, Siamese S634 and Murdered.

Eyes lower, same width (Rafael: the eyes read a bit big). At the same scale ours were not wider than the cats (the Murdered is wider) but taller: opening height 0.110, above every cat (0.073 to 0.104). Hand variants: sd (eye_open_h 0.045), se (+ flatter lower lid, lid_low 0.5), sf (eye_open_h 0.042, lid_low 0.55, eye_open_w 0.08): opening 0.110 -> 0.086 (cats median 0.082), visible width 0.167 -> 0.169 (cats 0.167). sf adopted.

Ears (Rafael: they still bother a bit). Seen close, in profile our ear showed a big oval window: the cup cut broke through the ear side wall near the base (a spoon), where cats keep the side wall and the cavity opens forward. Thicker wall (ear_rim 0.65), cut further forward (ear_cup 0.065), cup starting higher (ear_cup_base 0.20), opening turned forward (ear_turn 0.1), flatter flap; then fit_ears.py re-fitted the outer shape to the cats outlines (front overlap 0.928 -> 0.932, side 0.871 -> 0.852). g: a solid variant without the refit. ears_j adopted. The deeper difference is construction: a cone with a cup carved in, against a thin flap folded into a cone at the base.

A jaw that opens (work in progress; jaw_open, off by default, the closed head is unchanged): closed, 0.20 rad and 0.35 rad, next to the Murdered. The jaw turns on a hinge below and in front of the ear; opening works like skinning (weights on the closed head, inverted by iteration), split along the lip line only inside the mouth (in front of and between its corners), a cavity hollowed while open. Four failed versions on the way, each one diagnosed from a midline section: weights measured where points appear (a thin plate, then a loose chunk, then a crack along the cheek), and a depth fade shorter than the drop (the jaw folded onto itself). Remaining: ragged side walls and a faint seam beside the mouth corners.

Rig preview: the closed head with its lips apart (mouth_gap 0.01), opened by linear blend skinning with one jaw bone at the hinge, weights from cat_head.mesh_jaw_weight; angles [0.0, 0.2, 0.35]

Mouth region review: one mouth line (the slit now follows the lip curve drawn on the skin; a flatter curve of its own had put it up to 0.02 above the groove, two lines, a zipper), lips with an inner thickness of 0.045 rounded by a 0.03 blend (a blend wider than the lip ate its skin: a double line). Rig preview: closed, 0.2 and 0.35 rad by the jaw bone; Blender reproduces the skinning to 1e-7.

Teeth and tongue (cat_head.teeth_sdf, tongue_sdf): separate parts of the game mesh with fixed weights (upper teeth 0, lower teeth and tongue 1), six incisors and a canine per side on each jaw along the dental arch (upper canines shortened to 0.045 from a real cat about 0.09), the tongue long and flat, 0.02 under the lip line. None of their vertices is outside the closed head. Rig preview closed, 0.2 and 0.35 rad (vertex colors: clay head, ivory teeth, pink tongue; the uncolored eyes show grey); Blender reproduces the skinning to 1e-7.

Ears rebuilt as a folded flap (Rafael: improve the ears as suggested). Close-ups front, three quarter, back three quarter: before (sdf_ears_cone, a cone with a cup carved in), after (sdf_ears_flap), and four cats. The ear is now a sheet lying inside the outer cone, open in front by angle with a round free edge, solid near the skull (ear_fill) and over the last 0.1 below the tip (ear_tip_solid); outline refitted with fit_ears.py --flap (front overlap 0.932 -> 0.949, side 0.852 -> 0.846). Remaining: a small crease at the cavity's floor.

Whole head with the folded-flap ears (sdf_ears_flap) next to the old carved cone (sdf_ears_cone) and four cats: front, three quarter, side.

Ear cross sections, level cuts 0.03 to 0.14 below each ear's tip, seen from above (front down): the old cone, the folded flap and the 12 good cats. Cats: a thick bent plate (crescent), 0.033 to 0.068 thick, chord turned about 28 degrees with the outer end back. Old cone: solid, turned -8. Flap: crescent, thickness and turn within the cats' range.

Ears after Rafael's verdict on the flap (worse: wavy, rolled rim and a tip too round). Before (sdf_ears_cone), the rejected flap, and two proposals d3, d4: the carved cone again, with the cup ear_rim 0.85 to 0.9 times the cone all the way up (ear_cup_follow, so it no longer breaks through the side), shifted forward 0.045, sharp tip (ear_tip_r 0.012), on the flap's fitted outline and turn. Sections: thickness 0.025 to 0.071 (cats 0.033 to 0.068), turn 30 to 36 degrees (cats 26 to 30). Not adopted: Rafael chooses.

Ears as a rolled sheet (Rafael: d3/d4 looked like a bat; cat ears are not that pointed, the outline is an arch, the front must be flush with the head, the rims thin; 'a cylinder with a half circle at each end'). A flat tapered capsule wrapped on a vertical cylinder, thin with a round rim (ear_roll): m1, m3 next to Murdered and orange. Close up the arch, thin rim and the forehead running into the hollow work; in the whole head they still open sideways like leaves, set low and wide. Not proposed.

Branch ears-blueprint. Close-ups (front, 30 and 60 degrees, back) of the current ears (sdf_head) and the proposal p1 (rolled sheet: arch outline set by the in-plane blueprint, placement fitted to the front and side silhouettes with the shape frozen), next to Murdered, orange and Tabby.

Branch ears-blueprint. The ear blueprint from the 12 aligned cats (Rafael: model from 2D references): silhouettes of the ear region from the front, side and top (grey = share of cats, blue = median) and the ear in its own plane, seen into the opening (the arch). Current ears (sdf_head, the carved cone), the rolled sheet m3 (arch right, opening turned 47 degrees out and too upright), and the proposal (ear placement and lean set by the blueprint numbers, then fitted to the front and side silhouettes with the shape frozen).

Branch ears-blueprint: the whole head with the current ears and with the blueprint proposal (sdf_ears_blueprint), next to four cats.

Branch ears-blueprint: close-ups (front, 30 and 60 degrees, back) of the current ears and the blueprint proposal (ear_blend 0.12 so the sheet's lower edge does not lie on the skull as a ridge), next to Murdered, orange and Tabby.

Branch head-anatomy, first plate: Reighard and Jennings (1901) Fig. 40, the skull from the side (public domain), registered into our head frame on the skull scan (the skull's two ends along its main axis; overlap with the scan's silhouette 0.87). Line drawing = plate, blue = skull scan, orange = our current head. The blueprint for the side of the face: orbit, zygomatic arch, cheek.

Branch head-anatomy: Straus-Durckheim's plate IV (third layer of muscles, red) placed by the eye and the nose, over the skull plate (black) and the skull scan (blue), with our head (orange). Outlines traced by eye: masseter (red fill), zygomatic arch (yellow), temporalis (blue), the mandible's body (green). The side-of-face blueprint.

Branch head-anatomy: the cheek rebuilt from the traced outlines (masseter, arch, temporalis as rounded extrusions grown by soft tissue 0.10 and 0.14, instead of the cheekbone, jaw and jowl ellipsoids), next to the current head and two cats. Worse: a flat plate with the traced corners in profile, lumpy cheeks from the front. Not proposed.

Branch head-anatomy, a local fix checked by the plates: the zygomatic ridge (zyg), a soft ridge along the arch's center line traced on Straus-Durckheim's plate IV, put on our skin, fading at both ends. Current head, z1 and z2 (lower on the cheek: a pouch under the eye), and the proposal sdf_zyg (0.03 higher, 0.007 high, 0.08 wide): a plane change under the eye running back, like the Siamese's.

Branch head-anatomy: the whole head with the zygomatic ridge proposal (sdf_zyg) next to the current head and four cats.

Branch head-anatomy, the masseter: side relief (seen from +x; top: shaded, light from the front and above; bottom: curvature, red bulge, blue crease; orange: the masseter outline traced on plate IV). The Tabby's line down the cheek runs from the eye's outer corner down and back, where a tabby coat paints its cheek stripe; no other cat has it (the coat carved into the shape by its generator). Over the 12 good cats the cheek is widest at the back and closes toward the muzzle; ours carried its mass forward. sdf_cheek_a: the cheek, jowl and jaw masses fitted to that relief (tools/fit_cheek.py), mean gap 0.0195 -> 0.0048.

Branch head-anatomy, the masseter: current head, sdf_cheek_a (cheek, jowl and jaw masses fitted to the 12 cats' side relief, gap 0.0048) and sdf_cheek_b (jaw kept, gap 0.0087), next to three cats; front, three quarter, side. The cheek's mass moves back and down, the side of the muzzle behind the mouth slims.

Branch head-anatomy: the whole head with the cheek fits sdf_cheek_a and sdf_cheek_b next to the current head and four cats.

Branch head-anatomy, the masseter as a bump (cat_head._masseter, off by default): the skin pushed out inside an ellipse with the traced outline's area moments, firmer at the front, spreading past the jaw at the back (p1 0.02 spread 1.8; p2 moved forward 0.05; p3 0.03 with a groove; p4 0.03 raised 0.03 edge 0.3), next to the Tabby and the Siamese. It reads as a plate or a button laid on the cheek. Not proposed; the side relief showed the mass had to move, not be added.

Branch head-anatomy, a quick look with color (tools/coat_preview.py): the Tabby's texture carried onto the current head and the cheek proposal sdf_cheek_a by closest point on the Tabby's surface, next to the Tabby colored the same way. Not our own coat; the streaks on the neck are below the Tabby's crop, where the closest point is its cut edge.

The light game head: 15888 triangles (12000 on the skin), quadric edge collapse of the dense mesh (1223356), normal map 2048 baked from it, jaw weights evaluated on the light vertices; glb 2.4 MB. Gap light to dense mean 0.0002 max 0.0012; curtains 0.

The light game head: 15888 triangles (12000 on the skin), quadric edge collapse of the dense mesh (1223356), normal map 2048 baked from it, jaw weights evaluated on the light vertices; glb 2.2 MB. Gap light to dense mean 0.0002 max 0.0012; curtains 0.

Light game head closes before (Smart UV Project, about 300 islands: a short dark mark under one eye and a line on the cheek, both on island borders) and after (seams chosen by tools/game_head.uv_seams: ears, eye sockets, inside the mouth, nape midline; 6 skin islands, one texel density): both marks gone.

RISD skull scan placed inside the Sphynx (blue) and our head (orange): our cranium 0.1 too tall, cheeks too fat

new cat reference candidates from Objaverse (all CC-BY), Sketchfab thumbnail above, our clay render of the geometry below; numbers are sheet ids. Credits: 149 Cat V1 by Mohan355634gh; 34 Miniature cat by thesidekick; 414 Cat Practice Sculpt by besdue; 493 Cat game asset by claireanne3d; 128 My Cat Modeled by lilyjoyhanna; 623 Leo, the cat by mazia; 170 Dan Dan Cat by yiuvince; 248 Tong Tong Cat by yiuvince; 443 Kate9 by valdaspuzaitis; 31 Imagine cat by nonlly; 160 Kitten by doinspire; 176 Archie the Cat by fuel3d

the six new cats aligned to the generator frame (nose and ear tips, then face ICP onto the Tabby fit), next to the Tabby fit, front and side; median face gap 0.010 to 0.017

first parametric skull, bone only, next to the scan; Rafael: nose, eye region and mouth still wrong

both skulls colored by distance to the other: 47% of our eye-region bone is bone the scan lacks

CT-like cuts: we filled the hollows behind the orbits, the arch is a fat oval, the underside hangs low, the snout section is inverted

rebuild, first pass: hollows carved, volume overlap in the fit

first pass slices: hourglass between the eyes and slanted arch lip match; snout wings, no palate under the eyes

rebuilt skull distances by region (miss / extra): nose 12/8%, mouth 8/11%, eye 12/23%, braincase 12/14%

incisor block attached, shallow nasal opening, slimmer postorbital points

final skull of the day, distances by region (miss / extra): nose 11/10%, mouth 8/12%, eye 13/24%, braincase 11/15%

six standard views, ours (left) vs scan: a two-mass 'snowman' instead of one continuous form; no ring of bone around the eye; arches are thin hoops; nothing underneath (bullae, jaw joints) or at the back (occiput, crests); every edge melted

details, first try: the forehead table sticks out like a slab (tilted at the nose's 53 degrees instead of the forehead's 30), the back face is a disc stuck on

table tilt fixed and the back cut flat, but the table still sits on the forehead like a block (a box added onto a round mass shows its sides)

table tilt fixed and the back cut flat, but the table still sits on the forehead like a block (a box added onto a round mass shows its sides)

forehead now a flat cut of a raised frontal mass (crisp table); an eye ring added as a torus floats like spectacle frames (plane and size guessed, not measured)

ring removed. Flat forehead table, bullae, condyles, flat back face, sagittal crest, flanges, tall arch front. Still crude: arches and processes read as tubes and sticks

close-up of the eye socket and arch, ours vs scan, same light: ours is smooth everywhere below about 0.02 (play-doh); the scan has ridges, edges, grooves, thin plates and holes

plates-and-facets test: arch as a chain of measured boxes reads as a staircase and hangs off the face; blades float

test: arch swept continuously through the measured cuts (a thin twisting blade, like the scan's); blades still float

test: arch smoothed and attached, the best arch so far; frontal processes still read as sticks. Verdict: plates fix shapes, not the clay look

relief layer with bone texture tuned to the scan's fine-relief numbers: looks like hammered metal; the scan is smooth between its features (the metric was measuring triangle facets and noise). Sutures broke into dashes (zig-zag wider than the groove)

first head generator: template (Tabby) fitted to each reference; shapes match but 5 to 6% of faces turned over (speckles) and ears crumpled

first generated heads (mean, components at +-2 sigma, random): plausible mean, but speckled, blurry eyes, distorted at +-2 sigma

fits with point-to-plane data and a fold term: clean surfaces (turned faces under 1%); ear tips still bend

generated heads at +-1.5 sigma: speckles remain, coming from the mirroring step (nearest-point relabeling)

mirroring by projecting onto the template surface: clean generated heads. Eyes and mouth still soft (not pinned), ear tips bend, 3 references give a narrow range

generated heads after fixing the 'holes': matching only surfaces that face the same way (ear fronts to fronts) and a cleanup pass on every head; inside-out faces 3 to 237 -> 0 to 3 per head

Tabby reference (left) vs the template fitted to it (right), close-up: the 6000-point template cannot hold eyelids, nose leather or mouth detail (its triangles are about 2.3 mm)

coats on the template (the Tabby head): the Tabby's own texture carried onto the template points, and recolored from fur photo palettes; colorpoint and calico lost the eyes (eye detection by color failed)

dense template (23 723 points, the original Tabby surface) fitted coarse to fine to the original surfaces: the Tabby fit keeps its detail; but the template's whisker strands carry into every head, and the walker and idle eyes became deep holes, ears crumple

dense generated heads: sharper, but whisker strands, hollow eye sockets and crumpled ears

coats on generated heads (Tabby fit, mean, random, component 1): eyes kept by a mask placed on the template; texture makes the heads read as real cats

failed try: rebuilding the Tabby from a winding-number field like a voxel remesher added ripples and kept the whiskers; the original surface was already smooth

fits on cleaned surfaces: whisker strands ironed flat into the skin (strip_strands), loose whisker pieces dropped, eye pieces kept

fits after the anti-sliding fixes: data pulled only along the normal, edge lengths kept, template remeshed into even triangles (Blender voxel remesh)

generated heads after the anti-sliding fixes; still read as a weak copy of the Tabby (the template is the Tabby, 3 cats, no eye or mouth landmarks)

regions for mixing by region, painted on the template: ears (red), eyes (blue), muzzle (yellow), skull (grey); borders blurred along the surface

mixing by region: ears from each cat (rows) x muzzle from each cat (columns); skull the mean of the three, eyes from the Tabby

named sliders at -1, 0 and +1 on the mean head (eyes from the Tabby), front and three quarter: ear_size, ear_spread, muzzle_length, muzzle_width, cheeks, eye_size, crown, head_width

12 random characters: each region a random blend of the three cats (eyes from the Tabby), random sliders (sd 0.6), random coat; colored above, clay below; recipes in out/variations/cast.json

generated heads from 9 references: mean, components at +-1.5 sigma, random draws

the 9 fitted cats (each made symmetric) and their mean, front and three quarter: the sources every region mixes from

the 9 fitted cats (each made symmetric) and their mean, front and three quarter: the sources every region mixes from

mixing by region: ears from each cat (rows) x muzzle from each cat (columns); skull the mean of all 9, eyes from the Tabby

12 random characters: each region a random blend of the 9 cats (Dirichlet 0.3; eyes from the Tabby, muzzle from tabby, walker, idle, sculpt, leo), random sliders (sd 0.6), random coat; colored above, clay below; recipes in out/variations/cast.json

the 9 fitted cats (each made symmetric) and their mean, front and three quarter: the sources every region mixes from

mixing by region: ears from each cat (rows) x muzzle from each cat (columns); skull the mean of all 9, eyes from the Tabby

12 random characters: each region a random blend of the 9 cats (Dirichlet 0.3; eyes from the Tabby, muzzle from tabby, walker, idle, sculpt, leo), random sliders (sd 0.6), random coat; colored above, clay below; recipes in out/variations/cast.json

generated heads from 12 references: mean, components at +-1.5 sigma, random draws

the 12 fitted cats (each made symmetric) and their mean, front and three quarter: the sources every region mixes from

mixing by region: ears from each cat (rows) x muzzle from each cat (columns); skull the mean of all 12, eyes from the Tabby

12 random characters: each region a random blend of the 12 cats (Dirichlet 0.3; eyes from tabby, murdered; muzzle from tabby, walker, idle, sculpt, leo, bengal2, sphynx2, murdered), random sliders (sd 0.6), random coat; colored above, clay below; recipes in out/variations/cast.json

The standing reference cats put on the ground (tools/body_refs.py): side and top views at the head's scale, paws (green), each cat's top and bottom lines (red, blue) and the median lines (black), lined up at the front paws.

First body block-out (faber/cat_body.py, params/body_blockout.json; proposal): trunk as chest, loin and rump masses, front legs (shoulder, forearm, paw), back legs (thigh, shin, hind foot with the hock behind the paw), neck and a straight tail, numbers from the median of 8 standing cats (tools/body_refs.py); our head placed by the cats' median head pose. Next to idle, orange, murdered, sf1166, grey at true scale.

The westerly cat skeleton (CC-BY) at our head's scale (skull against the RISD scan, x1.29), its pose, bones named by position and colored, joints from the facing ends of neighbouring bones.

The westerly skeleton at the skull's scale inside the Feline Ecorche (fits: same author and pose), over orange and Murdered and over our block-out (the spine stands about 0.3 above the back of orange and of ours, fits under Murdered's), and scaled x0.82 over our block-out (fits). The reference median, and so our block-out, has a body about 18% smaller for its head than the skeleton's anatomy.

The skeleton in the rest pose (tools/body_rest.py): the neck turned up 44 degrees at C7/T1 and the skull nodded -12 so the head frame stands at the cats' height (2.67) and level; our head placed by ICP of the RISD skull onto the skeleton's skull; the old block-out in light gray for scale.

Muscle layer (faber/body_muscles.py, params/muscles_fit.json): named muscle masses placed by the rest skeleton's bones, sizes fitted to the Feline Ecorche by volume overlap (ecorche shell filled slice by slice: its muscles are open sheets, and the winding number left the trunk empty). Outlines side, front, top.