December 2019
We started to study Characters Locomotion and we found some papers, we are creating a Emitter tool in our software and we want to implement characters walking, right now, we don’t have time and resources to implement a sophisticated and cool Locomotion system.
We are seeking in theory a simple task, but we dont know the math behind it, if you have a tip of what we need to search, I will really appreciate your help:
--------------------------------
Emitter's child animation, our plan is:
In our Emitter's tool User Interface, the user provides / fill a table like this
Animation Type Frames Speed
------------------------------------------------
Walk Cycle 0-50 10
Walk2Run Transition 51-75 15
Run Cycle 76-100 20
Run2Walk Transition 101-125 15
Walk Cycle 126-176 10
User is responsible for creating such animation sequence for a replicated Emit Unit.
Ok, now multiple instances are created with Emitter's simulation. Every instance moves with some speed. We want to associate this (instance's) speed with a speed from the table above.
Examples:
instance's speed = 10 -> ok, use "walk"
instance's speed = 20 -> ok, use "run"
instance's speed = 5 -> well, nothing better than use "walk" but play it slower
instance's speed = 25 -> well, nothing better than use "run" but play it faster
The important, principal moment is: Emitter does NOT do any locomotion system (in fact - motion synthesis) nor any blending or mixing. It just calcs a frame of source animation (table above) corresponding to a current instance's frame.
What we're googling now some math to do this calc. We already have our draft “bicycle” solution but looking for a better one. Example of math probs
- ok, now we've a speed 10, "walk" is absolute ok, so in use. At next frame the instance’s speed os, say, 29 and we must use "run" - but we can't switch to it "momentary". First we need to finish current "walk" cycle, then run "walk2run" transition and only after all this we can start a new "run" cycle". But while we're doing all this - it's absolute possible the instance's speed is changed to 10 or ever 5. So we need to switch or how?
It's a pure math.
Thanks a lot Tom & Igors