Swapping A Skeleton's 3D Models While Having Them Look Normal

Godot Version

4.6.3

Question

I am making an online multiplayer FPS for fun and to learn how to do network stuff. The players use a general skeleton with a bone attachment 3D connected for weapons.

^ Tree for normal player

^ Normal player model

I want to make a system where players can easily swap between skins. However, I’m having issues. First, I tried using the retarget modifier node. However, with this, it doesn’t look right since the bones don’t line up.

^ Retarget modifier attempt.

When I try to just swap out the meshes directly, this happens…

I think this is just b/c of the weights or something. For the record, these are models from this asset pack: Characters PSX by Elbolilloduro

Right now, the normal player, and the alternative looking player are different scenes. This is the tree for the alt scene:

If it can be changed cleanly through code, then I assume that would be preferable. Otherwise, I’d need unique scenes for each player skin.

Thank you in advance for any help!

The model must match the rig. One option is to scale the model — for example, in Blender — so that it fits the rig. Then, in the game, you can scale it back to its original size.

As you’re doing now, you can only change the skins.

But the rig uses very few resources — much less than the mesh. So you probably won’t gain much. The only exception is if the mesh is identical and only differs in scale. In that case, scale it within the engine. But again, this only amounts to changing the skin.

I saw easier approach : have all meshes in one skeleton and just keep one unhiden, this way it’s smooth and quick .

Thanks for the response! When I try to do that, there is weird warping though.

How were things set up for your solution?

Post you when home

It’s from old GameDev.tv RPG course but it works like charm, best be if you make it in Blender parent mesh to skeleton.
Alternatively you can make meshes to same size, use mixamo, and then all rigs and animation be same .