How to reshape a character mesh with sliders?

Started by
3 comments, last by StarShipPyro 6 years, 10 months ago

Hi all!

I'm wanting to create a simple low poly character editor for a game. Ideally, it's just complicated enough so that the player can create a variety of unique characters with unique roles without spending too much time in this editor. It's important that these characters, while simple, are able to change and age over time so it's a necessity that I implement a mechanism that allows them to easily be reshaped(from young to old, weak to strong, etc). The gameplay will be sort of a top-down 3d village/survival/god sim where the player will have more personal interactions/connections with individual characters(the focus of the game is AI). So changing eyebrows/lip sizes isn't necessary. Just the overall body shape is important for reshaping since the characters will appear small in game.

The problem I'm having is the lack of documentation or even information in general about character morphing in games. I've tried a dozen different searches and all I've come up with was already made software like daz3d or gamer forums for how to make the best looking character in a particular game. I haven't been able to come up with any resources on how to do this in my own game which is strange considering this should be something commonly done in games.

This is a quickly made Unfinished concept of what I'm wanting to do. Disclaimer, I'm no artist but even I could and will do better on designing the actual system. This is just to quickly give an idea of my goal.

[attachment=36327:CharacterCreationConcept_01.jpg]

So, with all that said, I'm hoping someone here can provide or direct me to some information and algorithms that can get me started doing this myself. I really need all the help I can get. Thanks in advance!

Advertisement

I think you will require a handful of techniques to pull this off.

The first one is modularity. You would probably use this for any/all properties that are discrete and non-continuous. For example your base character mesh can be nude and bald and then the hair-style and garments sliders simply overlay different modular accessories (hair and clothes) on top of that base mesh. Probably you would have a different base mesh for each gender and subtype (e.g. zombie-female vs human-male)

You can do the same with the face - the base mesh is faceless and you just have individual face meshes (or face textures) that you apply.

For properties that can change smoothly and continuously such as age and weight you need to use parametric techniques. This means your shaders and mesh-generation algorithms need to use these properties as parameters and make the necessary adjustments.

Hair colour is an easy example - just pass that colour to a hair shader for drawing the hair mesh. Skin colour is similar, just pass that to the shader/s which render your (nude) base mesh and your face mesh to use as the skin colour. Alternatively do skin the modular way by matching the selected skin colour to to a library of possible skin textures.

Fat could be handled in a variety of ways. Perhaps you use skeletal animation and there are some bones around the waistline that can be programmatically pulled out/in depending on how fat the character is. Or perhaps the vertices of the belly are parametrically generated in the first place to (e.g.) lie on the surface of a sphere - the fat slider just adjusts the radius of that sphere.

Age - it depends how you want to represent that on your character. Perhaps it alters the hair colour to be more white. Perhaps it represents the opacity of some wrinkles textures that are applied to the face; for younger characters the wrinkles are more translucent and harder to see.

These are just examples of course. To a large degree it depends on how you wish to convey these properties on your character and whether they are discrete or continuous properties. There's also (always!) tradeoffs between having to create lots of different assets for hair/bodies/etc versus a (potentially) lower-quality parametric adjustment/generation of a single mesh. Also the technologies you use can make a difference, in one of the examples above I mentioned using skeletal bones to adjust the size of the belly, but maybe you don't want to use rigged meshes. So there's a lot of factors to consider when doing this.

Thanks for the response, dmatter. But I realize now that I made my topic too broad. So let me narrow it down to what I'm really wanting to know.

I've used bones in the past to reshape things but I've found it can get messy on more complex models like a character. Lets just ignore all the sliders except for the fat and muscle slider and say I want a tall "beanpole" to be scaled to the opposite end of the spectrum to look like "The Mountain" with these two sliders. This will be very difficult using bones and materials alone. I'm working with low poly models but I still feel there has to be a better way.

I mentioned daz3d and there are others like Morph3d and Reallusion as well as games like Sims3. I would like to know what techniques are used in these examples that seems so sophisticated.

I sort of have ulterior motives for getting the best practical technique I can down now since I plan to do a lot more of this in the future.

I think I have a better idea of what you are after now...

Lets just ignore all the sliders except the fat and muscle slider and say I want a tall "beanpole" to be scaled to the opposite end of the spectrum to look like "The Mountain" with these two sliders. Obviously, this would be very difficult using bones and shaders alone. I'm working with low poly models but I still feel there has to be a better way.

One technique that springs to mind is called morph targets.

You model a skinny body and a fat body with the exact same number of vertices and interpolate the vertex positions between the two models accordingly. The results are usually pretty good.

You can blend in multiple dimensions too as long as you model their combinations at the extreme ends. For example to blend between skinny<->fat as well as low-muscle<->high-muscle you need 4 meshes: a skinny-low-muscle body, a skinny-high-muscle body, a fat-low-muscle body and a fat-high-muscle body. Then you blend between all four according to the sliders.

This does involve creating lots of models to cover the combinations, but for a game like Sims that's not a problem.

You might also find this video interesting, about the making of the Sims character designer.

Thank you again, dmatter. That video was very helpful.

I think I've found the terminology I was looking for. Morph targets (blend shapes) as you described and deformation Maps (which I think I'm most interested in) that was used in sims 4.

This topic is closed to new replies.

Advertisement