RVK-Pozer
A Python tool for controlling and writing RVKs interactively
*Assign, pose, write RVKs using sliders
*Delete unwanted keys
*File save session settings
Updated Aug 6, 2001: Improved Slider Behavior, this release now includes a companion script, s-update.py, which updates the slider settings as you change to other frame times. See Explanation below
First, for you beginners....
Relative Vertex Keys are a feature in Blender which allow you to animate mesh distortions over time. This feature is perfect to simulate stretching skin, raised eyebrows, flaired nostrels, etc. A mesh you create, such as a head, is first set with a 'mesh' key. This sets your baseline pose. Mesh 'targets' are then created by re-entering edit mode, and modifying the mesh, for different target poses. Once you have a nice target modification, you then insert another mesh key ('i' key, mesh), and leave edit mode. Make sure you have an IPO window open like this;
![]()
A new blue line appears in your mesh key window. This is your new mesh target. Selecting it, will pose the mesh to that position. As you create new targets, you then drag and arrange the blue lines vertically in the mesh ipo window. The vertical order of these lines define their names 'Key1, Key2', etc., and can then be used in RVK animation. The bottom most blue line will correspond to 'Key1', and will be numbered 'Key2, Key3', etc., as you go up to the top of your rows of blue lines.
Relative Vertex Keys, are what make up the animation curves to move your mesh between targets over time. Creating a new curve for 'Key1' is done as follows:
![]() |
After you have created your mesh targets, go to the buttons window, select the animation menu, and press 'Relative Keys'. A new list appears in the right column of the IPO window. |
To create a curve for 'Key1', left click the name 'Key1', in the right column of the IPO window, and it will highlight white. Now, move your mouse into the main part of the IPO window, hold down the 'Ctrl' key, and left click. A new curve and key is created for 'Key1'. Now, if you just did this anywhere, the value of the curve and the time of the key could be anything. Before explaining RVK-Pozer, let's set this key up properly.
In the main IPO mesh window, press the 'Tab' key, for edit mode. The new key will highlight yellow. Press 'n' key, and enter the values X=1, Y=0, (OK). The key will now be at time 1, with a value of zero. Press 'Tab' key again, to leave edit mode.
You can now copy this starting curve, and paste it onto each of the keys you need to fully control your model. If you had 5 mesh targets (blue lines) created, you can assign 5 rvk curves to control your model. In the IPO window, press the Down Arrow, on the tool bar. This copies the curve. Now select the new key name, you wish to assign ('Key2, Key3...'), and then press the Up Arrow, in the tool bar. This pastes the same curve onto your selected rvk. Continue for the rest of your targets, by simply each key name, in order, and pressing the Up Arrow, until you have a curve assigned for each of your mesh targets.
Until now, we needed to manually edit each curve, in order to make things move. active posing was impossible, and keys were difficult to control. Selecting a curve, and 'Ctrl left click' was the way to write a new key. Adjusting it, required going into edit mode, and adjusting the graph. Well, NO MORE!
Let's Use RVK_Pozer !
RVK-Pozer comes in 3 flavors, the script only, a simple setup blend file (small file size), and a full blown demo, featuring Malcolm Murdock, courtesy of Dave Weese, of Blended Planet , http://www.blendedplanet.com .
DOWNLOAD HERE
RVK-POZER (script only) 26k
S-UPDATE.PY (script only) 2k
(The companion script for frame changed slider updates)
RVK-DEMO.zip (stupid mesh sphere, 2 sliders) 75k
RVK-Murdock.zip (Full head mesh, 12 sliders)600k
RVK-Murdock courtesy of Dave Weese
To Start from Scratch..
![]() |
Select the 'Text' window, as shown in the picture on
the left. Then press the dashed button, on the toolbar.
'Open New', then select the script,
"rvk-pozer.py". Once loaded, first look at the
beginning of the script, for the line between the
######'s. Change the text within the quotes, to point to
the location where you have placed the slider setup file.
In the .blend examples, this would be 'test.txt', or
'murdock.txt'. Place the mouse into the text window, and press 'Alt p'. With a properly setup demo, you will now see sliders appear. From scratch (or an improper path to the setup file), you will see a few buttons, at the bottom of the window. Note: This is a big GUI window. It is designed for a full vertical window, with a screen resolution of at least 1024x768. If you are using either demo file, you could now just go ahead and play with the sliders. Watch what happens, and have fun! To learn this thing... read on. |
The bottom of this first window, will always have 3 buttons, 'exit', 'handle type', and 'page'. Exit is obvious. "Handle Type" allows you to control the type of handle which will be created, when you write a new key. The options are 'Auto', and 'Vector'. The 'Page' menu allows you to move between 3 different menu pages. Pages 1 & 2, are for sliders. You are allowed 32. Page 3 is for setup.
Here is the Slider Setup Screen

1. Saves the current setup to the session file
2. Sets the default minimum fixed value for the slider
3. Sets the default maximum fixed value for the slider
4. Selects which slider you wish to configure
5. Selects the correct IPO block to control
6. Selects which rvk or curve to control
7. Optional name you can define for a slider
8. Writes the configuration to a slider
9. Selects between fixed values, or sampled curve values (see explanation below)
10. Defines the actual minimum value for this slider
11. Defines the actual maximum value for this slider
12. Exit script
13. Deletes the selected slider configuration
14. Moves between pages
Fixed/Sampled Option
Normally, you wish to choose a fixed range of values to write rvks. '0' is no affect, '1' is complete affect of the mesh target. A value of '2' doubles the affect of the target. Negative numbers will do the opposite of the mesh target. The default for fixed vales, is min=0/max=1, but you can easily change this to anything, by first changing the min and max buttons (2 and 3).
The sampled option, creates a slider which examines the value of the existing curve, at a given frame time. Pressing the 'Type' button (9), defines a sampled slider, with the min and max values being the frame times between all of the existing keys along the selected curve. Aside from RVKs, this script should just as easily work with Rot, Loc, etc. keys. This option will allow you to sample values along an existing animation, and write them to the current frame. In this setup menu, window into the range of time, you are interested in, by setting the 'min' and 'max' sliders. Once set, the created slider will examine this selected range of time, and write the new key according to the value it finds.
Normal Usage
Just choose a setup slider screen, move to a desired frame time, and pose away! Any slider action, writes a key at the current frame. To delete a key, move to the frame where it is set, and press the 'Del' button, beside the slider for that curve.
The Handle bug
Blender 2.14, and earlier, has a bug which may produce wacky handles when writing 'Auto' (Bezier) handled keys. The symptom of this is a wild 'bounce', which will appear in the curve. Any direct edit in the IPO window clears it, but the easiest way of clearing it is to 'Alt a', to start playing the animation, then hit 'escape' key.
Conclusion
That's probably all you need, to get started. Try it out, and if you find some bugs, or problems in the instructions, I will expand and correct this page. Let me know what you think!
S-UPDATE.PY
This optional script tracks the values of the RVK curves, as you move to different frame times. S-UPDATE.PY is script linked to the Blend drawing, to create a 'Frame Changed' event. Then, when you use the arrow keys or IPO window to change your frame time, S-Update examines the values of the curves, at that time, and changes the sliders to indicate those sampled values.
1. Load s-update.py into the text window
2. Script link s-update.py to the drawing, as shown in the picture below:

Make sure that RVK-POZER is left displayed in the front of the text window, so that you may restart the script, using Alt-p
I may not yet have learned to be an artist, but someday I might come up with a good idea.
| Now go listen to some strange old music | ![]() |