Saturday, October 18, 2014

Havok Animation

Run time animation systems are one of the most important components in early games. Animation can have effect on different functional aspects of a game including visual, control, game design so a robust animation system  is needed for any game engine. For this reason traditional and in house game engine developers work hard to provide a good and well designed animation system. For example Unreal engine 4 has a good and robust animation system which includes many features like state machines, different animation blending techniques, motion retargeting IK and so on. This is true for Unity3D animation system a.k.a Mecanim.

But in this article I want to have a short introduction on Havok Animation Tool or you may know it as Havok Behavior Tool. Havok animation tool is a robust animation middle ware based on Havok Animation SDK. The havok animation tool provides many great functional and non functional features needed for run time animations like:

  •  Different animation blending techniques.
  • Inverse kinematics.
  • Rich animation state machines with ability to reduce state machine complexity.
  • Ragdoll and keyframe animation blending.
  • Pose matching
  • Animation retargetting
  • Root motion extraction
  • Great peformance
Havok Animation gives you control on many different events which can occur within an animation system. The animation system is very robust and well designed and it's very great at performance. 

In comparison to Unity Mecanim and  Unreal animation system, I prefer Havok animation. The Havok animation tool is a standalone software and it's not usually comes out within a game engine, so you need to integrate it with your engine if you want to have it there. However Havok Vision engine has already did that and integrated it into the engine. You can get Havok vision and Havok animation tool free via Project Anarchy tool sets (free for just mobile development)

For this reason I want to write an article about some features of Havok animation in next posts.

Saturday, March 29, 2014

Motion Planning Project #1

I'm working on a  motion planning project. In this post I placed the first video of the Motion Planner which I'm working on. The motion Planner uses a fuzzy control system to avoid obstacles and reach a specified goal. 37 fuzzy rules are defined on three different parameters to control the speed and direction of the agent.

The system is still immature. It's going to be combined with some machine learning techniques to enhance its performance but for now it just contains a fuzzy motion planner and the animations are few.

There are sets of parametric animations which their parameters are changing based on the commands come from the motion planner. For now the motion planner just controls the speed and direction of the agent.

As you can see in the video the agent is not always find the best and shortest way through the goal because it has no previous knowledge about the environment and it is exploring the environment while going through the goal. This technique has some pros and some cons.

Pros:

The agent with the same fuzzy rulebase can avoid obstacles and reach the goal in different environments with different arrayed obstacles and no preprocessing phase is needed as you can see in the video.

Cons:

The agent doesn't have any previous info about the environment and it can't find the best and shortest path through the goal.

The system performance should be improved after I add more animations to it and integrate it with some machine learning techniques. In my next posts I will update some other videos and share the progress of the work here.

Here is the video:

https://vimeo.com/93900089