# Posts tagged ‘Skin Simulation’

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.

I was thinking today about skin simulation, and theorising what the key parts you need in a system – what you get for free and what costs. For one, sliding of the skin and volume transformations in world position space come for free. In my mind there result of the same system. What you dont get for free is rotation of the volume in world space, and tension of the skin i.e tickyness.

As firstly you need to store cached vectors, i.e a reference to a base set of vertexs. And these base set need essentially dynamic properties: whether there stationary or sticky about there world trasnform. Most system i take it need to cache a set of positions for the verts of the mesh to rely on, be it with normals or rays.

From writting, i can see a possibly viable solution to sliding and even transformations including world space rotations. You just need to transfrom the matrix of the vectors in an array of sorts. Sticky skin is tougher and even tougher still is what the skin does in the gaps, between the muscles under the skin. Ontop of this does it sag? jiggle? does skin weighting add to the result.

In my mind it should be one solution where you can decide either by paint ala ILM’s tool, whether the vert is sticking, slding or creasing.