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

70 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
## 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).