Sheet 20 · web · 3D motion
Prop Theory
A tree of poi moves, each linked to what it builds on, and a 3D engine that draws a move on a body. Live at proptheory.org, with one move so far.
Question
Source: Prop Theory sheet, Question and Approach
Can poi moves live in one shared reference, where each move shows what to learn before it and can be watched on a 3D body?
Poi are weights on cords, spun around the body; spinning them is one of the flow arts. Flow arts has no anthology or shared database of moves, and I think it should have one. When I teach, I start with the fundamentals, then the next step. I try to practise the same way, but on my own that path is hard to see and to follow. I wanted a wiki people could learn from, with a 3D studio where they could watch each move and maybe design new ones. Animating every move by hand takes a lot of work, so I also started on tracking poi in video.
Prop Theory is that reference.
Approach
Source: Prop Theory sheet, Approach and Results; tests/body_report.mjs re-run 2026-11-05 (sources.md)
To draw moves, I wrote a small 3D engine that solves a stick figure's arms backwards from where the hands need to be. Nothing may pass through anything, so the engine checks arms, body and cords and warns in a spinner's words, like "elbow too bent".
Results
The best score came from a body with natural elbow limits, but on screen its elbows seemed to bend backwards in relaxed-arm moves, which an automated visual check had missed. I went back to the first figure. Letting each spin come from the wrist, elbow or shoulder, and sizing the body to scale, is what lifted it.
Animation is the slow part, so I tried taking motion from a video of me spinning a weave. Filmed from the side, the poi cross straight toward the camera, and no pose model I tried recovered that. Fitting ideal circles to the tracks failed too. Video now only pre-fills the animation editor for a person to check; finding the poi heads is a sister project, Poi head detection.
What I learned
Source: Prop Theory sheet, Results; project.json timeline (2026-10-11 import)
My score was not enough on its own: the best number belonged to the version a spinner could see was wrong. The code also ran ahead of the content. The engine can draw a move, but every move stays a draft until a teacher checks it.
Open questions
- For an animator: solving the arm backwards gives an elbow that can reach, not one that looks natural. Should I learn elbow limits from real video, or would a few simple rules do?
- For someone who has run a community reference: how do I get teachers to review moves without lowering the bar?
← Poi head detection · all lab sheets · Referee model race →