# 3D body model and licenses

## Current model — revision 3, October 27, 2026

The shipped atlas now uses a **musculoskeletal anatomical adaptation from Z-Anatomy / BodyParts3D**, replacing the smooth MakeHuman surface. It contains **730 retained structures: 460 muscular-system meshes and 270 skeletal-system meshes**, merged into one render mesh without welding across anatomical structures. There are **142,179 vertices / 281,247 triangles**, including distinct pectoral, deltoid, abdominal, back, thigh and calf forms, hand/foot tendons, and supporting bone geometry. The selected count is an asset count, not a count of all muscles or bones in a human.

This is an educational exterior study, not a medical scan, complete dissection, or clinically validated model. Simplification, removed covering fascia, source intersections and omissions limit fidelity. Region boundaries and teal highlights are broad navigation cues, **not anatomical segmentations, drug targets, efficacy maps, injection sites, or treatment guidance**. The compound entries, their evidence labels and their caveats are unchanged by this model.

### Attribution and license

- **Z-Anatomy — The libre 3D atlas of anatomy — CC BY-SA 4.0**, anatomy/design by Gauthier Kervyn, with original BodyParts3D work by Kousaku Okubo. [Project and attribution notice](https://github.com/Z-Anatomy/Models-of-human-anatomy).
- **BodyParts3D — The Database Center for Life Science — CC-BY-SA 2.1 Japan**. [Original database](https://dbarchive.biosciencedbc.jp/en/bodyparts3d/download.html).
- This site's **adapted anatomical model and its derived model imagery are shared under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)**. Preserve attribution, indicate changes and share adaptations under the same license. This notice applies to the anatomy asset, not a blanket relicensing of unrelated research text or site code.
- Upstream notice retained verbatim at `z-anatomy/LICENSE-UPSTREAM.txt`, from the primary Z-Anatomy repository revision `6ffffec1d9b17ed3db355903bbd762582cb2328e`. It includes the project's complete attribution list. Only the muscular and skeletal FBX files were imported; no visceral or nervous-system asset files are used.
- Data source: [LluisV/Z-Anatomy](https://github.com/LluisV/Z-Anatomy/tree/6c7f9016bd5899ac8edafd31b9900c151df42ed6/Resources/Models/FBX), pinned revision `6c7f9016bd5899ac8edafd31b9900c151df42ed6`, files `MuscularSystem100.fbx` and `SkeletalSystem100.fbx`. Local copies are in `z-anatomy/`; generated metadata records their SHA-256 hashes. No upstream application code is executed.
- Three.js 0.186.1 is MIT licensed; its notice is in `LICENSE-THREE.txt`. Dependencies remain locked. No asset copied from another website, and no generated-image substitute, is used.

### Reproduction and rendering

`npm run build:atlas` invokes `scripts/prepare-anatomy.mjs` and bundles the local viewer. Preparation selects primary skeletal meshes (excluding label and attachment-marker geometry), excludes covering fascia/bursae/tendon sheaths from the muscular layer, applies source transforms, corrects mirrored triangle winding, welds each part independently, and simplifies it with meshoptimizer. The geometric-error bound is 0.008 relative to each part's scale, not a medically certified accuracy threshold. Parts are then combined and uniformly normalized to height 2; no invented muscle bulges are applied. Per-part names, vertex/index ranges and simplification errors remain in the generated metadata.

`body-mesh.js` uses version 2 of the local format: Float32 positions and **Uint32 indices**, necessary to avoid 16-bit index wrapping. The viewer still decodes the preserved version-1 surface. Current model payload is about **6.89 MB**; the much larger FBX sources and inventory files are build inputs, never visitor downloads. All runtime assets remain local, lazy-loaded classic scripts, with no remote model, texture, or CDN dependency. The model uses one body mesh/material, capped pixel density, on-demand rendering, and no idle animation loop.

The previous sculpt is preserved in `body-mesh-surface-v2.js`, with all original MakeHuman sources and preparation scripts. It is a development checkpoint, not a second runtime download.

### Interaction and verification

All eight surface markers were repositioned on the new geometry. The exact-triangle spatial index remains in use; there is no lower-resolution picking proxy. Occlusion checks hide markers behind other surfaces. Rotation, bounded zoom, pinch, keyboard controls, focus-region framing, gesture cancellation, the illustrated fallback, native system buttons, and peptide filtering are retained.

Tests verify input hashes, reproducible output, anatomical structure retention, per-part index coverage, Uint32 indices above 65,535, a 320,000-triangle budget, mirrored-part outward orientation, surface marker distances, camera containment, all eight region-to-library paths, and existing input lifecycle. The spatial suite compares 288 deterministic rays to Three.js's reference raycaster, including transformed bodies and cache invalidation.

`scripts/benchmark-atlas.cjs` reports **CPU-only** diagnostics. One local run measured approximately 71 ms for decoding/normals/bounds, 158 ms for the spatial-index first build, 0.019 ms median and 0.123 ms 95th-percentile warmed selection query. These are not browser startup, GPU frame rates, or guaranteed device performance. Re-run to obtain current measurements.

`scripts/preview-anatomy.py` renders `anatomy-review.png` from the actual shipped geometry beside the previous sculpt at equal scale, in front, three-quarter and back views. It is an **offline CPU geometry render, not a website screenshot**. Live browser lighting, touch feel, layout and GPU performance remain unverified because the available browser tool blocks the local page; no alternate browser or hosting bypass was used.

## Archived revision 2 documentation — historical, not the current model

The following notes describe the retained MakeHuman surface checkpoint only. Current model provenance, counts, license and checks are above.

The atlas uses an upgraded surface study built from the MakeHuman core human base mesh, sculpt targets, rig weights, and eye geometry. These upstream assets are released under **CC0 1.0 Universal**. The result is illustrative anatomy, not a clinical scan or validated medical segmentation. No internal-organ meshes or peptide-specific drug-target data are included. Body-region assignments are broad website navigation cues only.

- Original asset: https://github.com/makehumancommunity/makehuman/blob/a8bc2d54ff0ac92e78ff71431b1023eda42bf482/makehuman/data/3dobjs/base.obj
- Pinned source revision: `a8bc2d54ff0ac92e78ff71431b1023eda42bf482`
- MakeHuman asset-license explanation: https://www.makehumancommunity.org/about/license.html
- Original asset license is retained in `LICENSE-MAKEHUMAN-ASSETS.md`; the upstream OBJ is preserved as `makehuman-base.obj`.
- The generated `body-mesh.js` retains the original source SHA-256, pinned revision, every additional input's SHA-256, blend weights, and transformation notes. No model copied from another website, and no image-based model generation, was used.
- The original surface had 13,380 vertices / 26,756 triangles. The upgraded body and fitted eyes have **53,876 vertices / 107,712 triangles**, using 16-bit indices. The resulting local mesh payload is approximately 1.73 MB, with no external models or textures needed by visitors.
- Rendering: Three.js **0.186.1**, MIT license, retained in `LICENSE-THREE.txt`. Build tool: esbuild **0.28.2**. Dependencies and integrity hashes are locked in the project’s package-lock.json.

`npm ci --ignore-scripts` then `npm run build:atlas` regenerates the local mesh script and bundled viewer without downloading model assets. Ordinary site visitors do not need Node, a build tool, or a server. The viewer and mesh load as local classic scripts when the atlas enters view, including on file:// pages; no runtime CDN, remote model, texture, or font requests are required by this feature. The source OBJ is for reproducibility and is not loaded by the website.

## Anatomy upgrade — October 27, 2026

`scripts/sculpt-body.cjs` is the offline preparation pipeline. It does not execute or copy MakeHuman application code; it reads the graphical assets as data.

1. Blend three upstream adult-male macroshape targets equally. The upstream filenames use the historical population labels `african`, `asian`, and `caucasian`; these are retained for exact provenance, not used as biological categories or health claims on the site.
2. Blend the maximum-muscle minimum-weight / average-weight targets at 0.55 / 0.45, then add restrained pectoral, latissimus, stomach, shoulder, upper-arm, thigh, and calf targets. Exact weights are in the build script and generated metadata.
3. Use the actual rig's vertex weights and joint locations to lower each arm 22 degrees and bring each leg inward 3 degrees. Weighted angular deformation avoids shrinking the shoulder volumes.
4. Fit the CC0 low-poly eye proxy to the morphed eye vertices. Exclude all remaining helper geometry.
5. Apply one boundary-aware Catmull–Clark subdivision. Normalize height to two units and add original restrained surface contours for paired abdominal forms, the midline, clavicular and pectoral transitions, obliques, neck, shoulder/arm, thigh/knee/shin, scapular/spinal, and calf surfaces. These are artistic approximations, not named medically accurate muscle segmentations or exposed-muscle anatomy.
6. At viewer initialization, calculate subtle geometry-derived cavity shading. Use neutral satin material and balanced key/fill/rim lighting. Hover/selection adds teal tint while preserving base shading. Camera movement does not recalculate the color buffer. High-frequency hover events are coalesced to one exact raycast per render frame.

Every marker is placed about 0.005–0.006 model units above its actual front surface. The tests check those distances, all eight real mesh raycasts and downstream library filters, camera containment across four aspect ratios / five yaw angles / three pitch values, zoom limits, drag-versus-click, pinch, keyboard, interrupted gestures, loader retry, and illustrated fallback. Default framing fits the complete rotated model; deliberate zoom-in may crop it.

## Interaction refinement

`src/body-spatial.mjs` builds a cached hierarchy over the actual 107,712 triangles. It returns the same nearest front-facing surface as the Three.js reference raycaster, without substituting a low-detail picking mesh. The cache detects position/index updates and is explicitly released with the viewer. Tests compare 288 deterministic rays across orientations, aspect ratios, pitch, and zoom, plus transformed geometry and cache invalidation. Marker projection additionally checks occlusion and the selected navigation zone, preventing labels from showing through the torso or drifting over a different body system at side angles.

Focus region returns to front orientation, sets zoom to 165%, and vertically frames the selected system. While explicitly focused, subsequent system selections update the framing. All systems / Reset returns to the whole-body view; Front or Back exits focused framing. The visible orientation/zoom readout reflects camera state. Native system buttons remain available when 3D markers are hidden or graphics are unavailable.

A same-host, warmed-index CPU comparison of 160 identical rays measured about 0.017 ms per accelerated query versus 5.47 ms for the reference. These numbers describe only Node CPU queries, not browser startup, total frame time, GPU performance, or a guaranteed user-device speedup. Browser validation is still pending.

### Additional pinned upstream inputs

All files are from the same pinned revision above, under `makehuman/data/`:

- `targets/macrodetails/`: `african-male-young.target`, `asian-male-young.target`, `caucasian-male-young.target`, `universal-male-young-maxmuscle-minweight.target`, and `universal-male-young-maxmuscle-averageweight.target`.
- `targets/torso/`: `torso-muscle-pectoral-incr.target`, `torso-muscle-dorsi-incr.target`.
- `targets/stomach/`: `stomach-tone-incr.target`.
- `targets/armslegs/`: left/right (`l-` / `r-`) `upperarm-muscle-incr.target`, `upperarm-shoulder-muscle-incr.target`, `upperleg-muscle-incr.target`, `lowerleg-muscle-incr.target`.
- `rigs/`: `default.mhskel`, `default_weights.mhw`.
- `eyes/low-poly/`: `low-poly.obj`, `low-poly.mhclo`, stored locally as `low-poly-eyes.obj` / `low-poly-eyes.mhclo`.

Local copies are in `targets/`, with original license headers retained. Canonical raw-file URL prefix: `https://raw.githubusercontent.com/makehumancommunity/makehuman/a8bc2d54ff0ac92e78ff71431b1023eda42bf482/makehuman/data/`. The source and asset-license references above apply to these core assets as well.

## Visual review

`scripts/preview-anatomy.py` renders `anatomy-review.png` directly from the shipped geometry, alongside the original base surface. It uses the same scale for both models and shows front, three-quarter, and back views. This is an **offline CPU geometry render with illustrative lighting**, not a website screenshot or GPU certification. The image was reviewed for silhouette, pose, surface contour, and eye placement. Full live-browser lighting, frame-rate, and touch/assistive-technology review remains pending because the available browser tool blocks this local page.

The older `model-preview.png` / `scripts/preview-body-mesh.py` workflow is also CPU-only and may show an intermediate model revision. Use `anatomy-review.png` for the reviewed upgrade.
