Geometry normal and Texture normal is not the same. One reflects world normal and the other reflects object normal. Reflection coords can be used with environment mapping to create lookup "fake" reflections. Object coords can be used with an external object as basis but is unaffected by modifiers. Generated coords can be controlled with texture scale property and will be affected by some modifiers. Could have used vector/modulo and vector/fraction to describe how they both react to negative coords, sometimes important. Incoming normal is great for refraction, allows blurred refraction on thin walled surfaces without bending light infinitely. Very true, some are not useful for texture coordinate but for masking purposes. Note that UVs doesn't have to be strictly for texture coordinates, it's just two data channels you can use for whatever you need.
Thanks for commenting! I've pinned this so hopefully people read it through! I meant to make a note about geometry normal not looking at object rotation when I was editing but I totally forgot! Using empties to drive object coordinates is a really useful texturing method (I use it a lot for applying decals). I should have mentioned that and the Use Instancer tickbox that lets instanced objects adopt the UV map of the base mesh. Definitely important about the modifiers effecting some of these too!
Why are you the first person who actually managed to clearly and simply explain this on TH-cam? .............. i've been scratching my head for months about how this all works, now i geddit ........ many thanks!
Hi, great explanation. This is the only tutorial I found that explains the coordinate system fully. Can you make a follow-up tutorial giving an example use case for each of these coordinate systems? Thanks again.
this is far and away my favorite tutorial series. everything is explained really well and easy to follow. and it makes me want to play around in blender even more. thanks for making these
THANK YOU Erindale! I have watched a lot of Blender tutorials during the last 18 months. This is by far the best I have seen. A very concise, clear, understandable, explanation of texture coordinates. Until now, I have never really fully understood all of the options. Now I do. Looking forward to watching more from you. Thank you so much for sharing your knowledge. THANK YOU! Dg
Thank you very much, Erindale! One thing I do not understand: Having the "generated" output uses the bounding box as reference. But still, when moving the entire mesh in edit mode, the colors change, although the bounding box remains exactly the same.
great video, thank you! I kind of wished you would have gone into a bit more detail on the pointiness node. Having said that this video greatly helped me understand and gives me the information to play around with pointiness myself and figure it out, so great thanks!
Hold on, you're that guy from Twitter *and* the 2.93 splash screen guy? I hadn't touched Blender in a year, came back for 2.93 just because the splash screen was so pretty. Well done :)
can you refer an in depth explanation for Understanding when to use the different Texture Coordinate node inputs especially the normal, camera ,window, reflection. Amazing presentation, Deep and wide! -thank you.
Hm I'm not sure I know any specific resources for it but normal is mainly for procedurally affecting the surface normals and also I use it for masking a lot (taking grass away from sheer surfaces for example). Camera, window and reflection are really useful but mainly used in more complex setups like parallax occlusion mapping or raymarching along with the view dependent sockets on the geometry node (like incoming). Those sockets used to be used more for doing world shaders to correctly map hdris but you can just do spherical mapping for that anyway and the Environment Texture we have now does it automatically. They're all really useful sockets though so do play with them. You can get some really nice non-photoreal (NPR) styles from using them
Great overview! I'm curious tho, why is your cube so sharp? My principled volume cube is all jagged, esp when moving my view in the viewport, like at @4:50 .
A really informative video - Thank you Erin. Have you got a video at a more basic level? Is the texture space, when you unwrap always 1m square? And you can change texel density or texture scale to determine the resolution - per meter square?
Hi Maurice! It's not always 1m when unwrapped, that's just dependant on the size of the texture and how the mesh has been unwrapped. You can always adjust this with a mapping node to scale it. If you want a good solution that might feel a bit more like Twinmotion then you might want triplanar/box mapping. In this case use an Input> Geometry node and take the position socket (this is world space where 1m = 1m) and plug this into your image texture vector. Then on the image texture you can set the mapping from Flat, to Box. Now you'll get a triplanar mapping based on world space. You can always add a mapping node between them to adjust as per your texture requirements
@@Erindale Thanks Erin. I think that's what I've been doing? I unwrap using 'Cube Projection'. It appears to always come out at a 1m on the mesh? I've been using a Texture Coordinate node, but your Geometry node seems easier to understand!
I definitely should have mentioned these! The object dropper allows you to pick a different object to be the origin of your object coordinates. If you use something like an empty it's going to let you position decals, rust stains etc more manually. Super useful! The "From Instancer" check box is for when you're using instances. This just means that you can put an object on every vertex or face of another object. The From Instancer let's you use the UV map from the Instancer rather than each small instance of an object having it's own small UV map. It's not something you need to worry about unless you are instancing though!
Quite possibly! Although it's good for people to get some context before they get into theory like this. It might go over people's head if they haven't used the coordinates for anything yet
Hi, great work dude!!! really appreciate your work it helps me alot, but I still don't get it about the reflection part, I've tried to think with theta concept you mentioned in your video but it still confused me because every time I projected the theta concept into each surface it's not like what it should be, like when the one surface goes reflected like the theta concept you mentioned but the other doesn't, may you elaborate it in the more specific concept about reflection, or is there anything you can recomend to me to more understand reflection? thank you
The documentation only says: "Reflection Uses the direction of the reflection vector as coordinates. This is useful for adding reflection maps. You will need this input when using environment maps." Perhaps you're having issues with non-normalised vectors? Or perhaps you need to look into the vector transform node to change the vector space? I'm not sure what it is that you're doing there to test it
@@Erindale owh I just want to more understanding how reflection is works, anyway thank you for the explanation, I was understood now how reflection is works
I have one question, how do you get it to show the colors like you were using? I can't get it to do that. I must be missing something, a setting or other. As to the quality of your video and the depth of your tutorial. You are a GODSEND when it comes to this subject. This was the most in depth, thorough, clear, and elegant tutorial on Texture coordinates that I have found, and if I had watched this two days ago, I would have saved hours of work. As it stands, you just saved me days more of scratching my head. You have my love and respect, total hero. Gonna check out your other vids. Thank you!
I use the node wrangler add-on which lets me ctrl+shift+left click to view sockets. I think I also use a Principled Volume shader with the density cranked up so illustrate the coordinates in 3D! Glad it was a useful video! Not the sexiest topic but good foundations to have
Erin, I am new to procedural texturing. I am getting more knowledge about the texture coordinate and the overall workflow of the texturing process (thanks to you for that) but I am having some troubles in understanding the math nodes like combining them to get what we want it's being hard to figure , especially making pattern is hard. So could you suggest me some ways to learn math node related things ( should I need to learn vector algebra or is there anyway to get mathematical equations for every patterns ) , share you thoughts on this !
For masking in post? You certainly could! I would use a random per island plugged into a white noise node and take the colour output for the ID Map. You should get clearer differentiation that way. If you mean so you can texture specific mesh Islands independently, there's also a solution for that using the gate idea we made in episode 2 and random per island with 4D white noise so you can change the seed until you get a different texture slot for each Island! Definitely a work around but if you do want things in the same material then it works!
Erindale yeah in post for colour changing amongst other things. Although maybe there’d still be manual effort for the index. I’ve only glossed over the possibilities in compositing, as it’s new to me.
Perfectly explained. Like no one before. Having knowledge is one part but have a skill to teach is other thing. These drawings during explanation are very useful. Thx.
I'm using Cycles here. If you want something similar with Eevee then you need to reduce the Tile Size under the Volumetric settings on the Render Tab to 2px and increase the samples to 256!
Hey Erin, i have one question about nodes. After using Greater/Less than, Compare etc nodes, u getting ifinite sharp black to white transition. Is there a way to get back gradients after using these nodes?
The output of those nodes is binary so they're not able to go backwards but you can use them to control data. Nodes are great for non-linear workflows so you can always pull the gradients from earlier on in the tree!
@@Erindale Yeah, but not every case or at least it requires more effort than using compare node for example, i dont even know how to reproduce this node :D
It's just an emission node. Make sure you have the node wrangler add-on enabled in your preferences and then you can just ctrl+shift+left click on a node to preview its output
Please I need your help, my project has a "separate xyz" in the viewport and render i can see it, but when i sent the file to my boss, it doesn´t appear, do yo know why?
I'm not sure I understand the question. Do you mean that the material is changing between your computer and theirs? Are they definitely looking at the right material?
@@Erindale yes, i don´t know why in my computer i see the variation of tones in z, but when my boss run it in his computer, only appears in one tone without variation, even it is the same thing when i try to export the same object in my computer, it only appears in one color
On the cube's shader you could use object coordinates with the sphere picked as the object and the plug that into a vector math length and then plug that into a math greater than.
Your content is good but it is pretty annoying that your voice sometimes too fast and too slight, makes me think you intended to make people feel difficult to learn you r content.
Geometry normal and Texture normal is not the same. One reflects world normal and the other reflects object normal.
Reflection coords can be used with environment mapping to create lookup "fake" reflections.
Object coords can be used with an external object as basis but is unaffected by modifiers.
Generated coords can be controlled with texture scale property and will be affected by some modifiers.
Could have used vector/modulo and vector/fraction to describe how they both react to negative coords, sometimes important.
Incoming normal is great for refraction, allows blurred refraction on thin walled surfaces without bending light infinitely.
Very true, some are not useful for texture coordinate but for masking purposes.
Note that UVs doesn't have to be strictly for texture coordinates, it's just two data channels you can use for whatever you need.
Thanks for commenting! I've pinned this so hopefully people read it through!
I meant to make a note about geometry normal not looking at object rotation when I was editing but I totally forgot!
Using empties to drive object coordinates is a really useful texturing method (I use it a lot for applying decals).
I should have mentioned that and the Use Instancer tickbox that lets instanced objects adopt the UV map of the base mesh.
Definitely important about the modifiers effecting some of these too!
so geometry normal reflects world normal?
I think you might be the only person on youtube to finally explain this in detail (as far as I know), so thank you.
You're very welcome mate
It is The Best one still in 2024
Why are you the first person who actually managed to clearly and simply explain this on TH-cam? .............. i've been scratching my head for months about how this all works, now i geddit ........ many thanks!
Thank you for saying so! I'm glad it's making sense
One of the most comprehensive Tutorial. Amazing work Erin
Thank you so much!
Great in depth yet simple explanation! Helped me distribute my texture over multiple object and still keep the same size.
Hi, great explanation. This is the only tutorial I found that explains the coordinate system fully. Can you make a follow-up tutorial giving an example use case for each of these coordinate systems? Thanks again.
this is far and away my favorite tutorial series. everything is explained really well and easy to follow. and it makes me want to play around in blender even more. thanks for making these
Thank you so much! Thank you for saying so I'm glad! They're fun to make
Straight to the point and very comprehensive. May God bless you mahn
Thanks 😁
Camera coordinates are crazy!!! Great tutorial! thanks a lot!
Thanks so much
THANK YOU Erindale! I have watched a lot of Blender tutorials during the last 18 months. This is by far the best I have seen.
A very concise, clear, understandable, explanation of texture coordinates.
Until now, I have never really fully understood all of the options. Now I do. Looking forward to watching more from you. Thank you so much for sharing your knowledge. THANK YOU! Dg
Thank you so much! I really appreciate you saying so!
i've looking for this for couple of days, really helpful!
Glad it's useful!
thank you for this ultimate explanation. Expecially for the idea of using "volume" to visualize the coordinates:)
one of the best tutorials THANKS and appreciate it, God bless you
Thank you!
my man ,I swear i was thinking about the differences between 3 nodes yesterday
thank you erin
Glad it's been helpful! It took me way too long to get around to understanding this stuff!
Oh my god now I understand it thank you so much. If it weren’t for blendernest I wouldn’t of found your channel. Thank you
I'm glad! I'll definitely get on some more chats with them in the future!
an excellent tutorial, thanks for making it so technical and easy to understand
Thank you! I'm glad it's useful!
Im going to have to watch this again probably.
Great detailed explanation , the coding level of Blender . I hope to see such explanation with other complicated subjects like Rigging .
Thank you! There are some amazing tutorial makers creating specific content at the moment! It's a great time for the community!
Thank you very much, Erindale! One thing I do not understand: Having the "generated" output uses the bounding box as reference. But still, when moving the entire mesh in edit mode, the colors change, although the bounding box remains exactly the same.
great video, thank you! I kind of wished you would have gone into a bit more detail on the pointiness node. Having said that this video greatly helped me understand and gives me the information to play around with pointiness myself and figure it out, so great thanks!
Erin, what is your relationship with the universe and why exactly did it decide to bless us with you?
such a nice-explained tutorial ! Really appreciate your work
Thank you!
Much grateful for this video, dude.
Great to hear! Thanks!
I love this video, such a great explanation! THANK YOU
Hold on, you're that guy from Twitter *and* the 2.93 splash screen guy? I hadn't touched Blender in a year, came back for 2.93 just because the splash screen was so pretty. Well done :)
Hah yes that's me! I'm glad it got you back into it! Stay creative buddy
This is fantastically helpful. Thank you!
I'm glad to hear that, thank you!
can you refer an in depth explanation for Understanding when to use the different Texture Coordinate node inputs especially the normal, camera ,window, reflection. Amazing presentation, Deep and wide!
-thank you.
Hm I'm not sure I know any specific resources for it but normal is mainly for procedurally affecting the surface normals and also I use it for masking a lot (taking grass away from sheer surfaces for example). Camera, window and reflection are really useful but mainly used in more complex setups like parallax occlusion mapping or raymarching along with the view dependent sockets on the geometry node (like incoming). Those sockets used to be used more for doing world shaders to correctly map hdris but you can just do spherical mapping for that anyway and the Environment Texture we have now does it automatically. They're all really useful sockets though so do play with them. You can get some really nice non-photoreal (NPR) styles from using them
Hey, huge thanks for the explanation!
One request from me: please turn on the automatic subtitle/CC option on your videos.
Thanks! Automatic subtitles should be enabled already. I just tested and the option should be available
Thanks for explaining this.
god of blender
Thank you for your awesome video , u cleared up alot of question
Very good, thank you.
Thanks so much!
Incredible explanation.. your new fan :)
Wow ty so much for this tutorial!
Thank u so much sir ♥️🙏
very nice explained. Could you make tutorial how to create something like "flood fill" (from Substance Designer) in Blender?
Great overview! I'm curious tho, why is your cube so sharp? My principled volume cube is all jagged, esp when moving my view in the viewport, like at @4:50 .
I set my volume density as high as possible in the render properties tab
A really informative video - Thank you Erin. Have you got a video at a more basic level? Is the texture space, when you unwrap always 1m square? And you can change texel density or texture scale to determine the resolution - per meter square?
Hi Maurice! It's not always 1m when unwrapped, that's just dependant on the size of the texture and how the mesh has been unwrapped. You can always adjust this with a mapping node to scale it.
If you want a good solution that might feel a bit more like Twinmotion then you might want triplanar/box mapping. In this case use an Input> Geometry node and take the position socket (this is world space where 1m = 1m) and plug this into your image texture vector. Then on the image texture you can set the mapping from Flat, to Box. Now you'll get a triplanar mapping based on world space. You can always add a mapping node between them to adjust as per your texture requirements
@@Erindale Thanks Erin. I think that's what I've been doing? I unwrap using 'Cube Projection'. It appears to always come out at a 1m on the mesh? I've been using a Texture Coordinate node, but your Geometry node seems easier to understand!
Great Tutorial! Any info on the "Object" dropper? or the "From Instancer" checkbox?
I definitely should have mentioned these! The object dropper allows you to pick a different object to be the origin of your object coordinates. If you use something like an empty it's going to let you position decals, rust stains etc more manually. Super useful!
The "From Instancer" check box is for when you're using instances. This just means that you can put an object on every vertex or face of another object. The From Instancer let's you use the UV map from the Instancer rather than each small instance of an object having it's own small UV map. It's not something you need to worry about unless you are instancing though!
Now I get it.
Hey, thank you so much for this, it's helped me a lot.
Thank you! I'm glad to hear that!!
Sir could you talk some what louder.
No offense love ur channel
great video Erin, one suggestion, wouldnt be better having this video in the beggining of the series?
Quite possibly! Although it's good for people to get some context before they get into theory like this. It might go over people's head if they haven't used the coordinates for anything yet
Hi, great work dude!!! really appreciate your work it helps me alot, but I still don't get it about the reflection part, I've tried to think with theta concept you mentioned in your video but it still confused me because every time I projected the theta concept into each surface it's not like what it should be, like when the one surface goes reflected like the theta concept you mentioned but the other doesn't, may you elaborate it in the more specific concept about reflection, or is there anything you can recomend to me to more understand reflection? thank you
The documentation only says:
"Reflection
Uses the direction of the reflection vector as coordinates. This is useful for adding reflection maps. You will need this input when using environment maps."
Perhaps you're having issues with non-normalised vectors? Or perhaps you need to look into the vector transform node to change the vector space? I'm not sure what it is that you're doing there to test it
@@Erindale owh I just want to more understanding how reflection is works, anyway thank you for the explanation, I was understood now how reflection is works
I have one question, how do you get it to show the colors like you were using?
I can't get it to do that.
I must be missing something, a setting or other.
As to the quality of your video and the depth of your tutorial.
You are a GODSEND when it comes to this subject. This was the most in depth, thorough, clear, and elegant tutorial on Texture coordinates that I have found, and if I had watched this two days ago, I would have saved hours of work.
As it stands, you just saved me days more of scratching my head.
You have my love and respect, total hero. Gonna check out your other vids. Thank you!
I use the node wrangler add-on which lets me ctrl+shift+left click to view sockets. I think I also use a Principled Volume shader with the density cranked up so illustrate the coordinates in 3D!
Glad it was a useful video! Not the sexiest topic but good foundations to have
@@Erindale I got it! You're my hero, all my love and respect, and I look forward to the next tutorial!
Lets get stuck in!
Great video
Erin, I am new to procedural texturing. I am getting more knowledge about the texture coordinate and the overall workflow of the texturing process (thanks to you for that) but I am having some troubles in understanding the math nodes like combining them to get what we want it's being hard to figure , especially making pattern is hard. So could you suggest me some ways to learn math node related things ( should I need to learn vector algebra or is there anyway to get mathematical equations for every patterns ) , share you thoughts on this !
I’d just practice building patterns in shaders to build that vocabulary
Thank you bro!!!
Glad it's useful!
Great tutorial. It is annoying that the official doc doesn't tell you what the mathematical function a node represents.
Yeah I had to do some digging through source code. The Krita documentation does have them all though!
sir can you make a tutorial about node how to use n when to use....a detail about it..
About which node?
Its much easier to follow someone who hasn't edited all the gaps and pauses out of their spoken English
Yeah I have an editor now so the new ones are more doable 😅
Could you use random per island to quickly bake an ID map? I’ve seen people do some really sub optimal workarounds in that area.
For masking in post? You certainly could! I would use a random per island plugged into a white noise node and take the colour output for the ID Map. You should get clearer differentiation that way.
If you mean so you can texture specific mesh Islands independently, there's also a solution for that using the gate idea we made in episode 2 and random per island with 4D white noise so you can change the seed until you get a different texture slot for each Island!
Definitely a work around but if you do want things in the same material then it works!
Erindale yeah in post for colour changing amongst other things. Although maybe there’d still be manual effort for the index. I’ve only glossed over the possibilities in compositing, as it’s new to me.
Perfectly explained. Like no one before. Having knowledge is one part but have a skill to teach is other thing. These drawings during explanation are very useful. Thx.
Thanks so much! I'm really glad it's helpful!
i am using the your principled volume shader like you, but the edges of my cube are fuzzy and smokey, i want them to be straight and smooth.
I'm using Cycles here. If you want something similar with Eevee then you need to reduce the Tile Size under the Volumetric settings on the Render Tab to 2px and increase the samples to 256!
Hey Erin, i have one question about nodes. After using Greater/Less than, Compare etc nodes, u getting ifinite sharp black to white transition. Is there a way to get back gradients after using these nodes?
The output of those nodes is binary so they're not able to go backwards but you can use them to control data. Nodes are great for non-linear workflows so you can always pull the gradients from earlier on in the tree!
@@Erindale Yeah, but not every case or at least it requires more effort than using compare node for example, i dont even know how to reproduce this node :D
How did you even learn all these?
What's going on with that viewer node above the material output? I can't find it in blender's nodes, just AOV output and Material output.
It's just an emission node. Make sure you have the node wrangler add-on enabled in your preferences and then you can just ctrl+shift+left click on a node to preview its output
Have you ever tried working with substance designer? If not, you should :)
I have not! I would like to give it a go some time! It looks like fun to develop materials with!
@@Erindale You definitely should. A funny thing - this video of yours is like the best possible intro to SD you can find on youtube... :)
Please I need your help, my project has a "separate xyz" in the viewport and render i can see it, but when i sent the file to my boss, it doesn´t appear, do yo know why?
I'm not sure I understand the question. Do you mean that the material is changing between your computer and theirs? Are they definitely looking at the right material?
@@Erindale yes, i don´t know why in my computer i see the variation of tones in z, but when my boss run it in his computer, only appears in one tone without variation, even it is the same thing when i try to export the same object in my computer, it only appears in one color
Complicated for a beginner, but important
Hi, How can I get a small circle texture on cube texture when a sphere is near the cube or touching it ? Please.
On the cube's shader you could use object coordinates with the sphere picked as the object and the plug that into a vector math length and then plug that into a math greater than.
@@Erindale it's work pretty fine but what if it's a cube and not a sphere ?
So you want the shape of the object? You could use geometry nodes with either proximity or raycast
@@Erindale Waouh thanks ! but how please ^^
i was not able to understand. Please Help
Maybe spend some time making shaders and then come back to this and it'll make more sense once you have some more context!
how did you get the viewer node @2:44
Enable the Node Wrangler add-on and it gives you a bunch of useful shortcuts. I think viewer is ctrl+shift+left click
Great content but your voice is too quiet. As a non native english speaker im having a hard time making out your words 😅
Your content is good but it is pretty annoying that your voice sometimes too fast and too slight, makes me think you intended to make people feel difficult to learn you r content.
I’m sorry that you don’t like my delivery. it is just the way that I speak rather than me intentionally trying to undermine the lesson