Rainbow Creations

Shop

Rainbow Creations
at SL Exchange

See

Rainbow's Adventures
at Snapzilla

Learn

Rainbow's Tutorials:

Contact:

Rainbow Drake

SL Animation 101

An animation is the rapid display of a sequence of images in order to create the illusion of movement. In these tutorials, we will be looking specifically at techniques for animating a three-dimensional avatar within the virtual world of Second Life.

Every Second Life avatar is provisioned with a basic set of built-in animations which are included with the account but, as with many other aspects of one's Second Life, users are also able to create their own animations for use in-world.

Second Life animations are created in external animation software and then uploaded into SL. In order for an animation to be usable in SL, it needs to be saved in the BVH file format and based on the standard SL mannequin. Resident created animation programs such as Avimator and QAvimator have the SL mannequin built in as the software's default model. If you are using animation software which was not designed specifically with SL in mind, however, you will likely need to import an SL-compatible model. The default SL mannequin is available for download on SL's web site.

The Biovision Hierarchy (BVH) file format is a structured text file which specifies the model's skeletal hierarchy along with the positioning of each of its parts at each frame of the animation. Here is an example of a very basic BVH file based on the SL mannequin:

HIERARCHY
ROOT hip
{
   OFFSET 0.000000 0.000000 0.000000
   CHANNELS 6 Xposition Yposition Zposition Xrotation Zrotation Yrotation
   JOINT abdomen
   {
      OFFSET 0.000000 3.422050 0.000000
      CHANNELS 3 Xrotation Zrotation Yrotation
      JOINT chest
      {
         OFFSET 0.000000 8.486693 -0.684411
         CHANNELS 3 Xrotation Zrotation Yrotation
         JOINT neck
         {
            OFFSET 0.000000 10.266162 -0.273764
            CHANNELS 3 Xrotation Zrotation Yrotation
            JOINT head
            {
               OFFSET 0.000000 3.148285 0.000000
               CHANNELS 3 Xrotation Zrotation Yrotation
               End Site
               {
                  OFFSET 0.000000 3.148289 0.000000
               }
            }
         }
         JOINT lCollar
         {
            OFFSET 3.422053 6.707223 -0.821293
            CHANNELS 3 Yrotation Zrotation Xrotation
            JOINT lShldr
            {
               OFFSET 3.285171 0.000000 0.000000
               CHANNELS 3 Zrotation Yrotation Xrotation
               JOINT lForeArm
               {
                  OFFSET 10.129278 0.000000 0.000000
                  CHANNELS 3 Yrotation Zrotation Xrotation
                  JOINT lHand
                  {
                     OFFSET 8.486692 0.000000 0.000000
                     CHANNELS 3 Zrotation Yrotation Xrotation
                     End Site
                     {
                        OFFSET 4.106464 0.000000 0.000000
                     }
                  }
               }
            }
         }
         JOINT rCollar
         {
            OFFSET -3.558935 6.707223 -0.821293
            CHANNELS 3 Yrotation Zrotation Xrotation
            JOINT rShldr
            {
               OFFSET -3.148289 0.000000 0.000000
               CHANNELS 3 Zrotation Yrotation Xrotation
               JOINT rForeArm
               {
                  OFFSET -10.266159 0.000000 0.000000
                  CHANNELS 3 Yrotation Zrotation Xrotation
                  JOINT rHand
                  {
                     OFFSET -8.349810 0.000000 0.000000
                     CHANNELS 3 Zrotation Yrotation Xrotation
                     End Site
                     {
                        OFFSET -4.106464 0.000000 0.000000
                     }
                  }
               }
            }
         }
      }
   }
   JOINT lThigh
   {
      OFFSET 5.338403 -1.642589 1.368821
      CHANNELS 3 Xrotation Zrotation Yrotation
      JOINT lShin
      {
         OFFSET -2.053232 -20.121670 0.000000
         CHANNELS 3 Xrotation Zrotation Yrotation
         JOINT lFoot
         {
            OFFSET 0.000000 -19.300380 -1.231939
            CHANNELS 3 Xrotation Yrotation Zrotation
            End Site
            {
               OFFSET 0.000000 -2.463878 4.653993
            }
         }
      }
   }
   JOINT rThigh
   {
      OFFSET -5.338403 -1.642589 1.368821
      CHANNELS 3 Xrotation Zrotation Yrotation
      JOINT rShin
      {
         OFFSET 2.053232 -20.121670 0.000000
         CHANNELS 3 Xrotation Zrotation Yrotation
         JOINT rFoot
         {
            OFFSET 0.000000 -19.300380 -1.231939
            CHANNELS 3 Xrotation Yrotation Zrotation
            End Site
            {
               OFFSET 0.000000 -2.463878 4.653993
            }
         }
      }
   }
}
MOTION
Frames: 2
Frame Time: 0.033333
0.000000 43.528519 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 43.528519 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -150.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1 1
0
0
0


"Basic?!" you ask, incredulous.
Yep.
What we are looking at here is a two frame animation in which we have adjusted only one body part! The above animation, if looped in Second Life will show our avatar in a static pose, with his right leg high in the air, frozen in a chorus-line high kick.



(In point of fact, he will probably not stand still. Because we have only adjusted one body part, the rest of the figure will be given the lowest possible priority in this animation, such that any other animation played concurrently with this one which does move those body parts will override their positioning. See the tutorial on Uploading Animations for a discussion of animation priority in Second Life.)

"Hold on a sec there Rainbow!" you exclaim. "You said this was a two-frame animation. Why two frames for a static pose?"

Excellent question!

We use two frames for static poses because SL treats the first frame of our animation as a reference point only. The first frame is never displayed in SL. It is simply a marker against which SL compares the subsequent frames in your animation. Typically, we want our first frame to look like this:

T Pose


This is the default T-Pose or neutral pose of our SL Avatar. The angle of rotation of each joint on each axis in this pose is taken to be zero. SL animates our avatar by comparing the position of the model in each of the subsequent frames to it's position in this reference frame.

If you examine a BVH file carefully, you can figure out how it is constructed and you can edit your animation by manipulating the BVH data directly in a text editor. If this method seems like way too much work and/or too much confusion, don't worry. Animation editors allow us to work with BVH files in a much simpler and more intuitive fashion and, thanks to the generosity of talented Second Life citizens, there are FREE SL-compatible animation editors available for our use! Read on to learn how to create animations for Second Life in Avimator or in QAvimator!

If you already have a host of great animations in your SL inventory and just want to know what you can do with them, skip ahead to Using Animations in Second Life.



[ Tutorials Index ]

Join:

Second Life

Be the Change:

Imagine Peace

Connect:

NCI Alumni

Visit

Rainbow's Friends:

Rainbow Creations are copyright 2006-2008 Laura Rainbow Dragon aka Rainbow Drake. All rights reserved except as noted in item Permissions field.
Second Life® and Linden Lab® are trademarks or registered trademarks of Linden Research, Inc. All rights reserved. No infringement is intended.