Introduction to Procedural Textures - Getting started with Blender Nodes Part 1

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

Excellent. Thank you.

👍︎︎ 2 👤︎︎ u/filosophikal 📅︎︎ Apr 15 2020 🗫︎ replies

Great tutorial.
This node setup is already powerful but I have some additional tips. Sorry I don’t have time to make images:

Vector math - distance can be used instead of the length. This will give you the same result if the second vector is 0,0,0 but that is an input you can use…

What if this second input is -.5, -.5 on the first half of the cube and .5, .5 on the second (the rounded version of the original vectors)? Yes you can have repeating patterns.

What if you distort the original texture coordinates? Randomized repeating patterns.

What if you also change one of the inputs of the distance vector math with some noise? I can’t explain but let’s just say that you will be pretty grateful for this comment after you understand what this does.

And finally, we are talking about 3d vectors, why don’t you use these nodes as an input for a volume density?

I know, this is barely understandable, I will try to make a post about this in the near future.

👍︎︎ 2 👤︎︎ u/Baldric 📅︎︎ Apr 16 2020 🗫︎ replies
Captions
Hey, welcome! Today we're gonna be showing the beginnings of working with nodes in Blender by creating a single node that allows us to generate four different shapes control the size and control the fall-off of these shapes. Okay let's get stuck in. I'm gonna be working in blender 2.82 If you're working on previous version I recommend you come up to this one which is currently the stable release. I'm gonna be working in this workspace* today Yours may look different. So I've got my node space which is big because we're doing nodes And I've got a small 3D Viewport in here. The work that we're gonna be doing is entirely with nodes so it's importantly got the Node Wrangler add-on in the bold you've watched any other videos I'm sure you will have heard this 100 times Node Wrangler, in your add-ons in blender preferences, just make sure this box is ticked and it will add a lot of additional functionality that's gonna help you streamline the process. A bit of node etiquette: When you have the node Wrangler add-on installed if you control shift and click on a node it will give you a preview the socket if you keep clicking it will click through the different sockets and you will see what each of them displays. The next thing we're gonna be using quite a lot is I do shift right to click and this will add reroute nodes. Just keeps things a little bit cleaner. The other one I'm gonna be doing quite a lot is the scalpel. Which is control right click and that lets you sever nodes. Very useful. We're gonna be making 4 shapes, right. Circles, squares, triangles, and hearts. And I feel like these will give you a good understanding of what we're doing with nodes because it's not just about putting a shape on a cross-hair. We're not just saying draw a circle here or draw a square here. What we're saying is these gradients describe values from zero in the middle to in this case 1 and -1. Although this is actually an infinite gradient so it's just the amount of it that is currently on our object is 1 to -1. Hopefully this will make more sense as we work through. What we're gonna be doing procedurally is we're gonna be generating shapes from these values so we're not saying per shape on top of this using the location we are taking the X values from 0 up, and actually below as well, and the same for Y. So for all of these we're going to be using object coordinates. Something I like to do is I like to press Shift Tab, or you can also go up here and click the magnet, this will just snap your nodes to the grid. Keeps it neat. Then also I like to hide unused sockets which you can see is CTRL + H. So there we go CTRL+ H. First one we're going to be doing is the circle. What we want to draw a circle is we need a radius and we want this radius to be the same all the way around. So basically we want to be able to define a length. Now Blender has a node that does this very easily so Shift+A > Converter > Vector Math. That goes on top you can just drop this on top of the node. To release it from the node, without breaking the noodle, I just held Alt to pull it off. And you can just drag it back on to the noodle and it'll splice in. So we can change this from add to length and you can see that this has given us a gradient out from (0,0). Now how this is calculated is it's using Pythagorean theory: A^2 + B^2 = C^2 For a triangle with a right angle like that. So we want to know what this point is here. We want to know what that is, and we have the X and the Y coordinate and we want this to equal this distance here - the value of this point is equal to the distance. We can say that to get C, this side, we can get rid of that by square rooting everything. So just to display that, we are going to use a Converter > Separate XYZ. You don't have to do this but I feel like understanding exactly how everything works will add to your ability to manipulate what you're doing later so please bare with me. We're taking our X which you can see here and we are squaring it. We are taking our Y and we're doing the same. We are then adding these together to give us that, and then we are doing square root. So you can see that this and this, the output is identical, and that is how the length node calculates that value from the vector input. It was important to recognize and this is not just dropping a radial gradient on that point zero zero is calculating each value of each point on the surface based on its UV coordinates based on that formula that we just did. What if we want to get rid of some of the edge and change the size of it? Well everybody has different ways to do this. My way is to use a MixRGB node. I'm just gonna drop on here. First thing we're gonna do is we're gonna set this to Color Burn then we're gonna set the value to black on 2. Now you can see that as we increase and decrease the factor, this changes the size of our gradient. Now if you clamp a node, it basically means that it is limiting the output to be between 0 and 1. Color burn and color dodge will always clump the output, so this is only zero. It's not less than zero, if that makes sense. Now to decrease the fall-off, I'm gonna be using a Color Dodge node and I'm gonna set the value of this one to be white and now you can see that this is bringing the whites in, and this is allowing us to change the scale. You could, alternatively, use a Converter > Math node and set this to Greater Than and this will give you control over the size of it. Basically saying, is this greater than 0.35? Yes. No. That's how that works. It's just a binary output. Issue is that you get very hard edges, whereas this allows you to control the edge. Lets you have it completely hard as well but lets have a bit of softness if you so wish. Another way that people do this is with the Color Ramp. Color Ramp is one that is, again, super useful. It lets you bring up the black and it lets you bring in the white. This is nice but it requires you to move these flags which you'll see later, when we put all of this into a group node, that's not very useful to us. You want to put this in a frame and CTRL+J with the nodes selected. N to bring up your Information Panel and change the label to Circle. Next one we're going to be doing is squares. So how are we gonna get squares? Well we're going to be doing a little bit of separating and then joining back together so Separate XYZ. So this is gonna give us a readout for our X and our Y. What we want to do is we want to have this mirrored on both sides because we want our square to be dead center. To do this we're gonna use something called Absolute the notation for Absolute is two vertical lines. So what we have here outputting is X but it's |X| We're using the vector absolute it's also an absolute on the normal math node. This one will take a single stream of information, that's what the gray means. This one will take a triple of information, that's what the purple or yellow mean, is they will take three streams. Very useful because we now have |X| and |Y|. Absolute basically makes all values positive so -1 becomes 1, -3 becomes 3, but also the positive ones remain positive. What we can do this is we can add our color dodge and color burn. MixRGB > Color burn. Our X goes in to here. Set this to black. Color Dodge, that into color 1. Set this to white. And now what we have, on our X is we have the size and we have the fall-off. Gonna do the same for Y. What I did right there actually is probably worth noting. If you want to duplicate a node that has its inputs. Then rather than doing Shift+D and reconnecting it you can do Ctrl+Shift+D and they will keep the noodle that goes into it. Very useful. So now we've got got our X and we've got our Y and we're going to be using a function called Smooth Maximum. There are two ways that you could have done this, you could either go Add and then you can clamp the output, this will give us this at the corners. What I'm actually going to be doing, rather than using add, we're gonna be using our function yeah she's gonna be called smooth maximum know who's gonna basically take like some value at each point do you think it has a nice full look on the corners this is an hour hour square so now that we've done our squares we're gonna select all of this and ctrl J to put it all into a box and we're gonna call this one squares next we're going to do is triangles now how do we get an equilateral triangle when we've only got horizontal and a vertical gradient bear in mind that we want the center of the triangle to be at zero zero well it's actually not as hard as you might think if we have an axis and we want to draw the triangle like this well because we want the center of it to beta 0 we also know that when the size is 0 this gradient is actually gonna be here what we know is that this triangle has a value of 60 degrees here and this is a right angle and the process to 0 at 0 so we know that y equals some this is a negative gradient some negative constant of X and it gets to 0 so plus the round which we can get rid of we can therefore say because we want to know for doing our notes we want to know when this equals 0 so what we can do is we can say y plus K x equals 0 and then from that all we need to do is create this formula with notes so what I'm gonna do is I'm gonna add a converter separate X Y Zed now when you want the absolute of X only acts so this is mirrored but the bottom line just wants to be the bottom line we're gonna do is we're gonna add a math node add X set this to absolute so now what we've got here is our Merritt X values here so we've got absolute x times some constant that we don't know what this is and then we're gonna add Y we're just gonna take this Y value so as you can see we've immediately got value here and if we change what this is x then you can see the nice rotating these two sides now if I meet press M then you can see that this gradient it continues on into the X region but with absolutely its own the considering positive integers so we get this mirrored appearance we also want to do something with the horizontal axis right so we want this to be white below and we want it to be black above what we need to do this is our y-axis we need to invert it so I'm going to get x minus 1 Y into this and there we go so now we have our upside down just like we did with the squares we're gonna be using smooth maximum drop that in there so you can see already that we've got something that resembles well certainly three points I'm gonna do just before we work out what the constant is I'm gonna add the dodging burn just like how we did before so burn first and I'm gonna add the Dodge afterwards now how do we work out what this K is well K is the gradient we know that we have a triangle and we know that triangle is right angle and we know that this value here is 60 degrees so what we can actually do is we can say we have opposite we've got adjacent so he's gonna be tan what we want we're gonna be using trigonometry and this constant ya the constant for the gradient is equal to we can say turn we need to be working in radians so 360 degrees in full circle is 2 pi so 60 degrees is one third of one half of a circle so the third of Pi we can just type in here pi divided by three and then I'll give us our 60 degrees if you don't want to have to do that maths you do you know after you you can say this any 60 output is two radians and that's 1.0 for seven PI by three is our angle and that is our constant it's now for the triangle you can see that is a perfect equilateral triangle Hey okay just pausing there this is future me so just realized while editing this I haven't actually explained properly why it is that we using ton here tangent the idea is that we need the constant that describes this gradient right so if we have our graph and we have a line coming down it then this line has an expression right so it's y equals let's say totally arbitrarily that this has a negative gradient of two so we can say minus 2ax notice it passes through here at three so this is how we normally describe a line now we want to know what this gradient is but all we have is this angle for our triangle for our equilateral triangle this is going to be 60 because your collateral triangles are 60 degrees interior angles on each corner and the reason that we use tan is because the gradient is the rise divided by the tread and with trigonometry we know that we have a right angle triangle we've got the angle and we have the opposite side and we have the adjacent side in this case we do not have the hypotenuse because we're using just opposite and adjacent that is why we use tan so this is theta tan of theta equals opposite which in this case is y over adjacent which is ax so Y over X is right over tread so that is our gradient if we can find out what this is then we have our constant and we know that tan of theta equals this so that is why we are using tan of theta which is our angle which is 60 degrees but in radians and 60 degrees is the same as pi divided by 3 so that is the reasoning of how we got to using tan yeah I hadn't explained how to talk so I just wanted to come back and say that real quick ok back to the other one so we can put this into a group and I'm gonna call this one and to bring up the panel of triangles then we've got one more to do and that is hearts so hearts obviously a little bit more challenging again for us to be able to draw a heart shape on our axis fortunately we are working with a symmetrical shape once again so we need to consider half of it the first thing that we can think of is that it's like a circle there has been smooshed upwards on the the outside we know how to make a circle and that's gonna be our first thought of call I am gonna take the object equivalent I'm gonna take a vector math node I'm gonna plug it in here if the length this is gonna give us this and just so that we get a clear view of what we're doing I'm gonna start off by having now a mixed and I know it makes Dodge we need to do some in here that makes the circle get distorted so the first thing I'm gonna do is I'm gonna separate X Y Zed and then I'm also gonna combine X Y Zed and I'm gonna start with these I'm not worrying about the e said so I'm just gonna do ctrl H to hide it what we can try and do is say as x increases we need to subtract Y from it so first of all that's just a lot of math node in here it's up to subtract know you can see that we've got in this shape here definitely distorted well what's happening well we only want to be considering the positive x values and not negative X values so to do that we're gonna add absolute node into our X string there we go okay so we've been on the way already now I think if we add constant in here then we get a little bit of play in our lateral scale - that's nice we've got a little bit of control here there is an actual mathematical formula for doing a heart x squared plus y squared minus 1 all cubed subtract x squared Y cubed just have a look at what that one looks like so this is what this heart looks like I think it's probably the most common heart shape that people used but it doesn't go down to the zero scale which is what we want for our note because we want all of our shapes to come out with the same size I'm gonna group all of these things together I'm gonna call this one hearts now we want to make a group node a single note that will allow us to output four different shapes and control the size and control the fall-off so to do this we're going to select all of the notes that we're going to put inside and then do ctrl G ctrl G is gonna allow us to make a creep node you can see everything's gonna go green here if I tab then I will tap in and out of this node so a moment you can see that it's called a node group I'm gonna rename this one shapes so if we go into it with tab you can see that it's now gone green we have a group input node and we have a group output node output is called color we are gonna want to have our four outputs as Circle Square triangle and hearts because we are only outputting blackamoor information from each of these I'm going to set these two single streams of information I'm gonna add full output I'm gonna delete the color one that was automatically generated when you generate an oh group if you have noodles that are coming into it and off of it then the group will automatically generates sockets for each of those noodles and it's gonna also automatically name them and create automatic default values max min information so with these four outputs I just click add this will add a single stream value like a gray socket I'm gonna rename these ones to circles squares triangles and hearts and then I'm just going to plug these in I have texture coordinates on the inside but we want to have our factors coming in from the outside make us able to use these shapes in future projects because at the moment we have four streams rather than plugging in independently from the group input I'm gonna do shift right click and drag over the noodles and this is created one reroute perm initial one right so it's clumped them now these two ah shit together so I'm gonna do that like that we now have all 4 coming out with this one if you want to get rid of this you can't just press X because that will delete the noodle as well to dissolve it you can do ctrl X which will dissolve vertex like it would do in 3d modeling or you can do alt drag to get rid and then delete it once it's disconnected so I'm gonna plug from my group input you can see that we've got this great out socket here transparent socket the house is to add an input then we would have a single line of information if you look vectors through a gray socket they're gonna get compressed into a single line of information so we can't do that what we need is we need a blue one however when you plug this transparent one into any socket it will take on the attributes of that socket so in this case purple this one we can just change the name of that director so this is gonna be our vector input next what we're gonna do is we want to have a slide factor for our scale and our fall off because we want that slide I'm gonna plug that right on in to the factor there and then I'm also going to take another one and I'm gonna put down into the factor of the color Dodge so the first one we're gonna call size and this eye we're gonna call full off and then I'm gonna plug these n size into the band pull off into the Dodge there we go and now on the outside we have shapes you can see that we've got a factor input into which I'm gonna plug in our object coordinates now you can see that we've got our circles squares triangles and our hearts and on all of these we can change the size and we can change the fall-off so now we have a very simple group if you want to add this to other materials it will be on your shift a group anything in your file which is a group or get added to this list so now you can see we are adding groups in here now this default value thing is a bit on 0.75 I said that you wanted that to be different it's in here we could select the socket for the interface on your node settings select the default value I'm going to change mine to point five just to both of those and then I am going to just make sure that happened and now when I have them we have this here if you've been following along you will have this group node we for different shapes and the size and fall-off control there are many many more shapes that you can describe mathematically using this process but hopefully this video is just giving you an introduction and an overview of how we can use you v's to generate textures you can get really deep into this and we're going to be using this node group in next lesson where we talk more about generating vectors in order to transform and manipulate our UV coordinates so hopefully this video has been useful thanks for tuning in and I'll see you in the next one
Info
Channel: Erindale
Views: 26,940
Rating: undefined out of 5
Keywords: Blender, Procedural, nodes
Id: iZNsTr36rog
Channel Id: undefined
Length: 21min 16sec (1276 seconds)
Published: Wed Apr 15 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.