Notifications
Clear all

[Closed] Auto-Skin-Weight Approach

Hi folks,

I’ve started to invest some time in a script, that is supposed to make a Max-rigger’s life easier. It’s an automatic skin weighter. Before you watch the video, I’d like to say that I’m still at the beginning and there definitely have to be some improvements. Nevertheless I’d like to show you the progress so far.

Autoweight(WIP) – Video

104 Replies

Hi kogen,

that looks great very useful tool

Cheers,

Asa

 PEN

Nice approch, how is it determining which verts are weighted to which bones? You should be able to do a better job of smoothing the sections inbetween as well.

 JHN

Yes I’d like to know more too, seen a nice facerig for maya, that does a proper job on initial weigthing too, like weighting lips, upper lip not affecting the under lip for example.

-Johan

thats a nice aproach, i’ve always thought the skinning process should be more automatic,
keep it up!

Hei guys,

thank you very much for your interest in the project.

@ Pen and Johan: The vertices are weighted in two steps:

  1. Determine which points belong to a region (a region is defined as the area that is separated through n transition edges).
    Theese points are weighted with the influence 1 for the bone that belongs to that region.

  2. For every region there are still points that belong to the transition edges. So the next thing is that the algorithm looks for other regions that share those transition points. When such a transition area is found the average position of all the verts is taken to define a central point of that area. Afterwards the script compares if the distance from every point to the center point of the transition edge area is equal or less than a predefined distance). According to that distance the verts are weighted.

The problem with this way of calculating the weights is atm. that it all depends on the average position of the transition edge and a distance that I predefine.
So the next step would be to think about a more clever distance comparison. It would be nice as well if I wouldn’t have to use the average position of the transition edge but… yeah I don’t know yet.

Maybe have a spinner to use as a threshold to determine how much the weights overlap the transitional regions? This way you can control a bit of the blending instead of getting sharp spots. Really like your approach, btw. Looks like it’s flexible

Hei,

I’ve had an interesting idea while sleeping, so I had to give it a try this morning:
Obviously euclidian distances produce insufficient results. But when it comes to skin weighting you don’t look at the euclidian distances but at edge distances.
I mean, nomally one would start to set the weights for two bones in a transition area and move on to all the points that are close to that area. For those neighbouring points one would normally use a value less than the value of the transition area and so on.

According to that idea the new distance calculation algorithm takes every transition edge area and calculates the edge-distance for every other point. For example the points next to the transition area have a distance of 1, the points next to them have an edge distance to the transition area of 2 and so on…
Here is an image to visualize all three skinning methods.

Number 3 produces quite smoother results than Number 2 now.

Labbejason: Yeah, there needs to be a spinner. The new edge distance can be changed by the user. At the moment I have an edge distance of 4 for the skinning. But I guess it’s important to give the user a chance to vary it.
It seems flexible? Cool I’ll try to keep it flexible.

As Mentioned…GREAT TOOL…

does the tool recognize also CAT bones? would be great if it did

Nildo

Hi nildoe,

I’m not sure. Can you explain what are CAT-Bones?

I think I’ll add a condition to find Bones via “BoneGeometry”. Not sure neither, if that includes Biped. If it does that would make my life easier. Atm. you have to have the bones named as “Bone*” in the scene (indentical names are not possible yet). I hope to fix that issue tomorrow.

Page 1 / 10