Files
security-game/docs/npc-model-sourcing.md
T

5.1 KiB
Raw Blame History

NPC Model Sourcing

This page records the source evaluation behind ADR-0015. 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.

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. 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. 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 8% between z 0.84 and 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. Remaining polish: a V-shaped shirt hem at the crotch, a partly loosened shirt and angular thigh facets; a proper shirt shell is the fix. 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 and npc-visual-review.md. Commands are in asset-tooling.md.