3D Theory - Motion Capture

Animation can be generated from 3D models by using keyframes. But how are these keyframes generated? These are a number of possibilities:

This last option is motion capture, this usually involves markers, such as light bulbs, being placed on the actor, the actor then makes the movements, which can be filmed from several angles. This will allow the 3D track of all the markers to be generated. This can then be linked to the 3D model to generate the animation.

BVH - BioVision Hierarchy file

There are a number of different file formats for holding motion capture data, one of the most common is defined by company called BioVision - http://www.biovision.com

This is designed for holding movements generated by motion capture, but there is no reason why computer generated movements should not also be stored in this way. It is a compact way of storing the motion, at it is independent of the details of the geometry. However this file data is specific to the hierarchy and body dimensions of the character, so although you can transfer movements from one character to another, you will have to scale it for each character model.

BioVision has two file types:

BVH format

BVH has 2 parts,

The model hierarchy defines the tree structure (objects and their 'parent-child' relationships). It also stores initial offset data for the parts with respect to the parent object, and also defines what "channels" of translation/rotation exist for the object in the motion data part of the file. A "channel" is either a translation in the x,y, or z direction or a rotation about the part's local x,y, or z axis.

The second section of the file contains the numeric channel data, in a series of 'frames', as well as a small header containing the value of the total number of frames in the animation as well as the animation frame speed, in seconds-per-frame. There will be a numeric entry for each channel from the above hierarchy section, appearing in the same order as which the various channels were defined. For a translation channel, the data is unitless and for a rotation channel, the number is an angular value in degrees. The rotation values are with respect to the point at which the object is attached to it's parent (as opposed to being with respect to the global coordinate system's origin).

metadata block
see also:


Correspondence about this page

Book Shop - Further reading.

Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them.

cover If you are interested in 3D games, this looks like a good book to have on the shelf. If, like me, you want to have know the theory and how it is derived then there is a lot for you here. Including - Graphics pipeline, scenegraph, picking, collision detection, bezier curves, surfaces, key frame animation, level of detail, terrain, quadtrees & octtrees, special effects, numerical methods. Includes CDROM with code.

Commercial Software Shop

Where I can, I have put links to Amazon for commercial software, not directly related to this site, but related to the subject being discussed, click on the appropriate country flag to get more details of the software or to buy it from them.


cover Dark Basic Professional Edition - It is better to get this professional edition

cover This is a version of basic designed for building games, for example to rotate a cube you might do the following:
make object cube 1,100
for x=1 to 360
rotate object 1,x,x,0
next x

cover Game Programming with Darkbasic - book for above software

This site may have errors. Don't use for critical systems.

Copyright (c) 1998-2020 Martin John Baker - All rights reserved - privacy policy.