Learn Houdini: Howdini101 - 018 - Seaweed 02 (houdini beginner course)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] what we are going to do is scatter points on our curve let's just do it on our static curve for now so lots on the animated one so it's just a little bit easier to see so we get a whole bunch of points see we can points and maybe you want to turn off relaxed iteration so relaxed iteration feel sort of from uniformly spaced I'm sort of higher I put is the more uniform it will be I turn this off group they will be twelve more randomly spaced which it's more similar I guess to what it would be in real life maybe we don't want it to sort of start completely at the bottom you kind of see that they're sort of more ramped up like there's not really a lot here but there's a lot there they also get bigger the higher they get so maybe we want some control for that so let's maybe copy and paste the finger we made here so maybe call this fing movement let's copy and paste this thing put it in there let's dive into it into that thing maybe by the way that's not net not copy and paste let's just make a new one it's just if we do it again it should be maybe easier to learn so let's make an attribute table put it on top and dive in there so we're not going to do any any noise in this one we're just gonna bind our curfew curfew and we're going to bind export another attribute so maybe call this attribute density because we're gonna use this to say to to say how dense should the scatter would be basically we just plug this in here we get a second attribute called density which will be the same as curfew and then maybe put down a ramp parameter in the in the middle and that's put it to and of course we don't want it to be a color ramp because you can see now it's only get like a factor density which is want to be a spline wrap those good upper-level and now we have this ramp and on the scatter you see there's so over here I'm putting how much should I how many point should I should I shoot out put on there but I can also put a density attribute so I can turn that on and if I now if I let's say if I change my my ramp you can see it will it bone together on the bottom where the density is low so the density attribute but it will scatter where the density attribute is higher and remember this can be any attribute you want because the attributes are arbitrary if I call this attribute here I call it cheese it will stop working but if I then put it to cheese over here you can see it works again let's just name it something that we can understand as your teammates might think you're crazy if you call everything cheese I've been in there done that so I tend to call a lot of stuff cheese I even put tiny little cheeses and some projects and I've worked on anyway so anyway so we have this this sort of slider we can use to control how dense should stuff be so maybe it put it something like like this so we have some control on that of course remember to save regularly whenever you're doing this I'm constantly pressing ctrl s but you should be doing the same so anyway because maybe kind of want to start copying some stuff to our points so if we type copy two points put something in and then put down a line because we want to copy a line and put it like that so they will all start copying today to the top maybe like so if we type like that it will copy you is sorry but we sort of want to be able to give this a direction which they should copy so let's do that so before we do the scatter we want to maybe determine the direction let's put down a bony frame fully frame so Polly frame will make a normal and tangent so but if all this doesn't really do much but let's put the normal to be so to be the tangent so I know that's visualize are normal you can see they will point upwards but like let's say if I put this on my moving thing you can see they will sort of the tangents will follow the direction of the curve let's plug this back in with the static one we don't want them to follow completely the curve would you but - we want them to sort of go like roughly in the direction of the curve but then sort of move outwards so let's make a attribute randomize let's plug it in there let's put these two that's right now it's doing color let's put this two and normal all right so instead of having them point like that we kind of want them to sort of point randomly across this thing so we can change these minimum and maximum values so if I normal so right now it's only pointing in a positive direction so we kind of want them to also point towards the other side so if we make this minus one and also make this minus one you can see right now they would be pointing in both the negative and the positive direction and then we also have this control here to have sort of say how much should I be pointing upwards we don't want this to be negative because if we were to make this negativity it would also be pointing downward we don't really want that but let's say if we put this into the movement and work on a plate so they will be sort of facing upwards but they are not really flowing with the with the movement of the curve so perhaps not not that's not what we want because we kind of like the way this was behaving right so they were sort of moving with the with the curve so maybe we can try something else for that so let's instead make a attribute of oh let's put it in here and so after the polyframe support if I'm really going to the first input so you see this thing has four inputs and let's put the randomized into the second input let's dive in there let's hide out our normals so first off if we're looking at these normals we can see they're pointing down and maybe we wanted to point up right because we're looking at this thing kind of more of an upwards direction they're going to go towards the Sun right so kind of what we want to do is want to invert these else our copies would go down so we can do we can put a multiply constant let's put it in the normal and let's say we're going to multiply the minus one so that will just invert it so let's put that into the normal side like that you can see right now they're pointing in their different direction so they're going from this to this so it's already more what we're what we're after so then what we wanted to is we want to import the normal from the second from the second input so let's type import you can see the whole menu appear you can say import point attribute Gustavo we're gonna do right or an import point attribute so where do we want to import it from we want to import it the second input of input to put it into file you could also do it put it in here to the be the second input but just if we do it like this sort of visually makes more sense so this would be the first input in the mid second so we don't really need to put in the point number four now because the point number is just going to be the same because like but sometimes you might do that in this case we can just put in here because what do we want to import when you import the normal and now let's put because what and what do we want to do here we want to mix these two together so what would we do to that mix easy enough right just type whatever you want to do and something we'll probably put a pop up that will do whatever you want to want it to do so in the first input let's put our first normal and then in the second input let's put our second um and by the way just to visualize if we just put in the normal from here and just put this into normal and we visualize this you can see it will just be the normals from the second input instead of the first input so like if we do this you can see it's just gonna do that but instead of just putting it to the second input like this let's put this into the mix and then put this into the normal and then you have a bias which is say how much should i mix so you can see we have a slider so we can sort of mix between the two instead of doing it like that let's promote this parameter because all we have from control the top level and now you can see we can sort of do that and then if we add brief replay you see we have sort of a nice mix between our initial normals and are randomized normals all right so let's turn it to not come go over there animated thing again is just do it on the static one like that and now if we go to our copy you can see we have stuff going into the direction of our of our copies and again if we just if - we were to put this to the movement you can see they're moving with the animated thing what we don't want to do that for now all right so now we kind of want to control the size of these things so we already have a control here for our for the density so it will be this thing where we call this density because remember we can do use this to control where they are scattering well let's put down an attribute a randomized like that and put it in here put it upon let's type P scale so now you can see it's randomizing those values and maybe we'd want it to go from 0.5 to 1 and then have a global skills you now you can see they're sort of randomized the size is sort of randomized and again we're doing this inside and as we with randomized we could also do this inside of an attribute table if we just put random put the point number into the random you can see if we get a float you could find export is 2p to be called P scale okay do put a fit range in between promote the minimum maximum because the input is always going to be between 0 and 1 so when it's already correct and then maybe we also want to do a overall multiplier promote the second input put that - what did we put here point 43 point 43 and we did run all right so let's look so randomization is looking a little bit different but you can see we can just throw this probably the randomization function under the hood is a little bit different but it's essentially doing the same this is doing the same as this but right now we're building it ourselves we can also do this in in a wrangle so I haven't really talked about wrangles yet I am going to get into that immoral a little bit later but for example in a rain goal this would be you could say that type flow so flood would create an attribute inside a wrinkle which is not being exported out just call it a or something and I say rent based on the point number and then you could say R equals Phi 0 1 0 and 0.5 to 1 8 3 r 0.5 to 1 and then x may be our multiplier and then at P scale equals R again don't worry about this faxing you don't really have to repeat this after me I will get back to this in a later video on how this works but you can see is it's going to do roughly the same so it's all looking a little bit different but it's doing sort of the same thing so just keep in mind you can you can do the same evolves as impacts and just this is just probably faster to write than doing this thing for just randomization to it randomizes probability is you pick and there's 1,001 ways to do anything but for now let's just remove these and just choose the attribute randomize just so you know there's you can also do this yourself alright so now we have this thing and we could say that we kind of want to merge this in with what we already have let's put the put copies of the movement and then highlight our merge and play so it's looking a little bit chaotic but you can see we have a main branch in and having copies moving with it the copies don't really have any noise so that's probably the thing we should probably do after this and I can already tell you that this sort of chaotic movement will be problematic later so we're going to solve that later but one step at a time right so let's just copy and paste our movement top now let's paste it over here let's have a look maybe reduce our copies so a little bit less to look at and we kind of need more points on our on our line so let's do the same as we did before let's make a resample so we have some points on it so maybe did smaller ones can have a little bit less points maybe like 16 or something now let's press play and let's do this only on the static one again so it's just easier to look at just what this thing is doing always tackle one problem at a time else you're going to be confused about what's happening so let's play so that's look we need very simple we have curfew so look at this randomize copy movements okay so this is not exactly looking like we wanted to because you can see the entire thing sort of moving which is probably not really what we want to so why is it happening why is it sitting similar to what this thing is doing here but naughty these things individually let's have a look at our geometry spreadsheet let's let's let's investigate so we have two curfew attribute but let's look at turfing here so this also has two curfew attribute that sort of looks like the same values if we have here but shouldn't our values here be 0 to 1 so what's going on there well because what this thing is doing is that the copy' two points is sort of keeping the incoming curfew attribute and then applying it to all of our copies and we don't really want that we want this new curve you attribute to be on our copies so you can see the copy here has is saying like what should I copy so what it's doing it's saying the star means it should copy everything X and then with the thing over here says except for and then it doesn't copy any of these attributes here so maybe we want to add something to that list so that's just put a yeah so that's there's just two defaults let's put one of these and then type curfew all right and then let's have a look at what's gonna go kind of happen you can see something already changed so let's play sorry that's already looking a little better so we probably want to go inside this movement maybe we want some control over this thing and promote it we also need to do this on the other one because we hadn't really done that yet if you wanna also want to promote the type maybe want to increase the frequency change the roughness maybe we want is to be a simplex noise maybe that's also do it on the other one promote these parameters that we have not promote the frequency from outer roughness simplex noise so this movement is already looking better right with the simplex noise instead of the alligator I know as you can see the alligator noises a little bit a little more rough the simplex noise just looks a little bit more like we want so I think I think in this one I also use the simplex noise so let's type in there so now this is looking a lot better so essentially what this is doing so every curve now every curve has a zero to one attribute so what we could do is like if we just select a curve just press Delete and then press Delete not selected and then go to a geometry spreadsheet you can see this curve has a as a zero to one if I were to do this one other curve let's say a curve one you can see exactly the same so then this whole movement thing will just happen the same unlike like every book on every curve so let's have a look in our merged thing so there is something going on there because of course while we're doing it sort of on the static thing but if we go on our movement maybe we want it to be a little bit more random because right now they are sort of all being driven by the same noise and moving through it so maybe we want to sort of offset that a little bit so let's do that so let's dive into here let's think how could be how could we do that so remember what we did before we used a random function so we put a ramble and this random can take any input so what what could we plug in here to have it be randomized for every single one of those primitives I give you thank you to think about that if you fought point number you were wrong because we don't want to do it for every point because all of these else it would be randomized for every single one of these points and if I made a mess on this you can see we have a lot of points or you only have 20 primitives so the 20 parameters is how many curves we have so what we're going to do is we only used primitive number if I put this in there to generate a random value for every single one of these curves so again I could export this and we want it to be I saw one D in one the integer and we want it to be a what do we want it want to be a 3d vector output and again we could export this just to check it out now you can see now we have a random value but the random value will be the same for forever for like for like a lot of the points because those will belong to the same curve but if they belong to another curve the values will be different so let's remove the export and instead of doing that let's just add this to our offset so put ad like that let's put our ad our random into the ad let's let's watch what happens to the to the things that plug it in and you can see it changed so now you can see we get a much more random sort of look so if I turn this off you can see it's very uniform you see right now it's a lot more random so we could add more randomness to it if we wanted to so what would we want to do so something we hadn't really discussed yet so we put the time into the offset right so what we haven't really done yet is that we could put a multiplier in between the time we also need to do this by the way later on the on the upper level thing let's promote this and then call this speed all right so right now if I play nothing will happen because this time now is being multiplied by zero if I increase this you can see it will be very slow and if I increase it like super like a lot you can see it will be very fast we also need to let's do this also on our movements here so we have our time let's multiply no parameter call it speed and speed so we have some control for how fast it's gonna be so something like that alright so we have our speed but maybe on this one we come to kind of want to speed also to be sort of randomized for every single one of our every single one of our copies why is my why is it not working anymore let's remove this promote it again so what we can do is we can go in here maybe let's call another random function and again based on the parameters number but now we wanted to maybe be a 1d output so of float and let's put fit this okay so if we okay let's first just multiply the time also by this function see what happens so you can see some will be super slow and some will be quite fast if I make this speed if I bump up the speed it will be more extreme yes better see what's going on he's so much super fast and some are very slow we probably don't want it to be like that extreme so we could say fit range so again we're just gonna so this will be 0 to 1 value again you could check this by bind exporting this so let's say we want the destination mean to be 0.7 and estimation max 1 so just a little bit of randomness let's play so now it will be my quite a quite a bit more random its Murchison you can see it is still not really what we want because of Korra's this is right now this is animating like that so it's probably not really what we want good we also had this problem where if we plug this in and this is way too fast you can see you see they're sort of weirdly jumping around so what we actually don't want to do is we actually don't want to animate this thing can copy to it and then do the well then copy to it and then merge it all back together but we kind of want to do is maybe drive the main movement after we done all the copies but still animate the individual copies themselves so movie them would just do is just just remove the animation there so right now it's just this would just look like this and then we just want to add the movement over here so now and there's still something going on there so why is that have a look are we doing it by the curfew so that's probably not right now the best way to do it because now right now it will this whole thing will sort of be randomly offset by the curve you so we want to think of something else what we could use to to sort of work so we want to think of something else that we could use for this offset so let me think about that for a second we could maybe just use the height of this thing so that might be a thing right so let's just do that so I want you to think a little bit about how you could use the height for that maybe try it for yourself before I show you because of course if you're going to come up with the solution yourself you learn more but I'll give you couple seconds to pause the video and you didn't pause the video so let's show how you could do that so we don't want to use the he could review or you want to do is we want to use the Y position sort of height but that's a factor I want to do is play factor to float you want to split this factor put it in there and then we get to Y component and let's use that as a multiplier instead of our curfew so let's remove this remove this right this right now so you can see that's working with a little bit extreme so maybe we want to fit this value let's put a fit range I want to maybe promote these source plaques so its booty maximum so that's going to be the height of our so so so the source max will basically be like what will be the cap which will influence this thing so if we so let's open this a little bit and put it like that so that's already looking better so maybe we want to drive the maximum value by the length of our line so let's copy parameter let's paste that into worth references so now it will the maximum value will be just a length of our line so that's looking quite nice actually I think looking better than the one that I had in the demo so now we have this nice moving line you know we have of course we have a scatter so we can increase the scatter I think maybe the speed is a little bit too extreme so we can just tone down everything and we can like we have to density thing right so we have that so something we maybe want to do still is that the skill here is start off small and it gets bigger which we don't really have right now because it's just as big everywhere so how could we do that okay so what we have here is we randomizing the P scale right so let's say we have a so we already have an attribute that we can sort of use for this so maybe let's go into let's try this in a what is do it involve so let's go in there because we already have a couple of attributes we can use we have curfew so we could use curfew perhaps so let me look at that so what we maybe want to do let's maybe do is looking a little bit around did I maybe yeah so what we're doing here is we are putting the binding curfew mining it to density maybe what we also want to do is find export over here and find this to P scale oh no not peace glue please kill all right so now we have a piece Cupid it's not on our point we will also have a Pisco atrophy and then on the attribute of randomized we will just override it we don't want to override it we want to maybe multiply the existing value so I have a look it looks like so you can see they start off super small and then they get bigger the higher they get again you could add a ramp in between sort of to sort of randomize that and with the density probably let me just want it to be like that just want to start lower now look into the movement maybe up to frequency turn down the amplitude I think that looks kind of cool so now the main thing that's left is sort of generating a mesh for this thing so you could also have these curves be rendered at your under time it for now let's generate a mesh for it so we have something to look at we could also do that at render time but let's just do it with a with a sweet [Music]
Info
Channel: Tim van Helsdingen
Views: 3,100
Rating: 5 out of 5
Keywords: houdini, howdini101, learn houdini, learn 3d, learn animation, learn vfx, learn motiondesign, houdini tutorial, vfx tutorial, animation tutorial, cinema 4d, c4d, maya, 3ds max, blender, FX, VFX, how do i make animation, sidefx, how to learn houdini from scratch
Id: OnuNsrJIt4o
Channel Id: undefined
Length: 33min 28sec (2008 seconds)
Published: Wed May 27 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.