I was wondering what could possibly take 50 minutes to explain on a part 1 of a tutorial, but if anything, you've condensed months worth of unanswered questions into a single video. This is a goldmine! Thank you so much!
This is my 3-4th rewatch of the series. I've never fully grasped everything, but this is by far the most eloquent comprehensive blender deep dive I have ever found. Perhaps this is the time everything finally sinks in, let's go!
This is probably the most well researched and highest quality series I’ve stumbled across for 3D content … thank you so much for making content like this, especially for free 🙏
Hearing this guy describe how you'll search for months through forum posts to figure out how to do one specific thing, which all say that it's impossible, only to find the actual answer in some academic article from like 2009, and then deciding to not even do it that way anyway cuz there's a better way to achieve the effect you were going for, is a whole ass fucking mood.
7:34 you didn't realize it at that moment, but in regards to things that use masking or normal map manipulation, never leave the color space of those types of textures as sRGB(or gamma space colors) and use non-color (linear color space) instead.
I found the same issue when I tried to write a natural look lineart shader with Open Shading Language in cycles. Your explanation is detailed and clear, very good job!
10:30 "I didn't even know what to google to read these," It looks like Linear Algebra often referred to as "Vector Math" in Blender. In preparation for my CS degree I had to take Linear Algebra. It's very useful to know some basic linear algebra when working in Blender, especially if you dip your toes into Geometry nodes. It is essentially doing math with groups of numbers all at once, which obviously comes up a lot when vectors and positions in 3D space are all groups of 3 numbers.
Thanks so much. I'm so glad I found this, was terribly interested in WHY all this poor calculation occurs and the research you've done is commendable! Keep up the good work
It's all vector math. So that's what you would need to look up. You can think of a vector as a line between 2 points, but also note it has directionality. If you have points 1 and 2 each in 3d space, going from point 1 to point 2 is not the same as going from point 2 to 1, and therefore those two vectors would be opposite. Dot products try to answer the question "how alike are these two vectors?" To whit, perhaps the most common use of a dot product is to calculate the angle between two arbitrary vectors. The answer to the dot product question will always be a simple number. In dot products, order doesn't matter. 2 times 3 is 6. 3 times 2 is 6. The angle between the x axis and y axis is 90. The angle between the y axis and x axis is 90. Cross products result in a 3rd vector. If you take two vectors and stick their "from" points together, the cross product will return a vector that is perpendicular to both vectors. E.G. if you have a vector that is parallel to the x axis, and you have a vector parallel in the y axis, the cross product will be the z axis vector. In cross products, order matters. x cross y is z, but y cross x is -z. Cross product essentially answers the question "which vector is the most unlike these two other vectors." The answer is, the one that's most orthogonal. The symbolism preceding the one with • and x symbols are simplified notation for that vector math.
Yup, good summary! Cross product gets used a lot for TBN based things, and of course dot product is all over the place in Normals math. Will be using a lot of both when building the various GeoNodes and Shader node groups.
Excellent content as usual! I'm guessing though that it will not really be possible to have the ideal 'recalculate the difference' version in a game engine, we'll have to deal with deforms breaking baked normals.
Actually its looking like there might be some options, just not sure what the performance will be like. I'm talking with a few people who know more about game engines about it. If nothing else, the Object based Normals can work in a game engine and fill that role. So i'm not sure what form it'll take, but we should be able to figure out something!
Finally here! The next video! Got hooked on this project since last one and it's just awesome! I do have a concern about it, though: Will it be usable with Unreal Engine? Anyways, awesome content! Thank you very much for sharing all this.
when i use data transfer to my anime head everything is great UNTIL i use the shapekeys of the expressions, it then gets all messy and i dont know to fix that
Yes, the Normal Transfer modifier comes after the shapekey in the order of operations. It can get complicated because you're changing the shape. If you use a intermediary copy of the mesh like shown in the 2nd and 3rd video, you can control this better because that copy of the mesh could have no shapekeys or different ones.
So about this Data Transfer modifier, if you have a clean mesh, why not use that instead of the bad geometry mesh? If you have mesh that's got bad geometry how do you make a clean mesh that has the same shape that you can copy data from? Or does the source mesh have to have same number of faces and shape at all?
A mesh that can give the shading you want won't necessarily be the same shape visually as you want. The rest is covered in the next video of the series.
@@aVersionOfReality I tried adding a UV sphere and subdividing it and then using it as a data source for the normals on my anime character, but I got an error relating to a mismatch in number of polys. Apparently, it's not that simple.
@@aVersionOfReality I tried it again just now. Made a UV sphere, subdivided it twice, and selected my character object, added the DataTransfer modifier, with my character selected, used the eyedropper tool to select the sphere. This time nothing happened. Shadows look the same, no error. Also, I can't find a "topology transfer" or a "nearest face" option in that modifier. There are check boxes for vertex data, edge data, face corner data and face data. Topology mapping only has Max Distance and Ray Radius. I must be missing something!
I was wondering what could possibly take 50 minutes to explain on a part 1 of a tutorial, but if anything, you've condensed months worth of unanswered questions into a single video. This is a goldmine! Thank you so much!
Thank you!
This is my 3-4th rewatch of the series. I've never fully grasped everything, but this is by far the most eloquent comprehensive blender deep dive I have ever found.
Perhaps this is the time everything finally sinks in, let's go!
not only a 50 min video but 9 videos around 45m - 1h15 about normals. that's crazy
This is probably the most well researched and highest quality series I’ve stumbled across for 3D content … thank you so much for making content like this, especially for free 🙏
You're welcome! More to come :)
Hearing this guy describe how you'll search for months through forum posts to figure out how to do one specific thing, which all say that it's impossible, only to find the actual answer in some academic article from like 2009, and then deciding to not even do it that way anyway cuz there's a better way to achieve the effect you were going for, is a whole ass fucking mood.
Don't worry, its all just one big vibe check.
I finally understand why my model's shading looks so weird. THANK YOU!!!
I’ve been searching for a video like this for the longest time. God bless you bro.
absolute legend, cracked the research papers and blogs explaining all the high level math and actually made the knowledge approachable
Only 5 minutes in but I can already tell this is going to be _incredibly_ interesting and helpful in the future. Thank you so much for this!
1:40 and my man is already hitting all the key notes 🥰
7:34 you didn't realize it at that moment, but in regards to things that use masking or normal map manipulation, never leave the color space of those types of textures as sRGB(or gamma space colors) and use non-color (linear color space) instead.
It depends on what space they were baked in. Its not good to use sRGB though, yeah.
Thanks for sharing!
This solved many questions I had about how vertex normals were supposed to work and why the shadows were so weird. Pretty nice, thanks!
Thank you for taking the time to make these videos
Damm What a Legend
I found the same issue when I tried to write a natural look lineart shader with Open Shading Language in cycles. Your explanation is detailed and clear, very good job!
This is the stuff of legends, truly incredible work
Fantastic work again. Your videos have helped a lot!
10:30 "I didn't even know what to google to read these," It looks like Linear Algebra often referred to as "Vector Math" in Blender. In preparation for my CS degree I had to take Linear Algebra. It's very useful to know some basic linear algebra when working in Blender, especially if you dip your toes into Geometry nodes. It is essentially doing math with groups of numbers all at once, which obviously comes up a lot when vectors and positions in 3D space are all groups of 3 numbers.
Yup! I had actually done a lot of Linear Algebra within the blender context, but without knowing any of the terms or symbols 😅
This is a great project, thank you so much for sharing!
a blessing from the lord. thank you
Thanks so much. I'm so glad I found this, was terribly interested in WHY all this poor calculation occurs and the research you've done is commendable! Keep up the good work
This is wizard shit and you're doing god's work.
you are my king.
It's all vector math. So that's what you would need to look up.
You can think of a vector as a line between 2 points, but also note it has directionality. If you have points 1 and 2 each in 3d space, going from point 1 to point 2 is not the same as going from point 2 to 1, and therefore those two vectors would be opposite.
Dot products try to answer the question "how alike are these two vectors?" To whit, perhaps the most common use of a dot product is to calculate the angle between two arbitrary vectors. The answer to the dot product question will always be a simple number. In dot products, order doesn't matter. 2 times 3 is 6. 3 times 2 is 6. The angle between the x axis and y axis is 90. The angle between the y axis and x axis is 90.
Cross products result in a 3rd vector. If you take two vectors and stick their "from" points together, the cross product will return a vector that is perpendicular to both vectors. E.G. if you have a vector that is parallel to the x axis, and you have a vector parallel in the y axis, the cross product will be the z axis vector. In cross products, order matters. x cross y is z, but y cross x is -z. Cross product essentially answers the question "which vector is the most unlike these two other vectors." The answer is, the one that's most orthogonal.
The symbolism preceding the one with • and x symbols are simplified notation for that vector math.
Yup, good summary! Cross product gets used a lot for TBN based things, and of course dot product is all over the place in Normals math. Will be using a lot of both when building the various GeoNodes and Shader node groups.
Excellent content as usual! I'm guessing though that it will not really be possible to have the ideal 'recalculate the difference' version in a game engine, we'll have to deal with deforms breaking baked normals.
Actually its looking like there might be some options, just not sure what the performance will be like. I'm talking with a few people who know more about game engines about it. If nothing else, the Object based Normals can work in a game engine and fill that role. So i'm not sure what form it'll take, but we should be able to figure out something!
this is amazing! now I must convert this knowledge into a game engine
Finally here! The next video! Got hooked on this project since last one and it's just awesome! I do have a concern about it, though: Will it be usable with Unreal Engine?
Anyways, awesome content! Thank you very much for sharing all this.
Geonodes methods itself won't be. But things we make with this method and bake to textures can be used anywhere.
Does make sense :D thanks for your answer!
@@Arckanda I've put a note in the next video about this issue too. It's something we'll talk more about as we get further in.
@@aVersionOfReality Suddenly I am even more excited... Which, tbh, I didn't know would be possible :D
@@Arckanda Well now I'm worried about living up to expectations! XD
Wow this is really interesting and useful keep up the good work man ( and you earned my subscription)
this is insane lol i love it you're a legend
when i use data transfer to my anime head everything is great UNTIL i use the shapekeys of the expressions, it then gets all messy and i dont know to fix that
Yes, the Normal Transfer modifier comes after the shapekey in the order of operations. It can get complicated because you're changing the shape. If you use a intermediary copy of the mesh like shown in the 2nd and 3rd video, you can control this better because that copy of the mesh could have no shapekeys or different ones.
@@aVersionOfReality thank you!
So about this Data Transfer modifier, if you have a clean mesh, why not use that instead of the bad geometry mesh? If you have mesh that's got bad geometry how do you make a clean mesh that has the same shape that you can copy data from? Or does the source mesh have to have same number of faces and shape at all?
A mesh that can give the shading you want won't necessarily be the same shape visually as you want. The rest is covered in the next video of the series.
@@aVersionOfReality I tried adding a UV sphere and subdividing it and then using it as a data source for the normals on my anime character, but I got an error relating to a mismatch in number of polys. Apparently, it's not that simple.
@@basspig You must have it set on Topology transfer, which is only for identical meshes. Use Nearest Face Interpolated. The next video is about this.
@@aVersionOfReality I tried it again just now. Made a UV sphere, subdivided it twice, and selected my character object, added the DataTransfer modifier, with my character selected, used the eyedropper tool to select the sphere. This time nothing happened. Shadows look the same, no error.
Also, I can't find a "topology transfer" or a "nearest face" option in that modifier. There are check boxes for vertex data, edge data, face corner data and face data. Topology mapping only has Max Distance and Ray Radius. I must be missing something!
@@basspig Once you choose Custom Normals in the face corner area, there is a drop down for mapping type.
36:28 you mean subdivision not subsurf right?
Its Subdivision Surface, so it gets called both. Sorry if that's confusing!
12:25 "its not even that complicated" 😰 what?
awww $h!t here we go again