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

4.5 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,333 / 16,000 tris, 1.810 m, 14 bones and 10 materials, with project hands, rounded shoe shells, accessory cuffs and flat slot colours. It is a review candidate, not a shipped asset: the decimated neck stub is boxy under the accepted head, the shoes remain block-shaped, the ankles taper above the shoe shells, and the shirt hem forms a V at the crotch. A torus collar, cloth cylinder collar and skin neck-blend sphere were tried and removed because they read as a brace, shelf or donut. 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.