Files
sporel-lib-core.puppet/init.lua
Axel Meyer 8a293f64c6 feat(puppet): cascaded world-transform + multi-channel keyframes
- BoneState extended with pos/scl (per-frame override channels) and
  world.scl_x/y (cascaded world-scale)
- compute_world() ports substrate puppet.c:692-718 cascade: local.pos
  multiplied by parent.world.scl before rotation+translation;
  world.scl = parent.world.scl * local.scl
- build_animation parses rot/pos/scl channels; rejects legacy 'angle'
- sample_animation interpolates each channel independently;
  single-side-keyframe holds the present value
- look_at math now scale-aware (uses parent.world.scl in bone-world-pos)
- build_rig rejects legacy rest.angle; requires rest.rot + optional rest.scl
- bone-rig top-level 'scale' field removed; per-frame state replaces it

17 existing puppet-test assertions remain GREEN after fixture migration.
2026-05-18 18:19:59 +02:00

29 KiB