Awesome Tutorial! For those of you using Blender 4.0 like I am, do not check the "individual" box on the "Extrude Mesh" to get the result in the video; otherwise you will have a hair particle effect that looks like repeating columns sticking out. Also use the "Capture Attribute" in place of the "Transfer Attribute," since this is the closest replacement in Blender 4.0.
For the people who will get lost at the Transfer Attribute part, in Blender 3.4, this has been change to Sample Index to which you have to plug an additional Index node.
I discovered this when the face area node was introduced in the alpha builds, but never did anything beyond creating a geonodes tool for it. My generalized method was just duplicating the mesh I wanted the tension map on so it could work for any mesh, but I like the optimizations you have made and will definitely be fixing up my personal tree. Very nice tutorial.
Honestly, you are one of the greatest. Fell in love with this channel because of how you breakdown complex Hollywood type effects into simple processes.
Thanks so much for finally doing a tutorial about Chris Jones saying this is much as you could throw up about this because this is seriously the future hes made the best ones ever ....I promise I'll stay subscribed forever and sing your praises to everyone I meet
This is a clever way of doing this. Thanks! Instead of changing the geometry, you can use the same principle to mix textures, which opens up a lot of new possibilities!
And that should be way less demanding in terms of polycount, if the secondary texture you're going to reveal is a prebaked version of all the possible wrinkles! Wow, yours is very cool intuition!
@@peaolo yeah this method will explode you polycount in real moduls. I rember old threads where we were testing some addon which could this, sort of. Chris didn't like and it was indeed finicky. I believe he still uses maps for this trick, but I'm not 100% sure of that
You should be able to save a bunch of math by skipping the multiply by 200 and remap nodes and just dividing the NewArea by the BaseArea and subtracting 0.5 to get the correct range for the color ramp. If NewArea = BaseArea: NewArea/BaseArea = 1. Minus 0.5 = 0.5. If New Area > BaseArea: NewArea/BaseArea = More than 1. Minus 0.5 makes it between 0.5 and 1 (We'll ignore that there's a possibility for NewArea/BaseArea to be greater than 1.5 because the color ramp clamps everything to a 0-1 range) If NewArea < BaseArea: NewArea/BaseArea = Between 0 and 1. Minus 0.5 makes it less than 0.5
I'm sorry if it's a dumb question, but how do you do that? Do you get the NewArea with a NamedAttribute node? And the same for the BaseArea? And then use a Divide node and a Substract node? I tried that and didn't get the same result.
Hi! Great tutorial! Thank you so much! I have learnt much more than just making the wrinkles! One think I decided to change though, because I felt it would be too difficult to apply these nodes to other models. And I also wanted more outside control over the wrinkles. My solution: Connect the Face Area to map range directly (9:54), and take "From max" value to the Group input (through a multiplier by 0.0003). This input would control the spread of the wrinkles. The result of the map range goes to the ColorRamp, separate RGB and Area output. Additionally, I control the size of the wrinkles and the noise scale. Works very well and can be adjusted for any liking.
hey I'm trying to do it your way but running into few issues. Would love if you could explain this further, especially how to apply this to any object with a mesh! Tia!
great tutorial! Took way longer than 15 minutes, but I suppose that's just a skill issue on my part. got it to work with the cc4 wrinkle system, so now my characters can be more wrinkley than ever before!!:)
Wow! That's a fix. What amazed me most is how you can be so young, so competent at what you do and good at teaching. I have some specific needs so I'll look into you Patreon to see if there is something for me. If so I'll pay up!
Recognized your Estonian accent! Hea töö! I will try this technique soon! :) Just finished Blender Guru’s “Anvil tutorial”. Jätka samas vaimus ja häid pühi! :)
So effectively most of the function here is to compare the rest state of a face to the deformed state of the face. If the face gets smaller we generate a proportional output that gets multiplied by a noise map to generate our desired offset that gets applied along the normal map of the face. To be fair, Blender should really just have 1 function to check the size of a face between two points in "time" along the deformation process. (since we might have armature deformation, shape keys, deformation cages, and the geometry nodes, all intermingled in a fancy soup of confusion. One might be interested in taking the size at different points in that process.)
"To be fair, Blender should really just have 1 function to check the size of a face between two points in "time" along the deformation process." You can already do this, right now: 1. start your modifier stack with a Geo Nodes modifier that does nothing but output FaceArea to an attribute you call BaseArea 2. include all of your deformation modifiers 3. end with another Geo Nodes modifier that receives BaseArea as an input. This works because the BaseArea attribute will be the Area calculated in the very first node, and unchanged by the deformations. On the other hand, the FaceArea node will now compute the area after deformation, meaning that this second Geo Node will have access to both areas, allowing you to do whatever you want with the values.
@@LuisPereira-bn8jq Well, isn't that nice. Makes the whole "importing from a second object that stores our initial face sizes" thing a bit redundant since our object can just do that magic internally.
@@LuisPereira-bn8jqthanks for the idea. I lost my prebaked cash of a heavy cloth sim due to me duplicating the mesh and then Deleting the cloth sim on the duplicate. Blender then seems to delete the cache from the original as well, that feels like a bug. Should not be doing that
@@LuisPereira-bn8jq I was tinkering a bit about. But doesn't he use a base shape without movement to get the default face area. That way he can compare original vs new. If you add the base before in the stack, it would be basically be the same. He actually showed that when he duplicates the curve, because it has same GN setup, the out out is the same once you start moving it. Did you test your method?
Super cool! Have you already tried this to simulate wrinkles on elbows and knees, with muscle bulges? That should be a possible solution for that ongoing issue.
I noticed the whole video you're doing it on the cylinder and stuff... Can you make one specifically designed to show us how to make faces like that guy that made that human add-on for blender? 😎'I would seriously be like 🤠'yayyyyyyy
@@RomboutVersluijs 😎'you mean wrinkle maps right? I looked at human generators node groups and he seem to have some specialized wrinkle nodes haven't bought it yet but I'm going to...
😎'so badass man...you figured this one out and you're teaching it to us thank you ...his characters that he makes are the guideline I was measuring all mine to o
I suppose it is better to bake the initial colors into texture, so that you don't have to have the duplicate of geometry and recalculate additional object every frame
Having waded through this to the end, thank you for posting! But it does kind of confirm my view that visual programming like this is not a good paradigm once one wants to do anything complicated and is actually less ergonomic than an API, and I say this having written a node-based application myself. You always ends up almost having to fool the nodes to do what you want them to do, as with the stage where we're duplicating the object to use as a base state, which is pretty much kludge territory.
@@BadNormals It's really a pity there's no simple way to get a base state from the mesh; Blender knows what it is internally, but it's not exposed apparently?
Funny how I thought about doing this a few days ago and then you post a tutorial about it! I will try to find a way to do it by myself and then compare with you're way, it might be fun
Because all this video is a continuous improvisation of the author. And Chris Jones uses displacement maps and drivers and the grid is much easier and can be animated without the death of the computer)
In a pure moment of cluelessness and total absence of judgment, here I was, expecting to see someone putting their face in a blender to get wrinkles, somehow.
Looks like the Transfer Attribute node was replaced with the Capture Attribute node instead which is similar but without the index input, and it's just black. After going to the subtract color step, it still has color before it's moved Edit: I just had to go to Group > BaseState and connect the Area output
I figured out what I was doing wrong, but there are some innerworkings that your Patron tutorial helped me see as an issue that I had to work out. You were mostly right. It DOES work and it can be used as a mask. It also DOES work for any mesh. It isn't exactly the same system, however the changes are worth looking into your Patron to see them.
Id love if u also shared a blend file for these tuts. As not everyone dosnt have the time or wants to set these up themselves, but rather use the tool. id even pay you
14:00 Instead of mixing the colour-ramped values, should you not rather have mixed the untransformed numerical values of the face areas? And perhaps even divided instead of subtracted them (with 1 meaning stretching)?
Chris did this without geometry nodes. Dude is a wizard.
chris did it in blender?
@@nirvanbarketaian Yep
he use scuplt maps as height easy man
Who is Chris
@@orxanr5955 blender magic man, search UA-cam for Chris wrinkles model.
Awesome Tutorial! For those of you using Blender 4.0 like I am, do not check the "individual" box on the "Extrude Mesh" to get the result in the video; otherwise you will have a hair particle effect that looks like repeating columns sticking out. Also use the "Capture Attribute" in place of the "Transfer Attribute," since this is the closest replacement in Blender 4.0.
For the people who will get lost at the Transfer Attribute part, in Blender 3.4, this has been change to Sample Index to which you have to plug an additional Index node.
And does it work for 3.5??
:3
Blender and its users never fail to amaze me. Great tutorial.
was literally about to start looking into this subject after watching chris' latest vid, then u posted :)
Perfect!
I discovered this when the face area node was introduced in the alpha builds, but never did anything beyond creating a geonodes tool for it. My generalized method was just duplicating the mesh I wanted the tension map on so it could work for any mesh, but I like the optimizations you have made and will definitely be fixing up my personal tree. Very nice tutorial.
Honestly, you are one of the greatest. Fell in love with this channel because of how you breakdown complex Hollywood type effects into simple processes.
Damn, I would never think to use Index as a vector for texture coordinates...
Nice!
Man you just saved my life with this video! Thank you so much man, keep up the good work!
One of the reasons that i love youtubers like this is that he not only knows tons of information, but is willing to share and democratize it.
Thanks!
Thanks so much for finally doing a tutorial about Chris Jones saying this is much as you could throw up about this because this is seriously the future hes made the best ones ever ....I promise I'll stay subscribed forever and sing your praises to everyone I meet
The quality of this UA-cam channel is unparalleled. And thanks, I had a wonderful day!
This is a clever way of doing this. Thanks!
Instead of changing the geometry, you can use the same principle to mix textures, which opens up a lot of new possibilities!
And that should be way less demanding in terms of polycount, if the secondary texture you're going to reveal is a prebaked version of all the possible wrinkles! Wow, yours is very cool intuition!
@@peaolo yeah this method will explode you polycount in real moduls. I rember old threads where we were testing some addon which could this, sort of. Chris didn't like and it was indeed finicky. I believe he still uses maps for this trick, but I'm not 100% sure of that
Our hero returns when we need him most
At your service
You should be able to save a bunch of math by skipping the multiply by 200 and remap nodes and just dividing the NewArea by the BaseArea and subtracting 0.5 to get the correct range for the color ramp.
If NewArea = BaseArea: NewArea/BaseArea = 1. Minus 0.5 = 0.5.
If New Area > BaseArea: NewArea/BaseArea = More than 1. Minus 0.5 makes it between 0.5 and 1 (We'll ignore that there's a possibility for NewArea/BaseArea to be greater than 1.5 because the color ramp clamps everything to a 0-1 range)
If NewArea < BaseArea: NewArea/BaseArea = Between 0 and 1. Minus 0.5 makes it less than 0.5
Thanks, your way gave more realistic results
I'm sorry if it's a dumb question, but how do you do that? Do you get the NewArea with a NamedAttribute node? And the same for the BaseArea? And then use a Divide node and a Substract node? I tried that and didn't get the same result.
My brain fried a bit from all this mind blowing stuff, but I think it was worth the loss of a few useless cells ;)
Thanks a bunch !
I think many people have been waiting for this tutorial) Thank you!
Hi! Great tutorial! Thank you so much! I have learnt much more than just making the wrinkles!
One think I decided to change though, because I felt it would be too difficult to apply these nodes to other models. And I also wanted more outside control over the wrinkles.
My solution: Connect the Face Area to map range directly (9:54), and take "From max" value to the Group input (through a multiplier by 0.0003). This input would control the spread of the wrinkles. The result of the map range goes to the ColorRamp, separate RGB and Area output. Additionally, I control the size of the wrinkles and the noise scale. Works very well and can be adjusted for any liking.
hey I'm trying to do it your way but running into few issues. Would love if you could explain this further, especially how to apply this to any object with a mesh! Tia!
great tutorial! Took way longer than 15 minutes, but I suppose that's just a skill issue on my part. got it to work with the cc4 wrinkle system, so now my characters can be more wrinkley than ever before!!:)
Bro please do muscle sim through soft body sim for human or animal character
Yes. Please do this
yea it would be handy
Yeah bro please usually you need Houdini and we've seen you do great stuff without Houdini
Por favor 🙏
yeeesss!!!! pleeaaassseeee
The way you play GeoNodes just opened my mind! Thank you so much!
hands down the best demonstration of how to set up a tension map I've ever seen in any software
this is INSANE 👁️👁️👃👃👁️👁️
Wow! That's a fix. What amazed me most is how you can be so young, so competent at what you do and good at teaching. I have some specific needs so I'll look into you Patreon to see if there is something for me. If so I'll pay up!
words can not express how grateful I am for this video
That starting animation is terrifying
Holy fking shit...mind blown, this is way too amazing and advanced, the person who invented this technique is a fucking genius !
Recognized your Estonian accent! Hea töö! I will try this technique soon! :) Just finished Blender Guru’s “Anvil tutorial”. Jätka samas vaimus ja häid pühi! :)
Amazing! i love wrinkle maps
So effectively most of the function here is to compare the rest state of a face to the deformed state of the face. If the face gets smaller we generate a proportional output that gets multiplied by a noise map to generate our desired offset that gets applied along the normal map of the face.
To be fair, Blender should really just have 1 function to check the size of a face between two points in "time" along the deformation process. (since we might have armature deformation, shape keys, deformation cages, and the geometry nodes, all intermingled in a fancy soup of confusion. One might be interested in taking the size at different points in that process.)
"To be fair, Blender should really just have 1 function to check the size of a face between two points in "time" along the deformation process."
You can already do this, right now:
1. start your modifier stack with a Geo Nodes modifier that does nothing but output FaceArea to an attribute you call BaseArea
2. include all of your deformation modifiers
3. end with another Geo Nodes modifier that receives BaseArea as an input. This works because the BaseArea attribute will be the Area calculated in the very first node, and unchanged by the deformations. On the other hand, the FaceArea node will now compute the area after deformation, meaning that this second Geo Node will have access to both areas, allowing you to do whatever you want with the values.
@@LuisPereira-bn8jq Well, isn't that nice.
Makes the whole "importing from a second object that stores our initial face sizes" thing a bit redundant since our object can just do that magic internally.
@@LuisPereira-bn8jqthanks for the idea. I lost my prebaked cash of a heavy cloth sim due to me duplicating the mesh and then Deleting the cloth sim on the duplicate. Blender then seems to delete the cache from the original as well, that feels like a bug. Should not be doing that
@@LuisPereira-bn8jq I was tinkering a bit about. But doesn't he use a base shape without movement to get the default face area. That way he can compare original vs new. If you add the base before in the stack, it would be basically be the same. He actually showed that when he duplicates the curve, because it has same GN setup, the out out is the same once you start moving it.
Did you test your method?
Thats a really complex way of working out polygon size change when if you know the the extremes of size you can base map changes from these extremes.
killer tutorial. thanks so much for the detailed breakdown
Underrated blender channel
I have been waiting 3 years for this video
I love your videos. Super easy to understand, super clear, and most of all. so creative. Thank you for making videos
The best and most interesting GN Tutorial to understand the Power of Blender GN fields.. Thanks a lot for sharing with us yout Knowlege!
Super cool! Have you already tried this to simulate wrinkles on elbows and knees, with muscle bulges? That should be a possible solution for that ongoing issue.
HE KNOWS TOO MUCH
i didnt understand a thing but still liked the tutorial for pushing the possibilities of what we can do in blender
You are just simply a genius!
i’ve wait for it for longgggggggg time bro
I noticed the whole video you're doing it on the cylinder and stuff... Can you make one specifically designed to show us how to make faces like that guy that made that human add-on for blender? 😎'I would seriously be like 🤠'yayyyyyyy
I think it won't be ideal, because uses super high poly. That would explode the polycount
@@RomboutVersluijs well eventually you have to use this on a human face if you're going to advance as a VFX artist right?...🙂
@@toapyandfriends No, it can be done with maps and looks better than his end result.
@@RomboutVersluijs 😎'you mean wrinkle maps right? I looked at human generators node groups and he seem to have some specialized wrinkle nodes haven't bought it yet but I'm going to...
@@toapyandfriends Nodes would be even better perhaps. His models are insanely good in terms of details.the rigs are out of this world
Yus! This is what I needed. I love sculpting wrinkles by hand, but it is time consuming.
This link from Geonodes to Shader editor is very important! I didn't know it! Thanks!
Super tutorial: Deep, easy to follow, full of smart solutions. Fantastic as usual.
😎'so badass man...you figured this one out and you're teaching it to us thank you ...his characters that he makes are the guideline I was measuring all mine to o
I'm sorry, I shouldn't be doing this but, the thumbnails is so funny, it made me laugh so much 😂😂😂
I suppose it is better to bake the initial colors into texture, so that you don't have to have the duplicate of geometry and recalculate additional object every frame
What's easy about those wrinkles?? XD
Great video, man!!
Life changing thing, if you type .05 this is equal to 0.05
Thanks man I was searching for this for years
Having waded through this to the end, thank you for posting! But it does kind of confirm my view that visual programming like this is not a good paradigm once one wants to do anything complicated and is actually less ergonomic than an API, and I say this having written a node-based application myself. You always ends up almost having to fool the nodes to do what you want them to do, as with the stage where we're duplicating the object to use as a base state, which is pretty much kludge territory.
It is true, luckily geometry nodes are constantly developing and some things from this video can already be done better.
@@BadNormals It's really a pity there's no simple way to get a base state from the mesh; Blender knows what it is internally, but it's not exposed apparently?
Funny how I thought about doing this a few days ago and then you post a tutorial about it!
I will try to find a way to do it by myself and then compare with you're way, it might be fun
Thanks for your awesome tutorials!!
Macs are underrated for blender
Mindblowing!
Bro this is insane
Even Loreal would be proud of how quickly you remove wrinkles!
pure genius... thank you
Your the best kid. Keep up the good work. Your going far.
I geuss they say, we learn something every day 💛
Wtf, this is so creative! Thank you for that one!
Just brilliant! Absolutely brilliant! Your tutorials are master classes. THANK YOU! Dg
Niko from Corridor Digital! THE PORES STRETCH!
Yes! haha
this is beautiful
BRILLIANT TUTORIAL!!!!
Thanks a lot! From the moment I saw that video of the wrinkled face I wished I could learn how to do it :D
Your tutorials are amazing. You are a master :D
I am at 5:11 and wondering from the start "why not use displacement maps?". It saves computing time drastically.
Because all this video is a continuous improvisation of the author. And Chris Jones uses displacement maps and drivers and the grid is much easier and can be animated without the death of the computer)
@@cg-denis yes, actually what matters in the video for the effect is just the second half of the procedure
Stretch maps used to be a feature in blender but was removed. I believe there’s actually an addon for stretch maps.
Excellent
Brilliant. Thank you!
You are breathtaking!
That's exactly what I need. Thanks
Love to see a method to create a wave similar to ones in Surfs Up in blender and isnt a sim.
Pure gold
This is really great for making clothes
Brilliant mate
In a pure moment of cluelessness and total absence of judgment, here I was, expecting to see someone putting their face in a blender to get wrinkles, somehow.
It's time to use it on my characters, thank you
Chris Jones very good artist
He truly is.
Chris jones somewhere - I'm feeling disturbance in force....
Aaaya ce khey de qualité
genius
I usually scale the normal (not mix it) also you can subtract the mid-level from hight and multiply by scale (I made a node for reuse like this)
Incredible
I hope you know you're a genius and I hope it never goes to your head.
Looks like the Transfer Attribute node was replaced with the Capture Attribute node instead which is similar but without the index input, and it's just black. After going to the subtract color step, it still has color before it's moved
Edit: I just had to go to Group > BaseState and connect the Area output
excelllent, love your work
“Sponsored by l’Oreal Paris”. Make me lol on the bus 😂
plz make tutorial about camera cinematic movement
Awesome bro! More geometry nodes videos please 🚀
I figured out what I was doing wrong, but there are some innerworkings that your Patron tutorial helped me see as an issue that I had to work out.
You were mostly right. It DOES work and it can be used as a mask. It also DOES work for any mesh.
It isn't exactly the same system, however the changes are worth looking into your Patron to see them.
Pls, camera x axis rotation -10º :,D. Great video as always!!
just woaow... thanks for that
Id love if u also shared a blend file for these tuts. As not everyone dosnt have the time or wants to set these up themselves, but rather use the tool. id even pay you
They are perfectly available on my Patreon.
@@BadNormals Takktakk, så ikke noe informasjon om det ^^
thanks bro
14:00 Instead of mixing the colour-ramped values, should you not rather have mixed the untransformed numerical values of the face areas? And perhaps even divided instead of subtracted them (with 1 meaning stretching)?
holy shit this is smart asf