HardYards/web/world/models/MODELS.md
m3ultra 027fb99828 Lane D: player rig assets — ped copy + anim-only clip pack
Character is a byte copy of 90sDJsim's man_casual_01 ped (already metre-scale,
head bone 1.75 m, bind pose proven in that game). Clips ride beside it in an
anim-only carrier built from the FBX libraries on the M1 Ultra.

The peds cannot round-trip through Blender: they encode metre scale as a node
scale of 0.01 on mixamorig*:Hips with child bones in centimetres, and Blender
bones carry no rest scale, so the glTF importer silently drops it — the rig is
exploded on import (LeftToe_End 96 m below the floor) before any merge happens.
So merging clips onto the ped (PLAN3D 5-D.1) is not viable; we ship the ped
untouched and retarget rotation-only clips onto it at runtime, the same shape
90sDJsim already uses for peds/idle.glb + peds/walk.glb.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 21:27:04 +10:00

889 B

Lane D runtime models (copies — see PLAN3D §0 "asset copies rule")

File Source (canonical) Notes
player_01.glb 90sDJsim/web/world/models/peds/man_casual_01.glb Byte copy, never edited. Head bone 1.75 m, already metre-scale.
player_anims.glb built by tools/character/build_player_anims.py on the M1 Ultra Anim-only carrier: Idle/Walk/Run/Falling/CrouchToStand/Reaction. No mesh, no skin.

Rebuild the clips: see the header of tools/character/build_player_anims.py.

Do not round-trip player_01.glb through Blender. The peds encode metre scale as a node scale of 0.01 on mixamorig*:Hips with children in centimetres; Blender bones have no rest scale, so the glTF importer drops it and the skeleton explodes on import (LeftToe_End lands 96 m below the floor). Clips are carried beside the ped instead, never merged into it.