# NPC Model Sourcing This page records the source evaluation behind [ADR-0015](adr/0015-npc-model-variety-sourcing.md). The shipped path is the project-owned Blender/procedural library; external sources remain references or local prototypes unless a later ADR accepts them. ## Evaluation The library needs variety beyond the original eight silhouettes while preserving the `npc_base` contract: mesh node, 13 required core bones (optional extras allowed), five tint slots, −Y/+Z front, grounded feet and the 16,000/16,000 character budget. | Source | Licence | Result | | --- | --- | --- | | Quaternius Ultimate Modular | CC0 | Good silhouette/decimation material, but a 62-bone T-pose realistic rig and different proportions; not a drop-in. Kept as a reference/prototype. | | Kenney Blocky Characters | CC0 | No matching rig; style is much blockier than the project look. | | Khronos CesiumMan / RiggedFigure | CC BY 4.0 | Different bone names/rest pose and no five-slot materials; not a drop-in. | | MakeHuman / MPFB base | CC0 | Useful body-shape base, but requires retopology, a custom rig, clothing and part integration. Active local pipeline, not the shipped path. | The contract mismatch is the expensive part, not decimation: retargeting a different rig or rebuilding slots/weights can distort the body and invalidate gear placement. Any future second-rig path needs its own ADR and animation/gear offsets. ## Decision and outcome - Extend the project-owned procedural generator as the primary shipped path (12-character library, crowd variants, role pools). - Keep Quaternius as a studied reference, not a shipped base. - MakeHuman is a local development pipeline for body-shape diversity; it must consume the same head/hand parts as the procedural library and never become a CI/build dependency. - Record CC0/CC-BY provenance; CC-BY previews require attribution in [`CREDITS.md`](../CREDITS.md). ## MakeHuman prototype notes The local prototype (`tmp/npc-research/`, never committed) scaled the base to 1.82 m, grounded it, triangulated/decimated it and retargeted it to the 13-core armature. The first retarget measured **6,444 / 16,000 tris and** **7,726 / 16,000 verts**, 14 bones, skinned, arm-down, five slots. It exposed the expected issues: a 1.63× arm-scale warp at the deltoid/shoulder, blocky decimated hands, rough slot boundaries and a head/neck shadow gap. The later project head/hands swap reduced this to **6,407 / 16,000 tris and** **6,651 / 16,000 verts**, but manual shoulder/neck retopology and part cleanup remain before it can be considered shippable. A standalone MakeHuman head is recorded in [`makehuman-head-review.md`](makehuman-head-review.md). The owner accepted the basic human head on 2026-11-04; the assembled path (`build_character(head="mh")`) adds a skull-conforming hair cap and hides the scalp under it. The 12 shipped GLBs still use the procedural head until the hair/body review and rollout in [`TODO.md`](../TODO.md). The MakeHuman body should reuse the approved local head/hand parts rather than forking a second face implementation. The current local MPFB full-body prototype (`tmp/npc-research/build_mpfb_npc.py`) assembles the accepted head on an MPFB 2.0.18 body at **15,317 / 16,000 tris**, 1.810 m, 14 bones and 10 materials, with project hands, bevelled shoe shells with inset soles and tongues, pant cuffs, cloth sleeve cuffs and flat slot colours. The torso is radially inflated by 12% through z 0.72–1.40 to loosen the shirt. It is a review candidate, not a shipped asset. The neck is a radial cut of the decimated column bridged by a four-ring, 20-segment lathe (lower rings painted cloth, reading as a crew neck); the ankles are hidden by 0.11 m shoe shells and 0.08 m pant cuffs, and a light smoothing pass softens the closed thigh/hip region. The neck skin test is guarded to z > 1.35 so it cannot paint the crotch. Remaining polish: the crotch hollow still reads as a V under the shirt hem, a partly loosened shirt and angular thigh facets; a separate loose shirt shell is the fix. Lowering the hem to z 0.80, tilting it up at the front and a 13% hem flare were rejected as a unitard, high-cut swimwear and a peplum respectively. A torus collar, cloth cylinder collar, skin neck-blend sphere, destructive vertex-smoothing pass and untucked shirt-hem band were tried and removed because they read as a brace, shelf, donut or hanging flap, or tore a hole at the collar. Protruding flat sole plates read as skates or bricks, so the shoe detail is an inset sole and tongue under a rounded shell; laces were dropped for triangle budget. The production integration decision (bake a committed source GLB or keep the procedural body) and the owner review are tracked in `TODO.md`; MPFB itself must not become a CI/build dependency. ## Provenance rules - CC0 preferred; CC-BY only with attribution in `CREDITS.md`; no service asset whose terms restrict redistribution. - Downloaded research and generated previews stay in `tmp/`/gitignored folders; only final audited assets and committed review sheets enter the repository. - Record source URL, licence, author, date and what decision the reference informed. Never treat a generated concept as licensed map/model data. Measurements, visual decisions and accepted limits are in [`3d-model-review.md`](3d-model-review.md) and [`npc-visual-review.md`](npc-visual-review.md). Commands are in [`asset-tooling.md`](asset-tooling.md).