Download the zipped anim.blend animation file 325K
anim.blend now includes the IPO Copy/Paste version 2.5 Python script
Notes for Blender 2.03
A Python bug in these early Blender 2.0x versions DOUBLE CLICK buttons and Drop Down Menus, when only single click mouse actions are made. This will really screw up the Python IPO editor. Until this is fixed, Blender 1.8 is stable, and can be used by everybody. If you really want to edit IPOs with Blender 2.02, My Windows build works, if I place the Dos window over the Blender main screen, and then click my button, or menu. It does work, but until this is fixed (probably very soon, or already), use Blender version 1.8
Table of Contents
Preamble: Is Blender Hard to Use??
Introduction: Why Structured Animation?
The Library Objects, and their IPO Blocks
C Key Owners Using the IPO Edit Python Script
What You Can Do, Without a C Key
No. Blender is well designed, and the user interface is very well planned. I can't afford thousands of dollars to buy an animation/modelling package that has the toolkit we have available in Blender. My gratitude goes to NaN. Thank you. Any worthwhile task, which produces something of value, will be hard. Developing skills, and filling your mind with knowledge is hard, and takes a lifetime of effort. My message to you younger people reading this, is that you should take pride in the fact that you are even trying to learn Blender. It is the subject, you have chosen to study, that is the real challenge, not the toolbox. CG animation and modelling is a complex system, and demands many skills and abilities. Blender is an excellent tool, available to all of us. It is an opportunity that none of us had, until recently. Most young people, in the rich countries, just spend their time consuming the television, or use all their internet time checking sports scores, or the latest gossip about their favorite entertainers. If you are part of the very small group, which takes some of their time to investigate something creative, remember this: The TV is fun, but will quickly wash through your brain, and be gone. Spending time, and learning something like Blender, bit by bit, adds to your ability to think, solve problems, and increases your potential in life. Congradulations!! Keep plugging away!!
How much time, have you spent using Blender? How much of your work, did you actually save? How much, of what you saved, can be used again in other scenes and projects?
The models you make, are easy to import into new scenes. Like objects, you can place on a shelf, models can pretty much be imported from anywhere, and dropped in a scene any place you wish. What about motion? Is this something you need to create, each time you need it, or can this also be saved, and reused in other projects? Complex motion, can take as much time to make, as it does to create a good model. It would very limiting, to create some wonderful motions, and not be able to ever use them again, or even repeat them in the same scene.
The work you make, as modeller/animator, should accumulate over time. You should not be starting from "scratch", every time you sit at the computer. YES, models and animations can be saved, reused, and adapted to many works, you might make in the future! The trick is planning ahead for this, and to develop standard methods of working and building. You must also organize you work, so that it will always be quickly available to you.
The purpose of this document, is in two parts. The first, is to introduce the ideas of standardized methods in animation, and to share with you some of my ideas, which might allow the value of your work, over time, to grow. Teams, working together at a goal, can accomplish much more, than any one person alone. If you like these ideas, have some of your own, want to add to this work, or think something could be done better, PLEASE, let me know. Get involved. The so called 'library' anim.blend, is not really a library. It is a few bits of animation. There are thousands of other poses, actions, etc., which could be added to this. New, different, better works, could be added. Wouldn't it be great, if there was so much stuff contributed, that you would need a search engine to sort through it all!
The second purpose of this document, is to introduce to you beginners, some of the detail about Blender animation, which you might not already know, or understand. It's not complete, but I hope it will be useful. I'm no expert myself, there is ALOT about Blender, I don't know. Some stuff, I tell you, might not even be absolutely correct. Again, please contribute. Any corrections to this work offered, will be used to update the site.
When you play my animation for the first time, you will notice that the character doesn't really go anywhere. It shouldn't. Keep your character's animation limited to just the character. Don't send it all over the scene! In the character, there is an empty, called Em_main, which is the parent for the entire character. In an actual movie, I would place a NEW empty into the scene, and parent Em_main to it. To move the character around, I would animate the new empty, to the places and times I would want the character to be. The character, with all of it's complex motion, will follow the empty anywhere it goes. I will then have only one object to animate, and that will be simple, and fast. The character, itself, might have a dozen different objects in it, and a total of 72 different animated curves, but that would be part of my existing library, and would never have to be redone.
When designing a library action, Don't Go Anywhere! Walk, throw, swim, fly in place. It is the swaying, balancing, posturing, that you want to work on. Going places in an actual scene should be done in other ways. This is a very important thing to keep in mind, if you want your animations to be reusable.
If you examine the character in the anim.blend file, you will see that the mesh objects have no animation, at all. Indeed, even the IKAs have no animation. Only the empties are animated. IKAs, are parented to the empties, and mesh objects are parented to IKA limbs. The mesh objects are only the "clothing", for the animated frame. Create a well designed, frame of IKAs, and empties. Then design library animations for these standard skeletons, or character frames. My artistic modelling skills, are limited, but maybe you like my animations(the mannequin meshes aren't even mine, but are courtesy of tHe IcemAn). Delete out the mannequin meshes, and replace them with your own character meshes.
One empty needs to control the entire animated frame, or skeleton. Make sure you can move it, and have everything follow, without flopping around, or dragging. This master empty will be parented to a another, when you create a scene, as I mentioned earlier. IKAs can have two parents, one for the root, one for the effector. Use empties as IKA effector parents, and then parent these empties to the Em_main, and no arms or feet will drag.
Child objects, of empties, will do everything the empty does, even scaling. Keep all your animation limited to the chosen control empties, and don't divide your animation up, any more than needed.
Think about what you are controlling, when you perform an action. If you grab the mannequin character's Em_Lhand, or Em_Rhand, you can move it a lot of places, but should you really be rotating the shoulder? Keep track of what you are doing, or there will be trouble down the road. After the mannequin's face fall, I got into some trouble, getting him up. Some things I moved too much, when I should have been moving other things. In the end, the character had to be in an actual "neutral pose", not just look like one. Check out the IPO curves before frame 785, and notice the wild changes to get back to the pose 'Stand', without seriously being visible!
More needs to be said about this, but in a modelling tutorial.
Reusable animations need to be designed with the entry and exit as "neutral poses". Neutral poses are the matching points, which make different actions compatible. The more actions, you make, which begin and end with neutral poses, the greater number of possible combinations you can put together. In the example file, the most common neutral pose is 'Stand'. There is also 'HandsFront', 'StepRight', and 'StepLeft'.
In the last section, I talked about the trouble I had, returning the character to the 'Stand' pose. The problem is more than just making the character to be seen, in a standing position. All the animated empties must have the same Locations, and Rotation values, as my neutral pose 'Stand'. If this is not done, then the standing pose, that this action ends with, cannot match with any next action, with enters with the neutral pose 'Stand'. I needed to copy the neutral pose, 'Stand', and paste it at the end of the action, and then make sure the action moved correctly to that pose.
The table below is the list of actions performed in the anim.blend file. Render the file as delivered, and you will have a Targa movie of the entire animation. ACTION is what happens between the ENTRY and EXIT keyframes. ENTRY is the condition of the character going into the action, and EXIT is the final position leaving the sequence. Any ENTRY for an ACTION is compatable with any previous sequence, which exited with the same pose as the current action's entry pose.
For example, the action 'StepOutRight' can be placed after any action, which exits with a 'Stand', but if you try to follow 'StepOutRight', with 'LungeForward', there will be problems. 'StepOutRight' exits with 'StepRight', and 'LungeForward', begins with 'HandsFront'. The exit for the first, and the entry for the next, do not match.
The companion file, anim.blend (anim.zip), has been REPOSTED September 17, 2000. This new version has modified all the Entry and Exit keyframes, to use Vector handles. This will prevent most of the unexpected 'bouncing' and 'exploding', which frequently occurs, when editing together segments, whose keys begin and end with Bezier type handles. Anyone building their own animation library, and using the IPO Copy/Paste Python script, should make sure they also modify their Entry and Exit keyframes to Vector handle types.
ACTION |
ENTRY |
frame |
EXIT |
frame |
|
StepOutRight |
Stand |
15 |
StepRight |
26 |
|
StepLeft |
StepRight |
26 |
StepLeft |
38 |
|
StepRight |
StepLeft |
38 |
StepRight |
49 |
|
StepLeft |
StepRight |
49 |
StepLeft |
61 |
|
StepRightStand |
StepLeft |
61 |
Stand |
71 |
|
PratFall(down) |
Stand |
90 |
PratFall(static) |
109 |
|
PratFallRecover |
PratFall(static) |
120 |
Stand |
170 |
|
HandsFront |
Stand |
200 |
HandsFront |
220 |
|
Lunge Forward |
HandsFront |
220 |
Lunge Forward |
235 |
|
Lunge Recover |
Lunge Forward |
235 |
Stand |
265 |
|
HandsFront |
Stand |
275 |
HandsFront |
295 |
|
RtKick |
HandsFront |
295 |
Stand |
340 |
|
HandsFront |
Stand |
350 |
HandsFront |
370 |
|
LHeadPunch |
HandsFront |
370 |
HandsFront |
396 |
|
Stand |
HandsFront |
396 |
Stand |
405 |
|
StepOutRight |
Stand |
405 |
StepRight |
416 |
|
Ltrip |
StepRight |
416 |
StepLeft |
428 |
|
StepRightStand |
StepLeft |
428 |
Stand |
438 |
|
StepOutRight |
449 |
LTrip |
457 |
||
BigFaceFall |
LTrip |
457 |
FaceDown |
477 |
|
FaceFallRecover |
FaceDown |
547 |
Stand |
785 |
|
PainOver |
Stand |
800 |
PainOverdown |
828 |
|
PainOverrise |
PainOverdown |
848 |
PainOverdown |
864 |
|
Stand |
PainOverdown |
884 |
Stand |
908 |
The Library Objects and Their IPOs
This table lists the animated empties, and their associated IPO blocks.
OBJECT |
IPO NAME |
Em_Lankle |
Lankle |
Em_Rankle |
Rankle |
Em_Lhand |
Lhand |
Em_Lhip |
Lhip |
Em_Ltorso |
LoTorso |
Em_Lshoulder |
Lshoulder |
Em_Main (Moving this moves the entire character) |
Main |
Em_Neck |
Neck |
Em_Rankle |
Rankle |
Em_Rhand |
Rhand |
Em_Rhip |
Rhip |
Em_Rshoulder |
Rshoulder |
Em_Utorso |
Utorso |
Using the IPO Edit Python Script
For those of you, who use IPO Edit, a
duplicate of the same character is sitting in the leftmost layers
. Everything is the
same, except that it is stripped of all animation, with the
exception of the first two, identical keyframes. The Objects, and
IPO curves have the same names, with the extension '.001' added.
You can assemble new animations to this character by making the
.001s the destination IPOs, and the un-numbered IPOs the source.
For more information on using IPO Edit read the tutor.
Here is a explanation of what you can do with v1.74, Without a C Key:
This section was written before Blender version 1.8 was released, which allows everyone to use Python scripts. I strongly recommend trying out IPO Edit, which is included now in the anim.blend file, available for download, at the top of this page. This section still has some useful information about IPO manipulation, without Python, but you still find character animation much easier, by using the script!
You can still build animations onto a new character, but your re-use of animation is restricted to only what exists on a given library curve. You could not combine actions from more than one IPO block. If your Library file, performed all the motions you needed, for a given character, then you would never need to write new animations. Future work would only require that you copy and move the right combinations, to the times and places you wanted them to go.
Preparing the curves
For EACH IPO, related to your Character:
Select the Curve
1. Open an IPO window and display an IPO Block
![]()
The image above displays the tools related to the IPO block. The example .blend file has a copy of the character, in the leftmost layers, as mentioned earlier. In layer 2, select the empty Em_Lankle.001, which you can see in the 3D window. The IPO window will now display the IPO block Lankle.001, which only has two keyframes. We are not using IPO Edit, in these examples, so we are going to copy our Library IPO, Lankle, over to this object, Em_Lankle.001.
2. Click on the white dash, beside the IPO name. Select the option 'Data Browse'. A directory of all the available IPOs will appear. Press your middle mouse button on 'Lankle', or left click on 'Lankle', and press Enter. The IPO name button will now show like this:
![]()
The number 2, indicates that you now have two objects under the control of this IPO.
If you wanted many characters, in your scene, to move in unison, but be in different locations, each character would share the same IPO blocks. You will notice that the mannequin character, has a 'Master' empty, which, if moved, will take the entire character with it. To place multiple characters, moving in unison, into different locations of your scene, create a new empty, above the entire character. Parent the empty, 'Main', to this new empty. Now you can place, and animate the new empty, and the character will follow, keeping all the animation, already defined by the shared IPO blocks. An example of this idea is shown in the parade.zip (.blend) file.
For our current example, we want to "break off" this IPO into the 'Single User' mode.
Make Single User
3. Click on the number 2, beside the IPO name, and Select the option 'Single User'.
The IPO block will be renamed slightly, with a numbered extension, and will be a COPY of the original curve, only for this object. The original Library IPO will be untouched, and will now only belong to the original, animated object.
Move the Keyframes Out of the Way
4. In the IPO window, press the 'Home' button (the little house picture), or zoom out until the entire curve is visible. Press the A key, until all the curves's keys are highlighted in white. Now drag and release the left mouse button, while in the IPO window, and the curves will now move to anywhere you want. While rolling the mouse left, or right, press your middle mouse button, to lock out the Y motion, and allow the curves to only move left, or right (X). Move All the keyframes way off to the right. Do this while holding down the CTRL key, so that you end at a exact keyframe number, rather than a fraction of a keyframe. Slide everything over to an easy to remember time, which is well beyond the total time you wish to build. BE THIS STEP IS DONE EXACTLY THE SAME IN ALL YOUR IPO BLOCKS, otherwise you will scatter your animation.
If you move all the curves, in the copied IPO blocks, over 1000 frames, you will have enough time, normally for 40 seconds, at the motion picture standard of 24 frames per second. (NTSC, American TV, is 30 fps, and the PAL TV system frame rate is 25).
Another reason for a very even number, like 1000, is that the animation table, further back on this page, describes the motions from frame 1. If the action 'StepLeft', begins at frame 26, and you have moved everything over 1000 frames, the action 'StepLeft' will now begin at frame 1026. One thousand is an easy number to use.
Building New Combinations
Before trying any of this section, you should have rendered the file into a movie, to see the different library actions, and how they relate to the tables above.
Copy an Action
Frames 15-71, represent a traditional walk cycle, for our mannequin character. He starts from a standing position, right, left, right, left, stand. If you moved all the IPOs out 1000 frames, this sequence will now be from 1015-1071, in the curves you will be editing on.
AGAIN, for EACH IPO...
1.Over the IPO window, press the A key, until all the curves' keyframes are highlighted in white.
2. Press the TAB key, to enter the edit mode.
3. Toggle the A key, again, back and forth, so you are sure that you will have no keys accidentally selected, Pink is Not Selected, Yellow is Selected. Then zoom in carefully to the areas of the curves, you wish to copy. Be careful ALSO of the vertical zoom, so that you are sure all curves in this IPO will be selected, and you don't miss any.
4. Press the B Key and select the keys along the curve segments, which you want to copy.
Move it to Where it's Needed
5. If you are SURE you have selected all the keys for all the curves in this segment you want, Press Shift D. The Selected keys will now be duplicated. You can now move these copied keys to the time you wish. Be Careful what you do. Lock out the Y motion, and move using the CTRL key, as I explained earlier.
In the IPO Edit mode, the keyframes will appear to expand into three parts. Let's call them left, center, and right. The center, is the actual keyframes time, and value. If the curve we are looking at is LocX, then the position, left or right (also called X), is the keyframe's time, or frame number. The keyframe's vertical position (also called Y), will be the value (position), at that time, for the attribute of that curve. So, if a keyframe, of a curve LocX, is sitting at an X value of 10, and a Y value of 6, then the position of the object (LocX) at frame 10 will be LocX=6.
When in the IPO window's edit mode, the keys will show two more points, usually to the left, and to the right. These are called 'handles'. The handles influence the direction and changes in the curve, between keyframes.
Try This Sometime..
1. Open Blender, with the default file (the square plane object, and the camera)
2. In the 3d window, press the I key, and choose Loc.
3. Press the UP arrow key about five times, and change the current frame to 51.
4. In the 3d window, press the I key, and choose Avail. You will now have keyframes at frame 1, and 51 for the three Loc curves.
5. Now split the 3d window in half, and change one half to an IPO window. Press the Home button in this window.
You will see the 3 Loc curves, lying on top of each other, as a straight line. The default name, for this new IPO block, will be 'ObIpo', and will appear in the toolbar for this window. We did not move the the object, at all, so no motion will appear, if we try to view animation, using the Alt A command, with the cursor in the 3d window.
6. In the IPO window, holding down the CTRL key, drag the middle mouse button DOWN, until you can see numbers, like +20 and -20 on the left side of the window.
7. Now Press the A key and highlight the two keyframes white.
8. Press TAB key and we enter the IPO window Edit mode.
You will now see the keys, and their handles. Keyframe 51 will probably be selected, and be highlighted Yellow. Right click, on the leftmost landle of one of the keys at frame 51. You can now drag and move this handle anywhere you want, the same way you would move an object in the 3d window. Notice that the keyframe's time, and value are not changed, but you are affecting the other handle greatly. Notice also that the curve is also bending in response to your actions.
9. Move each of the left handles, at frame 51, upwards, so that each of the LocX, Y, and Z curves are bent upward, to a value of about 5.
Now play the animation, or arrow across the time between 1 and 51. There will be a LOT of movement, even though keyframes 1, and 51 both lie at X=0, Y=0, Z=0 !
Handles, and their placement, are very important. The next keyframe, can affect the previous keyframe, because handles can align themselves to each other, depending on the handle mode you are working in.
Blender gives you hotkey options, for how your keys and handles will behave. They are:
Default
The keyframe will control a point on a Bezier curve, and both handles will be inline with the key.
H Key
![]() |
![]() |
| An Aligned Key, Using the H Key |
A 'Ping' Created Around One
Key By Moving Free Handles with H Key |
H key will toggle between the free handle, and the aligned handle mode. An aligned handle, will cause the opposite handle to be affected, if either handle is moved. A free handle affects the curve on it's own side, but not on the side of the opposite handle.
Shift H
![]() |
| Selected Key in Auto Mode |
Auto mode. Handle positions are automatically calculated, according to the positions of the adjacent keyframes. Move a key, and if the adjacent key is in Auto mode, the adjacent key's handles will re-calculate.
CTRL H and ALT H
Somebody Tell Me
Once I figure out what's going on, or somebody tells me, I'll explain it here
V Key
![]() |
| All Keys with Vector Handles |
Vector Mode. Handles will point directly at the adjacent Keyframe
IMPORTANT! Remember, that Entry and Exit keyframes, for library actions, to be used with the IPO Edit Python script, should be set for Vector Handles!
Wow! This is making me cross eyed, writing this. I think I'll hold at this point, and see if anybody is interested, or cares . This is what you can do now:
Email me, Tell me that you like the idea, don't like it (but say why), don't understand, want more, correct me on errors, add something to the concept, propose some working standards, etc.
Take the idea and go with it. Write some additional actions for the anim.blend file, or make something else, based on the same ideas. If I get useful contributions, I will post them here
Ignore everything, and go away