Skeletal Animations - voxraygames/worldbuilding GitHub Wiki

Tutorial from 2024 April:

Here's a video tutorial demonstrating how to use the animation editor: Animation Editor Tutorial

Overview

lobster_matvoxels_oBSTVhKe2x

  • The list of animation files is at the top. There is one animation file for each monster.
  • Save: saves the file
  • Revert: reverts back to the last file. This can be undone.
  • Undo: undoes the last change
  • Animation combo box: the current animation or binding pose
  • Bone combo box: the bone that you are currently modifying
  • Copy Pose: copy the current positions and rotations of all bones
  • Paste Pose: paste the current positions and rotations that were last copied. This will add keyframes to each bone, if necessary
  • Paste Pose Mirrored: paste the current positions and rotations, but mirror them across the X-axis
  • Look At Y-: Adjust the current keyframe rotation so it points toward the -Y-axis. This is useful e.g. for counter-acting torso rotation on the head

Manage Model Mapping

lobster_matvoxels_Yedb3RgyO5

  • Mapping Pose: Which binding pose to use. There should only be one per file
  • Import Model: Type the name of the model and click the Import button to load all bones by name from the .vox file. It will attempt to match the bone name to a submodel name in the .vox file

Bone Mapping:

lobster_matvoxels_Z05Lix1hqB

  • Variant: Choose a variant for this bone mapping (e.g. a different face, etc.) These can be chosen by index when picking this monster in the level editor
  • Asset: The path to the model for this bone. It can be empty, but in that case it's better to remove the bone entirely
  • Asset-Skeleton: The path to the skeleton model for this bone. It can be empty if there is no skeleton
  • QX, QY, QZ, QW: The rotation for this model. This is currently never used
  • X, Y, Z: The position of this model. This will automatically be set to match the .vox file if you use the Import button, so you typically don't need to change this

Manage Animation:

lobster_matvoxels_ZJIu2dipx9

  • Name: The name to use for the Rename, Duplicate, Add buttons below
  • Binding Pose: Whether this animation is a binding pose
  • Duration: The length of this animation in seconds. It may be played faster by the game in some situations
  • Rename: Rename this animation
  • Duplicate: Create a copy of this animation, with the new name
  • Add: Create a new empty animation with the new name
  • Delete: Delete this animation
  • Copy: Copy this animation. This can be used to copy/paste an animation between files. It only works properly if the animations have the same bones
  • Paste: Paste the copied animation. This can be used to copy/paste an animation between files

Manage Bone:

lobster_matvoxels_uFfxb38mLB

  • Parent: The parent bone of the currently selected bone
  • Name: The name to use for the Rename and Add buttons
  • Rename: Rename this bone
  • Add: Add a new bone with this name
  • Delete: Delete this bone

Bone Data (for a regular Animation):

lobster_matvoxels_XtkKPSYRyd

  • RotMode, PosMode: What kind of lerping to do for this bone, at this keyframe. Often Linear is fine
  • Copy Rot, Copy Offset: Copy the rotation or position of this bone, at this keyframe
  • Paste Rot, Paste Offset: Paste the last copied rotation or position. It only pastes for the selected bone, for just this keyframe

Bone Data (for Binding Pose):

lobster_matvoxels_CVsUVoxd1u

  • X, Y, Z: The relative offsets from the parent bone for the currently selected bone. You can also use the translate tool to move these

Timeline

lobster_matvoxels_V8AQOL0e2l

  • rot kf time, pos kf time: The time of the current keyframe. You can change this to move the keyframe, or drag and drop on the timeline view
  • curtime: The current animation time. You can drag this slider, or drag on the timeline view
  • +R: Add a rotation keyframe at this time
  • +P: Add a position keyframe at this time
  • -R: Remove a rotation keyframe at this time. You can also use the delete key
  • -P: Remove a position keyframe at this time. You can also use the delete key