   Animated characters: using seperated body parts
  Hey,Question. We have to make some animated characters. One of the questions is whether we should make it as one model, or split it up in parts. For example:- body- feet- hands- head (&neck)Splitting up has some advantages. You can seperate the textures as well, replace the head, and of course, tear of limbs. BUT... we don't want gaps of course. How to keep the seam-vertices together? I could think of dynamically welding:- Assign the vertices that have to welded with a (host) body. Basically this is an array of vertex-pairs- Animate the seperated models as usual- Loop through the "weld-vertices". Move them towards their host vertices, or move both of them to each other.But that might take some time. What is the common way to model characters these days?Rick   
Hey,Question. We have to make some animated characters. One of the questions is whether we should make it as one model, or split it up in parts. For example:- body- feet- hands- head (&neck)Splitting up has some advantages. You can seperate the textures as well, replace the head, and of course, tear of limbs. BUT... we don't want gaps of course. How to keep the seam-vertices together? I could think of dynamically welding:- Assign the vertices that have to welded with a (host) body. Basically this is an array of vertex-pairs- Animate the seperated models as usual- Loop through the "weld-vertices". Move them towards their host vertices, or move both of them to each other.But that might take some time. What is the common way to model characters these days?RickSkinned meshes I suppose... The mesh can be animated in the vertex shader, and only one draw call is required.   ;  That;s how we currently do it. But a single skinned mesh doesn't have the advantages of easily swapping / removing parts...   ;That;s how we currently do it. But a single skinned mesh doesn't have the advantages of easily swapping / removing parts...You could use multiple meshes with the same skin, using multiple meshes doesn't have to result in gaps between the meshes.   ;  In old quake3 days the model has been simply divided into 2 separate meshes, but this was clearly visible. The problem is not the welding of vertices. You could define interface vertices, i.e. an arm-body loop where the arm and body must contain the same vertex loop. Or you could define this kind of interface vertices and connect them with a tri-strip. But an issue could be the bone weights. Some techniques to define bone weights depends on the context in which the vertex exists. I.e. take blender, take a skinned model and apply the bone-heat skinning tool. Then separate the arm from the body resulting in two models, but keep the same skeleton. Now redo the bone-heat skinning and you will see, that the weights around the arm/body has been changed. Skinning such model, even manually, could be quite tricky.If you just want to rip off limps, you could do this almost without model manipulations. In L4D2 a bounding volume around wounds in combination with a projected texture are used to mask missing body parts. Take a look at "Rendering Wounds in L4D2" for more detailed information. There're although some nice slides about variations in skin appearance. You can find it over here.   ;Sorry, it has been a while since I did animations. I'll have to upgrade the system, but want to make a good start @MussiYou mean like: calculate the skeleton first. Then just use it for 1,2 or more meshes in exact the same way you would do for a single mesh? Come to think about that... that should work, why not? Not sure if there would be tiny precission differences though... Anyway, one of the ideas was eventually to make a sub-skeleton. Thus a head or hand has it's own set of animations & skeleton. In that case, using a single skin wouldn't work of course. I have to ask the animator (which we don't have yet  ) what he/she prefers though.About the bones... I was thinking about using a sub-skeleton. Let's say we have a hand, and the rest of the body. Basically these are initially handled as two completely separate objects. Each with it's own material, visual mesh, skeleton, and animation set. The main body has a hand joint that tells where to place the wrist. Like an offset position/rotation matrix. The hand animations are performed locally, then later on the whole object is multiplied with the parent bone from the main body.The final step would be welding a range of assigned vertices. In this case, the wrist vertices that would connect with the arm. I'm not sure, but I guess the vertices around the wrist don't need to multiple weights. I think it should work, just not sure if it's the fastest way. Quite a lot shooters have the head separated from the body so they can make multiple badguys out of the same body. + shoot of heads without needing complex tricks. Then again, the neck often sticks inside the clothes, so they might not toweld anything at all.Limbs...Downloaded those slides a time ago, but never took a look in detail yet. But if I understand you right, the limb in L4D2 is still attached, but simply hidden (and the projective texture makes the wound texture where otherwise a hole would be). Hidden... by rendering those bounding volumes to a special buffer, then let the final shader test whether the pixel should be visible, a wound, or it's default material?Hmmm.... in combination with removing the physical part of the body (the primitives used for a ragdoll), that could work pretty well. Smaller guys can keep their original physics, but some of our monsters should become quite large. Don't want to collide with invisible legs then!Cheers!   ;You mean like: calculate the skeleton first. Then just use it for 1,2 or  more meshes in exact the same way you would do for a single mesh? Come  to think about that... that should work, why not? Not sure if there  would be tiny precission differences though... Anyway, one of the ideas  was eventually to make a sub-skeleton. Thus a head or hand has it's own  set of animations & skeleton. In that case, using a single skin  wouldn't work of course. I have to ask the animator (which we don't have  yet  ) what he/she prefers though.[/quote]You can have a single skeleton playing different animations for different body parts, there's no need to breakup the skeleton for that. I guess you could to take some load off the programmer, but I don't think that'll please your animators .;  No idea whether an animator prefers to work on one big skeleton, or sub skeletons. Both have some (dis)advantages. Either how, I think I have an idea how to do it now. Also got to have a better look in those L4D2 papers. Masking a body part sounds way easier than doing all kinds of modelling tricks.Thanks guys!   