Bone Priorities
When you're playing Oblivion, your character is almost always playing more than one animation at a time. Even doing something as simple as exploring a cave with a torch requires at least two animations: a walking animation and a torch-holding animation. The engine uses bone priorities to determine how to blend two or more animations. When transform data is being applied to a bone from more than one animation and these animations are playing at the same time the animation that assigns the highest bone priority to the transformed bone 'wins' and moves the bone in line with that animation. It is this blending which makes it possible for your character to run and attack at the same time, or to hold a torch and cast a spell.
When creating your own animations, therefore, it is important that you take into consideration other animations and how they will interact with your own. If you set your bone priorities too high, they may interfere with another animation which should, logically, take precedence. And if you set them too low, they may not appear to be working because they are being continually overridden by other animations. In general, moving animations should place higher priorities on the leg bones, and lower priorities on the arm and head bones, and attacking animations using the arms and hands should be weighted in the opposite direction. It pays to spend some time testing your animation in-game to see how it works in a variety of actions to get it looking good and playing nice no matter what the player is doing.
How to Find a Bone Priority in an Animation File
NifSkope: To find the bone priority in an animation (.kf) file, open the file in NifSkope and select (left-click) the 0 NiControllerSequence in the Block List window. In the Block Details window, find the Controlled Blocks entry and expand it. Each bone will have its own Controlled Blocks entry (the name of the bone is listed in the Value column). Expand the bone's Controlled Blocks entry and find the Priority listing. The bone priority appears in the Value column.

Blender: In the Buttons panel, switch to Object (F7) or Editing (F9) and look in the Constraints tab. Beneath the name of the selected bone you should see a box that displays the bone priority.

How to Assign Bone Priorities
NifSkope: To assign bone priorities in NifSkope, open the animation (.kf) file and select (left-click) the 0 NiControllerSequence in the Block List window. In the Block Details window, find the Controlled Blocks entry and expand it. Find the entry for the bone you wish to edit and double-click the value beside Priority.

Blender: To assign bone priorities in Blender, open a scripts window and select Scripts -> Object -> Set Bone Priority. This will set the priority for any bones you have selected in Pose mode.

You can also set the priority for a selected bone in the Constraints tab in the Buttons panel in either Object (F7) or Editing (F9) mode. Select the number after 'Priority:' and change it. See the sample bone priority data below to get an idea about what you should set it to.

Additional Notes
Bone Groups
The default _male armature can be roughly divided into two major bone groups: bones above the waist and bones below the waist. Within these groups it is possible to identify rough sub-groups: all bones in the chain beginning with the left clavicle (shoulder bone) descending to the left finger tip bones, including the upper arm and forearm twist bones and the Torch/Shield bone, appear to share the same bone priorities; a similar sub-group exists for the bones from the right clavicle to the right finger tip bones that includes the Weapon bone in place of the Torch/Shield bone. Both sets of leg bones, the tail bones, and the pelvis (along with the Bip01, Bip01 NonAccum, and SideWeapon bones) may be considered a sub-group as well, as they seem to share the same priorities, although in this case the sub-group is functionally the same as the group of 'bones below the waist'. The remaining bones display some variety: the head/neck/spine chain is often broken up with varying priorities based on the animation. The Quiver and BackWeapon bones, of course, are usually grouped with the spine bones.
Animation Groups
Idle animations have the lowest priority (about 20), which is appropriate since the player is not directly controlling the avatar during idles. Movement animations have higher (30) priorities, which allow the movement animations to override the idle animations when the player moves the avatar. Animations involving the casting of spells or melee attacks tend to set higher bone priorities for bones above the waist and lower priorities for bones below the waist. This allows the bones directly involved in the action to override movement or idle animations on the spine, head, and arms while still allowing the player to move the avatar with the higher priorities on the legs. Special bones, like the weapon and magic node bones are roughly grouped by location with the rigged bones. The Torch, Weapon, BackWeapon, Quiver, Bow, and magicNode bones are grouped with the bones above the waist and the Bip01, Bip01 NonAccum, and SideWeapon with the bones below the waist.
Stagger animations have very high bone priorities (70+), although they are occasionally exceeded by other animations. This, of course, makes sense since the purpose of the stagger is to 'override' the player's choice of actions and hence penalize them.
Bows and Spells
Bow and spell casting animations require certain bones that are only present in animations that execute bow and spell-related actions. Bow:0 (two bones), ArrowBone, and ArrowHelper01 in bow animations and magicNode in spell casting animations. Dashes in the chart for other animations indicate that no priority was set for the bone in the animation, indicating it was either not present or explicitly left blank. (I still have to check this.)
Sample Bone Priority Data
| Animation | AnimGroup | Cycle Type | Bip01 | Bip01 Pelvis | Bip01 Spine | Bip01 Spine1 | Bip01 Spine2 | Bip01 Neck | Bip01 Neck1 | Bip01 Head | Bip01 L Clavicle | Bip01 L UpperArm | Bip01 L Forearm | Bip01 L Hand | Bip01 L Finger0 | Bip01 L Finger01 | Bip01 L Finger02 | Bip01 L Finger1 | Bip01 L Finger11 | Bip01 L Finger12 | Bip01 L Finger2 | Bip01 L Finger21 | Bip01 L Finger22 | Bip01 L Finger3 | Bip01 L Finger31 | Bip01 L Finger32 | Bip01 L Finger4 | Bip01 L Finger41 | Bip01 L Finger42 | Torch | ArrowBone | Bip01 L ForearmTwist | Bip01 L UpperArmTwist | Bip01 R Clavicle | Bip01 R UpperArm | Bip01 R Forearm | Bip01 R Hand | Bip01 R Finger0 | Bip01 R Finger01 | Bip01 R Finger02 | Bip01 R Finger1 | Bip01 R Finger11 | Bip01 R Finger12 | Bip01 R Finger2 | Bip01 R Finger21 | Bip01 R Finger22 | Bip01 R Finger3 | Bip01 R Finger31 | Bip01 R Finger32 | Bip01 R Finger4 | Bip01 R Finger41 | Bip01 R Finger42 | ArrowHelper01 | Weapon | Bip01 R ForearmTwist | Bip01 R UpperArmTwist | BackWeapon | Bow:0 | Bow:0 | Quiver | magicNode | Bip01 L Thigh | Bip01 L Calf | Bip01 L Foot | Bip01 L Toe0 | Bip01 R Thigh | Bip01 R Calf | Bip01 R Foot | Bip01 R Toe0 | SideWeapon | Bip01 TailRoot | Bip01 Tail01 | Bip01 Tail02 | Bip01 Tail03 | Bip01 Tail04 | Bip01 Tail05 | Bip01 Tail06 | Bip01 Tail07 | Bip01 Tail08 | Bip01 NonAccum |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| blockattack | BlockAttack | Clamp | 27 | 27 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | - | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | - | 75 | 75 | 75 | 75 | - | - | 75 | - | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 |
| bowattack | AttackBow | Clamp | 25 | 25 | 55 | 55 | 55 | 55 | 55 | 95 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | - | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 |
| castself | CastSelf | Clamp | 26 | 26 | 46 | 46 | 46 | 46 | 46 | 96 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | 66 | - | 66 | 66 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | 46 | - | 46 | 46 | 46 | 46 | - | - | 46 | 66 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 |
| handtohandattackleft | AttackLeft | Clamp | 25 | 25 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | - | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | - | 55 | 55 | 55 | 55 | - | - | 55 | - | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 |
| handtohandattackleftpower | AttackLeftPower | Clamp | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | 65 | - | 65 | 65 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | - | 55 | 55 | 55 | 55 | - | - | 55 | - | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 |
| handtohandblockhit | BlockHit | Clamp | 27 | 27 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | - | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | - | 75 | 75 | 75 | 75 | - | - | 75 | - | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 |
| handtohandequip | Equip | Clamp | 25 | 25 | 55 | 55 | 55 | 55 | 55 | 55 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | - | 35 | 35 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | - | 55 | 55 | 55 | 55 | - | - | 55 | - | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 |
| handtohandrecoil | Recoil | Clamp | 25 | 25 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | - | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | - | 55 | 55 | 55 | 55 | - | - | 55 | - | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 |
| handtohandstagger | Stagger | Clamp | 70 | 70 | 70 | 70 | 70 | 70 | 90 | 90 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | - | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | - | 70 | 70 | 70 | 70 | - | - | 70 | - | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 | 70 |
| handtohandunequip | Unequip | Clamp | 25 | 25 | 55 | 55 | 55 | 55 | 55 | 55 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | 35 | - | 35 | 35 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | 55 | - | 55 | 55 | 55 | 55 | - | - | 55 | - | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 | 25 |
| idle | Idle | Loop | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | - | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | - | 20 | 20 | 20 | 20 | 20 | 20 | 20 | - | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 |
| jumpstart | JumpStart | Clamp | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | - | 30 | 30 | 30 | 30 | 30 | 30 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | 20 | - | 20 | 30 | 30 | 30 | - | - | 30 | - | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 |
| walkforward | Forward | Loop | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | - | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | - | 30 | 30 | 30 | 30 | - | - | 30 | - | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 |
Last updated July 20, 2011
© 2009-2011 Dave Finch

