Notifications
Clear all

[Closed] Auto-Skin-Weight Approach

Sure, are you surprised? You made the script so I guess you have your own issues with endless skinning :D.

Not sure what you mean by this. You should know I’m more maxcript hacker then skilled maxscripter :). I added like 2 lines, so not sure what could make it easier then that.

Heya,

when I was writing the matrix comment two hours later I had forgotten what I actually wanted to do… maybe that thought will come back later…
It was not that easy to include the CAT-system but it works now. The only problem is, that CAT has those Hub-sections that have to be included as bones too. So it happens that the script find the wrong regions after passing the Hub-Bones… to cut a long story short: It works with CAT but you might have to manually re-select the correct bones after that everything else (setting up the weights) was running normally during my tests. Thanks for the constant requests for that

Just download the archive again from Scriptspot or from my page and install it again, I just altered version 0.030 and didn’t create a new one.

-k.

Thanks, great job there.

Sorry to bother you, but for my own learning purposes, could you please explain why are you first collecting CATParent and it’s all nodes:


if classOf obj == CATParent then
  (	
	 ArrBonesCAT = obj.CATRigNodes -- select reall ALL CAT-Parent.Controller Children
)

and then filter through them via:

for obj in ArrBonesCAT do
		(		
			if classOf obj != CATBone and classOf obj != HubObject then
			(	
				deleteItem ArrBonesCAT (findItem ArrBonesCAT obj)
			)
		)

What’s the advantage of doing that compared to checking directly for CAT bone in the all scene objects:

 if (classOf obj == CATBone or classOf obj == HubObject) then append ArrBones obj

Thanks

Good question.

Actually when I was trying this I didn’t recognize. There were HubObjects too. So I seemed to get the wrong hierachy.
To fix this, I used the Rootobject.CATRigNodes which gets you the complete hierachy. In the next step I just kick out the objects which are not CATBones or HubObjects.
It may work with your approach but I’m not sure if the hierachy stays correct.
In every case the method that is implemented now, stores the correct hierachy so we don’t get in trouble with that.

Oh, I didn’t realize hierarchy is important… doh

Of course it is.

The easiest way to explain this is if you’d think of the way you’d normally skin a character. You wouldn’t start with the pinky. You normally start with the pelvis or somewhere in this area and move on along the bone hierachy.

To get more complex I’ve attached an image showing a schematic explanation what might happen.
In the first picture you can see four regions. Let’s say the hierachy is like this: Blue -> Red -> Turquoise -> Green.
This results of the skin weighting is shown in #2 (yellow falloffs). Blue influences some points in red, red influences some points in green and turquois. Allright.
If we make the hierachy like this: Turquoise -> Blue -> Red -> Green than the result looks like #3. You can see that the falloff is now for Turquoise and blue in the red region which might be okay if it was symmetrical but since red is higher than green the falloff from red is influencing points in the green region which would look awkward when we imagine a symmetric character.

For me this seemed to work out but I agree with you, if there is another method of not taking the hierachy into account I’d use it grateful.

So with this approach, hierarchy favours parent regions… I mean, parent region has it’s weight + the blending is going into the child region, right?

Wouldn’t it work if hierarchy as such is ignored and only pairs are used? What I mean by that is that there would be “equal partnership” between regions which would be associated with appropriate bone pair (again without caring for hierarchy, just pairs). Blending would then happen into both regions equally. But I have a feeling I don’t understand some key idea here

I have the impression that I did something like this before, but can’t remember why I didn’t include it. Should give it a try.

 eek

Nice, very nice – looks like you headed towards atlas skinning in the end.

http://www-evasion.imag.fr/Publications/2008/LHGT08/RR-6406.pdf

Oh no, he found it out

Yeah, you’re right. Basically I wanted to use the atlas – coloring method when I started back in 2009 but Max didn’t support the “Face-Coloring”-Feature which was the reason why I dropped the idea. It all changed when they included it in Max 2010 which I just found out a couple of weeks ago ^^
Anyways I have an idea (just a rough one) how to find the regions automatically using an equal method as they describe when it comes to finding the regions by defining if a “border edge” of that region had been hit or had not. So I just left some interesting stuff to research for the next weeks.

Thanks Mr. eek.

Page 6 / 10