The internal serialised animation format that SL and OpenSim use is usually given the extension “.anim” and so has become known as the anim format. The more common path of importing animations, through BVH files, actually just translates the BVH format to the internal format when you upload an animation. Some details of the internal format can be found here.
Avastar supports many of the features of the anim format including per-bone priorities, animating attachment points, and encoding the loop parameters, ease in and out, hand pose and emote directly in the animation file.
Uploading the anim File
To use the anim format you will need to obtain a viewer that has been patched to support uploading anim files such an Phoenix Viewer, Firestorm, or Exodus Viewer. This is usually done via the bulk upload facility.
Assuming you are using Firestorm, Go to Avatar -> Upload -> Bulk. Select the animations you want to upload. You can select several but they have to have the extension “.anim”. You will be charged L$10 per animation so be sure of your choice. They will show up in your animations folder after a few seconds.
All the animation parameters such a priority and looping are set in Blender at export time.
Patching a Viewer
The “patch” itself is too trivial to bother with creating a formal diff. You just need to locate the place in one file to insert a few lines of code.
Grab the source of the viewer and the file you want to modify is indra/newview/llviewermenufile.cpp. Locate the function upload_new_resource, and circa line 800 (search for DoNotSupportBulkAnimationUpload
) after the following code:
else if (exten == "bvh")
{
error_message = llformat("We do not currently support bulk upload of animation files\n");
upload_error(error_message, "DoNotSupportBulkAnimationUpload", filename, args);
return;
}
add the following:
else if (exten == "anim")
{
asset_type = LLAssetType::AT_ANIMATION;
filename = src_filename;
}
Thats it. Well, you still need to compile the viewer itself.






