Learn Houdini: Howdini101 - 014 - Intro to VOPs

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] all right so let's start diving into the wonderful world of folks and also maybe touch on some vats because I've noticed that some people find verbs easier to understand and some people may find facts easier to understand it will kind of depend on your background if you have a background in coding you will probably be more familiar with text and everybody else will probably find verbs easier to understand so the majority of stuff I'm going to do will be based on verbs but it will also give some up some examples on how the same stuff can be done in facts and then we'll slowly build up our arsenal of tools that we can use and stuff that we can do so folks stand for vertex operators and vex tent for vertex expressions basically so let me just give you a couple of examples of what it is and what we can do with it so up until now so let's make a geometry and let's put down a grid so up until now we've been using pre-baked assets to to do certain stuff so we used polyester oops group reused added salt which we used a whole bunch of notes that that have predetermined things they can do so let's put down another of these predetermined things we can do for example a mountain you can see so we made a 20 by 20 cred and now I append mountain you can see what this mountain sub we have like some controls to add like some noise and like do like Bob it's basically sort of to create sort of a terrain type look so with noises so under the hood what this is doing it is just adding noises to our geometry so we can even dive into this thing so if you double click on this you fight another node so a lot of the Houdini nodes are actually built up of other notes so these are just digital assets that contain other stuff you can even make them editable your rifling and allow anything of contents we're not going to do that but if we dive in we see an attribute of up so that's that's the thing we are going to learn how to use if you dive in here is your big network of stuff that's going on so whole bunch of parameters I see a noise there and you see a whole bunch of stuff going on well so what you see in here is whoops so this is what is driving this this terrain thing under the hood so we can also make something like this ourselves and don't worry we won't make something with this many notes initially we will won't be doing that later but initially we'll just start off simple and I'm just going to explain basically what folks are and how it's sort of how it sort of works so essentially what verbs and also effects do is they do certain math operations on every point at this at the same time so if you if you apply something to it it will apply that thing on every point which means it can be super multi-threaded so anything you do in fact Soren folks will be multi-threaded because it runs simultaneously on every point at the same time and then we can determine unlike specific things that we want to do by for example providing a point number or providing something else well we'll get more into that into that later but the first let's just make a very simple thing inside folks so type attribute Ville so if you just type code by default you will see a whole bunch of folks will appear a point for primitive or predict swap you have a volume flop as well and these are essentially the same thing except for the volume pop but only thing is that it's different on where they run on by default so if I make a primitive fault for example it was beset to run on primitives by default and we're for now we're gonna run on points so remember this is what we had in here points vertices primitives so anything you do in here will run over the attributes you did turn you determine on here so point URL of a points primitives footprint will run out for primitives purchasable we ran over vertices never really use numbers myself actually in detail all run only once so yeah I started it might be like if you're generating for example geometry inside of this you might only want to run it once so we could maybe get into some examples of that later but maybe that's a little bit too we'll see anyway so let's dive into this form so then we go get into the world of forms and you see there's geometry or geometry voc global parameters so this has a whole bunch of parameters and there's geometry for output so just a couple of basic outputs that you frequently use a piece for position feeds for velocity force CD color and n is normal and then you have a whole bunch of of off parameters in here and on my website and housing income you can download the PDF that has all of this information what it exactly is as well so just like just sort of an easy glossary PDF I guess but these are just so some stuff that we can quickly load it or we can load in anything we want remember Houdini just works on data so you can load in anything you want but for now let's try to make something similar to the mountain alright so that's first just so we have our position input here P so that's the position for every single one of our points so every single one of these points has a position attribute and this is the output position so if we just plug P into P it will just take input position and then output it to the positions or nothing changes because it will just be a bastard right now we're passing position into position but in between here we can do some modifications for example let's type an ad so we can do certain math operation so if you if you tap here you see a whole new web network appear by the way with a whole bunch of new stuff if you go to math you can see you have a whole bunch of math operations for example ad so let's put in path in between here and now you can see we have a second input so what we can do is we can middle mouse on this and then promote parameter and then we can select it and then say it's and then this similar to the user interface thing that we did before so we get some options here so also what like what what what this did is it just added a so if I go up a level by promoting it this added a a parameter like we did before as well so just edit it down here so we got get some controls and I have it all here and I can on here say what what type of will input should this be so I probably want this to be true for three floats or a vector so now it has three parameters I cannot by the way also double click on this and then it will sort of pop out then I have it as a separate node and then I could add something in between here or I could actually also just drop down a parameter myself and then do that do that myself without so I could have also just done it like that and then plug this in anyway so we have this thing and this is set to a vector so what I can do now is that with this this is securely set to zero zero zero but if I increase the Y you can see that I'm certainly that the grid is moving up I can do this if in the upper levels all because I promoted the parameter again this by promoting it it will add it to the user interface with like like we get in the previous video as well and again like we could create like add false or something like had to pose sure you don't really have to do this but just to show that it sort of ha like it will just change the name so what this is doing is just adding a simple math operation to the position so this will add whatever I put here to the position attribute of every point so it will add the add this to the position of every one so what that will do is well it will move the entire thing to the side so we can add other stuff in here as well so instead of just doing something like this what we could also offer like if we were to take for example a car point number and put it in there we get something really weird because now it's going to add the value every point to our position so that's obviously is not something we want or we could do for example is if we type random random random is also when we did like our attribute randomized right that's essentially what this is also doing it's sort of a similar note this will take an input for example point number and then I can say what do I want to output for example I want to output a 3d vector and if I then put it in you see it will add a so it will create a random a random attribute from 0 to 1 for for every point and then add that to the position of the point so that's why it's gonna look all messy but you can see this does it Oh somedays Leon on every point and we're randomizing the value we get based on the point number so you can see this is how we can sort of manipulate stuff inside of whoops but of course this looks a little bit random so maybe we want to have some more control let's put down a noise let's put out a turbulent noise so turbulent noise you can see it has a whole bunch of input so we need to tell the turbulent nodes like where should it apply the noise so it should apply it on our position of our point so we need to click our position in there because else the noise won't know how to be applied now we can say what type of noise like 1d noise or 3d noise let's take put it to 1d noise pronounced of the world mean that it's just gonna be a black and white value let's plug this into our color so if I do this you can you already see and by the way maybe I want to up the resolution of my grid a little bit so ya see some can see some more put the noise you can see now it added the the the noise to the color so you can see it appear in the spreadsheet here as well because it's a 1d noise it will just add it to every part of the color at the same way because it will just fill fill up the other channels as well so you can see we get sort of a noise and we cover of course we can can we can change all of these of these things we can change the frequency so all although all that type of stuff it could also be 3d noise and then we get colored noise so that will mean that every so now right now if you go into your gym with your spreadsheet you see that that it gets different values for every color so it will like for for every for every point so this will be a 3d noise and so by putting it into color it's just easy to visualize what's happening so that means that this noise has is a vector so what we can also do is for example it's right now we're putting it into color to visualize it but we can also take these values we generate it and add them to the position so let's do that now you can see we created sort of a cool sort of terrain II thing so let's do what we did before we wanna maybe promote some parameters so let's promote type let's promote frequency promote offset promote amplitude and promote roughness so if we can we go up and now we have some control let me by the way let's maybe remove t color so if I hold Y I can slice sort of the thing right so it's maybe tweak our frequency a little bit a little bit lower and and increase our amplitude you can see it's only moving in one direction will depend on your noise type like the way it will behave so Perlin noise will be like that so if I put simplex noise it's gonna sort of move in every direction so now we created sort of a cloth type look effect I guess so of course it's not exactly similar like the terrain but you can you can make this look similar to your to your terrain depending on like how you how you change your change for parameters so what you often do is that you can also stack multiple multiple noises for example I could for example make another noise and then add more stuff to it already existing noise so we'll just manipulate the values that come out of here and then just add those in as well so you can sort of stack whatever you're like whatever your your noise is and just change it a little bit but you can see how this sort of how this sort of works so we can just do stuff in here and we can like we could add like promote this parameter make this a vector and then like add to our position this way we could let me remove the second noise by the way you could also like make one noise maybe for example with like very big pig deformation and you could copy and paste this fob no not to divide copy and paste this fob and make this one higher frequency it's maybe a little bit too high so now you can see we can sort of stack these things together so now we do big deformations on here then we do smaller deformations on here so of course this will also work on a lot 3d object so you have a pig here maybe not at the shader let's just add this to our pig it's a little bit extreme let's only do a second noise maybe you can see now we're deforming our noise our our pig so we just added some noise to our pig and as long like the point I'm just trying to make to show how how this works on the loop so remember this just works on every single every single point so this is completely multi-threaded so other cool stuff that we can do for example is there are certain parameters in New Guinea that you can access to use things for example you have a couple of parameters like I so I can make a note here for example there's so some of these channels like we time the expression before and there stuff you can use in there for example dollar F will mean frame dollar T domain time there's other stuff that we're gonna talk more about later though our job will be the job Direction not gonna get into that for now but there's a whole bunch of these again you can check the PDF that I provide on my website even housing that come to see more of these examples but let's say we will type dollar F in the off so if I move the offset for example you can see I'm moving the offset of the noise thread similar what we were doing when we did it liquid and let's not add to the position just add it make it one day noise put it into the color so it's going to be a little bit easier to see what offset will do so if I animate offset you can see it's just offsetting the positions of the of the noise so if we're doing it in here that's also what's happening so we can drag this ourselves and keyframe these ourselves or we could for example type dollar F so now it will increment by one every frame so this will first be a little bit too fast so now you might think we want to divide this by 5 so it's not really gonna work that well actually it does work so you shoot you used to be able you used to need to specify F F means floating frame but right now it actually works by default so if I just have to set it dollar F F and then divided by 10 for example you can see now I have an animated noise moving through my pig so another of these variables will be directiy so dollar T will increment by one every every second so I'm about 24 frames per second so F like at frame 25 it will be at 1 because then it's restarting of course so now you see we created this sort of really weird wavy thing we could also put it into the last coordinate so now it's happening everywhere maybe we want to simplify our Pig we have some more detail now we created this sort of cool looing thing just with some simple noises inside of our VOC Network all right so now let's copy and paste our noise and let's delete the channel in the offset zero zero zero and maybe turn down the frequency a little bit alright and let's push up the amplitude so what you can see is that stuff will be be pushed based on the noise in a 360 wall direction so this stuff over here has a vector that will be pushed over there so maybe if I want to visualize this a little bit better so let's also put this turbulent noise into our color so now we get there's a color and right now it's it's a little bit difficult to sort of whew what's going on so maybe let's make a different visualizer so if we type look in our viewport here press D on the keyboard we get display options let's go to visualize and then on here we can make scene visualizers so let's make a marker so the plus end marker and let's put a vector trail and type C D so capital C and small correction small letter D alright so now we are visualizing the color so the color is a vector so we're instead of visualizing it just as if color we also visualizing it as the direction that it's sort of pointing because that's why we're using it for right we are using color as direction and remember these so these these attributes are just x y&z positions so it means that they have a direction so I have a point it's been to have a direction so if you look at this and like now when I'm sewing I'm increasing this you kind of see that this stuff here is sort of expanding inwards have I moved inside of my geo you can probably see it so there's years these are moving inwards of the geometry so when I'm increasing my amplitude it will be pushed inwards I mean delete forever turn off my my my marker again so maybe that's not exactly what we want maybe we want to sort of edit based on the direction that our surface has and if you remember is that our points have a direction right that's that's our normal it's so you can see here vertex normals that's okay no so make it let's let's keep it for addiction also now so they have a direction so let's make a new phone so type just at speed pop couldn't run over point let's go in there let's turn off our display over normals let's try something so let's add our position again in our position and then we want to add something to our position let's instead of adding our adding our noise directly let's add our normal so let's plug it in and you can see our pic completely inflates so we made an inflated pic hooray right this is it maybe a little bit extreme so maybe what we're going to do is okay we don't want to add like add the entire normal because this will just add the normal which will be 0 to 1 to the position so that's why it's inflating this much we could say is we could put them multiply in between and then promote parameter and you see it now it deflate and this can just be a flood so we're just putting it as a float and we multiply it we'll just use the same value here as a multiplication or all of the components of the vector so we have our input them and now if we drag this slider we can see we can inflate our pig based on this slide so it's just multiplying the value of our normal that gets added to our position based on this slider so externally we now made a pig shop because if you type pick its another stuff that we have it's doing the same it's actually the same thing I'm not sure if you can dive into there now this is a hard-coded one some are hard-coded so just residency and you cannot dive into them so some will be built from Houdini notes like Rob's and song will be hard-coded essentially we made a big shop now alright so but instead of having it control ourselves like like this we could also say it it let's add a noise like a turbulent noise that we had before let's maximize this so I can remember you need to tell it where should you put it so in the position then we have this turbulent noise let's keep it as a as a 1d noise so one-dimensional noise because all we're gonna do is so is Disney's needs just to be a float because it needs to just tell how much should it deeply displace the geometry along the normal so we just use this as a multiplier and then promote our parameters up a level alright thank you see we get a completely different thing so now it will displace this geometry along the normal based on our noise I get a very sickly looking pig so we created here something there's actually also a node that does this by default so just in one node and it's caused displace a long normal so this is just sort of doing what we have already so it takes position these stakes are normal and then it takes an amount and then put it into a position this does the same so you can see output for this will be exactly the same so but this thing just does what this does but I was just like showing you both ways how to do this sort of it sort of just so you understand what's going on so this node also has a as a skill so it would be the amount that it gets sort of inflated everybody also do that ourselves because we already have a multiplier here so we can add another multiplication by promoting this other parameter let's plug that in and then we have I kind of noticed it I think maybe our own little thing even seems a little bit faster I'm not sure if it even if it matters but you kind of see what we're doing which is doing simple math operations let's delete our displacement on normal maybe I'll just keep it in here for the file so we're just doing simple math operations so we're just taking position and then adding normal but the normal is multiplied by by our noise and again we can just put a put like I told our tea or something in here and just play we have a noise moving upwards through our Pig so instead of maybe just only using this to drive for sample positions of like a pig like this you can also output these these these failures you do involves to do other stuff so let's make an olive oil to boot up put any then maybe that's added on the grid it's probably better let's put a grid make the grid whatever like 50 by 50 or something that's going there let's put down a turbulent nose to plug the position into the position and let's for now put it in color so we can sort of visualize it let's promote some parameters all right so we have these parameters we can look in our spreadsheet you can see we have some values going on here now you remember we did an attribute to randomize before and it was also generating sort of Tisa these random values where now we're doing it with a noise so of course now we also we have more control over where our it's going to be okay so let's say we want to export these values to use for something else so let's not put it into our color but let's type bind so bind so bind will be for loading and buying export will be for exporting so let's bind export is this as an attribute let's plug it into this thing and by the follows come farm we don't want to become far more the typical please scale alright so we called P scale now you can see we have a P scale attribute so maybe instead of course we're doing it now on this on this create maybe which is one that we don't want to scatter some points on it so I just did that to sort of visualize it with the color easily but again like we can if we also put it on color you can see this also still work so you can see now it's doing it on the points you know we have some like control on the points like so we have to eat the attribute being added on to the points so we can now do is we can copy two points turn on back and instance come up onto instance let's put down a sphere let's plug it in and you can already see we get kind of a cool thing going on here so now if we change our noise effect so let's put this - for example - uh doherty see we get our noise animating true our copies and again like this could be any object we could could make it a pig make it a box let's do a box maybe MUX box might be cool so we're doing that we could add a multi in here example two let's say okay maybe we want to have some control over how big and you can you can label this so-called a skill maybe so right increase that I have some control over the absolute for the absolute size so now I have my copies animating true with the noise so maybe I could add another noise so it's copy let's copy and paste is noise let's not promote these parameters oh sorry it's not promote I'm gonna maybe drive them based on the same noise we have already well we want this one to be a treaty noise so we can do is we can again click on these parameters and then just put those in a second noise so it will be parameter I'm gonna move stuff a little bit around gonna stop my thing so I can take off frequency put this into frequency click on offset put this into offset amplitude you can see it's just like we can just use these same parameters in the other noise roughness so now we have a treaty noise here and of course we can use this treaty now so this will it be a vector so remember what else is a vector so color is a vector but also normals are vectors so let's put it into normals let's see what will happen cuz remember before with the with the talking about attributes remember we were using the normal to sort of orient our our our copies so now you can see they are sort of randomly changing based on based on the know that's already it looks a little bit more interesting so we could do more stuff here we could say we have to offset maybe we want to add something to the offset that we have already all right so let's do a little bit different that's food so it sees offset here let's put offset in there and then put a sitting there then take that thing and make this vector now we have more controls here so it will still work like this but maybe we could also like to say it looks a little bit weird maybe that's a little bit a little bit extreme not sure if I'm actually liking the way that looks that doesn't look that great so I'm just gonna remove this ad but you can see the cool stuff that we can do with this sort of thing that we're doing here you can of course like change it like that maybe we could do some some other thing we could say that let's find export another parameter so let's make it a factor let's call it skill remember we can use as you see it sort of disappears because we kind of skill will be the the non uniform value so like if I were to promote this parameter so here for some reason is not doing anything it's a pine sorry needs to be a point export of course find export skill tree floats vector let's promote it three two one one and one okay when you also needed to put it by the food to defaults for some reason anyway so now you can see we also have some control here over our white scale so we could also say that maybe right now we're setting this despite it is by ourselves let's not do that let's put this to one so this will be our so let's say we only want to change our Y scale okay what we can do is this is a vector let's split this vector into each individual components so remember a vector is just three values of XYZ so we can do is type vector to float and that will split the vector into an x y and z component an N type float two vector and then put these values back in and then put it back into scale so by default this will not do anything you can see nothing happens we still have this control here exactly this as was before but now we can add stuff to our PI component individually so let's first try adjust with a constant so let's promote this let's give it a call it wide-scale okay this needs to for some reason this is messing up a little bit let me see what's going on okay so there's something weird going on with our skill there so for some reason this was zeroed out again let's go back to our scene view alright so now you can see we still have these same controls here so nothing changed there but again now we're doing it with this parameter so instead of adding it ourselves maybe let's add the noise we already have a noise there let's add that one let's see what's gonna happen not that much maybe multiply it we multiply constant let's do a 1050 so maybe a little bit extreme pretty five right so now we something really good pretty interesting and again these are just copies so we can copy copy are big as well so now it's now it's a big doing this now it's the sphere doing this let's keep it a box so I know this is probably a little bit difficult to understand what's what's happening here but what you're just doing is taking values and adding other stuff fairies to it not applying other values and it's just working on these attributes that we have in the spreadsheet so it's just adding like adding stuff to these to this attribute and we're doing that based on of noise based on the multiplication based on add function we can just write them out as an attribute with a bind so I know this is hard to wrap your mind around and I had some trouble wrapping my mind around when I started out but this is a very very very important part of Houdini and this is something you really need to understand this is one of the fundamental things that you need to understand and we're gonna use this a lot more all over the place in this course and at the end of this course you will you will understand how to use them hopefully and yeah and then you can make super cool stuff so I really want to challenge you to have a go at ease yourself maybe try out some stuff and see what you can come up with just I mean maybe apply these techniques to another piece of geometry and just try making something cool I know this is a little bit tricky to understand but we will be using folks a lot and it will become clear the more you use it so see you in the next video or hopefully found to school and your mind is not breaking down yet but yeah so this is a very important part of Houdini and you really well you really need to understand what we're doing here so see you in the next video [Music]
Info
Channel: Tim van Helsdingen
Views: 4,985
Rating: 4.976048 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
Id: peewkB_mtog
Channel Id: undefined
Length: 42min 49sec (2569 seconds)
Published: Fri May 08 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.