3DSmax Skinning, converting several Skin Modifier to One,

Hi,

For facial skinning, where a vertex weight is shared by several bones, skinning by layers is very useful.
For exemple:
1 Skin modifier for the casual rig,
1 Skin modifier to weigh the neck Tendons (transversal weighting,coverage multiple Bones),
etc…
(Great feature of the 3DSMax Stack)

My problem is to export the data to a Game Engine, only the last Skin modifier was exported.
If I apply a SkinWarp, only the last Skin Modifier was converted.
If I extract the data with the Skin Utilities, only the last skin Modifier was taken.

Do you know a Tool, a Script to convert a stack of Skin modifiers to one ?

Thanx !

Best Regards,

Walter

can you extract several copies (one for each skin mod) and then in bottom up order re-import them back on to a single skin mod? (maybe clear out zero weights first before doing so?)

Hmm, doubt that would work Brad, the imports will replace each other.

walter, while that feature is nice for 3ds max, it has at least one big problem, in addition to the issue with ‘collapsing’ all the weights: most game engines support 4 (sometimes 6) max influences per vert, and with multiple Skin modifiers, you have no good way to monitor this (your exporter will usually truncate the extra influences). So I would definitely not suggest working this way, at least not exporting this way, because you won’t have WYSIWYG from app to game. Though as an intermediate it should be fine, and you can tweak anything that needs tweaking.

You’d need a Maxscript to combine your Skin modifiers, it wouldn’t be too difficult. It’d be something like:

[ol]
[li]Fill up an array for all verts in first skin modifier, of bone names and influences[/li][li]For each remaining skin modifier, add unique names/influences to the subarray for each vert, or add to the influence if that bone exists in the subarray already.[/li][li]Delete all but one skin modifier, and make sure it has all bones added to it and a high enough Max Influences value.[/li][li]Convert your bone names to bone ID’s based on the new skin modifier.[/li][li]Normalize the weights in your subarrays (this is easier than turning normalize on and off- there is an array normalization function in arrOps.ms (http://tech-artists.org/hg/tao_official/mxs_lib/raw-file/tip/fn_arrOps.ms)[/li][li]Use skinops.replaceweights to replace the weights for each vertex[/li][li]And you should end up with one good skin modifier.[/li][/ol]

OK, Thanks for your answers !

I’am agree with you Rob,
and your solution are definitively not in my Skills.

The ideal tool for this was to paint vertices weight relatively to a Bone, a zone of influence between 0 to 1.
Facerobot have a tool such like this, I think is useful, especially when a vertice was influenced by several Bones.

PS.: Sorry for my poor English…

That Rob described in #3 sounds like exactly the way to go. I’ve written quite a lot of Skin wrangling scripts in the past, that doesn’t sound like such a hard thing to do.

If I’ll get some spare time at home this week I’ll give it a whack…

Walter, I don’t really understand what you mean by “paint vertices weight relatively to a bone”? E.g, what’s the difference between that and standard weight painting? I’ve had the Face Robot demo here at our office a while back, but can’t remember anything what you’re describing.

Would you like to use just one skin modifier for each bone? (Sounds doable but managing the stack becomes pretty tricky…)

SamiV.

Dovetailing off Rob’s points…

For each bone influence on a mesh, you have a vert that stores that weight.
Adding multiple skins (if it was even supported in-engine) would be the same as
copying the entire mesh’s skin data per modifier. You would be better off adding
extra control bones to one skin than adding the extra skins.

Skin data is very much like texture verts in terms of how the data is managed,
with each influence represented by a discreet set of verts…so 3 bone influence
yields 3 copies of the mesh verts.

It seems like a doomed process…but I like the idea of weighting in layers.

Sorry about the delay,

SamiV, the process is simple and you can easily test it.
For a Facial Skinning:

In my first Skin Modifier,
there are all the Bones of the Facial Set-Up with the classical ponderation to 4 bones by vertice.

In my second Skin Modifier, for the additionnal Neck Tendon (I take the same previously exemple),
I add all the same Bones from the previous Skin.
I set all the vertice to 1 to the root Bone (the Head Bone) and I add weight for the NeckTendon Bone.
It’s easy to manage, there is only 2 Bones sharing my value. The NeckTendonBone is weight relatively to the Head.
If I play with the Set-Up for animate, there is no problem to 3DSmax.
The problem is to normalize the Datas for export to a Game Engine :wink:.

For imaging the process, If the Skin Datas was an RGB image, I blend in “Overlay” mode the 2 Skin Datas :x:.

I am posing the problem for this technique when I have to realise a Character Set-Up for crowd characters.
With the traditionnal Set-Up for the animation,
and an additional chain of Bones for characterisation (changing the silhouette of a character, such Like Fat, Thin, etc…).
To save a Hearthache, the solution of the two Skin Modifier was a good option, unfortunately only in Max for the moment…

Hi folks! I am new in this forum, :p: but I find it VERY interesting for my activities!

I have a similar problem. I am working with MAX to produce Clothing mesh for iClone Reallusion products.

A single layered clothing has been no problem, but as the need has expanded to several layer architecture, I an having difficulties to prevent poke through from the inner layers into the exterior ones.

Curiosly, when the layers are very close to each other, poking does not occur. To skin the outer layers I use the Skin Wrap modifier, based on the inner, basic character skin layer. The modifier converts well to a skin modifier, because iClone is a game engine based program so it will take only ONE skin modifier per mesh, to work.

Even mesh which is aduplicate of an inner layer slightly pushed out (about 2.0 to 4.0) starts letting the inner layer to poke through. Only very lightly pushed duplicates were OK and do not get punched.
This requires a LOT of touch up with the weight paint tool, and sometimes it makes it worst.
Any ideas on this? :?:
Mike