Read binary Emotecraft emotes and fix the torso's bend direction
tools/emotecraft/convert.py turns Emotecraft's binary .emotecraft files (its network packet, with the animation in player-animator's legacy format) into the Emotecraft JSON EmotecraftLoader reads. Converting a few community emotes showed the loader bent the torso the wrong way: Get the Griddy, which hunches forward, arched back. Emotecraft bends limbs the other way from us, but not the torso, whose bend is anchored at the hips here and so already turned round. The loader now keeps the torso's bend sign, and gives the whole player's bend to the torso, as Emotecraft does. fit.py writes torso bends to match, so re-exported captures look the same. Bumps the version to 0.1.1 for the fix. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -19,6 +19,8 @@ A player emote library for Saturn Client, with limb bending.
|
||||
`versions/<mc>/build/run/clientGameTest/screenshots/`.
|
||||
- `tools/capture/`: a Python tool that measures an emote from a store page's 3D preview and writes
|
||||
it as Emotecraft JSON. See its README.
|
||||
- `tools/emotecraft/convert.py`: converts Emotecraft's binary `.emotecraft` files to Emotecraft JSON
|
||||
(standard-library Python).
|
||||
|
||||
Supported versions: 1.21.4 to 1.21.11, the same range as Saturn Client. Each version's Fabric API
|
||||
version is set in `stonecutter.properties.toml`. The code uses Mojang mappings.
|
||||
@@ -47,8 +49,11 @@ pitch/yaw/roll in radians, bend and bend axis) for any of `ROOT` (the whole play
|
||||
|
||||
`EmotecraftLoader` follows player-animation-lib's reader: absolute part pivots become offsets,
|
||||
`body` (and `torso` before format version 3) is the whole player in blocks, angles are degrees unless
|
||||
`"degrees": false`, `turn` adds whole turns, and loops jump back to `returnTick` after `endTick`. Scale
|
||||
channels, `easingArg` and blending with the vanilla pose aren't supported yet (issue #4).
|
||||
`"degrees": false`, `turn` adds whole turns, and loops jump back to `returnTick` after `endTick`.
|
||||
Emotecraft's two-segment bends become our curved ones: a limb's bend changes sign, the torso's
|
||||
doesn't, and a bend on the whole player bends the torso. Scale channels, `easingArg` and blending
|
||||
with the vanilla pose aren't supported yet (issue #4). Binary `.emotecraft` files can be converted to
|
||||
JSON first with `tools/emotecraft/convert.py`.
|
||||
|
||||
## How it hooks in
|
||||
|
||||
|
||||
Reference in New Issue
Block a user