#Artwork

#Provenance

The body geometry derives from react-native-body-highlighter (MIT, © 2022 ELABBASSI Hicham).

Its slug list matched Gravn's 23 Supported muscle codes one for one - including the quirky ones (hair, hands, feet, knees, tibialis) and the head/ankles female-front-only behaviour. That is not a coincidence: Gravn's backend constants were originally derived from that library, so adopting the artwork closed a loop that had been open for months.

Only the path data is upstream. The renderer, colour engine, catalogue, resolver and conversion pipeline here are original, and no upstream code runs at runtime - the upstream component was a two-colour intensity toy with no interpolation, which is precisely the part that needed replacing.

The licence obligation is to keep the copyright notice. It lives in NOTICE at the package root. Nothing is required in your app's UI.

The proportions and flat style are upstream's, not Gravn's. bodyFill, baseColor and outlineColor restyle it a long way, but a body that looks designed by you is still a commission.

#The conversion pipeline

Upstream ships four TypeScript modules exporting BodyPart[]. The converter re-keys their lowercase slugs onto Gravn muscle codes and folds in the silhouette outline, which upstream keeps inside its React wrapper components rather than alongside the data.

bun run convert-assets

Reads vendor/react-native-body-highlighter/* → writes src/data/<sex>.<view>.json.

src/data/*.json is generated. Never hand-edit it. The converter validates that all 23 drawn regions survive the round trip and fails loudly if any is dropped, so a silently missing muscle cannot reach the package.

#Giving a muscle its own path

Adding a muscle is not adding a path. It is subdividing an existing one.

UPB today is a single region covering traps, rhomboids, teres and lats. Giving the lats their own path means redrawing UPB and LAT as two adjacent, non-overlapping shapes. That is vector work in Illustrator or Figma, roughly one to three hours per region, times two bodies.

The workflow:

  1. Open the relevant file under vendor/ and edit the shapes, keeping each region's slug.
  2. Re-export, keeping the same coordinate space - the viewBox is carried through from the data.
  3. Run bun run convert-assets.
  4. In src/muscles/metadata.ts, flip the code's resolution to "drawn" and delete its aliasOf and aliasNote.
  5. Add its slug to SLUG_TO_MUSCLE_CODE in the converter.

No consumer changes. Anyone already passing LAT starts getting a dedicated shape.

#The backlog

Of the 26 Extended codes, only about eight are worth drawing. In priority order:

  1. Three-way deltoid split - ANTDEL / LATDEL / POSTDEL. Highest value by a wide margin: delt-specific programming is common, the heads are visually distinct, and the front and back views can each show two of the three.
  2. Lats out of the upper back - LAT first, then TER and INF from the same subdivision.
  3. Calf split - GAST / SOL. Clean, easy, clearly readable on the back view.
  4. Erector spinae - ERECT, extending above the drawn lower-back region.

Everything else aliases indefinitely without anyone noticing. RAD and PRN are superficial but the forearm region is a few dozen units wide - a split there buys nothing on screen.

#What can never be drawn

Five codes have no surface projection. They lie beneath other muscles, and no anatomical diagram renders them, because there is nothing at the surface to render:

Code Muscle Why
SUP Supinator Beneath the forearm extensors.
SUB Subscapularis On the anterior face of the scapula, behind the shoulder blade.
SUPR Supraspinatus In the supraspinous fossa, beneath the trapezius.
TVA Transverse Abdominis The deepest abdominal layer.
PSO Psoas Major Deep through the pelvis from the lumbar spine.

They are marked resolution: "deep" and stay aliased permanently. They still work - logging core activation shades the abdominals - they simply never get geometry of their own.

#What needs a view that does not exist

Three codes are lateral muscles, and there is no side diagram:

  • ITB - Iliotibial Band, down the outer thigh.
  • PER - Peroneals, down the outer lower leg.
  • LATDEL - Lateral Deltoid. This one is the exception: it reads well enough on both front and back views to be included in the three-way deltoid split without needing a side view at all.

A genuine side view would be from-scratch artwork - upstream has none.