I had to do this for 3D and it's a beetch.
The apprioach I took had to be based on DNA, it was a requirement of the game, so I started with a basic skeleton and modified it based on 'genes' in the DNA stream.
So genes could define the length of the bones, and a few other things, but just start by thinking of bones, it's a lot simpler.
Once I had my skeleton, I reparsed the DNA stream remapping the genes to body shape. So gene's for big ass, big mammory glands, etc.
These were used to deform a standard skin which was then mapped to the bone structure.
Once again I parsed the DNA stream remapping the genes to things like ethnicity, social standing, intellect. These were used to select a texture set that was then applied to the skinned mesh to create a character.
So technically it's only a partial procedurial system, you still need to generate the texture sets by hand. (I was working on generating them, but never got it quite right)
You would need to extend it to faces as well, I never got around to that, but the approach is the same. Have a look at a facial recognition tutorial, extract the key measurements from that, modify them by genes, procedural facial structure.
The real fun comes when you extend the system away from humanoid skeletons, breed horse DNA with human, dog with horse, crab with snake.
I got my code to the point where I could generate the skeletons for these chimera, and I was talking to Natural Motion about getting them to animate when my company went pointy bits in the air and I was forced to get a real job.
It's great fun seeing what happens.
I thought I should mention a happy accident in my code. Purely by chance I coded the DNA parsing in a way that worked out perfectly. I didn't want to waste processing time by applying mutually opposite genes, so I created a job list.
something like this.
This meant that the LAST gene became dominant.
When I did the breading I used the original DNA sequence and did it properly.
int a = rand()%1;
int l = rand()%8+2;
for (int i=0; i<l; i++)
So you get random gene sequences from each parent.
So if one parent has the SMALL_ASS gene even though both have the BIG_ASS gene, it's possible to get a child with the SMALL_ASS gene.
So the SMALL_ASS gene is recessive.
A really nice accident
Edited by Stainless, 27 August 2014 - 02:59 AM.