Person Modelling

Im doing a multiplayer game where by the users can customise their look ( eyes, mouth , hair ). there are likely to be 20 or so players in any scene all customised.



Before starting modelling, would like to check on the best way to allow for the person customisation



One idea is to break the person model up into sections, so

  1. a model of the head without mouth, eyes, nose
  2. a model of the eyes
  3. a model of the mouth
  4. a model of the nose



    then, within jme each part can be a shared geometry batch, whereby if 3 people have the same nose - only one copy gets sent to the GPU



    the skin colour is also customised, so the texture of each will shared.





    is this the right way to approach this, or can someone suggest an alternative please





    edit - btw - there will be bone animation too


Sounds nice in theory, but I think if you'd want to put this in practise with many different faces, it would be very limiting. Eg. faces don't just have different eyes, the eyes are also in different places, same for the nost, general shape of the head, etc.



It might work better for bodyparts though… (torso, legs, arms etc). Faces are very hard to do… and "segmenting" them like this will only make it harder.

llama said:

Sounds nice in theory, but I think if you'd want to put this in practise with many different faces, it would be very limiting. Eg. faces don't just have different eyes, the eyes are also in different places, same for the nost, general shape of the head, etc.


I do agree with you, and will need some rules to define compatible foreheads with eyes, compatible eyes with cheeks etc.


Normally you would set up bones or morph targets for the face, and allow for blending between them. So the actual topology (number of faces, connection between faces) would always be the same for each face, but you could make the chin be anywhere between a very pointy version, or a very broad version, for example. AFAIK that is what is done by all the games I've seen that allow for different faces. I'm not sure exactly how you do it most efficiently from the hardware point of view, but you can try out the effect in a modeller like blender. I'm pretty sure vertex shaders could do the effect very efficiently, but I don't know what you do as a fallback. Obviously you can also allow for a bit more customisation by having different textures for the base skin, then adding different eyebrows, facial hair, iris textures, tattoos etc. Then finally you can do hair just by different separate meshes. I agree with llama that the "identikit" method could be a bit of a nightmare, and it would only be necessary if you want different faces to have massively different features, as in different numbers of eyes, anything else can be handled by just deforming the same geometry.

oblivion provided the kind of character customization you need. it was almost entirely done with vertex  shaders. you only switched models when you changed the race or the hair.