My own little MakeHuman using only Blender's tools

My goals are to have a system like MakeHuman using only Blender’s tools for the morphing of a base mesh character while simultaneously morphing different levels of detail meshes of that character. Also I need a way to move the bones of an armature with the changing joint positions of the base mesh. This would allow me to have the perfect skeleton pre-loaded with animations for my newly morphed character.

My solution for the bones is the following:

Note: Parent child relationships will not survive this process, so any animations you do will have to be done without them, either that or after you’ve created your unique character you will have to go back to the armature and re-parent everything.

Steps:

  1. Parent base character mesh to armature and weight paint it so everything moves well.
  2. Make all the animations you need for the armature, as well as all the bone constraints you need (not all bone constraints will make it through the process).
  3. Un-parent the character mesh and delete armature modifier.
  4. Break the armature up into individual bones. You can do this by just duplicating the armature and deleting every bone but one over and over again until you’ve got all the bones in the original armature as separate objects.
  5. Remake the bones origin at the base of the bone where it should be.
  6. Create vertices in the character mesh that share the same position with each bone origin, i.e., if you had 23 bones in the armature you should have 23 vertices in the character mesh that are in the same place as each bones origin.
  7. Vertex parent each Armature(individual Bones) to the vertex they share the same space with.
  8. Create a shape key library in the character mesh, making sure that the vertices the bones are parented to get moved along with the joints in the mesh. That way the bones will be positioned correctly when you’re done.
  9. Mix the shape keys to get a “unique” character.
  10. Join all the bones to make it a whole armature again. Try to join them all to a bone that doesn’t have any bone constraints on it, because you can keep some bone constraints throughout this process.
  11. Un-parent the newly created armature with all the bones from the character mesh.
  12. Parent the character mesh to the armature using the option “with empty groups”. Then your done.

Try my test file and follow the instructions in yellow. Tell me what you think I’m doing wrong, or how to better do it, thank you. :slight_smile:

https://drive.google.com/file/d/0BxexQjh8HjMSTHBIRndXdEp6RWs/edit?usp=sharing

*** Moderation ***
Action:

  • moved from Game Engine Support and Discussion
    Reason:
  • belongs to Blender

Hi,

from what I understand this sounds like a perfect job for the mesh deform modifier. It’s used to deform a mesh through another that acts as a cage (a custom shaped lattice if you wish).
Then, I don’t quite understand the “applied” part.

Hadrien

When I said applied I just meant I needed to have the modifier on the object be applied after it followed the vertex movement of the morphing object, which I guess is an easy matter with most modifiers.

I tried the Mesh Deform Modifier, but it doesn’t seem to be working for me, I don’t know if I’m using it right or not. I’ve also tried the Shrinkwrap Modifier which gets good results until the high poly morphing object goes too far away from its basic shape.

The thing that’s worked the best is making vertex groups on the low poly object and then making those follow an empty via the Hook Modifier, and then vertex parenting the empty to a vertex thats in the same position as the vertex group in the low poly object. But this solution would be far too time consuming and I would need to have 800 or so hook modifiers on the low poly follow object, which would probably freeze my computer or Blender.

Thanks for trying to help Hadrien, I must be doing something wrong with the Mesh Deform Modifier.

I made a .blend example of what I’m trying to accomplish with all three of the things I’ve tried so far, so if anyone would like to take a look at it and tell me what I’m doing right or wrong I would really appreciate it. It might also give you a better idea of what I’m trying to do. Thanks!!!

Oh and I couldn’t have the mesh deform “bind” in this file because it was making it too big to upload so I do know you have to press that.

Attachments

VertexMimicA.blend (1.67 MB)

The deal with the mesh modifier is that the cage has to completely enclose the mesh it is deforming. Your two meshes overlap so much that neither can be used to deform the other.

I looked at your file and it looks as if you are trying everything BUT an armature. Why? This would be simple to do with both high and low poly meshes parented to the same armature - there’s no limit to how many meshes can have the same armature as a parent an then they would move in perfect sync. You could apply it at any time…

SoI made a little file for youwith a mesh modifier to show you how it would work, and the cage of the modifier has an armature to deform it with which is faster than making shapekeys, but I want to point out that the mesh deform step is extra and unnecessary because the armature can deform both target meshes directly. However it’s there so if you delete the armature you can shapekey the cage instead as maybe you want to use shapekeys.

PS. I made the cage very low res to keep size down, you probably want to up the res a little bit…

Edit: changed the file to have a copy of both objects being deformd by an armature right above the cage deform.

Hi DruBan, thanks for trying to help, unfortunately this does not solve my issue. I should have been more clear about what I intended to do with this in my first post, sorry about that, hope you didn’t work too hard on that file. I need much more precise mimicry from the low poly mesh, vert for vert almost. And I cannot use bones because I would have to have 800 or so for the low poly mesh, and my computer doesn’t like that idea at all.

I am making a game, and I basically want to do have a Makehuman type system using only blender. So the high poly mesh would be my base mesh for character creation. I would make unique characters by mixing the shape keys. But I need a couple of low poly versions that would morph with the high poly version for that particular characters level of detail. This would make it much easier for me to make all the people in the game because I wouldn’t have to model every single character.

I can’t really use Makehuman for this because their high poly base mesh is too high poly for what we need, and their low poly meshes are too low poly, especially when it comes to facial articulation with either shape keys or bones. So I need something right in the middle! Also Makehuman is lacking in other parts but I won’t go into that.

I’ve been playing around with it and it seems that if I first do shrinkwrap on the low poly, that encloses it in the high poly mesh( like you said), and then I just put the mesh deform modifier on the low poly as well and it works! But further testing is needed.

But thanks again for helping you guys if anyone has any other ideas or more questions on what I’m doing please post! Thanks!!!

I have found a weird bug. After I applied the shrinkwrap and deform mesh modifiers on the low poly model ( in blue) I when into edit mode and tried to do some proportional editing and noticed that only one side of the mesh was deforming. Go ahead and try pulling vertex I hav selected on the blue mesh and see what I mean.

How did this happen?

Attachments

Proportional_Editing_Bug.blend (913 KB)

Edit mode/toolbar/tools/options/turn off x mirror

Shoot, I thought it might be something simple I was overlooking. Thank you!

I’ve update my first post, please have a look.

Here’s the file: https://drive.google.com/file/d/0BxexQjh8HjMSTHBIRndXdEp6RWs/edit?usp=sharing

Keep this up - I’m super interested in it! I like using MakeHuman, but their clothes never seem to work right, (is it because I’m on a mac?) and the modeling options… i’m not too fond of them.

Beau - I’m glad your interested, I think this is a worthwhile project too!.. Obviously.

I love MakeHuman but like you said their clothes don’t always work, I have a pc so I’m not sure it’s a mac thing. The ears on the high poly model are also not that realistic, and their genital options are kind of a joke, but my main problem is with their low poly models topology. They should have something in between the low poly and the high poly.

I think it would be great if we could get a system like MakeHuman running entirely in blender. It’s much more comfortable to pan and zoom at the model you’re morphing, plus you have a ton of rendering and particle options right there. I think if we could find an easy enough way to do it in Blender lots of artists would build various libraries of different kinds and share them with the community.

We could have MakeDog, MakeFeline, MakeLizard, MakeZombie, etc. And the artists making them could just put in a couple of materials with textures on them for mixing and matching. This in turn would help promote Blender and make quality models more prevalent, and that would make it easier for newbs to get started with animations and game development!

There was a fellow in these forums a while back making a morphable human with sliders and fully rigged if I’m not mistaken. I agree that Blender should have something like this. It would allow people to just open up the program and start animating their character.

I know there’s the CookieFlex Rig

There’s some great methods for transforming the body’s height, weight, etc. I don’t know about the clothing, I haven’t messed around with it enough.

Good luck - I’m definitely following this thread; I wish I knew enough to help out.

Wow Beau, thanks for bringing this to my attention, I had no idea this existed! It’s to bad they are not realistic characters, otherwise it seems to fill a lot of my needs. But after looking through the file a bit I still don’t understand how they get the bones to follow the shape keys! I don’t think they did it with the python script but I’m not a coder so I’m not sure.

Can anyone tell me how they made the bones follow the shape keys?

It’s not a good idea to put clothes on a figure and try to animate it for any length of time. The proper way to do this is to make a clothed figure, in which there are no layers of mesh covering others. ‘Jacket, shirt, undershirt, skin…’ - that never works.

If you need figures that do things with their clothes on and then take their clothes off and do things (I understand there’s a growing market for that:rolleyes:) you need a clothed mesh and an unclothed mesh and hopefully the transition animation (taking clothes off the unclothed mesh) won’t be too horrible.

DruBan - I see why it might be complicated having a jacket mesh over a shirt mesh over a body mesh working with bones and shape keys not to mention it adds a lot to the poly count. But I don’t understand why it would be bad to have a body mesh and a head/neck mesh a little bit underneath the body mesh so that I can swap them randomly and add them to the scene.

I do not plan on doing anything in this game where the character needs to take their clothes off, but that doesn’t mean others don’t want or need that for legitimate (non pornographic) reasons. Can you be more specific on why that never works? Thanks.

Safetyman - I looked at all of that users threads and couldn’t find anything about B - Human or anything else that had to do with morphing for customizable characters.

Everybody - I’ve made some progress on the base character mesh and would like peoples opinion on whether this is good for rigging facial animations. I’ve made two face meshes, the one on the left side looks like it might be worse than the one on the right for eyebrow raising. What do you guys think?

Also I’m having trouble bridging the hand without adding more geometry to the whole body. I know that’s more a thing for the modeling forum, I just thought I’d throw it out there.


Here’s the body mesh so far. Everything look like it would be good for articulation?