Why the Y Axis?

The Y axis being the bone aim vector is a Blender convention. No way around that, and it’s not worth your time fighting over it.
Pick your battles.

Turning off custom shapes on all bones so they use the built-in octahedral \ stick \ bendy shapes, as well as connecting each parent’s tail to their children’s head (in case there’s only one child), these things are easily done with a script.
You can do these steps manually, so using a script to automate the process would make a lot of sense.

Open a Text Editor view in Blender, clicik the “+ New” button to create an empty text datablock, then paste the script below.
With that armature in your video, in pose or edit mode, select any bones you want to point to their children and press the Run Script button in the text editor.

# Optional, connect multiple children to the same parent.
CONNECT_MULTIPLE_CHILDREN = True # Change it to False if you don't want this.


#------------------------------------------------------
import bpy
from mathutils import Vector

armatureObject = bpy.context.active_object
if armatureObject and armatureObject.type == 'ARMATURE':
    for poseBone in armatureObject.pose.bones:
        poseBone.custom_shape = None # Reset shape to nothing.
    
    bpy.ops.object.mode_set(mode = 'EDIT')
    
    for editBone in armatureObject.data.edit_bones:
        if editBone.select: # Only process selected bones.
            if len(editBone.children) == 1:
                editBone.tail = editBone.children[0].head # Prolong the parent to its child.
                editBone.children[0].use_connect = True
            elif len(editBone.children) > 1:
                averageChildHead = sum([child.head for child in editBone.children], Vector()) / len(editBone.children)
                editBone.tail = averageChildHead
                if CONNECT_MULTIPLE_CHILDREN:
                    for child in editBone.children:
                        child.use_connect = True

    bpy.ops.object.mode_set(mode = 'POSE') # Finish in pose mode (change it to 'EDIT' if you wish).
1 Like

I dont know much about this

But forcing the bone to connect already messes with the Axis it needs to be to work for Source Engine, so not sure a script is gonna help?

They are rotated like that for a reason, Source’s axis is different, the bones lie sideways, if they dont, you have rotation issues on your Models.

The Import / Export developer doesnt want to adjust the skeletons to work better in Blender but he did that long ago.

You can’t write a script to solve a problem if you don’t understand what the problem is or what you want the script to do.

Make what’s called a “control rig”, which is a rig that you animate with, and the bones in this control rig manipulate the bones of a “deform rig”, the armature that actually deforms the mesh.
Your Source armature is the deform rig, all with those weird bone orientations. Each bone in the Source armature should have a Child Of constraint, pointing to a bone in the control rig.
The Child Of constraints allow the bones in the Source rig to be parented to bones in another armature, like that control armature.

So you animate the control rig. When you’re ready to export, you bake the animation in the Source rig and export it.

What you’re doing is you’re animating with a rig that “looks and acts normal”, and just baking the animation into the Source rig to export.

1 Like

I thought that was gonna help but I have a issue with it not following 100% and unsure if im doing something wrong

I think this might be the issue

Although I think this is working but I’ve run out of time to test it so I’ll check next time.