# Character and animation credits ## Current scanned human `realistic-scanner.glb` adapts **Nathan Animated 003 - Walking 3D Man**, by **Renderpeople**, under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). The creator's [official model listing](https://sketchfab.com/3d-models/nathan-animated-003-walking-3d-man-143a2b1ea5eb4385ae90a73657aca3bc) and [public metadata](https://api.sketchfab.com/v3/models/143a2b1ea5eb4385ae90a73657aca3bc) identify this named asset and license. Selected license evidence is retained in `nathan-license.json`. The scanned mesh has 21,501 rendered triangles and 88 skin joints. Its photographed diffuse and tangent-normal maps are preserved, optimized to 4096 and 2048 pixels. The supplied gloss map becomes a 1024-pixel roughness map. Supplied clothing masks drive vertex-color tints; the skin photograph is unchanged. Vertices are indexed while preserving UV seams and skin weights. Modifications: source frame 0 (a calibration T-pose) is removed; frames 1–35 provide one recorded stride, made in-place and smoothly looped. The stride is 1.437549 metres. A three-second standing/breathing animation is added, with a relaxed free arm. The carrying arm is solved toward a raised scan target; the phone and transferred 15-joint grip are baked into `Walk_Scan` and `Idle_Scan`. The scan's original wristwatch is retained. The phone geometry is created for this project; finger rotations are adapted from Rocketbox's MIT-licensed texting pose described below. The GLB embeds source, author, license, modification and stride metadata. The Site loads this same GLB and blends its animations as the user moves the pointer, taps or scrolls. `credits.html` supplies visible attribution linked from the footer. To regenerate: download the Nathan FBX package from the [creator's free models page](https://renderpeople.com/free-3d-people/), extract its FBX and `tex/` directory, then run `node scripts/prepare-scanned-character.mjs /path/to/extracted/nathan`. The exporter uses `@napi-rs/canvas` from the configured primary runtime. Run `node scripts/check-motion.mjs` to validate the production GLB and movement. The runtime uses the vendored Three.js r180 GLTFLoader, BufferGeometryUtils and RoomEnvironment under the Three.js license. ## Previous character assets and grip source The retained earlier human mesh, rig, textures and motion-capture clips are from [Microsoft Rocketbox](https://github.com/microsoft/Microsoft-Rocketbox), copyright Microsoft, under the MIT license. The complete license is included in `LICENSE-Rocketbox.txt`. - Character: [Male_Adult_07](https://github.com/microsoft/Microsoft-Rocketbox/tree/master/Assets/Avatars/Adults/Male_Adult_07), exported FBX and its body, head and opacity textures. - Walk: [`m_walk_neutral.max.fbx`](https://github.com/microsoft/Microsoft-Rocketbox/blob/master/Assets/Animations/all_animations_max_motextr_xy/m_walk_neutral.max.fbx). - Idle: [`m_idle_breathe_01.max.fbx`](https://github.com/microsoft/Microsoft-Rocketbox/blob/master/Assets/Animations/all_animations_max_motextr_static/m_idle_breathe_01.max.fbx). The textures were resized to 1024 pixels and converted to web formats. `operator-motion.json` contains derived, loop-closed clips, with forward root motion removed and retained as stride distance. Joint rotations and vertical hip motion are preserved. The rendering code synchronizes stride phase with travel distance, blends breathing and walking, and grounds the lower foot. To regenerate the animation data, download the two source FBX clips and run `node scripts/prepare-motion.mjs /path/to/walk.fbx /path/to/idle.fbx` from the project root. The selected character FBX is already included. Rendering uses [Three.js 0.180.0](https://github.com/mrdoob/three.js/tree/r180), with its MIT license in `../vendor/three/LICENSE.txt`. The FBX parser's fflate dependency is MIT-licensed; its notice is in `../vendor/three/LICENSE-fflate.txt`. Loader import paths are adjusted for locally hosted modules. No CDN or third-party animation service is required at runtime. This is an interactive LiDAR-themed demonstration, not a live room scan. No camera or sensor data is collected. ## Previous customized Appcodie scanner `scanner-head.webp` and `scanner-body.webp` are AI-edited versions of the above MIT-licensed atlases, guided by the user's supplied appearance reference. They add dark hair, facial hair, a warmer complexion and black clothing. The existing human mesh and skeleton remain the licensed foundation; this is a customized character, not a claim of an exact facial reconstruction or a from-scratch human mesh. `scanner-character.mjs` defines a new portrait smartphone, wristwatch and a two-bone raised-arm scanning pose. The phone is attached to the right hand, its screen faces the operator, and its cameras face outward. This upper-body layer does not modify the captured leg motion. The 15-joint finger pose in `scanner-grip.json` is derived from the MIT-licensed [Rocketbox phone-texting animation](https://github.com/microsoft/Microsoft-Rocketbox/blob/master/Assets/Animations/all_animations_max_motextr_static/m_cell_phone_textmessage.max.fbx), sampled at 8 seconds. Regenerate it with `node scripts/prepare-scanner-pose.mjs /path/to/m_cell_phone_textmessage.max.fbx`. `appcodie-scanner.glb` is the retained export of the previous customized character, including textures, phone, watch and baked `Walk_Scan` / `Idle_Scan` loops. It is no longer used by the page. The scene uses metres and retains the Rocketbox MIT notice in its metadata. Walking is in place; its stride length is stored as `walkStrideMetres`. Regenerate this older GLB with `node scripts/export-scanner.mjs` and validate it with `node scripts/check-scanner-glb.mjs`. Exporting requires `@napi-rs/canvas` from the configured primary runtime. The vendored GLTFExporter is from Three.js r180 under the Three.js license cited above.