Rune Skovbo Johansen
Creative Programmer & Designer


Adaptive Walking Preview II

Jun 10, 2008 in ,
I have not been good at updating the blog lately, but here's a new preview of the Locomotion System! Now characters can walk in any direction (forwards, backwards, sideways, and anything in between) with any speed. Characters can also start and stop walking with proper transitions. Click the image below to view the demo.

When manual control is turned on, you can control with either the keyboard (arrow keys for walking direction, and optionally WASD keys for facing direction) or with an analog controller, which I highly recommend. With an analog controller, such as an XBox 360 controller, the direction and speed can be controlled precisely with ease, while independently controlling facing direction with the secondary stick.

The terrain can be dynamically controlled with the sliders at the top. You can create stairs, slopes, and various combinations. The terrain will reflect the changes once the character has walked a little distance to the left or right. The sliders will also be changed at random while manual mode is not enabled.

Models and animations
The demo shows off three characters, all kindly provided by Unity Technologies. Press ENTER to switch between them, or press the switch button.
  • The HERO character has 9 animation: 1 idle, 4 walking, and 4 running. The system automatically blends between the relevant animations based on direction and speed.
  • The SOLDIER character only has 2 animations: 1 idle and 1 walking (forward). The walking is extrapolated by the inverse kinematics in the Locomotion System to also work for sideways and backwards motion, but it doesn't look as good as when animations are provided for those directions.
  • The HERON character also only has an idle and a walking animation. (Note that the Heron model is facing in the -Z direction, so it's a bit odd to control.)

A lot of the features I set out to implement are done by now. Still missing are:
  • More intelligent foot placement mechanism that avoids ledges. The current system simply traces a ray from the heel of the foot.
  • Some way to avoid feet and legs intersecting when walking in certain directions (usually sideways). Regular blending inevitably leads to this glitch, so special logic is required to handle this.
I will post more details on the technical details later.

Request for models!
I have tested the system with several biped (two-legged) characters but i am in DIRE NEED of animated models with more than two legs to test with! If you have any characters I may use as test data for this project, it would help me a lot. Models will only be used for testing and not in public demos unless explicit permission is given. Also, I will put a thanks in the Master Thesis.

The models can be anything really: animals, aliens, robots, or whatever, as long as they use legs to move around with! I can import models up to Maya 8.5 and in .fbx format. Animations work best with the system if:
  1. There is at least one idle animation and one walk or run animation. But the more, the better!
  2. The feet don't intersect too much with the ground (though a little don't hurt).
  3. The feet move backwards (for e.g. a forward walk) at a somewhat constant speed while on the ground (though the system can fix small variations).
If you are in doubt, just send away! Even animations that don't work still show me something valuable about the limitations of the system.

Help me test the system
I make the Locomotion System as my Master Thesis in collaboration with Unity Technologies. It will be available for free for users of Unity once it is finished.

As a part of my thesis, I want to test the usability of the system. If you are a Unity user and would like to try out the system and help me by evaluating it, please let me know! The system is not ready for testing yet, but it won't be long now.

Also, comments are much appreciated!


Anonymous said...

very nice work!

Joshua Brown said...

It is nice work... except I couldn't get the model to move. I switched to manual mode and the wasd keys just made him turn around a bit. Plus, now he's doing some crazy russian dance and his legs are freaking out.

Joshua Brown said...

I just realized my mistake. :P but the fact remains, he IS freaking out with a crazy russian dance.

Rune Skovbo Johansen said...

@Joshua Brown: That is odd with the "Russian dance". I thought I had fixed those problems for good, since I haven't seen them for a long time. However, I have switched from a Macbook to a Macbook Pro in the same time, so perhaps it is framerate dependent. I will have to investigate further...

Dakota Schneider said...

I would love to be able to implement this in the game I am helping develop! It seems awesome. Since the game I am working on kind of has to be 3rd person, due to it's extensive use of a GUI, I need some sort of method to control the character as if it were a FPS, but without encumbering the mouse in any way. I am wondering if this could implement a more dynamic camera, and use the vertical axis (w/s) to control weapon elevation? I figure that you would want a more dynamic camera, and if you had one, would it be possible to implement this system? I am thinking that, using the a/d to control the amount of rotational direction.

Rune Skovbo Johansen said...

@Dakota Schneider: I'm not quite sure what you're asking. The locomotion system has nothing to do with input control systems or camera movement. You make your own implementation of how to move the character around and then the locomotion system simply takes care of animating the bones of the skeleton of the character.