Custom Animations

From Wolfire Games Wiki
Revision as of 22:12, 27 November 2023 by Constance (talk | contribs) (Overview: Revised download locations for 2.93+ scripts)
Jump to: navigation, search

Overview

Animations for rigged objects in Overgrowth are stored with one of the Phoenix Engine's custom binary file formats, namely the PHXANM (Phoenix Animation) format. To export an animation to a PHXANM (File mask: .anm) file you need to use Wolfire's custom export addon for Blender.

A repackaged version of Blender 2.55 for Windows with the export addon and with the UI set up for this task can be downloaded here. You can find a tutorial on how to animate in this version here.

The scripts needed for using Blender 2.93 and above are located at Overgrowth's Github repository, here. Download bone_io.zip and io_anm.rar and follow the Readme instructions. You can also check videos.rar for tutorial videos on how to install these scripts, if you need. These same scripts can also be found in the Overgrowth Modding channel on the Wolfire Discord, under the pinned messages.

The best rig for making animations is rabbit_rig.blend -- This wiki page will assume you are using its default interface. TODO: How to switch to different species models?

Creating an animation

On the left hand side of your Blender character rig, you'll see a Dopesheet. If it's too small, you can drag it out and expand the border to see the full toolbar. This dopesheet contains a timeline of every keyframe defined for the animation.

In order to pose a character and make new keyframes, you must first select Pose Mode in the 3D Viewport's toolbar (located by default on its bottom). Then, you can select a bone and change it around. I recommend enabling Object Gizmos in the 3D Viewport's toolbar. Here's a quick reference for Blender 3.4's default interface controls:

  1. Left click to Select
  2. Right click to Manipulate
  3. Scroll wheel click to Orbit camera
  4. G to Translate selected (or rotate fixed bones)
  5. R to Rotate selected
  6. ESC to Cancel current change

Each keyframe contains data for a bone. Its position on the dopesheet dictates when the bone will conform to the pose. If you set the dopesheet's timeline over a keyframe, your changes to the bone will overwrite the current keyframe's data. You can change this behavior by checking the Record button's options on the timeline at the very bottom.

Selecting different poses

The button found on the dopesheet toolbar for selecting different poses

Click the button pictured on the Dopesheet's toolbar to browse and select the poses included in the character rig. Any rig has a maximum pose limit, which when reached will start recycling old poses. Todo: How large is this limit?

You can make a new pose by clicking the New Action button next to the pose name. Make sure not to overwrite any useful poses you may have in the rig!

Changing the start & end frames

How to find the animation controls for exported frame data

How long your animation lasts depends on the values specified in Blender's Timeline window. In its top right, you can find the Start and End values. While the Use Preview Range button is toggled, the From Timeline button in the rig parameters will affect your exported animation's frame data.

Exporting an animation

  1. Create your custom animation in Blender
  2. Set the metadata for your animation in the sidebar of the 3D Viewport, as pictured below
    • Click the From Timeline button to set the timeline's start & end frames as the start & end points of your animation; Note: Keyframes outside of this time frame won't be exported.
    • Set the Looping value to 0 if you don't want your animation to loop. Set it to 1 if you want it to loop. Todo: If the value is higher, will it do sth different, like play the animation n times?
  3. With the skeleton selected, press File > Export > Phoenix Animation (.anm) Note: Make sure not to have any IK bones selected while in Pose Mode, or else the script may crash!

Bone layers

**Pre-Blender 4.0 interface: Past 4.0, bone collections no longer work, as far as I know.** Cyan text is only for character rigging. White text is only for animation. Green text is only for DEF bones, which are used in animation.

Sets of bones within the animation rig are hidden underneath several different layers. Each layer contains different bones; By hiding and unhiding specific layers, you can fine tune your available bones as pictured right.

FK stands for Fixed Kinematics, where each limb's position is manually set and is best used for dynamic animations with lots of movement (like attacks).

IK stands for Inverse Kinematics, where paws are placed and limbs follow.

To switch between the two modes of animation, you must set the IK property keyframe to 0 (for FK) or 1 (for IK). You can only set this property keyframe on IK bones.

In order to add event keyframes, you must first select a DEF bone. In the animation rigs that are shipped with the game, these bones are hidden. In order to unhide them, you must first:

  1. Enter Pose Mode in the 3D Viewport
  2. Press A to select everything
  3. Press ALT + H to reveal everything, including the DEF bones

After revealing everything, you might find the rig is a bit cluttered with unnecessary bones, like ORG and MCH bones. These are only used for rigging, and not for animation. Select these and press H to hide them individually.

Event Keyframes

Event keyframes are used to tell the game at which moment of an animation an event is going to happen. This is used to trigger attack impacts and footstep sounds among other things. An event is saved as a Custom Property of a bone in the Blender files shipped with the game. Access these custom properties by clicking on the Bone Properties tab within the Properties window.

Event Name Description
event_attackimpact Will trigger the actual impact while attacking a character
event_blockprepare Signals when AI characters should block. These keyframes are usually placed two frames before the impact
event_attackblocked
event_rightcrouchwalkstep Will trigger footstep sounds for sneaking, emits AI sound and creates particles while on terrain
event_rightrunstep Will trigger footstep sounds for running, emits AI sound and creates particles while on terrain
event_rightwalkstep Will trigger footstep sounds for walking, emits AI sound and creates particles while on terrain
event_rightwallstep Will trigger footstep sounds for wall running and emits AI sound
event_golimp Causes the character to ragdoll into a static pose
event_grabitem
event_heldweaponswap Causes the character to switch the currently held item's handedness
event_rightweaponrelease Causes the character to let go of the right hand's currently held item
event_sheatherighthandlefthip Sheathes the right hand's item to the left hip
event_sheatherighthandrighthip Sheathes the right hand's item to the right hip
event_throatcut
event_unsheatherighthandlefthip Unsheathes the left hip's item into the right hand
event_unsheatherighthandrighthi Unsheathes the right hip's item into the right hand

Adding an event Keyframe to your animation

  1. Select the 3rd of the rig's layers from the bottom right, as shown in the Bone Layers section
  2. Select the appropriate bone for the event you want to trigger while being in pose mode
  3. Set the playhead in the timeline to the moment you want the event to happen
  4. In the Properties editor, press Bone and scroll down to Custom Properties
  5. Hover over the property that corresponds to the event you want to trigger and press I to add a keyframe. (Value doesn't matter)

To ungroup a keyframe, select it (so its name lights up) and press CTRL + ALT + G. Now the keyframe should be sent to the bottom, for easier editing!

Animating Morph Targets

Todo: Add this section