Synty Animations with Godot and T-Pose Rest Poses
Synty currently has two animation packs to go with their highly popular low poly models:
While Synty provides Blender source files for the animations in these packages, it can be challenging to use them in Blender and Godot because the rest poses (at the time of writing this blog post) seem to generally be set to the first frame of each animation instead of a T-Pose (or even an A-Pose).
To help make these animation sets usable with Godot, I've started working on a Blender Python script that will crawl the Synty animation folder tree, remap all of the animations onto a T-Pose character, and then export a set of GLB files with the animations grouped together.
CAVEAT: This will need some more work to account for different bone rolls/orientations on target models/armatures, but if you’re willing to tweak the Python script, you can possibly get it to work for you now.
Here’s the link to the GitHub repository that has a Blender file with the script (see synty_migrations/synty_anims_to_godot_glbs.blend):
https://github.com/Vortex-Basis-LLC/Blender-vbg_blender_samples
- See synty_migrations/synty_anims_to_godot_glbs.blend
General Usage
Download blend file with script from GitHub repo (see above).
Ensure you have Synty Locomotion and/or Sword Animation pack imported into Unity (or extract unitypackage into a folder).
Go to Scripting tab and select “SyntyAnimToGLB”.
Update “base_synty_animation_path” value to the folder containing AnimationBaseLocomotion and AnimationSwordCombat on your machine.
Set “export_path” to the folder where you want the GLB files to be generated.
If you want a character model bound to your animations, replace “Armature” object in the blend file with one of your choosing that has same bone structure and names as the Synty characters.
Open the System Console (from “Window” / “Toggle System Console”) to see output from the script.
Run “SyntyAnimToGLB” from Scripting tab to generate all of the GLB files.
- One GLB file will be created for each entry in “export_sets”. I had to split them up into separate GLB files because Godot would crash if I had too many animations in one GLB file.
Wait about 5 minutes for script to finish (depends on speed of your machine).
In Godot, drag and drop the GLB files into the project FileSystem.
Select each GLB file and on the Import tab:
Change “Import As” to “Animation Library”
Check “Import as Skeleton Bones” if no model is bound to the target armature used in Blender.
Check the “Trimming” checkbox.
Click “Reimport”.
Double-click on the GLB file and update the Bone Map.
three_finger_synty_bone_map.tres is an example bonemap provided in the GitHub rep.
Click “Reimport”.
You should now be able to use the Synty animations with humanoid characters in Godot (or you might need to modify do_custom_animation_fixups for your specific case).
# Adjustments can be added here...
def do_custom_animation_fixups(target_armature):
# Handle special tweaking for animations here.
if fixup_synty_third_finger:
# The synty animations need to have their third finger rotation fixed.
rotate_keyframe_points(
target_armature.animation_data.action,
'pose.bones["Finger_03"].rotation_quaternion',
math.pi,
axis = 'Y')
rotate_keyframe_points(
target_armature.animation_data.action,
'pose.bones["Finger_04"].rotation_quaternion',
-math.pi / 2.0,
axis = 'Z')
Subscribe to my newsletter
Read articles from Caleb Doise directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by