Sign in to follow this  
Zouflain

Advice on learning 3d Procedural generation (of a human)?

Recommended Posts

One reason I write games rather than spend all my time hunting down the perfect one is because all the games I play lack customization. If I play a game - especially any kind of RPG (MMO included) - I want my character to be completely unique. That being said, any game I try to make incorporates as much customization as possible, like being able to change how tall or short, how (excuse the bluntness) fat or trim, or any other general feature of a character. Now, so far the only way I've seen how to do this would be to have a model file for every single possible combination, which is a ridiculous and space-consuming method. After doing some research, however, I discovered procedural generation. With it, I can either make a human shape completely from scratch (this seems extreme) or manipulate a "base" model to generate a distorted one, one which incorporates the attributes mentioned. This brings me to my point. How difficult is procedural generation of a human form? And as a complete novice (new to OGL, the API to which I adhere more tightly than superglue, and rather inept when it comes to programming logic (syntax is actually easy)), what should I study before attempting this (please, anyone considering a "you're so stupid go read more <without mention of the name of a worthwhile text...>", or "do 5000000 things that have nothing to do with this and ultimately is naught but wrote memorization <I can remember things after doing them once, and if not, by rereading what I did>" post, don't)? Finally, what methods are there for manipulating previously created models, ones that do more than simple horizontal and vertical scaling (if you want an example of what I am avoiding, see Phantasy Star Online's character creation - yes, you can manipulate appearance, but it's mostly horrible in appearance, and doesn't change proportions [tall is not lanky there, just bigger]). I don't want perfection, or even realism, but something that looks good, and I don't need a breakdown of the method - the name would even suffice so I could google search some information. If you want more elaboration I'd be glad to explain exactly what I want. And thank you to whoever takes the time to read this, and thanks again to anyone who replies.

Share this post


Link to post
Share on other sites
It may be easier to have a base model, and allow that to be modified. It is possible to generate a *humanoid* from combining basic geometric primitives ( spheres,cones,cylinders,cubes ), which are all able to be generated fairly easily, but the more subtle features of the human form ( esp in the face ) seem like they would be difficult to handle.

Share this post


Link to post
Share on other sites
Applying scale on specific axis of bones could realy change your model's height without just making it bigger, and can also be used to make a model look fat or skinny. Skin coloration isn't too hard to do.

Customizing the face can be done with morphing, it's not procedural but the blend can be customized. You could have bones in the face that control the position and size of feature. That would require alot of bones so I think it should be done once in software so you can save the vertex and used them already-skinned.

For hairstyle I can think of 2 options, the simple one is the same thing you do with gear, you can activate certain material, you scroll through all the air style and chose one. The other option is to use bones in the hair, you can chose the length of the hair that way. You could use procedural animation in the hair when customizing it and then freeze the vertex in place once it's ok, just like the face.

Share this post


Link to post
Share on other sites
Quote:
Original post by Zouflain
Now, so far the only way I've seen how to do this would be to have a model file for every single possible combination, which is a ridiculous and space-consuming method.
This is kinda how lots of games do it - "sparse morph targets." You have two targets, say "thin nosed" and "fat nosed", that only contain geometry for the nose region. They have identical topology, also identical to their section of the base model, only the vertices are moved. Then, using your parameters of choice, interpolate all the vertex positions between them and then interpolate the base model's vertices towards the result according to some predetermined weighting factor.

It's still artist-intensive in that the morph targets need to be created, but it doesn't consume very much space. You just model the "extremes" for each feature, and then interpolate all the results.

Share this post


Link to post
Share on other sites
First, I'd like to thank everyone for replying. This is why I love this forum, I actually get helpful information here (I've been to horrible sites before...). Thank you for taking the time to help!
Quote:
Original post by ahayweh
It may be easier to have a base model, and allow that to be modified. It is possible to generate a *humanoid* from combining basic geometric primitives.

I was fearing this, but considering it. If all else fails, I'll use the primitives (games don't need to be beautiful if they are fun). Thank you for this information.
Quote:
Original post by Kern_d
Applying scale on specific axis of bones could realy change your model's height without just making it bigger, and can also be used to make a model look fat or skinny. Skin coloration isn't too hard to do.

Curse my focus on rigid bodies (some of that wrote memorization I mentioned earlier). I'll have to learn everything I can about effective bone application (I know about it, but have little practice). Eventually I could use this, particularly for large regions which don't change much (a *stereotypic* tall person's arm's only get lanky, and wont need the method mentioned by superpig).

As for skin, isn't that just a matter of changing the texture color? Besides, tanning would be lovely, but ridiculous to include. I estimate 3 skin tones (5 in the extreme) would be more than enough to choose from (given all the other things you can customize), and wont need to generate tones.
Quote:
Original post by Kern_dCustomizing the face can be done with morphing...

For hairstyle I can think of 2 options... you can activate certain material, you scroll through all the air style and chose one. The other option is to use bones ...

For faces and hair, again I think superpig's method sounds most promising. I'll certainly be researching both, though. Still, I hadn't thought of using bones for hair and it is something to consider. Thank you for all this helpful information.
Quote:
Original post by superpigThis is kinda how lots of games do it - "sparse morph targets."

This is very interesting and I hadn't heard of anything like this before. I'll do some research, but this sounds extraordinarily promising. Thank you!

Share this post


Link to post
Share on other sites
And Sims2 ;) Well, i think it's actually the method superpig mentioned. And it's the easiest to make... A bit more work for artists and much less for the programmer.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this