Biovision BVA

The Biovision BVA file format was the first file format developed by Biovision to provide data for their clients. Since it didn't include a skeleton definition it proved to be difficult for their clients to effetively use so they later developed the BVH format (described in the previous section). However, the BVA is useful and at times can be handier to use than those formats which require a skeleton.

Parsing the file

Since there is no hierarchy information each segment of the skeleton is defined in exactly the same way. Some of the information is redundant and you can use just the information found in the first segment. Examine the file "Example1.bva".

The first line of data for a segment definition is signified with the "Segment:" keyword (the colon must be present). This is followed on the line by the name of this segment. The next line starts with the keyword "Frames:" the number on this is line is, naturally, the number of frames of motion for this segment. The next line has the keyword "Frame Time:" which defines the sampling rate of the data. Each segment has the same frame and frame time information. The BVH format is flexible enough to have a different number of frames and a different sampling rate for each segment. However, I've never enountered a BVH file that did this and it really wouldn't make much sense anyway. You can assume that the frame and frame time specification is the same for all segments in the file.

The two lines following the frame time specification contain the channel information for the segment. The first of these two lines has channel types and the second line has a description of units for those channels. Three translation values, three rotation and three scale values make up the channel definition. The order for all of them is X, then Y then Z. Notice that the order of the appearance of the rotation values is different than in the BVH file but the Euler rotation order will still be the same. Also unlike the BVH format, this file contains scale information. Here the scale is used to indicate the length of the segment. I've never seen scale data in a BVA file that wasn't uniform.

The rest of the data for a segment is the actual motion data. One sample per line of data. Each sample has one datum for each channel.

Interpreting the data

There is no hierarchy information in the BVA so the creation of the transformation information for each segment is very easy. Just take the translation, rotation and scale values and compose a transformation matrix from them. Since the scale value is always uniform and since there is no hierarchy (where the scale values would affect children of the segment) you can usually ignore the scale value when composing the matrix. This assumes you will use the scale value when drawing a representation of the segment on screen.

Like the BVH file the BVA file assumes that the global up axis of the world is the positive Y axis. Each segment is aligned along the negative Y axis. No variations for either of these values are allowed.