September 16, 2006
As John said, I may be going crazy working some of this stuff out. Skin by its nature is very complex and essential had lots of complexities: first off, skin is bound by epidermis, fat, ligiments and bone. It does slide to a degree, but its more of a ‘sticky slide’ than running a ball under a carpet for example. Get the inital idea of skin is easy ala firing rays through a mesh to hit a surface and doing a simple distance check to force the verts to conform.
Problem comes in that first you need an origin for the rays to start from, in Maya this is essentially you soft bind, skin wrap using implicit objects – this is easy to copy in max but the issue arises from the ray offset cast, in that the further the deform object pushes the skin, the more the verts slider around, ie the distance between the rays isnt uniform, infact its a ramp.
Secondly firing rays through a deforming object against every vert of your test mesh is bad. If you mesh is 100,000 faces then max would essentially die and infact it crashes. Having to compute rays through every vert on every frame is not a good idea. So some catching of whether a ray is needed is needed.
So thats the first thing is, effiency of calculation – secondly is volume preservation and matrix transforms. For example i have a plane, and a sphere underneath, I fire rays from the center of the sphere to hit each vertex of the plane. If the distance between the vertex and the center of the sphere is short than the intersect ray and the center of the sphere you force the verts to follow else you leave them where they are. Problem comes in rotation of the lot, and preserving the volume. If the plane was a cylinder and the sphere pushed the verts above far enough, the underneath would have to follow assuming you want to keep volume. Its all a little tricky.