Geometry Nodes Introduction - Blender 2.93 Livestream

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

Super useful tutorial! Helps to get your head around the basics of Geometry Nodes and tie values to audio!

👍︎︎ 2 👤︎︎ u/murdacell 📅︎︎ Feb 14 2021 🗫︎ replies
Captions
yeah we've not done a stream in ages maybe um since before november i think so like at least three months without one um oh god there's quite a lot of people cool uh i've got the screen i've got my scaling set up to like 150 as well and i've got the ui scaling turned up as well in blender so hopefully you should be able to see everything i do um i've got a really big monitor like 30 inches so when my scaling's this big everything's like an inch across it makes me feel like a six-year-old it's pretty fun okay sweet um i'm just gonna jump in so to begin with i just want to say thank you to everybody who's on this server because uh we've just passed 1500 members which is crazy like we started this discord server me and sharon because we wanted somewhere that was easy for us to do streams and like share ideas about things so it's just really cool that other people have kind of jumped in and made it a proper community so thank you and we're giving away hard ops box cutter so i've just got another key from master xeon so he just said that we could give away another uh another key for that so um how many people are in here one two three four five six seven eight ten eleven twelve thirteen fourteen fifteen seventeen eighteen ninety twenty twenty one twenty two twenty three all right that's including me i think one two three four five six seven eight nine ten eleven new tacky there we go it's difficult with popular add-ons like that because yeah like a lot of people have it um but it's a super useful one so congrats new tacky i will send you the uh the link afterwards just uh remind me if i forget yeah congrats man you're going to stick with grid modeler grid model is uh great actually i see so many people using it it looks really cool and he keeps adding features like really quickly as well so he's doing a great job okay so yeah his time-lapses are really cool and so for geometry nodes for anybody who doesn't know um and also any links i share on the discord chat i will share in the youtube description so uh if you want to be using uh geometry nodes at the moment you're going to need either 2.92 beta or 2.93 alpha and for this uh this session today we'll be using 2.93 because it has a few more nodes and they've just been added since 2.92 got frozen so um yeah obviously if you're watching this in the future you may find that we're using nodes that look different or that no longer exist um so you'll just maybe have to fill that out a little bit and so if you want to grab an alphabet to build you just need to go to the builder.blender.org and eric asks what the future is like as well so be sure to drop that down in the comments if you want to know more about the project the geometry knows project there is this uh this blog the developers blog and you can read a few of the entries about sort of where they were planning on taking it and the sort of the scope of the project and yeah things where they thought it was going to come in useful in in other projects right past projects they've done the dev talk is super useful this is like a really valuable uh list of well it's just like a conversation right so the developers are in here and people who are using geometry nodes are in here and there's like a bit of back and forth so it's really useful if you run into issues i've posted in here and then people have come back and it's just been super useful to have that kind of back and forth um so let me just drop some links in the chat so that's for the blog and that's for the dev talk so both super useful and then also we have some documentation so i know um yeah obviously a lot of the things that we're going to be using with geometry nodes are kind of new workflows for a lot of people so attributes a lot of people won't have used um yeah i think attributes is probably the main thing and also we now have multi-input sockets so that's kind of a new thing as well so that's documentation and this will cover things like built-in attributes in here so there are some which already exist this isn't all of them because there's things like uh normal i believe i mean i've used normal as an attribute and that returned a vector so yeah houdini vibes yeah um there's a few more things in here so density id radius rotation scale and temperature um this is just another resource which is quite useful and that's all the ones that i've picked up for today you can also check the development um yeah like the actual development and the commits that people are making and you can subscribe to that so like every day i get i don't know 20 or 30 emails just saying like oh this person has done a new commit or this new proposed node has been added so that's also very useful yeah temperature i think temperature is used for um volumetrics i think because you sometimes see it on the volume like the principled volume node but just jump into here uh shader principled volume yeah they've got temperature attribute and a density attribute i guess this is probably if you're doing shaders with like manta flow or um like fluids and stuff how fast it rises oh yeah that would make sense yeah if you're doing gas simulations okay so we're just gonna have a little bit of a play around with geometry nodes to begin with i wanna i don't wanna just show you the kind of the route to the final answer just because it's more about the workflow and so to begin with we're just going to add a plane and then add a new geometry nodes node tree to it so there's two ways of doing this you can either if you change one of your node editors over to the geometry node editor with your object selected we can click new at the top of here as if we were adding new material but it's going to add a new geometry node setup and it's specific to the object and so on your modifier stack you'll be able to see that we've got a new modifier has been added called geometry nodes which you can find here and it's selected the correct node tree by default so naming things is super important so i'm just gonna um rename this one to displacement and we're gonna have a look at doing a simple displacement as if we were using a displacement modifier but doing it with geometry nodes actually does give you a few more options because you can start playing with attributes and if you're using cycles as your render engine you can pull an attribute into the shader to control stuff there which is quite cool so i'll just walk you through that process and so displacement normally we would use a subdivision modifier and then a displacement modifier but we can do everything inside geometry nodes here so i've got my nodes first of all i need to subdivide the mesh so shift a and then we want to add a mesh subdivision surface so this is just essentially a node version of that of the uh of the modifier now in the future i saw a few things that said that maybe the simple subdivision model is going to be a separate node to the catal clark one i'm not sure if that's actually going to become a thing but as far as i'm aware they're going to be separated out because of a different like smoothing algorithm or something and but you can see if i'm in wireframe view here the levels is literally just subdividing that plane every operator and node it would be cool or even just like a script node right that you could call an operator on and use python directly in the nodes i don't know how it would work in terms of like your data flow you'd have to be unlike the dependency graph and then obviously you've got stuff like sharing attributes between objects then it becomes a bit more difficult because you've got things like your built-in attributes like scale and rotation they're very specific to your object and you don't necessarily want to be calling them across multiple objects um right so we have a subdivided essentially subdivide simple mesh on our plane and now we need to think about how we're going to move the plane up and down so with the displacement modifier you would use a texture and you have to use the text properties for geometry nodes as well so we don't have any like noise nodes or voronoi nodes everything has to be done with the texture properties um so i just have some default ones i have in my start file but i'm going to create a new texture change it to clouds which is noise and i'm just going to leave it as defaults for now so what we want to do is we want to call this texture into geometry nodes and we do this with an attribute sample sample texture node let's throw this on here and this has a few options so this is when we're going to start using attributes so let's call our texture let me just rename it as well to clouds so mapping mapping is basically like uv map or i think you might be able to use generated um do you know what let's just we'll try in a sec once we've got the rest of the displacement sorted but i'm just going to set mine to uv map and that's with a capital uvm and then lowercase ap and that is just because that is the default uv map name so this mapping if you're using uv mapping needs to match the uv map name in here right so it's important that these are exactly the same so it knows what it's calling like what attributes calling equally uh if you're using vertex groups it's important that the name is import is the same like case sensitive as well between vertex group and the attribute that you're calling so we've got our clouds and we're mapping it to the uv map and then we need to have a result right so at the moment it's just it doesn't really know what to do with this information so i'm just going to call this one height so i've created a new attribute because it's not one of the predefined ones right it's not scale or rotational position um if you give it a new string a new line of letters or numbers it's gonna create a new attribute called that and you can think of this as a spreadsheet so you have your mesh and you've got your like your vertex positions and then you have like a list of edges and faces and then you've also got a list of attributes now will the attribute be saved even if not in use i think if you generate it now i'm not 100 sure on this but i think if you generate it then it creates it and if i was to delete that then i would think that it would remove the the height attribute it might be something like orphan data where it has to restart blender or do a clean up or something but i would think that it just like removes that column essentially from the spreadsheet um so at the moment i'm not using height for anything but i have still created it so in this case it is there and the same with any nodes in blender we're working from left to right so anything that you create on the left you can then use subsequently as you go across so we have our texture now i need to make it displace the surface and for this we're going to use a attribute mix node i'm just doing a thing here um an attribute mix node and also at the moment we have scalar values so that's another thing to consider how do we turn scalar values into z axis values because we're only just working on a plane at the moment so we only want to displace things vertically upwards so if we have a value we need to do something to it to turn it into just the z component of a vector and we can do this with a combine xyz so an attribute combine xyz so you can see in here we have some options and a lot of the nodes in geometry nodes are like this you'll have the option between using a float or a vector or a color or an attribute for each one of the inputs so you're essentially kind of creating things yourself so what i want to do is i want to have height be my z component and then 0 0 for my x and y so i'm going to change my type set to attribute change this to height and instead of typing it you can just hover over a previous one ctrl c ctrl v and then i'm going to call this one height again right so it's got the same name we've overwritten the previous attribute with this new one which is now a proper vector that we want let me see if i've got screencast keys on here uh shortcut viewer i'll do okay so if you need any of my shortcuts they are on the left hand side so you should have the combined node if you're using 2.93 um from the last few days like the last i think four days three or four days and if you don't have combine x y zed then don't worry you can always just use a an attribute vector map and then you multiply your height by the vectors zero zero one and then output height right like that so if you don't have the combine then you can just essentially multiply it by this zero zero one factor and this will create the same thing it's just kind of neater to do it with a combined x so i said if you have access to that okay so now we've got our height as a vector and we need to move the points of this plane so what we're going to do is we're going to add the vector that we've got to each of the positions of the plane so the positions are essentially the vertices as they are currently so we can type in position this is a predefined vector we're going to add height and our output is going to be position because it needs to know that we're using the well that we're overwriting the position right so p-o-s-t-i-n and now you can see that we've displaced that mesh so this factor is gonna move that up and down and if you wanted to change the mid level you could always subtract 0.5 from your height so you could use an attribute math node do a float here subtract and then i'm just going to put height into both of these so now you can see that we have this difference in height here 0.5 so there you go you can see that we can now displace a mesh entirely inside geometry nodes which is really cool because with everything being non-linear um and when i say non-linear i know these node trees look super linear because they just take the geometry each time and we're always going in this direction but if you had something like uh an input value node right then you can always plug something like this in to multiple positions so you can start having much more kind of interconnectedness between different parts of your note tree so what happens if you want to take an attribute into the shader to control something well let's do this here so i'm going to create a new attribute for here we go for the factor so the factor is the amount of the displacement that we're putting onto this this plane so i need this to be a factor to be sorry to be a factor no an attribute it needs to be an attribute so change your factor to an attribute and i'm just going to call this one blend because we're blending between um and i also need to define what my blend value is so let's take an attribute fill i think so i was when i was doing this a couple days ago i had a bit of a glitch with using float value attributes and bringing those into my shader graph i was having to use a color instead which i think is probably still fine in this case because it's just going to be passed as a scalar value in our mix so we're going to use attribute fill to define what blend is and at the moment it's zero right so you can see if i move this color up and down oh you're not sure what a float value means okay so a float i don't know why it's called a float value to be honest it should be called a scalar value but basically a float is not an integer so uh like 0.2 or 1.6 these are float values um whereas a scalar is a not a vector so i think that's really what it's trying to get at is that it's essentially in shader node it would be a grey socket um as opposed to a vector which has three components or a color vector which is like rgb a so a vector four um so in this case i want to have a slider or just a value input here so i'm just going to plug a value into my color and here we go so now i've got this working like this you could set this to float if you want and just see if it works for you i was having glitching but now if i make a shader so let's change over to a shader editor create new material and then i'm going to throw in a mix rgb let's just view this and let's flip between red and blue so our mix is going to flip here and we need an input attribute node i'm just going to take the color into my factor here rename this one to blend which is the uh the attribute that we declared so at the moment this doesn't seem to be doing anything uh to the color at least but this is just because we're using ev so material preview mode is ev we need cycles if we're going to be using the attributes so you can see that as we go to a flat surface let me just go through a diffuse as well so as we go through a flat surface to the displaced surface we are flipping in between the red and the blue so you can start having this real like interconnectedness by using attributes and calling attributes between your shaders and your um and your geometry notes but this only works within a single object yeah so hopefully this makes sense i know i've spent a little bit of time on this but uh the rest of this we will go a little bit maybe a little bit brisker let me know if you have any questions or if you aren't keeping up or anything because i can always slow down again so for the music equalizer effect what we want to do is have basically from mix to add on the hb mix yeah it does make a big difference because we're um taking the original positions and moving them up and down it's important that you use go to object mode uh add because mix is going to go to the middle right because it's just a vertical factor you're only creating vectors between essentially zero and one on the z but nowhere on x and y so that's why it compresses to the middle um and you know how much i love mixed nodes but we have all of these things we've got linear light on here so you can have as much fun as you can have with a mix rgb as well okay so we do not need to have the attribute mix or fill nodes uh if you ever just want to pull something off a noodle you press alt and drag it so just alt and drag and it won't break the noodle [Music] actually um did need the mix because i need to displace vertically and i'm just going to use a float for the vector here for the factor okay so for the music thing we want to have lines right that sort of wiggle past each other and then when there is a sort of an impulse in the music when there is a louder beat it's going to distort these lines right so it just looks like a graphic equalizer hey yeah linear like we you know i'm not actually sure why you use linear light in this setup no i'm sorry we don't we only use multiply add and divide well all that down i should have worked it in somewhere but i i guess i couldn't i'm sorry okay so if we want to have lines then you don't always have to put faces into geometry nodes you can just use edges right it's going to read vectors as in like the points and the edges just on their own that's going to be fine so rather than using a plane where we're getting all of this like two-dimensional uh noise displacement across the full thing i'm just gonna break this down into edges so let me hide the geometry node setup so i'm just gonna disable that modifier so you can do that just like normal i'm going to create a bunch of loop cuts with ctrl r and then i'm going to select my two end rows here and here let's get to wireframe so you can see that so i've just selected the two end ones and i'm going to go x and delete edges so now we have got these horizontal ones uh yeah although they're in the wrong orientation there we go so i just wanted them to be in the x direction just so that it's uh just to be easier on the maps i can just think about keeping things in x um and another thing i'm going to do is i'm going to scale them down so they're a little bit closer together in the y-axis right so there you just have like this rack cool so now if i go back and turn on my geometry nodes uh nothing's happened um but this is because oh okay so this is because we no longer have a face so we no longer have a uv map um i think that's right anyway so instead of using the uv map in this case we're going to use something else we're going to use position so we're just taking the location essentially of the of each of the vertices and then that's calculating what its displacement should be so when we do that you can see that we're displacing the surface again or specifically the points i'm going to increase the size of my noise something a bit more like this and there we go so it's already looking pretty cool but they're all displacing like the same this might be what you're going for but i would like each edge to have like a way different displacement so it looks like it's out of phase from each other um or just that it's got a different noise on it so what we need to do is we actually need to modify the mapping coordinates so because we're using a pre-made vector here the position and we're going to call that later i'm not i'm going to make a new attribute there is some function of the position so hopefully this makes sense so i'm going to put this in before the sample texture because we need to use it with the sample texture so i'm going to just call this new attribute mapping just something easy for us to consider and then uh so it's just gone down because i have my mid level on this attribute set if i start to zero then that's just on the zero position so we need to take the position and i'm going to scale it in the y axis so at the moment each one of these is like i don't know five centimeters apart or something and so when we put the noise through it each cut through that noise is very close together so what i'm going to do is i'm going to scale up the position vector in the y direction and that's going to compress that noise so that each line gets a like a more different position essentially so what we're going to want to do is take an attribute and an attribute vector math so this is something that's caught us out before is using attribute math instead of factor math because you don't always think in your head oh i'm using fact math where i'm using math when you're talking about attributes but just be aware like if you've got a rotation and you want to scale it then rather than multiplying it by a float with the attribute math node what you need is to use a vector math node and to scale it in here so that you're maintaining that vector um yeah that vector workflow that's just something that you just need to be aware of if something's rotating weird or it's positioned with me you don't quite know why especially if it's on the like the x equals y equals z line that basically goes up at 45 degrees from uh like this right so every time you see something going off in that direction it's basically because you've compressed it down to a scalar value so what i'm going to do here is i'm going to take my position and we're going to multiply it by a vector had a call could somebody maybe share a blend file of the current state of course cool there you go that's my one right so yeah we're taking the position we're creating a new attribute called mapping sorry i jump around a bit while i'm thinking about this stuff and then we need to multiply it by so one would just be the position right so that's giving us this and then we need to increase the scale of the y-axis so that each one of these lines has a significantly different mapping position so that's already looking a lot better so i'm going to set mine up to like five i think that's enough so right now we have this and what's well like another thing that i want to do is i want everything to move along horizontally so i want everything to essentially add a value in the x direction so literally the same thing again here so take an attribute math node i'm going to put it after this one because we've already declared mapping so i'm taking mapping and i'm going to add a vector to it so let's just set this all to zero to begin with and then it's going to output mapping again so we're taking mapping and we're modifying it and just writing over the same attribute so now you can see if i move in the x-axis here then we get a horizontal movement of the noise which is cool so you can think about this as like the mapping node in shader nodes and it's a little bit difficult because we don't have any um there's no visual cues about what's going on it's just like the lines it's just the geometry that you make so whereas in shader notes you can actually see okay this is this is what the noise looks like it's a little bit of blind faith in uh in geometry notes but you do get used to it it's just something that you pick up so if i want to animate this the the horizontal sliding then i need to use a frame to drive it so let's add an input value node and just like any driver we can type in hashtag frame and now if i press play you can see that this number increases exactly what the frame number is so let's take a vector combine next year's head bass vocals triangle and melody triangle is like a very specific a very specific one just for um anybody on youtube that is that's what's being said there yeah i mean you would need to layer stuff up like that you would either need to use animation notes or when you're baking your sounds to f curves you could you can you can split right specific frequency ranges to be baked um i don't know how accurate it is and i i wouldn't even really know how to tell let me just show you it's pretty easy if i just take a quick screenshot there we go what is osc pancakes i know you've mentioned it twice now and i don't actually know what it is is that the midi node stuff because i know um i know animation node is now able to like read midi files which is amazing uh open source control ah sick nice yeah you could use osc for it i guess you would have to have your audio file split up already but i mean if you're producing the audio like uh perspex i know for you you could literally connect like microphones directly into blender and have it live transform geometry like this um i know people like matisse have done stuff with real sensors like real life sensors controlling things in shaders which is amazing or even cooler maybe is connecting some um like physical sensors to your drumsticks that would be maybe a cool thing to try okay so to get this to move i'm just plugging my frame a hashtag frame into the x of a combined xyz which is just in the vector group and then plugging that into my my vector if this had to be math node so now when i play this moves much too quickly so i'm just going to divide this frame by 50. and there we go so now we just have a kind of it looks like it's moving sideways but really each point is just moving up and down differently so it's not generating new geometry it's just moving up and down might even go a little bit higher here so up to 80. there we go something like that is cool what i want to do is i'm going to position primitives on these curves so if you've used geometry nodes at all before you may well have done something like this so you can't do a plane or any object right and then some primitives and you've taken your plane creates a new geometry noise tree added a point distribute node which has generated a bunch of points and if you set this to random it just positions them anywhere and if you set it to a cross on disk then it lets you set a minimum distance which is like a you can think of this as having a weld modifier built in to essentially join or like remove doubles within a certain distance and then you might have used like a point instance and picked your cube and then you'll also probably want to do something with the scaling so something like an attribute fill scale and there's actually there's um there's a point scale node isn't there so you just done something like this so this is fine if you have a surface to work with and if you have uh if you just want random distribution but what we want is a regular um like grid grid layout distribution we just want it to be spawning the points the cubes in this case on the vertices that we're generating so if you don't use a point distribute node then you can see that it's just putting them on the vertices of the object or like the points of the object right and then if you use a mesh subdivision surface beforehand then you can see how we can build up a grid very easily like a regular grid so what we're going to do is basically the same thing so we're going to take our lines and we have a subdivide on here so if i was to i wish i could preview where the um where the vertices are i can't um so what we're going to do is we're just going to point instance objects on here so let's generate a few objects i'm going to generate a cube and i'm just going to leave them as well right at the center i'm also going to generate a ico sphere just one of these nice ones with triangles and i'm going to reduce the subdivisions on it to one [Music] and in my outliner i'm going to make a new collection called primitives and i'm going to disable it so now if i put anything into this primitives folder you can see it disappears so we've got our uh i'm not even sure how many sides that has but our icosphere with reduced subdivision i'm just going to add a cone drop down in my primitives and i'm going to add taurus and drop that in the primitives as well so we've got all four of them and they're all in the same position which is fine and i'm just disabling that so now what we can do is we can scatter scatter we can distribute them we can instance them across the points of our curves now you'll notice as well that they're much bigger than we want them so we're also going to have to scale our points so to begin with let's just add uh i'm just going to do this way i'm going to add a point fill sorry an attribute fill i prefer using attribute fill than a point scale because the point scale has to use a vector to scale things and sometimes you just want to scale it like evenly so if you use a float and you set this to scale so it's basically taking the scale attribute of all of the points and because it's coming through this geometry here it's reading every point that you're generating on your geometry so uh it also respects getting done in edit mode it does yeah so as long as your objects have been [Music] um you like control a uh apply rotation scale or apply scale as long as the scale on your on here on your transforms is frozen out as like one then it will match so i'm just gonna do it this way just because it keeps everything in the notes and i don't really like modelling stuff anymore i'm quite used to just doing everything in nodes so now let's take a point instance and we're going to throw our collection uh let's expand this so we can read it all i'm gonna take my collection and we're looking for the primitives collection and at the moment it says whole collection and our scale is much too small so you can see if we take the whole collection at every point it instances the entire collection so this would be really useful if you've got something set up maybe you've made something like a fence and it's made up of a load of different objects and then you can instance that whole collection like a collection instance so you could maybe like put a fence around a perimeter and have each one of the blocks of fence move up or down by a certain amount um yeah so that's kind of a actually like maybe quite useful way i've been trying to work out what is like the production use of this uh software oh yeah when they move they go crazy um it's just because there's a lot of stuff clipping as well um yes i've been trying to work out like the production value like use cases intended use case for geometry nodes and at the moment like all of the examples have been based around scattering and distributing things in a sort of organic way whereas what i'm used to is like using spurchalk and making stuff that's very this piece goes here and this piece goes over there and we extrude this very specific piece of it um so it's been like a little bit of a mental challenge i guess trying to work out how to use something which is quite difficult to pin down i think stuff like that will become easier and obviously you can use vertex groups to like control weights size things and moves move stuff around like you can transform a mesh by moving the points like we did with the noise before but you could do that in a very uh intentional way as well um anyway so at the moment we're just being the whole collection let's turn that off and now what it's doing is it's randomly picking an object from the collection and putting it on each point so you can see these all just move up and down which is cool now i want to change the amount of this up and down distribution at the moment it's quite strong um and i just want to bring it down a little bit so this was our mid level and i think what i'm going to do is i'm going to change this from subtract i'm going to change this to multiply now you can see we're getting just a bit of up and down movement now so i'm going to change that to 0.6 just so it's a little bit smoother bit lower and this is already kind of cool but i want to get some random rotation on here i want to get stuff like properly tumbling in quite a nice way um so everything that we do from this point forwards is going to be before the point instance node because we are transforming the points the instancing is just putting position putting an object on that point so if we have to do stuff to it beyond here it wouldn't actually affect the point instance because anything on this side of the point instance is kind of ignored by the point instance so now we've got the instance on i'm just going to drag that over there oh sort of random annotation there we go frame lock that if you ever want to do an annotations while you're animating you need to frame lock the annotations and it will just it will let you actually do like multiple annotations okay cool um so we haven't even got into doing the audio side yet but i just wanted to make sure this was all set up kind of ready um i love doing stuff like this it's quite simple yeah light person is saying like it's about like the generative aspect that's pulling you in and it's like is letting geometry knows do its kind of do its own thing and like take a little bit of the kind of creative control it takes you into an interesting sort of moral discussion as well about authorship of artwork yeah like rolling yeah so um yeah with authorship of artwork i'm saying it quite a lot with crypto out people are doing a lot of stuff with uh like gans and ai stuff and it's like at what point are we where you are the one who's like directed the artwork but you credit the ai as the one who actually produced it um i think that's quite interesting uh pancake i think i've got something wrong after the hashtag frame oh yeah hashtag frame by i've got it by 80 at the moment just so it's a bit slower but it's literally just four slash 80 just to slow it down okay let's add some random rotation in here so for each one of these points i want to declare a random value and then i want to add it to the rotation so let's add an attribute randomize and let's just drop this on here so this is uh this is new if you are if you had yesterday's version of the attribute randomize then the today's one has this new drop down i'm pretty sure it's today's maybe the day before so you can directly add subtract or multiply a value to these points and what we're going to be doing is we're going to be replacing creating so we're going to set this attribute this is going to be a new attribute to do with rotation so i'm just going to call it rot make your life as easy as possible and use short attribute names because also when you accidentally mistype something it's going to be a pain to like try and debug that so we want to be generating a vector and we're going to be generating a vector between i want these to rotate in both directions so between minus 1 and positive 1. so now each point has a random general randomly generated vector just kind of sitting on it under the column so if you think about your spreadsheet again you've got a whole bunch of attributes so far like we've got scale we've got position we generated height we generated mapping so these are new columns for each one of these attributes that we make and the spreadsheet is as long as the number of vertices that you have so currently we are creating a new attribute called rot and it creates a random factor between -1 and 1 x y and z for every single position so now we can actually start using this so if we were just to add this to the rotation value so let's add a um a attribute vector math because we're doing factors here um so this is where we've run into issues with before i was using an attribute math here and i was doing um i was basically adding this to my rotation and because i was using it with uh just the regular math node it was just rotating everything in like this one axis so everything was going at a different speed but it was in the same axis so it didn't look so great so let's call our attribute with the attribute vector math so we're going to take rot and then we're going to multiply it or actually we're going to scale it by the frame number so basically at frame one we just have the rotation value of brain two we have two rotations no seasons let me fix that for you so let's add a new primitive into our primitives salamesh monkey there she is and have all of her glory go away and now wow there are a lot of her so anything that you drop into your collections is going to get called to instance so it's quite useful kind of fun you can throw in a load of variations if you're doing trees if you're doing plants just chuck them all in the collection and instance them there we go praise be um i've been watching the maid's tale recently and like whenever anybody says something i just want to be like praise be under his eye if you haven't seen it it's amazing it's really good uh it's also an 18 plus so for any of the younger people in here maybe avoider um anyway i'm getting off topic so what we need to do is we need to scale our rotation or our random value that we've generated a random factor i'm going to scale this our b socket is going to be a float because we're using scale right vector scale is like a multiplied by a scalar value and then we're going to be outputting this to the rotation so we're just overwriting the rotation at each point so you can see if i increase this the scale value everything rotates randomly in a round of direction at a random speed so now if i just take the uh where are we so i've got this value node which has a frame divided by 80. i'm just going to plug that straight into the scale value here and let's make sure we can see all of our sockets but here okay so now when we play these very slowly rotate i'm gonna increase that slightly so i want a different multiplier in between both of these so rather than this being divided by 80 here i'm just gonna have this frame that's going crazy and then i'm just gonna add some maths so utilities math node um [Music] it'll just take you a few minutes to like remember where everything is on these lists as well because obviously we used to like convert to math nodes and now it's under utilities um and it's also been split from vector math which is under factor now rather than also being under converter anyway you get used to it so i'm going to divide my frame by 80. so now these move at a more sedate speed sorry 80 not 50. and i want to make them spin a little bit faster so i'm going to bring this down to 10. there we go just so it's a visible spinning super secret sway command yeah the frame multiplied by pi by a hundred it's only by a hundred if you're doing uh by the length of the animation right you want it to be divided by the length of the animation so you get a perfect loop you could also if you wanted to make it fully loopable rather than adding just the frame here so rather than having it just move in this direction oh it's doing that thing with my annotations again um we could have something like sine and cosine into my x and my y and now everything's going to move essentially in a circle direction and it's going to be constant oh sorry i've just been messing around with these um so we have got frame hashtag frame going into a divide by 80. let me just delete those annotations again so divided by 80 for our x direction and then we are dividing by 10 and plugging this into the attribute vector math which is scaling our generated attribute rot which is just a random vector per point and we are scaling it so i know sometimes it might think you can make a a sheet cheat for these um are you missing it with the rotation node yeah so we just for each point we generate a random factor cheat sheet yeah i don't think um and then we're scaling it so i know it might think like oh when we're at like frame 200 sure it should be going like 200 times faster because we're essentially multiplying for each frame that we go forwards it just adds like one of the same amounts each time so it's just a linear rotation and then we write it over rotation so anything that you write over rotation position or scale will directly affect the rotation location or scale of the point because they're like defined vectors they're like the important ones that you can't make do anything they will always be location rotation scale oh you didn't have the frame plugged into the vector mathemate nice um okay cool so we've got our rotation going now i'm going to bring in a bit of music now so we're actually getting into the music equalizing stuff if you want yours to speed up uh tell her you can just reduce the values that you're dividing by um yeah what did you want a gt for sorry i completely blanked that was it for where the nodes are or for shortcuts if you're wanting node wrangler by the way i'm sorry there is there is no road node but you can control right click to cut stuff but there's no like alt right click you can see that just disconnected here which is not what you want to do um but yeah so control right click and shift right click still generates reboots but we have no lazy connections just yet oh for the um for making stuff going to circle all you need to remember is the signing calls together so sign because of the phase difference um it's like 90 degrees out of phase so you've got sine which goes like that um so you can think of like a point moving up if this is time moving in this direction then if a point moves up and then comes back down and then goes up again then all you need to make this into a circle is to have it go in this direction and then back right but it needs to be out of phase because this needs to be all the way over here like maximum displacement when our sine curve is at zero when it's in the middle so luckily we have one of these because we have a cosine which looks i might be completely wrong about this but i think cosine is that one um so it's like 90 degrees out of phase it just means that you can draw circles very easily with signing cars if ever you're doing anything with circles just try like and you don't know like this is how i've learnt it just try putting pi or two pi into values that might look like they would control something and change like just start adding like signing calls all over the place it's amazing how many things end up just being circular you really don't need to know much about maths you just test it is there a reason that might uh yes there is uh if you have got a point instance node with whole collection ticked then it's going to be pulling the entire collection as one object if you uncheck this then they should be in different places did that solve it i hope it's optics otherwise i actually don't know unless you've got like two of these like this and then you're joining them afterwards uh with like a geometry joint geometry oh my god i love it this is our new multi-input socket by the way how many things do you reckon you can put in here sorry just bear with me this is like this is research okay so three is fine oh my god i love it and you can order them oh well that's very satisfying uh does the order affect the output um i would about a million and a half hour inputs oh yeah it is actually oh my god we've got like our little very own noodle squids i love it anyway sorry i'm so easily distracted right so we don't need to join geometry right now cool so that solved the overlapping stuff oh hold up oh we were just very close i thought one of my things was much bigger but we were just close to it um right so we've got rotation we've got movement we're going to start using audio now so if you've ever done anything with audio in shader nodes then all you do is you grab an input value node in your shader and then you keyframe your your value and then if you open up a oh my god am i being blind oh graphic no thank you then you can go like key with it selected oh my god it's not actually coming up so in previous versions of blender i don't know if this is just because it's an alpha your selected node right would come up as a keyframe in your graph editor that you could then modify and bake sounds too however we can't do this now i mean apparently not with either but definitely not with geometry nodes so what we need to do is we need to move an actual thing so what we're going to do is we're going to add a an empty i'm just going to move it back over here so obviously empties don't render but just for cleanliness i'm going to move it back here and i'm going to call this one music empty so now what i can do is i can keyframe the zed location so let's just set uh there we go transforms so just going to keyframe just insert a single keyframe at the z right and now you can see in my graph editor we've got this i'm currently at frame 100 on via frame one actually for this so let's let's go back to beginning with shift left and then on your menu key big sounds to f curves and then you can just select your music that you want to do i'm using uh distant rendering by harris heller harrisell is great if you want to make videos on youtube or twitch or whatever because uh all of the music the stream beats if you look them up they are free they are cc0 um so super useful so now if i play this you can see that we've got a little bit of movement on our empty but we can't hear anything so what we need to do is we also need to add a so let me just split this space we need to add a video sequencer and then let's go back to the start here shift left shift a add a sound add the audio again and now you can see that we've got this uh this music track music track is also 716 frames long in my case i'm just going to update my scene here 716. you can also sound a sound with a speaker object is this true i've never actually used speakers in all of my years of using blender oh my god you actually can let me just uh let me just mute this oh my god it actually works crazy anyway uh i'm just going to use the video sequencer just so it has 3d space over like distance from the camera and that is brave if you're doing uh like camera if you're doing animation stuff and you're doing all of your like compositing in the render and all of your audio in the render as well then you also must be rendering out videos instead of image sequences so i mean you do that if you want to but let's you can mix down 3d sounds uh oh right okay so just to repeat that process here let me just zoom in as well so we can see this if you okay wait let me just do this first so you've got your empty uh all i did was i selected my set location and i clicked insert single keyframe because i'm not interested in keyframing my x or my y i'm only into i'm i'm just doing the z location and then once you've got a keyframe you can select your object go back to the start frame press shift left arrow just to bring you back to the beginning of the timeline and then on your graph editor uh go to key then bake sound to fcurves so as long as you have an f curve visible from being keyframed then you can make a sound to it so you can see then that i've got this audio now on my uh on my timeline now if you want to zoom in or zoom out all right it can be a little bit difficult to like get it working right because if you just scroll it's gonna just zoom in and out regularly but if you want it to like change the sort of the amplitude normalizing in here um i mean you can actually just click normalize i think or maybe not basically just ctrl middle click and if you click up then it scales it in the y-axis and if you click if you drag x it scales it in the x-axis and it's the same for the um the video sequence editor as well if you want to get more of your clip visible import audio to f curve modifier are there f curve modifiers maybe not it's just on the uh under the key menu anyway cool so we've got our audio in connected to our empty and we've also got it in our video sequence editor now so that we can listen to it so if i play hopefully that's not super loud for you hearing this um so it's kind of your music example we're just going to leave it going no sound at all thrilling dress can hear it maybe your lips just got me muted just my voice uh okay maybe the uh yeah my voice volume is probably fine but the stream volume um i mean don't worry if you can't actually hear it because you can just see the empty moving um okay so we now need to get this information into geometry nodes so whereas ideally we would have just used a vector sorry a value node and this would have allowed us to just bring in a value directly we're just using it one of a hundred uh oh it's probably because i think i've streamed games before and it would have been loud or maybe when i was streaming last week or something anyway uh so let's pull the empty into our geometry notes graph so shift a input object info and we just want to grab the music empty that we've just generated so we can pull a number of attributes so location rotation scale um and geometry so we don't actually have any geometry here and all we're interested in is the z location so let's also use a vector separate xyz and we're just going to pull z from here so we can do a number of things with this set value you could multiply by where is it this one right so you could change the scaling on your like your z axis here for your scaling the height that we did originally or you could change the size of your objects um let's just test a few of these things see what it looks like is there a way to read those values currently no there will be a spreadsheet but currently no there is nothing um if you do more complex things it can be a little bit difficult because you're like okay so this node is carrying a two and then this one it's got changed like a one point eight and then at this one it's like you know you're trying to do like maths like the logarithm in your head so it will be super useful once we got the uh the spreadsheet viewer which is just going to be like a viewer that just lets you view all of the attributes simultaneously um apologies to any devs if that's misinformation but as far as i'm aware that is what's going to happen [Music] so what i'm just going to do here is i'm going to adjust the scale without said value so that's kind of funky so you can see how this could already be used to be honest if you're doing you know like when people download miximo dance loop animations and then they like put particles all over them you just do that with geometry nodes it would probably be actually quite performant and then you could put your music directly in here this set into the subdivs do you know i don't know if because this is of an integer and i kind of oh man am i going to do this now you've mentioned it i can't not i just want to see okay so let's take a map range zad let's do a step linear so going from zero to do you know i don't actually know how high this is going like point two at most point three okay that's point four and we're going to go up to four just so it's nothing crazy is it going to read it no i'm afraid not now we need a float to integer uh node so that we can convert okay but we can plug it into the scale and then do some like function of this [Music] and i guess we probably don't have this go above like 0.1 so that's kind of that's kind of cool and the floor ceiling net is still going to push out through a gray socket i believe uh yeah i mean it's on the math node so you're still working with scalar values not integers which require this green socket uh let me turn this base up a little bit put the base value up just so it doesn't ever go down to completely zero yeah i mean this is it's just exactly what like eric was saying earlier you just kind of get messed in there or lost in there just playing with values and just seeing what kind of comes out of it when you're stuck stick of random value on something uh go a little bit smaller than that okay cool now i also want this to affect some zed height man anyway so what we're going to do is we're going to add a random value per factor to the z uh wait so the music empty could also drive shaders yeah for sure could it wait could it hold up uh i mean i i think so right so copy his new driver go into our object here let's just stick this material on everything and link materials there we go so everything's currently blue let's go into this factor here and paste [Music] driver you totally can so i mean you actually have to do it as a driver um and then i'm also probably going to want to remap it in here so let's stick this on a math mode and multiply it up okay damn you look geniuses this is why doing streams is fun because it's like a group project then admission strikes by the driver yes okay anyway at some point we're going to have to push forwards with the geometry nodes as well but uh i feel like there's a whole um shader set up that we can do as well that's just going to randomize shader maybe we should do the color by the amplitude or the do like a hue transform okay i'm sorry just bear with me here so we've got our principal trader uh we've got a random value because we're instancing objects here right so we can just use a an object info node random and you can see we've got a random value now uh and then we can push this through uh bloom intensity and ev you know you actually could do it on the blue intensity as well just because it's drivers right and everything in blender interface is python so you can drive at anything um okay converter map range set this from linear to constant add a few flags uh if you ever do this as well and you want to make a color palette color ramp add some flags this drop down you can distribute stops from left now you have even distribution and then you can just start throwing some colors in let's put some blue in here there we go something like that and then uh let's mess around with the blender's just so much fun nice and more people should get into this uh let's just throw this into the hue [Music] it's pretty cool and then we could also change this into the like the emission strength so beautiful i think maybe it goes too high for the emission [Music] okay nice and colorful right back to geometry notes for a little bit we're gonna take a random value right and just we're gonna no i was gonna say we're gonna linear light it but i think we're just going to add it linear light is fun but it is more computationally heavy than just using an ad so let's take let's create a random vector so attribute randomize we need to create this random vector which we're going to call music so float factor attributes can be called music and it's just going to be random factor between minus so we only want in the z as well we only want this one in this out so minus one so zero zero minus one to zero zero one so now we're just moving up and down and then we need to add this to the position or [Music] yeah we need to add this to the position vector so let's take an attribute mix sorry i'm just thinking of my feet a little bit here as well so attribute mix we're going to add uh float for the factor we want to take the current position and we want to add music to it right um usac and the final output here is going to be the position so we're overwriting the current position as you can see there so randomized not randomized it's on there and let's take the zed into our factor here so now you can see the stuff is getting like thrown off by the sound which is kind of cool now what if we want the front row to be not affected and the background to be affected so if this was a shader you would want to have a gradient from the front to the back however we can't just generate one can we i was gonna say that we would have to use uh the we'd have to like create a blend gradient in the shade of it also the texture properties i'm now wondering if we can just call generated because if we could call generated as an attribute then we could just use the y uh component of it so that would be super useful if we could do that let's give it a go um so this has to come before we affect the position i'll just stick it in here uh sorry if this music is getting really repetitive i can you can just mute the stream if it's annoying um oh i might just wait there we go so once it's big like this then i'm going to just for a moment i'm going to disconnect it from the scale 0.01 okay so everything's really like scattered at the moment so if your music is affecting all of the axes and then it might be that your attribute randomize has values in the well i mean it would have defaulted to 1 1 1 as your max vector um but you just want it to be 0 0 1 just because you don't want to be affecting x or y i would assume that is probably what might be causing it uh i mean even if you did break it to all axes on the empty because we're just pulling this ad um oh are you using an attribute mix or an attribute math node for your joining it together because this might be one of those things where it's like you've joined it together on a math note which is like broken your vectors down into scalars which is kind of annoying this is difficult to keep track of when you don't have socket colors when everything's hidden behind an attribute um but you do get used to the workflow so i'm going to try and call the attribute the generated attribute which would be like hopefully generated i mean if you want you can drop your file in voice chat text and somebody might be able to have a quick look um or i can have a quick look uh so let me just call separate xyzp saturate up attribute separate xyz um so we're calling our vector which is potentially generated if this actually exists generated and we're writing the y-axis again if this exists to a gradient just to see if this works um just before we do this let me grab pancakes file and have a quick look hopefully this stream is still running for you it's just probably paused it for a sec while i've opened oh is it still running sweet um so you could said going into the factor position music position uh you are mixing your attribute mixer set to mix instead of add is that what i've got mine set to yeah that's it cool it's so easy to do that though so don't worry okay so let's see if this pulling a gradient worked here i don't even know if generated is actually a an attribute that we can pull uh what's the factor to the attribute mix uh this is my sorry let me just actually bring this over here is the zed position of my music empty so basically just the music amplitude because we baked these uh the sound to the zed i did get rid of the map range um it's we were only using the map range on the scale anyway oh new turkey no worries man i will oh i will remind somebody remind me to send him the box cutter link and we'll do that later cool so we would like to if this is the front then this should in theory have a value of zero and the back should have a value of one um which would mean hypothetically that we could just multiply um the music by the gradient so it's the change in amplitude basically this factor needs to be multiplied yeah so at the moment we should have a scalar value because we're just pulling the y this is kind of why i prefer shader nodes or even likes virtual as much i'm really enjoying using geometry notes to go don't get me wrong but using attributes is like just constantly having to focus on oh is this scalar or is this vector and it's just like i don't know it's like an extra bit of thing that seems unnecessary like i don't really understand why why it needs to happen because you can create amazingly like intricate things with verchog and animation notes without using attributes but i'm sure it's useful i'm sure it is it might just be a like a better way to develop something so in this case we're going to be using attribute math because we're using scalar values we're going to be taking gradient we're going to be our b is going to be a float value this is going to come from our music um let me just make a little bit more space for you to see it seems houdini yeah houdini is super powerful though so i guess maybe they're onto something and we're outputting i'm just going to call this one the amplitude or amp and then instead of using the factor for the music here i'm going to use an attribute here and we're going to call this factor amp so i would say that that did nothing so it looks like you can't just call generated as the um yeah i don't think that's got any difference front and back yeah i know for sure so you can't just call it from here we're gonna have to generate a gradient in the texture properties panel so let's go over here create a new texture it's a blend is a gradient and which way does it need to go horizontally is going to be x vertical is going to be y um as a houdini user do you think it works the same hey right yeah hey there because you did quite a lot of houdini stuff i mean i definitely see when i watch videos for houdini a lot of like attributes and sending stuff between no trees and i think when when we can share attributes between no trees and start writing things a bit more like absolutely within blender then i think it's gonna be a lot more powerful um just at the moment it feels like we're just using attributes within one node tree and if we're just using it there then we might as well use visual connections um but hey okay so rather than using the attribute separate xyz which did not work for us we're going to be using attribute sample texture i'm going to be calling our new texture which is going to be called gradient so there we go gradient and our mapping will be uh we have no faces so we have no uv map so i'm going to call this position and we're going to be writing the output as a gradient which is just the attribute that we used before cool so now another thing to consider um we have got position for mapping our gradient and our gradient is going to go from zero to one in y right so our gradient is going to go from here to here because we're using um the position vector so either we can move our object uh in the edit mode so we could literally just grab it and move it up like this or we need to do something to our position now i'm all about ease so let's just move our move our geometry and there we go so now in there we should have a gradient which is affecting how much of our amplitude is going on so yeah the front line here isn't getting distorted at all by the amplitude changes whereas the back line is being affected uh quite a lot more hey that says struggling with the attributes yeah yeah i mean there's there's nothing really that can help you with attributes that's that's like the really difficult thing um until there's like a fuzzy searching thing or you know like when you're using the script editor you can start typing something and then press tab and it will come up with all of the options um we we don't have that yet i'm hoping that there will be that because at the moment this is not beginner friendly like i'm i want to be making beginner tutorials for this stuff because i want to share it and i want people to enjoy using it at the same time it's like it's very difficult to frame attributes as beginner friendly yeah i think people don't really get the idea that you just type something and then it is suddenly it's an attribute that's kind of a weird idea yeah you lost the pump effect oh from the uh oh they're working visualizing entropies oh no way that's so good uh one is do you have any like developer links or anything that you can like that would be good reading for that also thank you for the combine separate xyz they're super useful um yeah so the pump effect della that was from the scale so i'm i will just bring that back um so that was with the an inline script node would be cool yeah like in animation notes and special you can just like write a script directly or like mathematical expressions i saw um a proposal oneness did for a just like you type in the maths expression and it automatically generates all of the attribute vector nodes and math notes which is really cool um okay utility is map range let's take our z value and bring it back into our scale so from 0.5 the arrays of values i don't really see that as a problem like i know i keep coming back to virtual that's just because it's what i know and i know grasshopper as well and in both of those you just have a list of values you know you just like pull something like vertex positions or an attribute and it would just give you a list like a nested list as well but i mean a spreadsheet would just be fine i don't think there's anything wrong in with blender using a spreadsheet in terms of like interface integration i think it should work fine um okay so we've got the scale pumping back a little bit and it's just down to finessing your values to something that you want i'll see you later gene um so for size i'm gonna go for point zero one up to point one seven so there we go and i would like the difference for these back ones like the random value that we're adding to the backhand and through the back lines i want that to be way way more so i'm going to do is i'm going to add an attribute color ramp we're going to take our gradient attribute which is how our gradient literally are gradient and then we're going to overwrite the gradient so the attribute and the result is going to be gradient and this is going to let us move where these handles affect basically so we have scale happening way back here and i think it might be cool to have the same kind of effect as we're getting with this um this gradient like not affecting the front one so severely so i'm going to move this forward as well so i'm just going to select it i'm going to press alt to pull it off everything's got really big because it's compared to a default size of one um so let's pull that forwards so i'm putting the scale just as the last thing here what the issue with making shades like this the musical is uh it starts like wear you down like listening to it on repeat okay no it's not even a shader no tree like this adding an offset with each beat how do you mean i don't just you just mute the sound i mean i could do that actually oh yeah oh that's kind of a lot better i feel almost like whispering now like i'm in a library okay so it's affecting the sound and let's just increase the amplitude so this shifts so this attribute math in here i'm going to increase the uh the output on here so i'm going to use a map range and i'm going to increase this to like two just so it's like going kind of crazy at the back so you see things get way bigger i'm just going to just reduce this down to 0.1 the maximum size so you can see when there is a loud beat everything kind of gets thrown off quite a lot but our front row and we'll do something in the shader so our front row is like a constant color so you can see it but there we go so that's no longer affecting the front row because we can now control our gradient with the color ramp this is all coming together quite nicely so let me just rearrange a few things bring them back and then i will drop a screenshot into the chat so you can see where we're at now i will drop two screenshots of the chart so here we are up to the gradient and then let's get the rest of this okay so that is the current position of the node tree in case you do need to check check against them i'm just going to do the same thing that we did for the amplitude changes here to the attribute to the scale attribute so we're not having such an intense change of the scale at the front row so basically what we need to do is multiply again the uh the attribute that we're putting in here can i deal with the amplitude no i just need to do an attribute math here so take another attribute here can be calling this one amp underscore scale just because we're doing a different one and again we're taking the gradient so the same gradient that's affecting the amplitude and the attribute fill instead of a float i want to do it with a vector so that needs to be an attribute math node so we're using attribute fill before which essentially just does like a like a paint bucket fill of a particular value vector color or boolean across the entire attribute um because we're now doing it with attributes what we can do is we can take an attribute math node our output is going to be scale our input is going to be an amplitude scale multiplied by a float so now you can see we can actually have like a control here give the size and that front row is tiny now but it's just because it's being multiplied i say yeah multiply by zero so that's actually that's too much okay so what we could always do is we could take our gradient and just alter it differently over here so we're taking gradient we're going to be outputting grad underscore scale so just keep in touch with what attribute names you're using so i'm making sure that my nodes that use those attributes are next to each other just so that i can see them obviously a noodle connection would be more convenient but there we go so just messing around with these values until it kind of comes out looking cool so you can see the back is bigger to begin with and it has like more of a punch effect when it gets even bigger there we go so let's do a little bit of shader stuff um [Music] yeah let's do a little bit of shady stuff and then we'll have basically like covered i mean we've used a lot of nodes already here so we've covered quite a lot of stuff to do with like attributes and controlling meshes um the only thing that geometry knows currently really does that's sort of outside what we've covered is like random distribution so if you're using it for scattering grass scattering foliage scattering rocks things like that um but we can do other videos there's quite a lot of content already on youtube as well about that so let's just work on our shader a little bit i want to have a different impact for the ones at the front than at the back um [Music] i'm just changing my gradient to have less of an effect there there we go so i want my front row to always be visible uh they are actual developers in the blender.chat um [Music] yeah for sure now you see some of these names coming up in the um commit releases things so that's actually another really good really uh another good resource that i will drop into the uh the youtube description i'm losing my words okay so nice little bit here let's grab a an input text coordinate node and we're going to use generate it um there we go oh wait no we're not going to use generated because this is not the material which is on like the whole thing it's not one object it's using instances right so every object on here is unique so what we want to do is we want to set the world position so what we're going to do is we're going to come in here grab geometry node instead and we can use the position vector let's take a converter separate x y set we're going to take the y vector here so we've got zero and it comes up to like zero 0.7 ish um again we can control that with a map range and what i would like to do is have i feel like a base color and then everything like when it does those loud beats everything jumps to the fun colors so maybe we can have yeah so what i'm going to do is i'm just going to join this up we're going to use a mix rgb node to mix between a flat valley uh which in this case is going to be like a blue maybe something like this and then it's going to flip over to the funky colors and it's going to flip with the amplitude so i'm just going to use a map range on here just so i can control the values a bit easier and i'm going to plug this into the mix factor so from 0.5 there we go so it should become there we go when the music's louder you get more colors and i never want that to be fun colors right at the front so i'm also going to use a gradient just to multiply this uh this factor so this is the y gradient which is black at the front so anything multiplied by zero is zero and use another map range on here so you can see i've just made sure the front row is absolutely zero like that and then it fades out and then i can just use a math node set this to multiply on here so now the back ones get all of the color it just brings down a little bit something like that and i want to set my world shader to be black bradley the youtuber yeah uh bradley makes some really great animation notes tutorials like really top drawer stuff i feel like i let most of my animation notes from bradley um so to render this you've got to be in cycles unfortunately because um we're pulling an attribute into the shader so i've just made my world black so it's a little bit slow just because it's loading in cycles oh wait do you know what we're not using an attribute we're just using we're just using a driver so we actually we can do an ev which is good because now we can use bloom and you can render it quicker so turn off transparent film and we're going to set the world color to black and actually i want to see that there we go let's add bass emission strength of point x and go up to 3.8 and go up to two so you can start having loads of fun with this what was i doing here oh this multiply sorry so i'm going to replace that multiply with a map range just so i have more control over the maximum values yeah multiple audio layers with yeah it's going to be so good having the kind of interoperability between geometry nodes and spurtrock animation nodes i've done it with i'll show you something in a circuit actually just because it's quite convenient um so one and then eight and then [Music] there we go so [Music] what we have in here is we have all of our lines obviously you can finesse this to be like a little bit more readable i feel like it goes a little bit too crazy at the moment so you could always reduce like your max min values on here um to like minus 0.5 to 0.5 so you can get loads of stuff going on if you are kind of smart about how you work procedurally between shaders and geometry nodes but even just with geometry nodes in this super early state we can get quite a lot of cool things and obviously this is still um live geometry you know so you can if i come in here and grab some vertices you know if i move these then you can see that we're actually still able to move uh they can move an edge around you know like bend one of these things is kind of cool you could do all sorts with this um so if i was to actually just like remove that and then just like knife line through oh i can't do a knife line no knife without faces so there we go i'm just i've made a a center cut and i'm just scaling up the ends and because it's subdividing inside geometry nodes we're having this bend around in a kind of cool way there we go so you can do all sorts of things already sweet so let me just show you one more thing here um if you use uh surjak then you can use curves and i'm sure you could probably do this with animation notes as well but especially with sphere jog just because i know so curve something like a bezier at the moment you cannot use nodes geometry nodes on curve objects because they're not geometry they don't have meshes um so what we need to do is we need to turn this into geometry that we can instance across so if we open up spurchark i'm just going to do this super simply so create a new note tree add a scene object in and i'm just going to get this selection so now we're pulling this bezier curve into sphere jock and i can do just a visualize mesh viewer so that we're taking the mesh directly out and we just need vertices and edges right so just these two nodes that's all you need um and we will need to turn on live updates unless you just play the animation yeah probably easier just to play the animation so i'll leave i'll leave live option live updates off so now what we've got is we are generating this mesh alpha which you can see here so it's outputting alpha um we need to apply the matrix actually because we just moved it so let's also add a transform matrix apply and let's just make that there so what this does is it applies the transform basically when we moved it over now we have alpha in the correct position and it's a mesh object now so now with alpha selected we can generate a new geometry nodes tree and do something like instancing uh an object like let's put suzanne on it and let's do a point scale vector let's just reduce these down so that we have separate susan's there we go and just jump to our bezier so if you need to have curve control um at the moment it looks like nothing's happening just just because we're not actually calculating anything because we're not either doing a live update over here or playing the timeline uh so we just mute the music so now you can see i've got a spline with uh susan's instanced by geometry notes so if you want to do mixed stuff as long as verchock or animation nodes is happening before geometry nodes you can do anything so it's just that's the important thing it just has to happen beforehand because as far as i know uh neither spectral nor animation nodes will calculate geometry nodes uh modifiers um i don't know if that's going to be supported i hope it is but currently we just have the option to use it beforehand which does mean that you can do fully procedurally generated meshes and then control them or instance over them with geometry nodes okay um that's it that's that is my lot that is my sales pitch for today i hope this has been uh followable and moderately interesting and there we go if anybody has any questions shoot them over and uh i'm sure somebody will answer and also if you make anything with geometry notes drop it in the uh showcase yeah that'd be cool it's always fun to see what people come up with and also push what you can do like push what geometry knows is being used for because it's such a new thing and i feel like so many times i just see on twitter people doing like scattering and stuff like that i know much i don't know it'd be quite interesting to see somebody sort of breaking blender to make it do something else which is always fun um also we're going to be doing more streams again so this is the first one in 2021 but we're going to be doing um more shader streams and more geometry nodes and more sphere chalk definitely from me um and i'm sure sharon was probably going to do some shady stuff and i know jc was mentioning doing something about factor displacement so a lot of things hopefully going to be coming down the pipeline to you soon
Info
Channel: Erindale
Views: 41,209
Rating: undefined out of 5
Keywords: blender, beginner, procedural, nodes, introduction, tutorial, blender tutorial, blender easy, intro to blender, blender 3d, b3d, learn, parametric, computational, geometry nodes, everything nodes, studio culture, livestream
Id: g7EGSCo1YBI
Channel Id: undefined
Length: 113min 57sec (6837 seconds)
Published: Sun Feb 14 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.