Skip to content

A ‘raw’ animation format

August 3, 2008

Charles

I was thinking over the weekend about a simplified animation format – something that takes out the two main issues I’ve been dealing with (and it appears a lot of other people have) in general: hierarchy and axis of joints.

I’ve worked on two motion capture shoots so far, and am currently helping pipeline issues on another project. The biggest problems i see with solving the data are first the hierarchy of the joints – if the aren’t exactly in the right order your BVH ends up truncated on the finally rig, or if the joint axis order is wrong (BVH is ZXY generally) rotations break.

Compounding this is that you can have different channels, different axis orders and custom hierarchies in BVH make it a nightmare solving to custom rigs. A skeleton also cant be broken – something that can be a pain to deal with in BVH.

I was thinking of an intermediate  file format possibly in XML, that would be only contain the position of a joint, its direction and twist – all store as world vectors. The format could also hold ties to a virtual hierarchy in the form of ids similar to Valves proprietary format. Something roughly like this:

<joint id=”0″>

<position>[0,0,0]</position>

<direction>[0,0,10]</direction>

<twist>[1,0,0]</twist>

</joint>

I wrote an importer for BVH, that used a simple sorting order to work out the hierarchy ‘0’ would always be the root, followed by 1,2,3,4 etc.. if the numbering was sequential i.e 2,3,4 or 3,4,5,6 then id know they were children of the preceding numbered joint eg.

0,1,2,3,4,2,3,4

0 to 4 would be one chain but the next number 2, would become a child of the 2nd joint in the first chain and then be sequential until it broke sequence. Nifty! The format idea would only use this virtual ID if it needed to make a hierachy for BVH etc..

Outputting to this format though would still need end joints/nub bones to determine length as this is worked out using the <direction></direction> vector. Really its just a simple quaternion animation exporter using vectors for key properties.

Advertisements

2 Comments

Post a comment
  1. August 4, 2008

    Why are you using BVH? Biped?

    We left BVH for FBX a while ago and I celebrated on the day. Today we have an even different pipeline, but I am still glad we ditched BVH, for some reason, the motions look better importing FBX directly onto the biped. We did this ourselves with some help from Paul Hormis, but since Max 9 I think you can import it directly.

    Love your blog btw.

  2. August 5, 2008

    Im not sure myself 😦 – but its a real pain to deal with. Personally i just like a sort of point cloud of data you could solve to however you like. A heirarchy could then be constructed if needed.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: