Thank you Chris.
If I have another question, I will send you a email.
have a nice day man.
Thank you Chris.
hey guys there is a new addon for better drivers functionality for blender https://gumroad.com/l/rbf-drivers i bought yesterday i am still testing it and learning to use it, there is a discord channel for getting support as well, so this driver addon is specially good for rigging such as for getting complex shape keys to work for a complex deformation in a character rig…
Ha, these are on my radar as well for one or two weeks now, would be nice to get some experience updates from your side Michael! (btw, have you seen HumGen3d.com?)
yep i saw that, seems like a nice tool for blender, but personally as an artist, i think its too procedural for creating characters,but is useful for making several characters for something detailed enough (not like those shitty low poly people scans in the internet) and save time in production if its for a short film or something, but still i prefer the traditional way of doing character modelling over that…
Yeah, but for hobbyist noobs like me, aside Chris’ rigged bases, a good way to learn pros and cons.
(And till now we don’t know how detailed these models/features are…)
And nary a tension map in sight. I started getting somewhere with @shteeve’s add-on, but along with a creasing problem (which I now suspect is due to linear vertex group falloffs - see my closing paragraph below) I found I couldn’t get enough sensitivity out of it without the “spread” variable discussed in the comments on RCS. So I’ve reverted to plan B for the time being, which up until recently was just a crazy untested theory.
Plan B consists of the same dual height map setup I was using before, but instead of activating parts of the images automatically using tension, I’m using masks driven directly by the shape key values.
The maps are baked from sculpts, and there are two of them, to account for wrinkles that cross over other wrinkles, e.g. vertical frown lines vs. horizontal raised-eyebrows lines. There may need to be a third, to cover special cases like “worry”, which diverts the direction of the lines into a different shape on the forehead.
For each shape key there’s a mask image that reveals a portion of one of the wrinkle maps. I’d have used Vertex Colors instead of images, but for some reason there’s a limit of eight (and I’ve already used up four of them for other things). Behold the spectacular majesty of the “Nose Sneer L” mask:
In the nodes below, the Nose Sneer L shape key is driving the Value property of a Math node, which changes the intensity of the Nose Sneer L mask image. This is sent on to a MixRGB node where it’s combined with the other masks. Here it’s being mixed with the Right Nose Sneer, which uses the same mask image flipped horizontally by scaling X by -1.0 in the Mapping node. This minimises the number of mask images needed, and automatically mirrors any mask edits to the other side of the face.
The face consists of a whole battery of these nodes daisy chained together and mixed with Wrinkle Map A, and then run into a displacement node that’s mixed with another battery of nodes controlling Wrinkle Map B:
The hardest part of this was mixing the masks in such a way that they don’t cancel each other out, double up where they overlap, or deliver the wrong displacement Midlevel value. Key to this was to use Screen blend modes to mix the masks, and to add the A and B maps together after displacement instead of beforehand. It’s not quite perfect though, and no doubt there’s a well established “proper” way that someone will care to enlighten me about.
Clearly this setup is a lot more cumbersome than tension maps, and I haven’t even started on finger joints and other bendy body bits yet. It’s not quite as organic as tension maps either (something as simple as this would be a challenge), and I have to approximate the areas of influence rather than relying on tension to automatically generate them for me “correctly”.
On the other hand it works in vanilla Blender (even 2.79), and there’s more control over the wrinkles, even if it’s less accurate. Ultimately though this is just a stopgap, until tension maps are a workable option.
In preparation for the wrinkles I had to refine the shape keys and reconfigure parts of the rig, as well as redo the eyebrows so I could see where they were in relation to the wrinkles, since the hair particles had lost their symmetry and started to stray (along with the eyelashes). I revitalised the skin as well, since it had lost its lustre at some point.
And there’s something else you might have noticed…
This is an interior “skull” structure onto which the head is shrinkwrapped, and onto that I can sculpt bony landmark definition for the skin to slide over (the features are exaggerated somewhat for the purposes of this test).
I’m gradating skin thickness by using vertex groups on the exterior object, however there are creases which I think are caused by the linear falloff of the vertex groups between polygons. So far it’s subtle enough that I can get away with it (with the help of some surface texture), but I have further plans for this that might not be so forgiving…
This is just mind blowing, what you are actually doing !! I can not find anyone doing this that realistic !
I just have a little question, how do you make the wrinkle map, with sculpt ok, but how ?
This is amazing! Your attention to detail is a thing from another world, but I’m honestly more impressed by your patience and discipline than anything else…
Going through all that process looks so painful! I definitely don’t have the patience for it
I think you should use this example as yet another reason to ask the devs for a proper implementation of tension maps natively in Blender, maybe with a thread on the devtalk forum to ask them directly there? Something like this, which is not a corner case or some strange use of the tool should be possible without such complex workarounds, specially if Blender is meant to be used in production, right?
Hey, Im sorry but this is way too good to be true. We need some form of tutorial on this because it is actually mindblowing. You really outdid yourself again on this one chief.
Oh boy that sure is a lot of textures… I’m sure a better/ more optimized technique will be discovered in the future
You continue to blow my mind with this project! Just…such creativity, not just artistically, but in the general way you solve problems and come up with neat solutions. And you do it, all whilst making us smile. Thank you!
Fantastic work Chris, it looks amazing. Can you preview those wrinkles in the eevee view-port while doing the animation?
this is what i need to know… it will completely change my world LOL
Blender is used in production every day in hundreds of projects. It just don’t have every and each imaginable tool in the world, but it doesn’t mean it can’t be used in production. Obviously if your production is to make an hyperealistic animatable fully functional human model, yes, it has it’s limitations. Having said that, tension maps would be very useful indeed
Great work Chris, very excited about this!
Following is a quote from an article about creating Young Will Smith, (thought that it might be an inspiration)
"3D World Feb 2020, The Weta Issue"
“That’s the way we were planning to do things on this show, too,” adds Williams. “What changed was that one of our team members in the shader department said, ‘I’ve been thinking about thisproblem and I think I might have a better solution…’”
That solution was to create a system that eschewed the life cast approach and instead accurately simulated – or, more correctly, synthesized – the pores. A life cast would provide an accurate representation of the pores on top of the skin, but not from a 3D point of view. It also depended on scanning detail. A synthesis approach, in which the pores were effectively ‘grown’ using flow maps,
was used instead to get extra detail. “It was a system set up in Houdini with several steps,” details
Williams. “One step simulates the pore size, another step modifies the existing model to create the
shapes of the pores, another one creates the furrows, and then yet another step actually starts
applying all the displacements into the surface – the furrows and the microtextures into the surface.
It also takes in the granularity of the surface so that when you go to simulate the surface, it knows what
it’s doing. “Once the high resolution mesh is created we use that persimulation, but after the simulation
we take it down into a texture map for render points. Otherwise we have to try to figure out how to
mesh a nine million tetrahedral mesh into the already existing high resolution model.” The benefits of doing this work were two-fold. Firstly, it provided a set of pores to use as a base shape. Secondly, the process gave the exact shape of each individual pore in depth, i.e. in Z. “We’d previously gotten the
X and Y of the pores correct because we had it from a scan, but the flatbed scanner doesn’t understand the height of a pore,” notes Williams. “What it now gives you is this beautiful curvature of
every pore so that you actually get much more interesting highlights on the skin. “Then, as we are animating the face and skin, you get the correct response in the simulation, particularly when the skin is
compressing. In other words, the skin folds and collapses, and it folds and collapses along certain lines on the face. This was something that we couldn’t achieve any other way.”
Tension maps can be used for so much more than just wrinkles on a fleshy character, though!
I think it’s damning for the potential of some projects that there’s so little intersection between mesh deformation and materials. Tension maps would open up a whole world of effects, like quickly using them to generate foam on the wake of the surface of water that was deformed with dynamic paint.
If they could generate quickly enough to be run realtime, there’d be WAY more insane uses than just wrinkles.
If anything, wrinkles are the added bonus of a proper implementation of tension maps.
But even still, it’s pretty damn demoralizing. I’m working on an animated short with three semi realistic human characters right now. There is no way in hell I’m gonna be able to generate the sheer volume of assets necessary to copy Chris’s workflow for wrinkle maps in a viable timeframe. The guy who made the tension map addon sorta up and dropped it. Sucks.
The two wrinkle maps are baked from separate sculpts made in Blender.
Not my best work… I haven’t properly investigated the new sculpting tools yet, and it was only a test after all.
I tried three methods for baking the height maps: Bake from Multires, a trick that uses Shrinkwrap, and the old Blender Render baking in 2.79. 2.79 did the best job, followed by the Shrinkwrap technique. Bake from Multires on its own was not good at all.
Well technically it is a regression (as is baking by the looks of it…), but I wouldn’t want to nag, as I’m sure their hands are full with with higher priorities.
Better would be for the limit on the number of Vertex Colors to be removed. Better still would be tension maps.
Well, I caught a glimpse of it working in the few moments before my GPU remembered it’s not really compatible with EEVEE, threw a panic attack and crashed Blender… so I would say yes.
Thanks for sharing - I’d like to try creating the skin procedurally one day (which I’m already doing simplistically for the high frequency bumps), but in the interim I have an idea that including stretched versions of the pores in the wrinkle maps and dissolving them with the general skin texture might be enough to create the impression of animated pores stretching, from a distance at least.
Will the wrinkle maps setup be included in the Face Rig in gumroad or the Face Rig with wrinkle maps will be a different asset with a different price?
So I so many question, feeling very stupid today
- How do I make someone fat/ skinny? All those shapeshifting things you show in the video, I have no idea where to find that.
- When do you think you can post textures? I would really like to get the full package
- I only have the main body rig, if I get the face rig as well do I still have to merge everything like in that tutorial?
Great work overall! I would be open to helping with the documentation if you like as soon as I figure out how to do this. This could be a real step forward for Blender as a whole, characters are the last important part missing in my opinion.
If this somehow turns into an addon, I’ll gladly buy it. I figure this could be paired with characters whipped up in Daz or CC3… I’d be eager to see it all combined in Blender =o