Shop
Rainbow Creations
at SL Exchange
See
Rainbow's Adventures
at Snapzilla
Learn
Rainbow's Tutorials:
Contact:
|
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:

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:
Be the Change:
Connect:
Visit
Rainbow's Friends:
|