Auto-Skin-Weight Approach


#1

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


#2

Hi kogen,

that looks great very useful tool

Cheers,

Asa


#3

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.


#4

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


#5

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


#6

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. :slight_smile:


#7

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 :slight_smile:


#8

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 :slight_smile: I’ll try to keep it flexible.


#9

As Mentioned…GREAT TOOL…

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

Nildo


#10

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.


#11

I’m sure it wouldn’t care what the bones are as you are working with Skin that can use anything in Max as a bone.


#12

Hey Kogen…

Cat Bones you know from the CAT Toolkit plugin, like the Biped (Character Studio) but another animation Plugin, recently bought by autodesk and being distributed thru subscription customers as free.

http://download.autodesk.com/esd/3dsmax/cat-help-2010/files/WS7af5cac11814013a-37ebe48b11fde8bfe37-8000.htm

i asked especifically about CAT because in the Private message we exchanged u mentioned that u still have to have read Biped bones, so i thought that what PEN was suggesting was not valid.

Nildo


#13

PEN: You’re definitely right. Anyways, I guess I have to make some decisions against that feature to use any object as bone. If you could use everything as bone, than the distance function wouldn’t work properly. Atm. it calculates the nearest bone or bone geometry. When it calculates the nearest object it is possible, that other meshes like attachements for your character are found. So I guess there must be some restrictions.

Nildoe: I think I have to test it… or someone else who owns CAT if I stick to the BoneGeometry condition. maybe CAT bones are still stored as Bone geometry. :shrug:


#14

You could always include a list of classes that the user chooses.


#15

Hei guys,

good news, the development is making some progress. The user is now able to use the script with bones and biped no matter how they are named :wink:

I’ve taken out the geometric distance and added the edge distance as mentioned some days ago.

To cut a long story short, here is a little video, that shows how you can apply skin weights to a character using biped and Autoweight.

Autoweight - Biped video


#16

Hey Kogen…

indeed is looking really nice…although i would have prefered to see a more “stressing video”:)…having her making extreme poses to really see how good of a job your script did

keep up :slight_smile:

if u need someone to test with CAT…lemme know :wink:

Nildo


#17

Hey,

i really like the approach you took for this and it looks all good and seems to be fast. But I would really like to see a strong and extreme pose to see how it does, since there is not a lot deformation in a walk-cycle :slight_smile:

Cheers


#18

Hey guys,

allright, I see your point. I’m planning another video skinning a hand. And yeah, including some extreme poses of that girl, sounds like a good idea to show what the script can / can’t.

Thanks for your remarks.


#19

Thats looking very, very good.

Cheers,

Steve


#20

Morning guys,

sorry for not posting any information since two weeks. I was a little occupied with some other stuff.
Since the last version I made the edge selection more comfortable. Over this I’ve added a “negative Edge Distance” making it possible to create smooth transitions in both directions of a transition border.

Here’s a new video… (Youtube)