Download

Skinned model deforming despite all vertices being equally weighted.

Hey, so I’m using the official skeleton in 3ds max, but there seems to be some odd stuff going on that I can’t quite figure out.

I have a piece of metal that I don’t want to deform covering my character’s elbows. Usually the simplest way to animate yet make things like this solid is to just weigh all vertices of this piece equally so they all move and rotate exactly the same amount in the same directions. In this case I have them 50% weighted for towards the upper arm, and 50% towards the lower arm.
This should make it so that when the lower arm rotates, the piece of armor rotates half that amount, since the upper arm does not rotate.
This has worked perfectly fine for me in the past.

However, for some reason that doesn’t seem to work with the skeleton from epic, when the lower arm rotates, the piece of armor instead squashes into the elbow, even though the vertices should be moving equally.

What on earth is going on? It almost seems like the bone itself deforms when rotating?

Edit: Turns out all the xforms on the official skeleton is a complete mess, and they are indeed deforming when rotating. It’s happening with the skeleton in the engine as well.
Does anyone know of a clean skeleton that’s compatible with the default mannequin/animations, that isn’t broken?
I’ve tried several examples of the mannequin skeleton that came duplicated in various animation packs, and the like, and they all have the same deformation issue right in the engine, so this actually appears to be an issue originating all the way back to epic themselves.

But I assume people have made their own compatible skeletons with the same bones for their own rigs and the like?

I’m able to fix it by using orientation constraints for that piece, but FBX does not support orientation constraints and it is lost on export.

… this is because you are using an inferior DCC :stuck_out_tongue_winking_eye: that you probably paid a lot for :stuck_out_tongue:

load it up in blender. You won’t have issues.

The bone rotations of the base skeleton are a bit of a mess. However the real issues aren’t with the base skeleton but with the animations.
Epic’s answer to that was to set the bone retargeting options of the main skeleton instead of cleaning up and providing some decent base animations.
In that spirit. Almost all free marketplace animation packs are a total mess. From Disjointed wrists to translated shoulders.

Back to your problem

As far as your weight theory.
It holds only as long as no other bone is mistakenly painted to the same piece.
you need clear vector groups with only upper and lower arm on it at 50% influence (or less for both bones) to be able to shift the piece around as solid.

As far as application, every software interprets things differently. The Pivot point of the bone is actually important to get this to work right as you imagine.

You have to use the lower arm bone as the main connection. Since the pivot is actually right on the joint.
And you need to apply all transforms (or whatever equivalent of that in your DCC tool) to be able to export an FBX that just works.

I would really suggest you just swap to using blender for quick animations / mannequin stuff…
try it out
http://mosthostla.com/gamedev/bonebreaker/

Yeah, that’s how it used to work when I did skinning and animations years ago, so I got that part covered. But something seems to be different with how 3ds max handles skinning now it turns out.
I tried bringing the piece into a blank scene with only 2 bones. 50% weighted to one bone and 50 percent weighted to the other. The deformation still happens there, I might bring up an old version of 3ds max to compare.

It seems like the vertices take distance from the bone into account despite being absolute?

I can’t find a way to do that in max, but I’ll keep looking.

Maybe I will eventually!

The equivalent in 3ds max is “reset xform”

Oh that I do all the time. That wouldn’t implement constraints the way it sounded like he was talking about.

Your object is completely weighted at 50% for each bone right?
It’s not painted with half assigned to a bone and half to another?

Correct. I always do 100% to one bone first to ensure no stray weights.

No idea about what 3ds max is doing. But this works in blender and imports a working model in ue4.

Yeah it should work, at least it used to, but when the lower bone rotates, the mesh in question shrinks. I might consider using blender for skinning.
It’s just nice to be able to do everything in one package, but I am starting to notice that autodesk doesn’t really innovate and improve their tools much (it’s practically identical to how it was 10 years ago), so it might be nice with a change.