EVERY NODE in the Erindale Toolkit - Geometry Nodes

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hey folks welcome back this is a really highly requested video i'm going to go through every single node in the toolkit in my toolkit the uh the add-on that you can find linked down in the description so this is one i rely on pretty heavily for geometry nodes because you know i've basically built a load of tools which helped me and i think they are going to help you so we're going to go through every single node this is basically a stand-in for documentation so i know some people prefer videos to pdfs and i've also not finished the pdf so down at the bottom of this on the timeline you're going to see all of the chapters and this is like per node right so i'm going to go through every single node tell you what it does tell you what it's for tell you how to use it and that's about it let's begin all right so when you get the toolkit it's going to just installs like a regular add-on and it will add a category at the bottom of your ad menu this then has its own subcategories for different categories of node and let's just run through these so first one up is bevel a curve first thing we're going to need to do is chuck in a couple of curves to this this is very similar to how we actually use like a bevel and a taper curve when working normally so if i just chuck in for example a bezier segment this can be our path and we can see that is drawn in there my profile curve i may use a circle let's set this to something fairly small 0.1 something like that and right now nothing's showing because we don't have a taper so let's also add in a taper curve here i'm going to use this quadratic bezier which just has three points and now you can see what's going in we're basically controlling the uh taper the radius of this curve with another curve i know that the this workflow is very useful for you know for people working on multiple curves so this is there if you need to just have that kind of conventional bevel curve experience and this note has a few kind of default settings we have resolution so we can control the smoothness on here we have tilt so if you had something that was a little bit more angular you can set the tilt on here these are all fields as well set the radius which is when you feel caps these are fields so if you wanted to do this along the length or by position then you can do that next up let's delete this one curves curve attributes so this one is really just for modifying curves i can take a regular curve and i can just set the resolution radius and tilt all on one node this just saves you adding multiple nodes to do the same things and you can even turn on cyclic if you want that so if you're doing lots of stuff with a curve rather than adding loads of different nodes this one has you the curve attributes node next one pipes this one basically just takes every edge or curve and turns it into a skinned pipe kind of like the wireframe modifier or the pipes node if you're used to spur chalk so this can work on both a single spline like a a bezier segment or it can also work on a mesh so i can put this on something like uv sphere instead and you can see it's going to do the same thing it's just going to take all of those different edges and well turn them to curves and then curve to mesh so you get the thickness these are not fields this is just a constant value for the radius and the resolution keeps it nice and simple nice and lightweight and again we have that fill caps option just in case you want to fill those caps so that is the etk pipes node next one on our list is going to be points to bezier so rather than using a bezier segment we might have a series of points for example if you distribute points on faces and you might want to turn this into a curve this is a bit of a weird one because it creates this kind of scrawly curve but in some cases this is actually quite useful so i've used this quite a lot for kind of generating fake iron work things like that so i used in my flower shop scene and you can always use it with the pipes node as well so you've got these these two basically just generating your stuff on here and you can see changing the seed on your distribute points is going to change that i can even do it with the original geometry here so it's just going through the original points of our actual plane which you can see there and it's just turning into a bezier hence the interpolation so that is the points to bezier you can control the resolution that's about it next up we have got the wire flood this one is one of these weird high level nodes that is just a lot of fun maybe rather than this we can just drop this onto a cylinder or something like that so we can have a look at the normals and let's join these together so wire flood essentially generates kind of a bunch of wires we have a density and this allows us to do as it says on the tin set the density of our wires we have a seed so this is going to allow us to change any random values in here now we have a distance as well this basically sets the maximum distance that a cable or a wire can connect from point to point so if we have it by default set to 0.5 in all then that basically means the maximum distance can be anything less than but the maximum distance will be positive 0.5 or negative 0.5 in each axis we can set this higher or lower so for example i might go only 0.1 in x and y so we can see we have quite small differences but maybe i'll go for two in the zed and then now you can see that we're jumping long distances in the z-axis this one's always really fun to work with gives you a lot of control just throws white as well it floods wires we can set wire height so this is essentially the the offshoot from the surface the amount of wiggle if you want to have like a really twisted wire for example you've made a server rack or something like that and you want to show just the cable nightmare the influence from gravity and setting the wire radius we also have a control just to be able to set the material directly on here so this will be the material specifically for the cables themselves that is all of our curved nodes let's jump into the falloff stuff falloff is an interesting one because these don't really do anything useful on their own but we can use them for example for animation or for displacement stuff like that and these always expect a zero to one input in fact you can see this here so our input is always going to say zero to one here so let's think about a way to actually demonstrate these if i just add a line and we can have a look at the actual shape of them you can use them for anything like i said animation stuff like that and i'll show you how to use them for animation in a moment as well but let's start off with a line so i'm just going to grab a mesh line i'm going to make it go in the x-axis make this nice and small with high resolution so we're going to go 0.02 and we're going to get 50 of them and now i can just use the set position and we're just going to take the x position here which we can see that is zero to one range already because of how we set this up so let's grab our input position a vector separate xyz we're going to take our x here this goes into our zero to one and then we're just going to use combine xyz and use this as an offset in the z axis which is where we're looking i'll plug this into the offset there we go so now you can see that we have this shape and all of the easing nodes they're different shapes and they'll go through those but they each have basically the same controls we have an ease in and the ease out so if you just want it to ease out it's going to do that if you just want to ease in the opposite and you can have it do both you can imagine why this would be quite good for doing animations because if you have something which is moving for example a q and we're going to transform it maybe in the x axis by a certain distance let's do this over a certain time as well so i'm going to use a map range and i'm going to do this twice so i'm going to take my map range i'm going to use hash frame as my input we're going to go from frame 1 to 50. let me also set the output range of my animation here up to 60. so we're going from 1 to 50 for our frames and this is going to be mapped to zero to one so now we can use this with an easing node like so and then on my output i can take a zero to one which is what this will output gonna unclamp it because actually easing back goes outside that range important to note and i'm gonna set these as positions so we're gonna go from zero to five in our x position here so now if i shoot this over we can see that that's moving and it moves a little bit past each time we can change the constant to make it more extreme or we could even set this to be a little bit faster something like that now we have a few different easing types so we have easing back which is the one that we just had a look at let's delete that one for now let's go back to our line so that we can look at these so easing back here we also have falloff easing bounce take our x and go into our set here we go so you can see this one has a few bounces at each hand and again ease in or ease out this one doesn't have a constant for the control but you can see if we view this we just have a little bit of bounce on there and it's just going to hit that end there we go nice and simple we should be getting something like this by default in blender anyways or fall off nodes but just for now we have them in the toolkit let's go down again so we have circular i won't show all of these animated i'll just show them on the line from here on circular is just a quarter circle in or out or both and you can see that that jumps these together like so so that's circular we also have elastic this one is kind of similar to the bounce but it goes up and down so this one can be nice just to give a little bit of kind of cartoon easing we can get the exponential ones as well just a nice little exponential graph and again easing ease out all the same controls for all of these so sine is quite a simple one it's literally just a sine wave and again he's in ease out and the last one that we have has a single is easing plus so again take this like this and we have an exponent on this one so this is essentially our so quadratic cubic quintic uh i'm not sure what the five one is but uh yeah basically unless you set this up however you need and again he's in he's out all the same right easing mixer how do we use this one well this one basically takes our original zero to one and it's going to take a couple of the mixing nodes so let's use easing plus for our ease in and we need this plugged into both ease in and ease out we don't we want it to be you know both start and stop and let's just grab a different one let's go for maybe circle so i'll plug this one in again easing these out both plugged in so now we can see with a little bit of control here as well that we can have two different kinds of easing you can have a different start and stop easing so that's what the using mixing is for you have a little bit of blend in the middle so you don't get any pinches there we go nice and easy fields get filled item it's gonna be our first here let's grab a cube and what i'm going to do is this will output a field item i've got this set of vector but this is going to basically work the same whether or not you're using floats or integers it's just going to store them within a vector but we can continue processing those afterwards as whatever data they were if i take the mesh coming through here and the field that i'm interested in just for demonstration sake here will be our position but again this can be anything so this is just going to allow me to show you what's going on let me take a mesh line so i can just generate a single vertex so let's count to one i'll use this as the start location you can kind of see what's going on we're basically picking an index for the position this will output that one vector and then we can just demonstrate this by instancing a let's use this just a smaller cube here keep it all nice and easy with the nodes and i'll just join these together all right so we can see we have this cube down on the bottom corner if i turn this up you can see what's going on we're basically setting an index we're picking an index and uh outputting the field at that index in this case it's the position so we're taking the vector of the point all that does is just picking a specific field at a specific index next one we have is field length so we can take our geometry and just delete all of these if we want to inspect a socket we're going to need to plug this node through to something so just for this let's go ahead and just take this onto an attribute capture now we can see the length of this is eight as an integer we have eight points so that makes sense if i increase the number on here it's going to increase the value then we have 12. so this is just like your list length node in shock next up we have got map range we have both float and vector as separate nodes these may become combined in the future essentially we're going to take in our geometry we're going to be bringing something in for example i can bring in the index here and we're just going to set a minimum and maximum output so this is going to be correct map range that's basically going to be using the list limits from whatever field comes in at the beginning if i wanted to view this in the spreadsheet we just need to plug it in and give it a name so now we can see that we have all of these values from 0 to one if i change this let me get zero to two so look at this so basically we have taken a regular map range and whatever range the field has on the geometry that is our from and we can just set the output same works for the vector version except obviously this uses vectors instead the next one is field normalize which essentially does the same thing once again but no controls and it will just set it from a zero to one so whatever the input range it will go to zero to one let's take our next one which is field offset this essentially allows you to take a field and offset the index so you can kind of shunt it basically just as a data offset on your field it's quite convenient next one up we have got field replace so basically we can take two different fields and replace certain indices with the new field and it will just output a combined field where you've replaced all of those indices so nice and easy one to use just plug in two fields this might be for example position and a different position maybe one is displaced and one is not your indices this plug-in here and that just sets where it gets changed over next one field shuffle this one's a bit tricky because you do actually lose data my way works kind of good enough for some stuff but you do get overlap so this is the problem we can see we have just a cube here and if i was to set position and i'm going to use this as my new position so i need to plug in my my position here we go you can see that we've lost some of our vertices so it's not just that it's going into a random order but we have actually lost some data and we can see that this is just because we have things overlapping now if you're just doing distributed points this node is actually pretty good at doing that so i have used this quite a few times you do sometimes get lucky whether you're keeping all of the points but certainly until we get a proper shuffle algorithm this one will lose data and it does say on here expect data loss but to use it just plug in your geometry plug in your field and set a seed it's just going to randomly shuffle it all right next one up index to factor this one's just going to take your geometry and pass out a 0 to 1 normalized range for the index so for example if you have a cube and you want to pass out something that you can use with an easing node if you want that zero to one control or maybe you're going to use this with something like a mix rgb then this is your friend this is the way you're going to do that index de facto basically just sets your entire maximum index range to a zero to one range all right we're into the next group these are the generators always fun if you've been watching my november streams you will know this one certainly or these three the brick walls so essentially creates a brick wall this is the brick arc and we have a couple of options here we can pass out the geometry which will generate some bricks like this or if you have made your own bricks let's make a new collection in here i'm going to add some some bricks let's just make these a little bit smaller i don't need to worry too much about the size because if i use a collection of bricks it will actually measure them so i've got two cubes i can set this uh that was collection five now we can see that all of our bricks are this one i just need to rotate these and there we go now we're building a wall out of our new bricks if i made these a little bit smaller then you can see this is working so by default this node is going to be preferencing the height of the wall and for the brick arc at least the angle so radius an angle that's going to set the length essentially if i make this up to two meters then we can see a two meter radius we have more bricks if i set a higher angle we're going to get more until we go all the way around to a tower if we have a different height you've got a different height so there we go lots of control in here just for creating essentially brick walls because it's an arc we also have a rotation control just in case this was set to for example 60 you may want to you know spin it one way or other to match whichever place you're working on and also if you're aligning this to other brick walls we have an offset switch at the bottom which just switches which way the offset is working now if you have a specific number of bricks you need you can override all the previous data with an x and or a z count so now i can say specifically i want 10 high and 10 long and regardless of how you have this set up this will output a radius so without the x count we can use the radius setting in which case this will just pass out the radius with the x count obviously if we have more of these we're still using the same angle so you can see that but the actual radius will be changing depending on how many bricks we have so this radius output can come in very useful there let's have a look at some of these outputs a little bit more so rather than geometry you may want to actually do something more complex in which case we can pass out the points directly this just looks like a line because that's how it made it and then you can go and use something like instance and points with your input collection so i can just do this separate reset children pick instance and there we go right but what's the issue nothing's following our curve so let's plug in our rotation that's made that all work and right now this is not giving us like a good result for our width and height so let's also just make sure that we have this set a little bit bigger let's change this off those two counts and i'll just eyeball this now we can do it more accurately but just for demonstration sake there we go so that's fixed all of our spacing issues let's have a look at some of our outputs so on all of the generator nodes you're going to find that there is a size output and this is just the maximum number of points the total number of points in fact if i plug this onto a capture attribute just so it computes we can see that we have 276 breaks next we have the radius so we've already talked about that a little bit in this case we have a radius of 2.62 and that is the radius we then have x back and z facts so what are these well these ones are basically a zero to one gradient based on either the x which in this arc wall is going to be our direction right here so it's going to go zero to one and the zvac is going to go vertically upwards zero to one what can these be used for well let's just try plugging them into the scale and we can have a look straight away so there we go going the other way but zero to one or the zvac zero to one so you can imagine using this for motion graphics maybe doing some kind of interesting rotations along the surface different scale of brick different rotation of brick i've certainly seen things like this done where we have something like a rotate euler we're going to go local rotation like this so we can twist it in the z axis and then we have a fact right so we can plug this straight through a float curve that's why the normalized values are always so useful let's give an x factor into our value into the angle here by default we want zero right that's our base position and then maybe i come up in the middle and you see we get this kind of rotation going on so you have a lot of control here a lot of procedural control for basically mixing and matching how you build your walls this is just the arc but we also have the brick straight which i've used extensively on stream and again this works with your custom bricks as well as by default making its own bricks you can set the brick size and things here as well if you want custom brick size and again output the line if you just want those points it's going to output the size no radius this time because it's a straight line but it will give you your x factor and your z factor both just the same as before and again offset switch on here just to give you that control this one again is going to preference the wall length and wall height but you can override that with the x count and the z count like so nice and straight forwards next one in here let's have a look at the brick spline this one's very slightly different because it actually wants a spline and let me show you a little fun trick with this we're going to first of all pick our bricks so let's grab these collection number five and i'm also just going to come in here pin the node tree and come in and make a bezier spline and we can just select this curve now i do have the issue that it's in the collection so let's move it out of the collection and now you can see we have bricks on a spline why is this useful well because it means i can come in grab my spline make it a little bit longer make it curved if you want custom curved walls then you can do something like that now another thing which is extra fun is if you go into your tool shelf come down on the left hand side you can find a draw freehand spline tool by going to zad here now this one i do really need to bug fix this one if you have two if you have an even number of splines for some reason the spacing gets mixed up so i do need to just do a little bit of a bug fix at some point but as long as you just make a third one you're fine you get that offset back but you can see what's going on here i can do something fun like writing things hello and there we go we got this curve now the corners are not pretty there's not really a lot i can do about that it's just the the nature of very tight corners with regular sized bricks but you can see how this would be useful it will align to the lowest point these bricks are always going to be straight so just to be aware of if i do this you can see everything moves down to the lowest point this is actually quite useful if for example you have a building on a hill chances are you're going to be laying your bricks horizontally so it's going to basically align it to the bottom and you're just going to need to change your wall height until it comes up through the floor everywhere that you need it and again we can pass out our points instead and do a custom instance with the curve factor which is going to be along the curves let's uh show this really quickly let's grab a instance on points a input collection info with collection 5 separate reset pick instances and we want to plug in our rotation so there we go we're all set i do just need to make another wall just to make sure we get the offset back so if i look at the curve back into my scale you can basically see that each one of these curves gets a zero to one along its length so you can do a lot of fun stuff with that and again the z factor just the same just the same 0 to 1 vertically awesome hopefully this is starting to get your creative juices flowing let's move on to the next one here generators circle this one generates a circle not really much more to it so we have a circle here and we can choose the number of vertices we can choose the radius so i can set the radius difference here and this one makes it a little bit different to the default we have the u min and u max and you can see if i bring this out we're actually reducing the range of that circle there is another option in here for center vertex so if you have this turned off then it's going to be a straight line just a chord across and if you have it turned on it's going to go via the middle so this might be useful for motion graphics pie charts things like that where you want a specific slice of node now there is a very slight motion when we touch basically exactly the 360 degree range and this is because of the number of vertices so i basically made it so that the number of vertices that you pick is the number of vertices that you see if i turn off center vertex anyway so without center vertex we can see we've set this to five we have five if i increase the u exit looks like it jumps to four but this is because you know when you're moving this around if i have this over here i still want to have that like one two three four five because i've set five vertices right now these are vertices on the rim the center vertex does add one and if you look at the size output here this will actually say at this point six so the size output is always going to be correct for the total number of vertices you have generated now again we have the factor which is going to be basically zero to one along your radius your edge there and we also have rotation so if you're instancing so if i plug in my rotation you can see that these then align to that rotation and there we go we can set this however we want there is the option to set spacing so rather than using the vertex count we can use a specific number of vertices i know that these are a little bit smaller so let's bring these down into the approximately fits and now you can see that if i change this it's going to fit that size basically so we never have too many bricks here can be very useful if you are doing things like regular rays cool good stuff now this is going to get fairly familiar this kind of format of geometry size factor rotation because this is how i've tried to make everything more or less anyway let's have a look at our cylinder so again we do have the issue with the that kind of twitch when we get to zero which is just uh because we don't have a weld i don't want any intersecting vertices so this is just gonna allow you to basically keep control of the count and if you're animating this and it's going past zero you're probably not gonna see too badly like it's not it'll be like a frame at most that you just need to keep an eye on it's a very small threshold so again we have a cylinder let me turn on the wireframe just so you can see the actual topology here we have a top and bottom face if you want to turn these off you actually do need to tab in look at your cylinder and turn these off i'm going to just leave these as end guns for now we have parallel control so this is the number of vertical cuts the parallel cuts we have the number of edge vertices as you can see there we have the top radius and bottom radius as separate controls so this is actually quite similar to the cone node the default mesh primitive although we also have the angle control on it and we also have a twist really interesting for making some really interesting flowing shapes just basically gives you an angle that the top so if i set this to 90 the top is 90 degrees offset from the bottom now again i can set this to use spacing we're going to set this down there's something fairly low let's have a look at this with so points and again let's plug in our rotation into the rotation but you can see what's going on here now the issue is that we're getting our spacing based on the minimum distance so it looks like it's widely spaced to the bottom but it's cramped at the top if i set my bottom and top radius to the same as one and then i set my spacing you can see that that is actually going to be spaced now the issue is that it's facing vertically and horizontally it's not just doing the horizontal spacing you can change this if you want to dip into the node and actually have a go at tweaking some of the maths it's just a it's an option that is available for you again sad factor i've actually named this one a bit better here theta factor so this is our our radial angle zero to one everywhere you see fact in blender it is a zero to one range all right that's the let's have a look at the next one we have got the ellipse basically the same as a circle we have number of vertices we have a radius y and x as separate controls because that's how you do ellipses and again we've got our umin umax nice and simple there let's jump onto the next one here generator working our way down grid one of my frequently used ones actually let's just grab this is the grid is a 3d grid it just has x y and z controls so you have a count here pretty simple set the number in the x y or z if you set this down to one obviously you have 2d grid now the sizing is an interesting one just keep everything within the same size so by default we can basically set the number within a volume or you can set this to spacing in which case it will use this vector as this spacing vector if i plug this onto my instance on points and i make my sizing fit these bricks there we go something like that so we can use spacing instead and now if we adjust this we're going to be setting the number in each row by default this will be centered on zero zero zero but you can turn off centering and then it will be on the corner just in case you want the corner instead so it depends what you're making can come in useful and of course randomization if you're making a 3d bunch of points it's actually very useful to have randomization so this simply adds a random value to the position nice and easy if you don't like it change the seed nice and straightforward again we have a size output this is the total number which in this case would be pretty high and then we also have x factor so our x factor y factor goes in the y direction and the z factor goes in the z direction very useful tool if you want to generate thousands of points very quickly especially random points in a volume that is the way to do it grid hex and grid try if you've been following my hexagon world tutorial you might feel a little bit cheated we can do this in a single node there we go that's all it does so it creates a bunch of hexagons can also output just the centers so if you want to do your own custom instancing outputs the size x factor y factor and it will set rotation so what's the rotation for well this allows you to randomize the rotation basically you can set a random 60 degree offset per tile and there's a seed to control that side length so we can control the side length of our hexagons here and again we can just control the x and the y count like so the other one which is very similar is going to be grid try it's pretty self-explanatory really it makes triangles again set the x count so the y count and that's going to do that you can see visually it's only one row but we're doing it in terms of the direction of those triangles randomized rotation again it's going to do 120 degree rotation random per tile and this rotation output is going to make sure that every alternate row is you know one way or other so that we're facing and things tessellate nicely so this is the node for this we can use this set the side length of your triangles so whether or not you have it centered that's uh an option on both of them and here we go so a few more options you have here if i just show you this these are our centers right obviously the bricks are not a good example but we'll just work with it we have our x factor and things like that so that's all default but we also have a row alt you can see that we're actually getting that alternate row uh being picked so this is just a boolean that if we look at these ones it's going to select rows pointing in one direction or the other that is what that one does let's move on we have got the next generator in here as the ico sphere i went through a lot to try and make hypospheres and i ended up just using the default one so the maths behind icospheres someone did actually successfully make one so amazing congratulations to that person but unfortunately no i did not use it we are just working with the default ico sphere but we've added a few more options in here so outputs the number of points we have a u factor and a v factor these ones are essentially like our curve like surface domain so that's going to be our range in this direction that's going to be our u and our v is going to be top to bottom there we go if i plug these on to our bricks again just keep using these plug in our rotation and now you can see everything aligns nicely so that's good and we have a v factor bottom to top and a u factor radially there we go now what about some of these other options let's go back to our grid so we have the radius control of course we have a subdivision value so you can set number of subdivisions and we have a u min umax v min v max control essentially this lets us cull points and it is just culling points literally what it says on the tin you can see we're getting that disillusion of the sphere as we come around there by the angle and we also have it top to bottom so you can create these kinds of interesting shapes based on the angles within a sphere so culling angle for the surface that will be very similar to the uv sphere which we'll get to in a moment as well the arc sphere we also have the line might be an interesting decision to have come up with a custom line node but it's actually very useful i use it more often than the default line node essentially same again geometry output size total number of points the factor is a zero to one length for the points and the rotation well this one's actually quite useful because i can plug this into the rotation and if i start moving around these points you can see that we're getting an actual rotation on those bricks rather than it just being a rotation on the points so that can be quite useful to get things to align nicely i can set this to spacing so if i want this to be roughly brick length and have a certain number of bricks that's going to work like that or i can turn off the u-spacing and now we just have a total length either way we're using this number of vertices but it's just whether or not you want to use this this length for the spacing length or for the total length so i bring this out like this there we go so that's a nice easy one to use let's go to the next one in here we have a very similar one which is also the line segment i'll just work through these alphabetically though for now phylotaxis everybody's favorite this one just generates by the taxes so it starts off with 500 vertices an angle offset of 137.5 so you can see that this is basically the amount of offset that we have per point 137.5 that is the magic number that gives you the lovely distribution of points we have a radius in here which controls the outer radius and we have an expand which just pushes out from the middle this isn't in meters or anything like that it just gives you a bit of kind of eyeball control to push that out dilate that center we have a depth control this is going to allow us to move this upward down and we can set the exponent on here just in case you want some extra control for that now if i plug this onto my points we're also going to reduce the number of vertices there we go now we have the rotation and this is useful if basically if you're making flowers or plants this is going to be your base rotation so each one of your leaves is correctly aligned all your petals or whatever fall off is going to be a zero to one range from the inside to the outside so just simply that zero to one inside to outside and is based on the positions so these don't change size depending on the expand it's entirely based on the index obviously the size is just going to be the number of vertices in this one all right next generator is the pers node this one's kind of a joke but also you can do some really fun stuff with it let's have a look at this i'm gonna just jump straight into rendered view it's a bit of a weird node but it does allow you to do some really fun stuff it's also a very big node let's jump in here and i'm gonna make a couple of materials just so that we have them i'm gonna make kind of a default one here and then i'm going to make a dark one just for the um the supports here so we have two options for materials at the bottom let's start with this veneer material which i'm just going to set this out default maybe actually set this metallic just so we have something interesting to look at something like that maybe a little bit darker and then our wire material so i'm going to use my i'm actually going to set this to a bright color so we can see it nicely all right it's a bit gloopy it all sticks together it merges with itself when it gets within certain proximity i recommend not turning these up too high things will get heavy quickly this is using volume to mesh to do all this remeshing so if i set this up a little bit we can see we're losing some of the integrity of that volume to mesh but that's just to be expected uh start resolution maybe i'll make this a little bit higher and you can see that you bring back those veneers so that's basically the the resolution of your volume to mesh for near count we have five and we can see in here basically one two three four five if i set these up to a higher number you can see we're gaining more veneers we can randomize the zed position of these veneers to give us a little bit of interesting variation and we can also set the displacement amount so this is going to basically do a noise displacement on the surface of these veneers now if you have too high displacement you're going to need a higher resolution to make up for the fact that your surface is stretching even at zero you can see what's going on here we're basically working on planes making a grid of planes and then just messing with it having fun that's what this node is about this node is just form finding and exploration looking at silhouettes and just having a good time we change the seed and this changes everything we have veneer thickness so this is does what it says on the tin makes the veneers these uh horizontal sections thicker we have a curl veneer which is the amount of the z facing which gets cold basically so if i curl a lot then we're only going to be left with this stuff which is very horizontal but we end up with some interesting holes interesting kind of spatial design stuff in going in here the wire density this node was actually the precursor to the wire flood node i made this and i was like wow actually that looks like a good time wire density basically string stuff together makes it look structural and we have wire radius on here as well just sets the radius of the wires and the wire wiggle which just sets how random the path of these cables is to have fun with that now we have some fake bend going on this is just a vector rotate really but we have a center bend axis and we have some high low limits and angles so you can see we can start messing with this get this to split itself open here and we can control how much of this gets through if you set your limits very close to one another you can actually get some very interesting effects maybe we go for a more interesting bend radius so we're definitely getting something coming through here maybe we want to break that open just a little bit maybe we actually go all the way around let's go 360 or just under and now we should get this sort of sweep coming around let's set our resolution up a little bit higher and uh we can keep coming up here let's go up to 60 just bear in mind this will get slower and slower the more mesh it is calculating a hundred i'm starting to have a little bit of trouble processing this but here we go you can just see this node it's not about really generating a thing it's just about having fun there will be some more nodes like this added to the toolkit or maybe expansions for the toolkit in the future where we are essentially just doing form exploration rather than making a specific low-level tool i'm just going to turn down my y density there a little bit there we go lots of fun to be had with this one etk purrs in honor of purse beats amazing artist we can see how a computation time is taking a second and a half to compute this node all good fun right let's jump on to the next one generators under pairs we have our line segment back to the normal stuff let's have a look at this right we have a start and stop so these are our in and out points on here pretty simple we can just position our ends we can choose whether or not we use spacing for our points so if we use this on our instance on points right now we have a certain number of vertices but if we change this to spacing i will use approximately our brick length and i can plug in my rotation if you ever want to switch your rotation like i do now i'm just going to jump in change this over to x and uh that just makes things a little bit easier so there we go something like that you can see now i'm using the spacing that wherever i move this to we're changing the number of bricks or points specifically on the line and that is controlled by the spacing it will not go lower than your spacing but it may be higher but it will never be higher than two times your spacing so that's just something to be aware of the longer your line is the more accurate it will be to your spacing the difference between two and three points versus 101 and 102 is going to be much much smaller if you think of that as a percentage and again of course size and factor are outputs all right next one we're going to be adding is going to be the spirograph if you have watched my spirograph video then you are going to be quite familiar with this one this is essentially what we made although i believe we made that one with the attribute system and this is of course using fields so we have a total number of vertices we have the draw amount which you can see is basically a progressive drawing of the line now regardless of what this draw is you will always have that number of vertices so if you are instancing on this you may run into trouble however you can just use this with something like the curve pipe node that we talked about earlier if i increase that a little bit drop my radius a little bit now you can see we've actually got a mesh that's nice and fun awesome so 2 pi that's our full rotation we have the number of turns which we can see here is 4 and if you go higher then of course that's just going to increase the number of turns that we have made some very interesting shapes with this have a a good exploration with it we can set our minor and major radius so our major radius is kind of the main shape and the minor radius is then a circle that we draw along that circle so that's why we get this kind of interesting interesting shape going on here now if i were to do something like this and plug in my rotation and that sets to a line rotation things will follow fairly close to the actual direction of the line this is kind of a less useful node for explicit construction like this but just using this allows me to show you the output so we have the size of course this is just the total size in this case that would be 59 we have a factor this is zero to one along the curve and we have a fall-off which is zero to one from the center to the outside so this one may be more useful just for kind of general use but the factor is going to allow you to do some kind of interesting progressive animations along your spirograph next up we have got the taurus there is not a default torus in geometry nodes so let's grab this so we've got our looks like a fairly long node but it's actually quite straightforward to work with there's just a few things in here to be aware of so we have our geometry output as default we have our size we have our u factor and our v factor let me just show these ones first if i use my rotation in the rotation we can see things kind of stick on it's not the best it's not the best surface they don't really follow our actual mesh here but they do track in quite a pretty way actually the u factor is radial you can see like that and the v factor is actually around around donut if you've watched my blue rose the endless bloom video this is the node that i used and it was this factor that i used to animate those petals let's have a look back on here so we have our minor radius and our major radius of course this is just our major radius here minor radius is that one the major and minor segments this is going to be our outer segments here and our minor segments in here we also have a twist so this is basically going to allow you to twist along the length now depending on your resolution you're going to want different values the most kind of foolhardy way of doing this is just to set it to 360 degrees or something like that so you can be guaranteed that you have a nice connection at the end there and you can see how this could start making some fun shapes we also have a u phase and v phase just jumping down to the bottom here this is going to basically move like spin it spin it that way or the v phase is going to spin it into itself and again the v phase is what i animated for my endless bloom now the human umax v min v max these are our surface domains you can see what's going on here i can set my different u and v minimum and maximum domains so if you want something quite interesting we can do something like a full u domain we could then do something like changing the number of twists you can see that these don't quite play nice and this is because of our v and u phases if i set that back to zero then our zero stays where it should be now if i set this to something like 1080 then we have three rotations let me increase the number of segments here so we get something smooth and then you can basically see that we can get something really nice if i set this minor radius up a little bit higher do something like that we have this really lovely ribbon and then we can just chuck on something like a wire flood join this up so we can see everything i need a little bit more distance on my wife let's set this to two so that we can get these strung up a little bit more control from my gravity so these look like they're hanging down and a little bit more density set my wire material to red and there we go easy creation of these like really interesting free form structures very very quickly all right that's basically covered to taurus for you let's go on to the next one generators uv sphere you're all familiar with this as a default node but this essentially works the same as as that by default but it's also got the extra polish so we have our geometry size is our total number of points u factor v factor again these are going to be our different values along the different directions of our surface if i plug in my rotation we have this again this is not really following a a locked rotation this is free pivoting rotation which is why we get the kind of interesting polar formation we see that we have this radial stuff on the u factor and a bottom to top on the v factor so that's controlling that stuff and if we have a look back on here we also have things like our u-count v count which is going to be our different resolutions radius of course and we also have our human umax so if you want to control this make a certain shape i've done this with making displays like this wrap around displays done a few things and we've also used it for i think we did it in one of the first live streams when we were making the demon donut and we did a full sphere like this and we just like had that instance nice and easy half just how you want it so no need to delete stuff we can have complete control over how much of our sphere we actually have on display so that's the uv sphere it's just a regular uv sphere with a bit of extra polish final one here doesn't seem like it would be very useful but occasionally you want it basically it's just a vertex you set the position with a vector nice and easy and it outputs a point that's all there is to it let's carry on so we have some mapping stuff so we have the basha so the bashir node if you've watched my tutorial on getting rid of tiling artifacts i think we make the a node called the untiling node there's a modified version of that called the basher which is available on my gumroad and that is for texture bashing basically triplina untiling bashes textures but it does it in geometry notes and it also does it in two different variations so we're gonna just show this nice and easy with the sphere let's grab just an ico sphere let's go for a few more subdivisions let's go to the seven so when would you ever use this well i'm going to actually just jump ahead and show you another node which is going to be very useful for this which is the displace texture node it allows you to take your geometry and displace it with a particular texture you can set the strength mid level whether you're going by normal or vector in this case we're going to go with normal which is the default setting take that on if you want it to be vector i'm going to just grab a new image in here so let's open i maybe just grab one of these let's grab this displacement now if i just plug in this like so we can see we have a huge amount of displacement so let's turn down our strengths a little bit and we're going to need some more resolution now working on geometry with no adaptive subdivision does make this an interesting challenge let me also just smooth shade like so just so that we have something to work with here so you can kind of see what's going on we have got our texture bashed over the surface so we're basically putting in all of these places and we're using the fast one here now the output from this node also has blended and scale and scale basically allows you to go through like a divide node if you want to control your strength by this scale and that way you can just set your scale over here and it's going to pass it out we've done this similar kind of thing with our textured tutorials in the past let me show you why you would want blended instead you can see on these edges well you can see edges that's the issue so the blended version if i join this one up this one's going to take a little bit longer now so we can see we changed that from the texture displace taking 73 milliseconds to it taking 539 that is a pretty significant increase now of course we're using a lot of volleys here but that's a big change but the issue is takes a lot of nodes and it takes a lot of voronoi in particular to get this having complete smoothness everywhere is blended nicely so now i've got this set up and hopefully this will be fairly performant this is taking around about four seconds five seconds to perform so we have scale if i set this to something like point five then well it's going to scale the texture to a sort of twice the size of it being a one now we have tri planar edges this is kind of like a wobble in fact let's go into fast and we can have a look at this a little bit clearer because we actually want to see our tri-planar edges so if i set this down to zero then we will see that we have some edges dividing our mesh up you can see really clearly here these are the triplane edges this is where each axis is projected if i set this up to something like 0.5 you will see that this gets distorted a lot of wiggle on that 0.2 0.1 is the default that's probably fine uh if i go back to a scale of one so we get a few more tiles in here our cell edges this is essentially the same so if i set this to zero you can see we have these straight foreign edges in here if i set this up to point two as well suddenly our edges are a lot more difficult to look at now the falloff this is to do with our blended mode so i've set this back to blended we get this uh nice fall off if i set it to zero it's going to be pretty close to nothing if i set this to one then it's gonna merge stuff in a way which is actually not very helpful so 0.2.5 something like that it's probably going to be the best bat for you you're not going to lose too much definition on your texture but you will get rid of those edges nicely now cell randomization and cell rotation cell randomization is basically on the voronoi when you set it from a regular pattern of grid squares to a voronoi pattern and the rotation randomization this is something you may wish to turn off bricks because bricks have a very specific laying pattern so there we go now we also hide seams i recommend you watch the tutorial for that but essentially this zooms in to the image and pushes the seams out so if you haven't if you have a non seamless texture you will want to hide your seams to prevent any additional stuff so just zoom in a little bit 0.1 should be fine now there's cell randomization and rotation randomization these can be driven by your seed value so if i change this you can see we're getting a different rotation different cell positions all good stuff right the basher that's done with the basher basically allows you to bash textures we've got a bunch of kind of interesting ones but let's have a look at before we get onto the space conversions let's have a look at some more of these texture most useful for texturing anyway so if i grab my window coordinates let's start at the bottom this one is one that we're going to be familiar with from shaders if i grab my camera bring it to my view let's go for a default here 1920 by 1080. we're going to use our camera object as the camera in here i'm going to use this as the vector i'm going to just bring in let's just use an image texture in here so this is going to be our vector i'm going to grab that same sculpt and i'm going to put this into the same displacement so now you can see as i move around this texture is actually sticking to our camera this is what window coordinates do essentially a zero to one left to right for our camera if i draw this on we have u being zero to one and v being zero to one or you know x and y you set up your camera unfortunately i can't sample this implicitly but we're just going to select our camera put in your field of view in degrees that's an important one if you want this on a driver then come into your options here change your millimeters to degrees you can copy this as a new driver go back in here and i can paste that as a driver so now if i changed change my camera even if this is in millimeters you can see that this will actually correct itself this will update and you can see that there if this is something that you need it's how you can do it let's have a look at the next one try planar and try planar blend these are kind of a pair you don't need to use them both you can just use tri-planar triplaner is very useful if you have something like an image which is a two-dimensional texture so if i just let's bring back that image once more if i bring in tri-planer here into the texture you can see that we're now rather than this just being projected from the z-axis where you get this stretching tri-planer allows you to do box mapping now there is also a blend because if you remember from our fashion mode you get seams over your tri-planer faces so what you're going to do is you're just going to grab an image texture i'm just going to duplicate this one three times one for the x one for the y and one for this add and then we can use our triplanar blend and we simply plug in our x y and z axes and then this is our color if i bring back my icosphere i just muted that so it was a bit faster we can now see that we are getting blending over those corners if i set this down to 0.1 then it's a little bit closer actually we want a nice tight blend so that we don't have an edge but we don't lose the definition of our text yet so point one is probably a good default actually set this to zero and you'll get your edge back so it's a one and you're going to see overlaid textures some textures this will be fine things like tree block ground for bricks and stuff like this probably best to keep it nice and tight point one is gonna be your best bat let's jump onto the next one we will have a look at looping coordinates what could these be used for well if you have a noise texture or a voronoi texture you might want it to be tileable and especially if you're making game assets or something like that so let me just set up something here i'm going to grab a grid and i'm actually going to instance this on another grid just so that i have a little bit more control i want to basically prove to you that this is going to be tileable texture so here we go i have three identical grids like so i'm going to realize these just to make sure that you know that these are definitely unique geometry so we're going to increase the number of points that we have i'll show the wireframe you can see that's nice and dense now let's go to 100 and we're going to be doing looping coordinates and let's use this again with a texture displace and we're going to bring in a texture which is going to be let's use a voronoi just for now so let's use the distance this is our texture we can see this is here and right now these are all different right right now we can see that these are all unique textures let's make this a little bit taller even and they continue across the edges now if you just did you know a regular voronoi and then tiled it and i can kind of simulate this by putting this in a different position here like so so each one of these is now identical however the edges do not line up so if you had a camera down here you'd be seeing beneath your world it's not what you want so what we've done is we've created a way for you to do this procedurally first thing you need to do is you've got your vector and you have w so this has to be 4d that's the first thing we need to plug in our vector and we can see something's going on here we already get a little bit of stretching in strange places plug our w into the w and now we can see let me bring this in slightly just so it's completely butt edge against each other so we can guarantee that this is going to be lined up nicely and you can see regardless of the density here we're still pulling these through and all of our edges match but each one is identical we now have a tiling procedural texture this works with voronoi it works with noise anywhere that you have a 4d texture that you can plug in your vector and the w this is going to work for you so now we have tileable purlin noise and this is useful because if you only had one tile that you were making you can guarantee that this if you then put it into a world where it is all tiled this is all going to work perfect looping displacement that's how you use the looping coordinates got to be with a 4d texture that's how it works next one we've got on here is the mapping node if you've used shaders you know how to use this if i bring back my image texture it's probably the easiest way for us to show this off we're just going to put our position in front like so and then we can plug in our image texture set this to our texture as we had before let's plug in our color into the texture let me drop that down as well just so we get the nice displacement there is our texture we now have control over the position x y and if it was 3d then we would also said obviously for a texture enemy texture this is immaterial we have our x rotation which we can see is going around the x axis y rotation and the y axis and z rotation which is the one that's going to be useful for you with an image texture and we have scaling x y and z you also have the option to invert so basically this is like turning it from point to texture on the shader version and it's basically gonna mean that when you move it it moves counter counterintuitive counter-intuitively it depends what you're used to expecting i suppose but there we go that is the difference so it's going to invert all of your transforms that is the mapping node now we have a few interesting nodes which are a little bit different the next lot of nodes i'm actually going to group into one because we kind of have like a super combined node as well as the individuals just depends what you're after so the individuals are cartesian to cylindrical cartesian to spherical cylindrical to cartesian and spherical cartesian these are basically space conversions or coordinate conversions between well let's have a look at two of them real quick so cartesian to cylindrical is going to convert xyz to radius theta z or you're going to get the other one for cylindrical as well with um the other greek letter there is a kind of super node included so we've got the space converter node and this is really useful because it allows you to basically set from and to so you can set zero one or two depending on whether you're looking at cartesian that cylindrical or spherical why would you want to do this because it makes certain things much easier certain things much easier for example if i was to do something interesting with maths if i'm making a circle for example and i want it to be moved in the z axis by a sine wave if i take my line node if i think about the a circle it's going to be 2 pi right so i'm going to set my length to tau now i can see i've got this line going in the in the x axis there by 0 to 2 pi and i also want this to have a certain radius so i'm just going to move it in the x axis so x is our radius y should be our angle our theta so we can see that there now maybe i want to do something yeah something with the sine wave in the z axis so i can take my factor multiply this by a certain number of of pi let's go like four times pi this should be two full sine waves and then we're going to just put this through sine and then maybe we can make it bounce so we'll also absolute it right something like this now if i use a set position node let's grab it geometry set position and i grab a vector combine xyz let's move into the z axis in the offset if i look at this we need some more points so let's grab our vertices and we'll just increase this up nice and high somewhere around 200 so we can see what's going on here we have a straight line which bounces in the set now if you were to make this into a circle this is a lot more math if we're working in cartesian this is where it gets useful so in cartesian space you've got to do your x and your y based on like sine and cos and then you're also going to have to do your z because of this however if we just say that this this isn't cartesian this is cylindrical and we want to output cartesian what i can do is i can just get this that position right let's make another one actually and i can now take my input position through here into my output position there there we go now we're setting this position through our space converter i'm saying that this is not cartesian this is actually cylindrical so now what it's doing is it's reading x y z not as x y z but as radius theta z and then it is converting that to x y and z which basically gives us this we have a nice little surface now a shape a curve that we can work with in fact if i was to do something like maybe arraying these let's grab a linear array and we want to realize these as well and we want to set our offset way lower maybe even negative you can see that we're getting some really fun effects really quickly this is a really nice procedural way of working to generate lots of shapes and let's say instead of cylindrical we're working spherical so now instead of z it's going to take that as uh i think it's phi which is your polar radius your polar direction and now suddenly you can see that we're getting this really interesting shape so you can do all sorts of things and you can obviously convert your inputs and outputs separately do something like this have loads of control and you can do these one after the other do lots of different conversions control different stuff twist your universe through itself through different coordinate spaces amazing damn always get really excited about this one because it's kind of like using curve formulas in spur chalk so you can build this up nice and easy if i want to have more control over here i can basically say multiplied by pi this is the uh the number of bounces that we have and then the integer that we multiply by is going to be basically that value so now we're going one bounce two three four five six and you can set this however you want you can multiply this down now to all sorts we are interested in masks got a camera call mask here so this is actually one of the first nodes that i made in the original toolkit very useful node i can paste my driver into here so this is my field of view and we're going to be outputting a mask based on the camera region if i add a grid something like this let's make it a bit bigger let's do a point distribute points on faces and we're going to instance on these points just something simple like a cube like so all right let's make this smaller on the scale just so we have something to look at nothing too fancy just gives us something to work with where do we plug this well if you're using it like this you can just plug it straight to the selection that's the easiest way you can plug it into a delete geometry but you would need to invert it remember that you're deleting the selection so it's just going to basically need to use like a boolean math set to not and that's going to invert it you can see i'm removing that from our thing set your resolution make sure that's all fixed up i use drivers for my field of view just so i can control the camera later and we also have the padding control just so you get a little bit a little bit of buffer for example if you're right close to the ground or if you're moving around big bushes it can be useful to have a bit of extra padding just so this stuff doesn't pop in front of the camera we can extend to the camera which will just bring it down to that z position as well just to make sure that you don't have any foreground popping as well now if i'm in camera view here let's set this back to zero you can see as far as the camera is concerned everything is visible but we are only viewing a very small percentage of our entire scene camera call node we will come back to a little bit later because it's also used with the foliage node now distance culling this is the next one again i'm going to pick the camera as my distance call this doesn't really matter but just in case you want to do that we're going to set the distance with a little bit of fall off here so actually what we have is essentially a radial distance something like this and uh a falloff control so if i set this to zero we have a hard edge on our radius you can see that there and if i increase this then we just basically add or subtract various points within that radius just gives you a little bit smooth fall off if you're doing levels of detail this can be a useful way of working basically instant sum on your inside points instance some other ones on your outside points and there we go so that's a nice way of working with lods in a kind of very simplistic way we also have an sdf on here it's essentially creating a sphere sdf so it should be negative on the inside so all of the masks aside from the camera i think although i may update that in the future has an sdf which is essentially a signed distance function so let's grab i'm going to add another object i'm going to add a monkey just because it adds a very useful uh 3d shape first to compare against here this is going to be for our points inside mesh right if i just come in here let's generate a grid of points 3d grid with etk grid let's make this a little bit bigger in each axis something like that is fine maybe even a little bit bigger and we'll also go for more points i'm going to go quite dense something like that is fine now i want to bring in my susan object that says to relative and i'm going to mask this with the points inside mesh this is our mesh our susan and we have either fast or full you'll see the difference for that in a moment there's also an option for a back face check and again you're going to see the option for that in a minute why that comes in useful now this is our mask right so let's grab instance on points it's very easiest let's grab the cube just so we have something to look at nice and small in here something like this will do there we go and uh let's use fast as our selection all right now just so we can see things a little bit better let's grab suzanne and make a wireframe under here viewport wire there we go good so you can see that we have suzanne basically masking out our points so you can see that in here and uh each one of these points even if i randomize it right so it looks nice and freeform she's just generating those points now there is a different accuracy so this basically if you were to do this with a cone you would really see the difference but essentially it subdivides the input mesh just to give you better accuracy but at the cost of speed we also have full instead of fast this will be about four times though i'm not sure how this would perform on a very heavy mesh but from my test it's been pretty good so full will do a complete check left right forwards backwards up and down fast will only do forwards and backwards um it's ray casting by the way it's just checking whether or not the point is inside the mesh all right there is also a back face jack um which we're actually seeing reduces some of this accuracy here because we have some back facing stuff going on inside the face if i remove this and let's go for a collection instead just so i can show you why the back face jack is so important just drop this into my extra collection i'm also going to grab a cube which is going to be wireframe as well so let's use our hidden collections uh just separate there we go into our mesh and i just need to realize those instances and we're good all right if i just make sure to put my cube into that hidden collection as well there we go we can now see we have points basically all of the ones which are inside the cube and also all of the ones which are inside suzanne but if i backface check and the issue is that all of these ones here that should be inside the cube it checks and it hits the front face of a suzanne so while the back face check does make it generally more accurate for example i would recommend doing this inside something where you have a lot of very complex geometry and things maybe inside nooks and crannies so the back face check is great for that however when you have intersecting geometry it actually causes issues so that is off by default but it's there if you need it and uh yeah this can be a really fun way of masking out points let's have a look at the selection box node this is kind of what it says on the tin plug this into the selection and you've got a box nice and simple let's make this a little bit denser so we can have a look at some more of the settings on here if i make this taller we can see we have a taller box if i rotate in the y-axis and then the z-axis x-axis you can see what's going on here we essentially have a box which we can move around and it makes a selection we can also round the corners if you want a more sort of lozenge shape so that might be useful for some of you now we separately we also have the sdf right so anything close to the surface is going to be smaller or sorry have a lower value and it's going to get bigger towards the middle so again might be useful inside and outside this is the control for each one of our selections right we have a cylinder selection by normals this one is going to not work for us here because we don't have normals on our grid but this is going to allow us to distribute on a particular direction if you're used to the previous version of the toolkit this is etk steep so it basically allows us to position foliage and things like that based on the normals of the mesh beneath it use the inside set your normal direction and you can set deviation range the factor as well this is essentially like an sdf but zero to one based on whether or not things point in the same direction or the opposite direction to your input vector the other masks we've got in here prism and sphere sphere is the most simple one it is essentially just a sphere there we go nice and easy so that's all of your selections we do of course have the other shapes but they are literally just other shapes plane is up or down of a particular plane which has a normal and a center so this can be useful for doing just kind of left or right of a selection plane alrighty then we have made it to the final category of nodes we've got through all of our masks mapping generators fields fall off and curves and we're now onto the utilities which are essentially the useful ones you're going to use these ones much more than any other in the back certainly some of them let's start at the top here we have a line mesh by mesh this is basically a straight rip of a node from spurtrock very useful node it allows you to very quickly align a mesh by either zero zero zero or another mesh let's grab just a regular cube this will be fine and i'll also grab a cylinder so i'm going to be aligning my cube so this goes into the geometry look at the output here so if i just mute this we can see this goes back to zero but by default we are lining the z-axis which is why it moved up this is all the way to the left on our g this is our geometry so we are aligning or aligning the the minimum of our line axis to in this case the maximum of our target now when nothing is plugged in this target is just zero at zero zero so you can see if i move this so right now it's on the bottom we can move it to the middle there we go at around about halfway or we can move it to the top there we go so top middle bottom of the axis and you can do this in the y or the x as well all multiples you know if you want this to go in all three axes then you can do that or you know you can use these in series to do different alignments on different axes so let's just do it with a z for now just keep it simple and i'm also going to take my cylinder let's join these ones up just with a join geometry and i'm also going to plug my cylinder into the target so now you can see i might want to put the bottom of my geometry onto the top of my cylinder now if i wanted to go onto the bottom i'm go into wireframe mode here i could set it to be the align to the top of my cube and the bottom of my cylinder so this means basically that we are able to manipulate things really really quickly and really really easily next one on we have got array linear we touched on this one before but essentially it is going to allow you to do a linear array basically aligning down a line now by default we have the count we have a start position and an offset so this is like your basic array and we can always move this let the start position wherever you want this to be i'll leave it at zero and we can leave the offset to whatever this is going to be right so we can set this to an offset and you'll also see that the offset says four slash end so if you tick the box which says use end then now this actually works as a line segment so in a lot of cases you may want to array between two points and say oh i don't know have 20 different instances between two points so if we do this and we move these around have something like that and let's bring this down a little bit there we go it's a little bit easier now maybe you want to actually use spacing instead of have these controlled by the count so we can also turn on spacing and uh and that's going to work you have to use end if you're going to use spacing that's just part of how this works here now we can also set it to a line rotation and you can see what that does we basically have these being aligned to the axis that we are moving this on there's no locked pivots so we can get some weird rotations but for general stuff this can actually work quite well so that is how we use the array linear it's quite simple it's basically like a polished version of the array modifier array radial this one's very useful of course because if you have your object let's use our cylinder again we can just drop this through our radius now we can set a center on this so you don't need to do a separate transform to move this but we have a control for our radius and our count and it's not going to be particularly noticeable with our cylinder so maybe i'll change this out for a cube just so you can see but we also have the align rotation on here which is going to align it radially like that now we can also use spacing which will override the count and that's just going to allow you to do something like this have it set based on your radius so you have a number with a decent even spacing of course when you have more points you have a more accurate spacing value all right on to the next we are looking at the array spline plug this into our geometry and have a look now we don't have a spline plugged in we can either use a custom one like you know generating an actual curve in the 3d viewport and just plug this in through your object info or we can generate a spline so let's go ahead and use a curve primitive quadratic bezier is going to be probably what i want just keep it simple and let's move these out a little bit get these rotating up right so a line rotation is on by default with this one and you can see that that is following the curve nicely also worth noting that if i stick on a curved tilt node that we are tracking the tilt as well as the tangent so we have two align rotations going on here now uh we can set this whether we want spacing or count nice and easy and it's just going to use the resolution so this is going to allow us to control the resolution of the curve if we have a custom curve especially this will be more impactful utilities attribute to instances the attribute to instances node allows us to do something like take a grid and let's instance our cubes on this grid there we go we have nine cubes looking good let's put our attribute two instances on here and i'm gonna go with this grid i'm gonna plug this into my target now what's happening here is it's gonna generate realized geometry these are no longer instances at this point they're real geometry however they will have taken on an additional attribute which is correct for these now what could this be let's take the position just so that we can see what's going on here if i plug this attribute through to the output just so we have it we can debug this inside our shader you'll see what's going on let me just call this one pause just so that we can call in the shader let's grab our shader editor find a new one in here and i'm going to find the attribute node and call pause there we go let's take that vector across to the surface and we'll just go into ev now right now nothing's happened because we have not really assigned a material so let's go materials that material and just grab that in here so right now it's all black and this is because we don't have an attribute coming through and let's just plug this through input position plug this into our attribute and now we can see that we have these values some of these are negative but that is fine right now it's going to choose between nearest face or nearest if you have a point cloud then you want this to be ticked on if you don't have any faces this needs to be ticked on otherwise like if you're transferring normals or something it will interpolate it from the nearest face so what's the difference between this being position and just a regular position well the regular position you can see has z values and it's different across each point of the cube so using this this way basically transfers the attribute from the grid from this grid as the target to our instances it turns into real geometry if you need multiples of these as sometimes you will for example if you're making the position transfer across but you are also transferring something like the index you just make two of them and you can use the attribute directly like this so let's call this one just a and instead of position let's use the index or something like that so now we'll actually have like an instance index and if i call this we can see zero one two three and so on let's have a look at the bounding box the bounding box is a default node this just gives us more outputs so if we had something like a sphere you can see that we end up with a bounding box that fits the sphere but our new bounding box node does the same thing so we don't have the min max factor anymore i've always found using that node that i've never actually used the min max factor just straight i've always used it through some kind of like separate xyz and map so that's what we've done here we have a vector for the center this is not the average of the vectors this is just the central position so for this it should be reading zero and then we have like the minimum x maximum x min y max y same for z and we also have the size x y and z so if you just basically subtract one from the other so if you ever need specific values from your bounding box this is the node that can do it often this thing's like size it's very useful if you use this in combination with the brick straight nodes this is going to allow you to set your brick size from your collection nice and straightforward utilities copy on points right this is the one which is like the attribute to instances however a little bit more feature rich essentially i know it's a really big node so it can be a little bit daunting but we take our points we take our geometry by default we can see this is looking just how it did before but we do have some extra options so this is also combining the instance on points node hence the selection and pick instance option which will help you if you're doing collections so foliage stuff like that instance index as well that's very useful but again just a default option on the instance on points node and the option to randomize the instances this one is actually not a default option but something that you will notice if you have a collection and you instance it on a regular grid like this is for example if you have three items it would go zero one two zero one two zero one two the randomize instance option is going to randomize which point goes where so just lets you distribute your scattering a little bit easier just on there all right now we also have rotation so again this is kind of a default thing what is not default is the deviation so if i set my z deviation to 360 degrees now you can see that we're getting 360 degrees in fact i only need to go to 180 because it's going to be positive and negative it's kind of like an epsilon your bracket right so we're going to add 180 degrees and subtract 180 degrees from our target rotation so if i set all of these to 1ac we have complete randomization equally the scale works the same first scale is just like our default one and the deviation is going to allow us to randomize this if you want things to scale evenly just tick the even scaling box and you will be golden seed of course just does what a random seed does now the outputs are where this actually gets interesting so set these back to zero so this is where this comes in very useful for making things like flowers because if i plug in my local position you will see that we have that local position directly by plugging the index then we have like zero one two three four five and so on if i plug in the rotation right now it's all zero but for example if i set the deviation higher you can see that they're pulling through the actual rotation the total rotation which can be really useful if you're doing something where you need to know the current rotation of your thing so that you can essentially un-rotate it manipulate it like doing bends and things like that creating folds for your leaves and then re-apply that rotation as a flat value to your whole thing so if you're doing this with a rotate vector rotate set this to invert set this to euler you've got your position this is going to be your vector because that's all the vertex positions your center is going to be the local position your rotation is going to be the rotation then you can do whatever you want to do and then you just have another one of these coming through set to not invert and that's essentially going to allow you to modify this in the middle with a proper transform on the individual things in this case i'm going to assume you're using this for petals this is like your flower making node this combined with filot axis this is gonna it's gonna save you a lot of time that rotation plugs in there and you're golden you can see that's all set up nicely so a lot of stuff you can do with the copy on points nodes it basically just transfers all your attributes directly nice and easy next one displace noise texture and voronoi these three are basically more or less the same node just with slight variations see the noise one looks a little bit bigger and we've played with the texture a little bit earlier when we were looking at the mapping nodes but essentially you can plug in an object like a grid let's make this a bit higher res this can come through and we're just going to be displacing that surface something like that so we can choose whether we're going normal or vector vector is going to be using rgb noise to control the direction and you can always multiply that by a certain thing to go in a certain direction if you want it to only go in the x direction for example so normal is what is set to by default the strength to do that the mid level he's going to do that that's all kind of standard stuff here and then we have controls for our actual noise so with no noise coordinates plugged in it's just going to use the position but of course you can manipulate this you could use something like some really interesting converted space coordinates something like putting in the uh the position through a space converter plug this into your noise coordinates and now you have all sorts of weird things that you can do with creating different types of noise interesting so by default this is just going to take the position though we can set the detail the roughness it's just a noise node right it's just taking all of the noise values putting onto the displacement with some displacement control at the top in the same way that the displaced voronoi does a similar thing but we don't have the rgb so this is just going to be doing it in the normals just like that uh strength mid-level scale and randomness this is just using the the distance of your voronoi and the displaced texture is going to allow you to plug in any texture including the default ones like if you wanted it to be i don't know like the brick texture or something there you go you have something like that and that's going to work directly in there equally the noise if you're using 4d noise so that you can get your looping coordinates through it you can do that with the display texture again strength mid level normal versus vector if you set this to vector then you can do the offsetting so for example if you wanted a specific offset vector for a voronoi then the easiest way is to do it through this displaced texture like this all right so that's our displacement that just like the displaced modifier just rolled into a single node now let's have a look at foliage this one's a nice big node for you let's grab our input geometry um you know what i'm going to make something a little bit more interesting here i'm just going to pull this one in to my node tree and i can actually now just hide it that's fine we have it now in the node tree so that's good set it to relative let's smooth this one out with a subdivision surface maybe i even put a noise displacement on here utilities displace noise there we go all right we have something nice and lumpy for us to work with now the foliage node actually expects geometry so not points you don't need to do a point distribute that's all going to be handled by the foliage node we are only interested in the actual base geometry so plug this one straight through like so and i will also just add a join geometry afterwards there's a lot of options on here we're just going to work through them nice and easy now we need a collection to distribute this is a little bit different rather than generating stuff in the node tree this is really mainly useful for using assets so for example if i add some grass or plants or something i'm going to use these spiky ones we just need one or two in a collection and i'm going to hide that botanic collection let's go in here so we have a load of plants on here and uh and it's running a little bit laggy right so the first thing we might want to do is plug in our camera curl mask i'm first of all going to need a camera so let's go ahead and add that to begin with and i'm going to add my mask camera curl i'm going to select my camera object and we're going to just plug this into the camera call mask everything's set up as defaults right with the the default 50 millimeter lens and the 1920x1080 so this is actually working absolutely fine by default we can see this is now nice and fast if i hide that again you can see running to a few little draw issues there in fact if i increase my viewport density to 10 we're really losing oh it's like walking through mud turn that on nice and fast all right now this shouldn't really affect render speed if you're rendering with cycles but it will make a slight difference when rendering with ev or of course the workbench while you're working in solid view all right camera culling check so you just plug that one straight in now you may also want to be using a selection so you can do plug in your selection there probably interested in what the viewport density render density is this allows you to switch so for example if i say that i want this to re-rendering at a density of 30 well even with camera culling this is not playing nice and if i go without camera curling this is essentially unworkable at this point so if that was my render density that i wanted in my final renders i can't work like this but if i work at 10 we're good we can move around and i can set this into my render density now if i wanted to check it i could still click on use render but without that this will just render the full density i could even go lower in my viewport and now we have completely smooth we know where things are going we get a sense of the scale of things but we don't need to worry about the final density that'll just show up in the render all right we do have the distance min as well so by default this is set to zero just so it's essentially the same as a random distribution but i can also increase this you see as soon as we start culling these it does take a little bit more time but if you have trees or something like that that you need that poisson disc you've got your minimum distance there seed as well does what seed does now we also have normal masking so this is going to be useful if you don't want stuff for example growing underneath an overhanging surface or if you just want stuff on your z facing so right now the angle deviation is 180 degrees let's reduce this somewhere like 30 or 40 degrees 45 so now we can still get stuff on slopes but it's not going to be on sheer surfaces or overhangs and you can change this if you want something which is specifically going to instance on uh like an upside down surface i don't know maybe you're doing roots or something instance below a cliff then you could set that to minus one i'm just gonna go with one at the moment 45 degrees and there we go now we have our rotation by default we can see that we actually have some rotation and scale deviation so default rotation is set to zero this is fine really and our deviation is set to basically rotate and tilt stuff we can also set whether or not things align to the mesh normals when it off everything just points up when it's on things follow the surface scale as well by default this is one deviation of 0.2 otherwise things just look quite regular all right so that basically covers the node uh one other thing that you may want to do i know this has been raised on discord by a few people if i set my scale deviation to zero i can now use a node in the utilities which is the random bias to set my scale so for example if i plug this in and let's say that i want my scale to be generally one so i'm going to set this to be one actually in the min and then for my maximum scale i'm going to go for two but i'm going to bias this now towards that lower end the majority of these are going to be lower it's basically using a power curve right so now the majority are going to be lower and you'll have a few which are bigger right and we can see that here we have some showing up big in our viewport the majority are a little bit smaller maybe if i make that even more obvious you can see the majority of these are little but we do have some that are just considerably bigger so the random bias that is the node that is going to allow you to do this and you just plug it in and turn off the internal deviation all right so that's etk foliage it's a big node but it does everything it does everything if you're making foliage this is the one node that you can do it with otherwise you gotta you know you gotta set up some stuff right foliage force size this is one i don't use enough we have a fairly big object here i'm not quite sure how big it is but it's definitely quite large around about 28 meters maybe even a bit bigger so if i take this object info node which is our object and uh i can now force the size of this into being one meter or let's say we're gonna make this two meters you can see that it fits perfectly now into that two meter by two meter grid it basically just takes the maximum the maximum size and scales the whole thing down evenly until that maximum size fits within our threshold here so if you have something and you've made it to a maybe an arbitrary scale etk for size is going to allow you to well force the size basically just sets that maximum size and scales everything down nice and even next one lods all right this one it does allow you to basically set up an lod system based on the distance from a camera so you'll want to plug in your points essentially distribute points on a surface and then plug these in here now if you're rendering the cycles this is not actually it's not going to help you cycles handle instances perfectly you don't need to be loading additional instances it's actually going to be slower but you just load in your camera and then you say what your high res one is for lod zero and then your second lod third fourth and you can set your threshold for different ones now if you want everything to be low res if you're just doing like test dv renders or something like that you might want everything to be lower so you can just click this tick box everything is going to be forced into lod 4 in which case uh it's all going to be the low res instance and again we have controls for the rotation and scale as required so this one is kind of an odd node i know some people do use it quite extensively but if you're rendering with cycles you genuinely do not need lods but you know for eevee or workbench i can understand why you may want that let's continue matte smooth it does two things it takes your geometry like a cube something like that and by default it's going to set shade smooth and we can also set a material on there as well so we can see the smooth shading and the material set just does it in one node commonly this is something which is useful to have just at the end you know you've made your thing you just want to assign a material and shade smooth real quick or if you've done something like curve to mesh you might actually want to untick shade smooth and apply a material so just as it is one note nice and easy mesh boundary this one is an interesting one with questionable utility i've included it because there was one specific use case and somebody needed it for that if we have a mesh like a grid for example let's make this a little bit bigger maybe five by five maybe we can make this a bit smaller cool all right so the use case is you have background hills that you've made procedurally with noise but when you look down at these from your main camera vantage you've got the edge of this mesh being really high up and uh obtrusive it's in the way you don't want to see it we want this to kind of you know gradually fade down towards where the camera is this node allows us to basically do this towards all of the mesh boundaries and i'm saying this with a caveat this is using a convex hull node so it's not going to work where you have an like an in in part of the land if you have like a a mesh which is something like this we're only actually going to be measuring the distance from the outer boundary here not this in the part that may make this not very useful in all cases but certainly if you're just generating background hills this can be very useful so the use case basically goes like this you have your hills and if we set the position and we take the position input with a vector math and we multiply this by 1 1 and then something else in the z we now have a control for the height and more than that we can use the falloff from our mesh boundary to control the the z position right the z value so let's grab a vector combine x y z plug this in here x and y go to one and the z is going to be our falloff all right so this is already looking pretty good if you want a bit more control let's go ahead and use a map range something like this and we can now control the distance of that falloff and things like the interpolation if we want that to be a bit different we can actually just go off the distance which is uh sometimes more useful because you have that you know real fine control for that but you can see that things are happening at the top as well so the issue here is that let's have a look at the debug we've got the full mesh we want this to only really be our outer edges we want to limit this to just these four walls ideally different meshes will give you different outputs so just use the debug to check where these are and now you can see we don't have any weirdness going on at the tops there we can just control this like this and now you can see you know if this is your horizon and you've got you've got all of your foreground here now this is much easier to look at than this was where you could see below that mesh so there we go that is how we can use mesh boundary i know it's a bit of a weird node very very specific use case but if you ever need to find the edge of a mesh by its kind of convex hull this is the way all right mesh to instance this one is very useful if for example you've generated a whole bunch of things let's grab a cube and a let's grab an arc sphere if you've got all of these right and you want to be instancing them all together and let's grab a grid as well so we'll instance these on top of a grid point distribute points on faces instance on points and let's just grab a cube right okay nice and easy right what happens if we want to also instance the ico sphere but we also you know we want to pick it we want it to be well picked instances i can just use this uh join geometry can't i well unfortunately not because now we're actually instancing both if we go to wireframe we can see that they're both there and indeed if i joined all of these together it's just instancing all four of them everywhere if we click on pick instances they disappear and the node gives us an error that says realized geometry is not used when picking instances is true however utilities mesh to instance now we can basically just do that it just turns your mesh into an instance instead this is no longer realized geometry these are instances it's a very simple setup it instances it on a one point line that's how it works and there is a little option in here to reset the position so for things like the cone which is centered on xero you may wish to just center those and it just centers it on zero zero zero basically so this is how you can use the pick instances with generated geometry you just need to use the mesh to instance node and you can do whatever you want this is how i generate my large scenes with lots of different generated geometry and still be able to instance them this node meshed instances who is up next we have got mix float oh this one's very simple it's kind of like the color mix rgb set to mix these are essentially the same but instead of colors it's just working with float values sometimes this is more useful it's very easy very slightly so computationally less intensive allows you to just learn between value one and value two very simple node next up we have got point distribute all right this one's a little bit different because this one has the viewport and render density built in and these are fields as well it's pass on disk but these are fields so we don't have the whole like density factor thing going on it's just a straight field directly into the density you've still got the distance minimum for setting up your points in fact i can plug this on to here when we can check the points so i can set my viewport density i can change whether or not i have a distance min control on here and if i want to have lower density in my viewport higher density my renders then i can do this nice and easy we have a selection option as well here and we'll still pass out the normal and rotation per point so nice and easy it's basically just a nicely polished version of the press on disk node just sometimes you want that instead sometimes you want that render switch after point distribute we have random bias float and vector we talked about these before with the foliage node but essentially we set a minimum and a maximum and then we can bias the probability towards one or other it's just following a power curve but that is how this works very useful if you're doing foliage or rocks or something and you want 90 of them to be pretty small and 10 of them to be pretty big and have that noticeable variation there we go so that's the same whether you want it for vector or float that is what the f and the v stand for we then also have random float and random vector these are bipolar meaning that they add and subtract from our target by the deviation they basically work the same right but i'll just show you on one for now if i wanted my values to be between 0.8 and 1.2 which is pretty common for foliage i would set my value to 1 my deviation to 0.2 so now it's going to be one that's like my target and we're going to go sort of 20 below and above now this is really useful because if i actually decide that i want to set this up to two because maybe my foliage assets are a little bit smaller than expected we still have that deviation we only have to change one thing if you use the random value node and you wanted to go from point eight to one point two and then you're like oh actually no i want to go from 1.8 to 2.2 well now you have to type that in twice rather than just controlling one value so i generally find for most of what i do the value and deviation this is how i work rather than the min max so this is why on almost every node except from the random bias you will find value deviation or vector deviation rather than min max after these we have got the render switch so this one is very useful essentially this is what does the switching so we can use this with any nodes so this is why we've made this into a separate node if you want to distribute points on faces with a grid we have a bunch of points maybe we go for it higher density on here and maybe we have two different densities we have one for our viewport and one for our render that's what we can use so i can plug this in here maybe render is a hundred viewpoints one you can see that will switch as soon as we hit render it will use the render value it's based on the is viewport switch but the great thing about this doesn't just work on distribute points on faces it works anywhere you need a value so let's say we set this to 5 but then we have a very high resolution version for the actual render that's one way of using it or you can even use it with a subdivision surface so we have a regular number here and let's say we're going to set this up to five render two in the viewport so like that so in the viewport we're gonna get two when we hit render we're gonna get five so you can see how this becomes very useful it's kind of like in particles when you can set the like the viewport amount in particles i think it's like a ratio but i prefer to have like an explicit use this because it allows you to use it in more places to specify specific number of vertices number of subdivisions number of density whatever you need moving down we are so close shrink wrap this one's a bit interesting this is the first one i think that has an alternate green socket so let me show you what this does shrink wrap if you are not aware allows us to well shrink wrap do something uh we have a suzanne still let me uh let me move suzanne down a little bit just that way below the surface something like this i know it's wireframe but you'll just have to bear with me here so i can pick suzanne as my target that's fine and we have an influence of one this is a field so we will get onto that in a moment i can now do something easy like geometry set position position goes into the position and there we go so we can see that that all moves down essentially a shrunk wrap based on the direction we can use a different direction based on whether or not we need to shoot in a different direction and we can use use opposite so for example if i move this up we can see that this is always going down right but if i use include opposite what it's going to do is it's going to use the closest whichever one is closest up or down and uh you can see that that moves between them as we go through that why is this useful well because it means if you have a thing like this we can shrink wrap a surface to another mesh which can be very useful and we have this influence so why would you use influence well let's say for example you're doing the beach and you want your sea to roll up your beach but you don't want it to be always attached to your sand because that's going to be going down below the water so you would use something like the position with a separate xyz and a map range on one of your axes let's go with the x-axis so map range this can go into our influence maybe i set this to smooth the steps so that we get some fall off or you could make this a zero to one range put it through one of your easing nodes so this is going to give us something like this and now you can set you know a certain distance where you have your influence zero influence one and you can imagine why you may want to have something like this just so that you can roll your water up the beach up to be something like that there's a green socket here next to our target so this says alt next to it meaning alternate and that's basically what it is even if i select suzanne in here if i were to go and add a ev sphere let's also add a transform node plug this into our alt and let's join this on after our set position just so we can see it so as long as we have something in our target it's going to ignore the alternate target right maybe i uh make this a bit bigger and move it down something like this all right if i don't have something in suzanne though you can see that we're actually going to use this we still take into account our influence but there we go that is allowing us to have a little bit of procedural control over our mesh there we go and you can see this is now following our uv sphere which is going into the alternate target so it's just whether or not you want an object picked like an actual 3d object or if you want the green one i know i could have done this just through an object info node sometimes i did sometimes i didn't i just thought sometimes you know you want to just grab this and use it no extra nodes needed sometimes it's just more convenient to have it on the node all right so that is shrink wrap next one we have is stepped transform this is one that is coming back from previous versions of the toolkit now again we have instance collection which is you know optional if you want to do a collection and we have an instance geometry alternate so this time we're going to use the alternate again let's use a cube so i'll use this as my instance geometry my points are going to come from uh let's use a circle node nice and easy so just going to use etk circle on here let's view the output let me hide suzanne so we have our points coming around nice and straightforward like this and maybe we can just make the radius a bit bigger so previously with the older versions of the toolkit you had to plug in your size your index and your factor through to the node now everything is handled inside the node so it's a lot easier for us to use it doesn't mean that we have any less control so we can still plug in a custom factor so you may want to do this if you are using falloff instead so for the file attacks this node you have fall off for the spirograph node you have falloff on here but if i plug this in instead then you will see that let's go for a slightly larger major radius a way lower count here maybe 20 there we go 30 is fine and instead of these rotating per index which is what will happen by default so let's rotate these in the z axis you can see that they're essentially moving along so we're setting the per step transform for each of these so each one along the index is going to get the next one of these counts if i turn off per step then this is the value that we get by the end um easier for me to demonstrate this with a line plug this in like this and we're going to grab u spacing use 10 of these so if i have a 90 degree rotation in the x-axis then you can see that by the end we've got 90 degrees and if i set this to per step we don't see it because these are cubes but if i reduce this let's go for like a 10 degree rotation now you can see that we're getting that rotation per step we can also do a translation and a scale let's go for like 1.1 or something so we're getting a little bit wider 0.5 maybe and this is a linear increase you can turn this on to compound scaling if you want an exponential increase a lot of stuff you can do with this you may want to use this with something like the brick walls with your custom factors coming through so that's somewhere that you might want to custom factor because you have a grid and you're using it points across or maybe you're using it with a grid uh generator grid and you're using one of the x factors rather than going up to a value of a thousand we should now be going up to just a value of 10 on the far side turn off compound scaling set it's per step this allows us to use the custom factors and now you can see because we're using the custom factor it's moving them all across from x to negative to positive x without this you can see that it's moving them by index which is going along in a kind of zigzagging way equally we could use this with just the z vector the y factor the x factor so you can see how this becomes a really fun tool it's kind of like the cinema 4d mograph stuff for advanced array management using the uh the generators in here with the step transform allows you to do some really fun motion graphics we have a couple of uh more advanced switch nodes a switch geo switch object switch factor these are all triver muchness these basically allow us to pick by index rather than just ticking so you can have up to 10 things in one of these plug them through in fact if i just show you with a few different options something like this right and i can just plug these through we only have zero to four but you can see that if i now change the index we're switching between each one of these as needed essentially does the same thing switch geo switch object switch vector they're all just the same allows you to pick by index out of 10 options rather than it just being two just a little bit more utility for you uh just before we touch on the uv lattice which i think some people will be interested in we're going to do the vector inject this one is super useful this is like the vector rewire in the spur chalk it lets you replace a channel of your vector so for example if i take a sphere like an icosphere and a geometry set position here we go right now all of the positions on these are basically on the sphere right these are all of the positions but i could set the position if i take these vectors and i inject a new value into all of the x's or all of the y's or all of the z's then suddenly we can get a projection so for example if you have like a whole load of different positions uh and you want to like just set a specific z value which uh which might happen so you might have a a grid like this and if i randomize all of the points right we have this just massive points but you might want to set just a flat set or you might want this to be something specific like one or because this is a field you could even set it to something like a noise texture directly right so now you've got still the original grid points but all of the z values have just been replaced with some noise instead if i make this 2d as well it'll be even more obvious we can see that we're getting that noise scale nice good stuff all right so that is how the vector inject works it basically takes your x y z vector and it lets you choose x y or z or you know a combination of all of them and replace those values in your vector with a set value whether that's a field or a constant is completely up to you we have one more node to look at and this is the uv lattice this is not what i would consider a finished node but it does allow you to do some interesting stuff so what we need to do to set this up i'm going to actually make a new object let's use a monkey and i'm going to use a plane as well so it's important i use at least the plane in 3d space all right so i'm going to call this the plane i'm going to rename this to controller and what i'm going to do is on susan i'm going to make a new material i'm going to just give it a new image texture of her face so i have this image of a face just a standard uv unwrapped face you can use it for anything but you know for doing a face this is kind of what you're after here now by default i've got this just plugged into the uh the uv map and if i look at this in eevee we can see that that is not lining up very cleanly the uvs for suzanne don't really line up for this we're not going to use suzanne's uvs we're going to be using some custom uv so let's grab an attribute node in our shader in our shader and we're just going to call this one uv i will make sure that i'm outputting this attribute momentarily uv we can see everything's going black this is what we want and this is the full setup here for the shader just our texture that we're going to be mapping and uv here we go now on suzanne i need to give her a geometry nose modifier and we're just going to pick up this one which has our etk uv lattice i'm also going to just make sure that i also have my original mesh actually coming through here here we go group input she's back now i need to bring in a new uv map because right now i don't know what the uv map is called for our plane for our plane object if i come into here i've got my uv i've got my plane selected i'm going to go into my data object data properties go to the uv maps and i can see capital uvm lowercase ap back to susan i'm going to plug from the group input into my uv map here we go and i'm going to just tell it what that one is called it's the default name so this does actually have the same one now because it's being used in context of our controller it will be looking at the uv map from the controller so just to be aware this right now this is how we bring in that uv map i need to make sure that my plane is my controller object i'm just gonna press e on here and grab it like that smoothing level i have set to three that's fine it basically computes a little bit of subdivision helps us with our normals i'm going to actually delete one of these attribute outputs just to make it a little bit clearer what's going on let's plug in our projected uv out here now the name we used in our shader was just uv so let's call it that like so and now we can see that we actually have something lower down on suzanne now what we need to do i'm just going to turn off wireframe for now so we can keep keep an eye on what's going on this is all you need for the geometry node setup we're just bringing in the name of the uv map from our controller picking the controller object make sure that you've got the name in your modifier outputting to a new attribute which you bring into your shader with the attribute name and now if i just tab into edit mode rotate 90 and the x-axis let's just begin nice and easy here by bringing this forward now i'm going to make sure that my plane is not showing up textured in the viewport let's change that to wire and now we can see through it that's a lot easier and i might also just subdivide my mesh now what we want to do is essentially start moving our controller until it fits suzanne this is going to be hideous this is essentially how you can set it up to start creating your own monstrosities i can imagine this being quite useful for more organic stuff and here's the thing right this is not a pretty layout but let's say you have a good uv unwrap on your object but you've just had difficulty remapping this kind of planar texture to it and you want that kind of control maybe it's something more natural and you want to just push it around like this we can now go into our object right if i get another texture node delete the image texture off here and grab just the uv map off our actual suzanne let's create a new one i'm just going to do it small i'm going to call it test here we go just a black image all i need to do now so i'm just going to view directly the output from this image texture i know i've not put it in a good position but let's just go with what we have we're in cycles i'm going to go down to bake i'm going to set this over to emission and we just need to make sure that we select our test here it's driven by our local coordinates and now i can just bake that new texture map and you can see that this is now how that texture map looks according to suzanne's actual unwrap so i'm not going to pretend that this is like a really flexible amazing way of working and you should all do it but you can actually create stuff which can be exported in this way it requires a little bit of baking of course because we're doing like really manual gizmos here if i move this around even just a little bit we're going to significantly move where our mapping is so all good fun you could do some fun stuff with uh setting like animated displacement on this and it's going to mess up how it maps so maybe you can get some interesting effects that way now at some point it's not here yet but we will be able to just write this directly to our uv channel on suzanne in which case you'd be able to pass this out directly to your game engine or whatever you're using it for even just while editing this video i ended up coming up with some new nodes and changing some other nodes so there have been a few little tweaks and improvements along the way a couple of bug fixes and three new nodes so i'm going to show you those here and also tell you where they are in the menus so first of all let's have a look at the two wires this is actually a new addition into the curves collection you can find this in here and it essentially takes any kind of geometry whether that is a mesh a curve or even a point cloud and it will turn it into hanging wires let me just show you that probably best if i show you with something like an ico sphere and uh so the icosphere looks something like this and if we put it through our to wires node you can see that it turns into this kind of drooping wires so we can set our droop distance and this is also a field so we can put in a random value as well we have a wire resolution which you can see is going to allow us to set the pointiness of these wires maybe for stylized or maybe for performance reasons 12 is a decent midway place we also have the actual profile resolution so by default i've got these set of three just to be super low res and we have the wire thickness essentially how that works so it does work well with a random vector if i just grab in a random float in here plug this into my drop distance we can now see that we have a whole variation of different tensions on the wires and in fact if we add a few of these let's uh maybe duplicate our icosphere by just instancing it on a line so let's grab a mesh line with an offset of zero it's a nice easy way to duplicate things instance on points so the line is our points our icosphere is our instance and then we will just plug this in here and make sure that we are realizing those instances you can now see that we get all sorts of different tensions all of these laying over each other i'm sure you can come with some really nice effects for this so that is the two wires node any sort of geometry you can plug in here if you were to use something like the grid which we can see is actually a point cloud if i set this to something fairly low like three and maybe increase the randomization so disconnected points but this is still going to find a way to connect them up and give you that look of wires next up i'm going to show you the transform plus so this one is a little variation on the general transform node it is slower because it's actually doing it inside the mesh it's using the set position as opposed to the transform but this allows us to do things with selections if i add something simple like a cube and i'm gonna make it a little bit bigger and let's turn on the wireframe so we can see what's going on here let's make it up to two and we'll go something like this so we have quite a lot of vertices let me demonstrate the problem if i add a normal transform node and i move this up quite high maybe five meters let me off to the side as well and now if i want to transform this again and maybe this time i want to rotate it if i rotate it i'm going to be rotating it around the world origin and obviously when we're used to modeling in 3d gs and r by default will work around the bounding box centers so that's what i've done here is i've turned this node from the general transform node into focused on the burning box dentist now if i rotate this in the y axis we can see that that is working around its own center and equally the scale will go towards its own center now we can also set a custom center so the world origin would be zero zero zero right and we can set whatever position we want for this so you may have a particular position that you want to be scaling towards now this is also a field so you could even have a particular point per vertex that you are positioning towards so with that turned off it's just going to go around your actual bounding box center instead now another cool thing about using the transform node which by the way is in the utilities transform just at the bottom transform plus great thing about this is it also has the selection so now we can have a little look at our selection prism so this is a little bit different we have left all of our selection nodes exactly as they were in the earlier parts of this video however i also just added a visualizer so there is now a preview output on all of these and if i just join this up with a join geometry node to the preview here we go we can now see that we have this as a preview now it's important to remember to unplug this ultimately because this is real geometry but it essentially outlines the position where this selection is taking place so for example if i set this up to a little bit higher maybe five and we're going to reduce the radius so it's a smaller point something like that and maybe i do a little bit of rotation and move it up so the great thing about this is that i can now actually see i can see what's going on i don't have to guess anymore what's going on with these selections so i have that i can now disconnect it because you know i don't really want to be using this in later transforms let's keep it on for now just so we can see but i'm going to make my etk transform plus maybe i'll move this up just a little bit we can see that just happened maybe i also rotate it and let's scale it slightly so right now this is happening to everything but we can plug in our selection region and now you can see that it's just happening to that and the good thing about this is the selection region is also going to govern the center of the bounding box so it's not like an object center it is a selection center you can see as i rotate this it's rotating around the center of that selection this is just a really nice way of working it's a little bit more intuitive it's a little bit more like what we're used to in the 3d viewport being able to actually move stuff around and yeah rotate around the actual selections that we make as well as being able to see the selection so selection prism that one has a view selection sphere has one selection plane has one selection cylinder and selection box all of the shape ones have one of these previews so you can see now while the plane and the cylinder and the prism these should technically be infinitely long just for the sake of being able to actually move around and not be thrown off into an infinite distance away i made sure to just keep things within a 50 meter scale just to make things a little bit easier there you can see as i move these we can have a full view of what's actually going on here with our selection just makes things a little bit easier to work with all right so that's our selection prisms as well as our transform plus node my recommendation is if you just want to move stuff around use the transform node because it's a little bit faster it's around about ten times slower five to ten times slower the transform plus but it also has considerably more utility final node we want to look at today is going to be the raycast plus and i'm actually going to do a little setup for this so if on my monkey i make a new node tree and i add for my utilities raycast plus and i can just drop this on so this is behaving exactly like a regular raycast but it also takes through our main geometry it also takes that through and it outputs a visualizer so this is why it's taking in is because we also need to visualize the rays otherwise it's exactly the same as a regular raycast node there's nothing fancy going on here this is just about the visualization it should help if you're maybe a little bit unsure about your raycast or you're doing something where you need a little bit more finessing you can do something like this plug in your preview and just remember that this is a real preview it's not an overlay so you will need to disconnect it later just need to bring in our torus object set it to a relative and we can plug that in and we can see all of these rays being visualized from suzanne so if i move suzanne around you can actually see what's going on this has the ray as well as the surface normal being visualized here so that's awesome and we can still plug everything in like we can manipulate the source position or we can set a ray direction so maybe we set the ray direction to this surface normal instead so now suzanne is actually shooting in all directions from her surfaces and we can see each of those rays where they hit our torus and the direction of the normal at that position so it's just a really nice way for us to work and anywhere that we do not have a hit it just doesn't draw anything so there we go and this is dependent on the points so if i was to add a subdivision surface to her just before in here then you're going to see that we're getting more points because it's basing entirely on the number of vertices all right so these are our additions today the raycast plus the transform plus and the two wires as well as the visualization within the raycast and the selection nodes hopefully this has helped leave me any comments with ideas for new nodes any bugs that you've found i will fix them as soon as i can and stay in touch i'm always really excited to see the kinds of things that you make hopefully you're enjoying the notes i know there's a lot to get your teeth into and there will be more to come thanks for watching i'll see you around
Info
Channel: Erindale
Views: 8,223
Rating: undefined out of 5
Keywords: erindale toolkit, etk, geometry nodes, b3d, procedural, parametric, every node, computational, addon, add-on, plug-in
Id: 57FaqP_Q36w
Channel Id: undefined
Length: 134min 53sec (8093 seconds)
Published: Sun Nov 28 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.