# Character assets

The character combines a textured, animated body with a separate scanned human head. These third-party art assets have their own terms; they are not covered by the game code's licence.

## Animated body and motion clips

- File: `soldier.glb` (2,160,468 bytes).
- Credit: Adobe Mixamo, supplied through the three.js `Soldier.glb` example.
- Pinned source: [three.js r180 / Soldier.glb](https://github.com/mrdoob/three.js/blob/r180/examples/models/gltf/Soldier.glb).
- Source credit: [three.js skinning and blending example](https://github.com/mrdoob/three.js/blob/r180/examples/webgl_animation_skinning_blending.html).
- Usage basis: [Adobe Mixamo FAQ](https://helpx.adobe.com/creative-cloud/faq/mixamo-faq.html) permits characters and animations in personal, commercial and nonprofit games. The [Adobe-hosted licensing clarification](https://community.adobe.com/t5/mixamo-discussions/mixamo-faq-licensing-royalties-ownership-eula-and-tos/td-p/13234775) distinguishes game use from standalone asset redistribution.
- Included for use within this game under Mixamo's applicable terms. This file is not offered as a separate reusable model or animation library. The three.js code licence does not establish an MIT licence for this artwork.
- SHA-256: `dfb230fc1f942f259dd00281a1186953ad602fc5d69067ce63e24b2aa439736b`.

Runtime adaptations: standardised height, original helmet/visor removal, muted team colours, independent skeleton instances, animation blending, two-arm aiming, crouch posing, and a falling corpse pose. The source file remains unmodified on disk.

## Scanned human head

“Infinite, 3D Head Scan” by **Lee Perry-Smith**, based on work at [triplegangers.com](https://www.triplegangers.com/), obtained from the three.js examples.

- Licence: [Creative Commons Attribution 3.0 Unported](https://creativecommons.org/licenses/by/3.0/).
- Original notice: [LeePerrySmith_License.txt](./LeePerrySmith_License.txt).
- Pinned source directory: [three.js r180 / LeePerrySmith](https://github.com/mrdoob/three.js/tree/r180/examples/models/gltf/LeePerrySmith).
- `soldier-head.glb` is the unmodified upstream `LeePerrySmith.glb`.
- `head-color.jpg` is the unmodified upstream `Map-COL.jpg`.
- `head-normal.jpg` is the unmodified upstream `Infinite-Level_02_Tangent_SmoothUV.jpg`.
- Official material example: [three.js normal-map example](https://github.com/mrdoob/three.js/blob/r180/examples/webgl_materials_normalmap.html).

Runtime modifications: cropped away the scanned shoulders, resized and rotated the remaining head/neck, and attached it to the animated body's head bone. Original diffuse and normal-map detail is retained. The game adds its own matte helmet and dark protective goggles, leaving the scanned nose, mouth and cheeks visible. No endorsement by the original artist is implied.

## Runtime and ownership

All model and texture requests are local to this installation; gameplay does not fetch remote art. The menu preloads the body, scanned head and two face textures before the first match. If loading fails, the game explicitly reports use of a rounded, jointed fallback model.

`loadSoldierAssets()` caches shared model geometry, textures and clips. Each `createSoldier()` owns its skeleton, animation mixer, team material instances, rifle and marker. Call `releaseSoldier(mesh)` to free those owned resources while preserving the cache for other characters and subsequent matches.
