(UE 5.5) Using python or a blueprint, is there a way to see if a joint name exists in a skeleton?

Given a skeleton, I have been trying to see if it has a “neck_01” joint for example. There doesn’t seem to a way as far as I can see.

In python, I got so far as getting the bone tree nodes, but I don’t know how to progress into each BoneNode to get its name.

This brings up another related question. Is there a way to know all of the options usable for get_editor_property()? I’ve run into this before and got stuck here as well.

SKEL = '/Game/Skeleton/SK_Base_Biped_01.SK_Biped_01'

skeletal_mesh_asset = unreal.EditorAssetLibrary.load_asset(SKEL)
bone_tree = skeletal_mesh_asset.get_editor_property("bone_tree")
for x in bone_tree:
    print(x)

Result is a bunch of LogPython: <Struct 'BoneNode' (0x0000049B81B8FD80) {}>.

I’ve found I can check for the name on a bone using bone.get_editor_property("Name") although this throws an error saying:

“Exception: BoneNode: Property ‘Name’ for attribute ‘Name’ on ‘BoneNode’ is protected and cannot be read“

Hi @Marv_inxile,

To answer your second question (because it’s easier haha) you can see the available editor properties within the object type in the Python API documentation:

I would imagine that the editor properties exposed to Python are the same as for Blueprints, though I’m not positive that all of these are exposed to Blueprints as well. I suspect the reason you got the error on your Get Editor Property attempt is because the bone name is an existing property, it’s just not set to be read within the Cpp files. Unfortunately, no way around that without modifying source code :confused:

As far as helping you with your first question, I’ll share what I can dig up.

This checks for a bone name, but only for an animation sequence. Still you might be able to use this as a workaround.

This should also work. You can search by the bone name to see if it exists. The only thing is, it needs a skeletal mesh component to target, not a skeletal mesh asset, so that will take a little fanagling. Maybe by spawning and destroying a skeletal mesh actor during this process just to give it something to read from.

While this method is also exposed in blueprints, there doesn’t appear to be any other way in blueprints to get the bones directly from the skeletal mesh asset.

Hi @sarahlenker,

I assumed this as well. It’s just not clear why something as simple as the name wouldn’t be readable. Of all of the information to lock, that seems the one that wouldn’t be. Also, in looking at the docs, it says the bone_tree is read only, which it clearly isn’t because that’s all I am attempting.


My assumption is the name and index use to be get-able but somewhere along the way got “locked”.

Also, thank you in pointing out that the Editor Properties are the same flags we could use with get_editor_property(). It seems obvious now that you point it out.

We’ll look into your idea of getting a component instead of an asset. Maybe that would work, albeit a bit of a convoluted way simply to get the bone names.

I appreciate your help!