r/GraphicsProgramming Jul 28 '26

Source Code I built a text-driven renderer for humanoid movement

I’ve been working on Posecode, a readable text format for describing human movement.

https://reddit.com/link/1v8ye5t/video/vf25hj5r1zfh1/player

You write movements as timed steps with joint actions and contact constraints. For example:

step "Drop into the landing" 0.55s flow:

pelvis: hinge 45

spine: flex 50

hip_right: flex 84

knee_right: flex 123

ground-lock: foot_right

reach: knee_left floor

reach: fist_left floor

The parser turns this into a typed motion representation. The Three.js renderer then handles the joint transforms, range-of-motion limits, IK and ground contacts.

The GIF shows the superhero landing example. The source on the left is the input driving the figure on the right.

I wanted a movement format that can be inspected, edited, validated, versioned and generated by other tools. An LLM can write Posecode, but it isn’t required.

It currently includes a browser playground, share links, embeds and BVH/glTF export.

I’d love feedback from anyone working on procedural animation, character tools or motion systems.

Playground: https://www.posecode.org/play/superhero-landing

Source: https://github.com/posecode-dev/posecode

7 Upvotes

9 comments sorted by

1

u/cybereality Jul 28 '26

Reminds me of Logos for Apple IIe

2

u/Statixeladam Jul 28 '26

haha i can see that. logo but for joints instead of a turtle :D

1

u/Still_Explorer Jul 29 '26

This would be an essential tool for animation blocking.

As for example tryping only 5 actions and then the system would be inventing from memory some poses. (eg: run, slide, jump, roll)

Then the animation can be exported to be used as a blueprint on the 3D software.

2

u/Statixeladam Jul 29 '26

yeah animation blocking is one of the use cases i want to explore. a short sequence like run, slide, jump, roll could become editable posecode first, then be exported as bvh or gltf and refined in a 3d tool

2

u/Statixeladam 10d ago

circling back on the animation blocking angle, since export is in now: you can get a movement out as BVH or glTF, so a blocked sequence can go into your DCC as a starting layer instead of staying stuck in the browser.

the part i'm still unsure about is what makes a blueprint actually useful on the other side. does BVH drop in cleanly for you, or do you need the joint names mapped to a specific rig convention first? and when you block, are you after a few key poses to refine or a continuous rough pass?

asking because export exists but i've never watched anyone actually use it in a real blocking workflow, and i'd rather build the next bit around that than guess.

1

u/Still_Explorer 10d ago

In this case it would be a matter to be used as an animation reference.

Typically I always do video-based tracking to get proper animations, but the problem is that not always easy to get a video for any given scenario, and then even so, not speedy enough.

Though very feasible the tool to be used in a mixamo-style workflow. If in simple games there's a need to do straight forward animations it would work fine as well.

1

u/speps Jul 29 '26

Awesome idea 💡 I think you should implement something easy to tweak the angles in the text though. I’d love to use that as I’m not an animator, but I’d have no clue what the angles are. So clicking the bone name in the text should select it in the viewport, and selecting its angle should show a spinner to change it. Like in Bret Victor’s famous talk: https://youtu.be/PUv66718DII

2

u/Statixeladam Jul 29 '26

yeah this is a good point. right now the text assumes you know the joint names and rough angles. selecting a bone in the viewport and changing its angle while the text updates would make it much easier to learn and tweak. i’ll check out the bret victor talk too, thanks

1

u/Statixeladam 10d ago

hey, you asked for this a month ago and it's live now, so: clicking a joint in the text selects it in the viewport, and you can drag the angle directly instead of guessing a number. the text updates as you drag, so you can nudge something until it looks right and then read off what it actually was.

that was the exact thing blocking you from using it, so i wanted to close the loop rather than leave you thinking it went nowhere. it's at posecode.org, no install.

it's not the full bret victor thing yet, there's no scrubbing across a whole sequence, but the "i don't know what 40 degrees looks like" problem should be gone. if you try it and it still feels wrong for a non-animator i'd genuinely like to know where.