Human Motion

Analysis, Control & Animation

Here you will find a summary of my 1997 final year project. It's objectives were to create a simplified geometrical model of a human body, to control it and finally animate it. However, as you will see the results are applicable to any model. My supervisor was Dr. A J Stoddart.

This project was the starting point for the pursuit of a PhD degree, here at the Centre for Vision, Speech and Signal Processing (CVSSP). From here you can access my main research page, containing various topics and bibliography on human modelling.


The main characteristics of this project are :

Object oriented implementation using ANSI C++.

The final result of this project is a family of C++ classes. Each class describes a different aspect of the modelling procedure. The family includes standard 3D maths classes (Vector4, Matrix4), as well as modelling classes (Joint, Link, Human). Additionally, several structures were developed to contain information relative to the modelling procedure (e.g. angle constraints).
The project was developed in GNU C++ which is basically ANSI C++. The resulting classes can easily be included into any existing code which requires similar modelling services. Their only purpose is to calculate the model and export its data into simple ascii files.

Flexibility to create any articulated model.

Even though the project started as an attempt to create a simplified model of the human body, the resulting classes do not limit the programmer into creating only human models. One can use the Link class to "assembly" any model, provided that its joints move in a rotational way. Parameters such as link length, joint angle constraints, model initial position etc. can be determined through the member functions of those classes. The model can then be controlled by instructing the links to rotate about an axis by a certain angle.

There is an example of dog (developed only in one day) which aims to show the flexibility in using the Link class :

Nevertheless, in the present version, animation functions where implemented only for the Human class.

Interfacing with AVS software.

This project did not deal with visualization issues such as geometry viewers, rendering etc. The model is stored in .tri and .frm files which can both be viewed by the AVS software package.

AVS suports the .tri file format which is a static geometrical representation of a polyhedric 3D shape. These models may consist of many triangles or rectangles. Special operations such as rendering, lighting etc. can then be applied to the model from within AVS.

On the contrary the .frm file format was created for this project aiming to contain animation frames. Moreover, we had to develop a special command line module for AVS called HCLA. Its main purpose is to enable the user to play .frm animations in an AVS geometry viewer. Additionally, the HCLA module provides full control on the Human class (link rotations, .tri and .frm files)

Creating Animations.

Animations in this project are conceived as a sequence of frames. Each frame contains the full set of the model's angles for that specific pose. The Human class has member functions that can create and manipulate such frame files.

We can load these .frm files by using the HCLA module, and play them in an AVS geometry viewer. The series of frame images can then be recorded, resulting to a number of .x raster files. From there, it is a fairly straightforward procedure to concatenate these files and come up with an MPEG animation.

Here are some MPegs that I've already made :

I just had to include my human.h file and write a simple program for each case controlling the Human instance. That program stored the animation in a .frm file, which was then played in AVS by using HCLA. I chose my favorite angle for recording the animation, lighting, effects ... and recorded the motion to a series of .x files. Those files were then converted to a single mpeg animation.

Bibliography

  1. Graphics Gems, Andrew S.Glassner, Xerox Palo Alto Research Center, (c) 1990 Academic Press Professional

  2. The C++ Programming Language, 2nd Edition, Biarne Stroustrup, (c) 1990 Addison-Wesley.

  3. The Physiology of the Joints, 5th Edition, I.A. Kapandji, Churchill Livingstone, (c) 1982 Edinbrurgh-London-Melbourne and New York.

  4. Techniques for the analysis of human movement, DW Grieve et al. (c) 1975 Lepus Books.

  5. Robotics: Control, Sensing, Vision and Intelligence, K.S.Fu, R.C.Gonzalez, C.S.G.Lee (c) 1987 McGraw Hill International Editions.


Paris Lyritis, CVSSP, University of Surrey 1997
P.Lyritis@ee.surrey.ac.uk

Back to main page