Walk cycle time synchronization

Unity3D’s manual names “Walk cycle time synchronization”, but I’m unable to find more references about that. I guess it’s something that must be added in the modeling software so that Unity can read it and push characters forward at the right times, avoid drifting. Is that so? Where could I find more information about it?

I think it may be referring to this -

http://unity3d.com/support/documentation/ScriptReference/Animation.SyncLayer.html

There is also the Locomotion System, which may be what you are looking for.

http://unity3d.com/support/resources/unity-extensions/locomotion-ik

1 Like

Mmmnot exactly. It’s more about avoiding drifting. That is, when the walking animation is faster than the speed or the character, or the other way round. In that first case, the character seems to “moonwalk”. In the second case, it seems to slide across the terrain.

I had the impression that some animation systems could read certain marks on the animation cycle, placed in the modeling software (i.e. when on of the feet touches the ground) so that the model only moves forward when the animation hits those marks…

Synchronized motion pertain to “How the motions Match-Up to each other.”
For Example: A (Walk) motion that start with the (Left Leg) forward is easily synchronized to a (Run) motion that starts with the (Left Leg) forward, and vice versa!

  • Loops: Using the same foot as a marker for all clips!
  • In Place (Mode): Export All motions performing on One Sport!

Now the motions are sychn’d. Unity can now simply use the (SAME) foot as a reference point!
MotionBuilder: Fast and quick way to achieve this and keep the feet and hands planted correctly!

MotionBuilder also lets you (Change) the Reference Point and Synchronizes the motion to (Match)!

Kind Regards,
sw00000p

Best way to rid of the moonwalking is to place this in your animation script

//Not tested code just typed off the top of my head.
float modifier = 1.0F; // Less then 1.0F slows down animation, more speeds it up.
float moveSpeed = 1; //set to what speed you want to move
animation[“run”].speed = (moveSpeed * modifier)

and change modifier untill it stops moonwalking. Will require trial and error. Once you get the modifier right you can use any movement speed and it will update the speed of the animation to keep up.

! This does not remove the need for Charactor locomotion of some type, animations cant move charactors by themselfs unless you make a system for it.

Moonwalking is the result of the animation curve (Overshooting!)… Slowing down the curve results in… Slower moonwalking.

FASTEST way is Highlight the keys and Push One Button(Flatten Tangent)… And get the desired result immediately!

No More Moonwalking!

sw00000p

ackth, that’s what I’m doing right now. The speed of the animation depends on the speed of the character. But that only works if both things are perfectly synchronized, which is not an ideal solution.

sw00000p, our animations were created in 3DStudio. I cannot edit then in the Animation window in Unity3D… or could I? I would like to try though I don’t really understand why your approach solves this problem.

I think I’ll try doing that by hand… If I know that feets touch the ground at 0.25 and 0.75 in the normalized animation time, I may get the effect I’m looking for…

What your looking for is called root motion… (4 years later, posting for future readers). Unity also has a navigation system that will move the avatar around and slow down and speed up appropriately.