Intro To Houdini for VFX - Beginner Course

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
welcome to intro to Houdini this course is designed for new users who want to learn Houdini to create visual effects we're going to cover only the parts that are needed in order to create cool simulations like explosions disintegrations and really any type of effect that you can think of you will find that Houdini really has no limits when it comes to VFX we will start with the absolute Basics such as navigation and basic tools and slowly uncover more and more complex Concepts until we finally reach simulations now I can promise that this single course will make you an expert in VFX but I can promise you that it will set you on the right path to becoming one with that being said let's get started so here we are inside Houdini and at first glance all of this might be a little bit intimidating I will agree there's really a lot of buttons up here at the top and we have a lot of Windows that we can cycle through so it's super easy to get overwhelmed right as you start using Houdini now let me put your heart to rest and say that we only really need three Windows here we need our scene view which is essentially our viewport we need our obj window where we place all of our objects and over here we need our parameter window where we change different settings and parameters for our geometry all of these other windows in fact we don't really need for now we could just close them and in fact some of these I never used in my life and I don't even know what they do so we can only focus on these three Windows the scene view parameters and obj over here at the top we have a lot of different buttons so this whole thing is called the Shelf tab where we can access different kinds of objects and presets and I just want to say one thing about this this is completely you useless I almost never use this shelf tab to do anything and especially as a beginner this will probably only make things worse for you so for example in the simulation tab if I go to the Pyro effects and I want to use the sparse file board preset I can click this and I can hit enter to drop it in my scene and right away we see that we have a lot of objects and with a lot of different parameters and settings and we don't really know what any of these are so I can play the simulation and this will work so we have our simulation here but we don't really know what any of these things do so like I said especially as you're starting out I would like to suggest you ignore this entire self tool so we don't have to worry about this for now in fact we could hide this if we click this little arrow over here and really we wouldn't be missing anything so don't worry about the Shelf tab for now now just for the sake of working with the defaults so we have the same layout I'll reset everything to the default by going over here where it says build and I can select reload current desktop and when I click this it will reach set everything to the defaults so this is a good thing to note because if by accident you click somewhere and you mess up your entire layout you can always go back here and just click reload current desktop and it will reset everything to defaults now let's drop an object in our scene and see what we get to do anything and everything in Houdini you start by pressing tab this will bring up the tab menu which contains all the things you can do or create and if I go to the bottom here where it says all you can see all of the nodes that we can create now upon seeing this giant list I don't blame you if your first reaction will be how the F am I ever going to learn all of these again let me put your heart to rest and say that you will probably not ever going to use maybe 90 of all of these nodes and this is because not all nodes are created equal and we will talk more about this later but in fact most of these nodes are really just different combinations of other lower level nodes so they're sort of like presets there are really just a handful of nodes that build up everything else and those are the nodes that we have to understand and master but but don't worry about this for now we will talk more about this later for now all I want to say is that you don't really need to know most of what these nodes do to get the most out of Houdini so enough rambling let's type Cube and we will press enter and we see that we get this nice little Gizmo and we can place our Cube anywhere in our scene by just simply left clicking so a few things happened we see the cube in the viewport and now we have a node in our obj window and we also see some settings here in the parameter tab we also have a transform handle over here which we can use to move the cube around and we can also rotate it and do all of the basic stuff and as I move it around we can see our values change in the parameter window over here and I can also adjust these values directly inside this window so I can directly set the values by typing here so let's go to uniform scale and let's type 0.5 and press enter so now our cube is twice as small if I middle Mouse click this value we can see this little menu appear and while holding down middle Mouse click I can go left and right right to decrease or increase the values and now these numbers here represent the increments by which we adjust the values so if I want to be super precise I can hover over one of these smaller increments and while my mouse is over them and I'm holding down the middle Mouse button I can go left and right and we can see that we can make some really subtle changes to our values like so and if I want to make bigger changes I can just go to one of these bigger increments and I can use these values as well okay so hopefully this makes sense we can see that some of these settings have three values and for example the uniform scale only has one value so if I want to change all of the three values at the same time I can hover over the text and I can change it here so we can see that we are using all of the values at the same time and this makes a bit more sense for the scale properties here so for example I can scale in all axes at the same time and if I only want to affect one of these values I can hover over it and change it like so so now I'm only scaling it on the y-axis you can also select a value like so and use the scroll wheel to change the value the default increment here is going to be 0.1 as we can see and if I hold down control we will do increments of 1 and if I hold down shift we can do increments of 0.01 so this is a pretty handy sometimes actually but don't worry about this for now most people use the middle Mouse menu over here to change the values so for now I suggest you do the same most of the time you will be adjusting the values here directly inside the parameter window rather than the viewport like so so try to get used to adjusting values over here in the parameter window and now to navigate the viewport we have to select the view tool over here and we can see that the shortcut for this is going to be escape and now I can hold left click to orbit around the object we can use middle Mouse button to pen and we can use right click to zoom in and zoom out and if I want to go back to our transform handle we have to make sure that our object is selected and this is indicated by this yellow outline that the object has and now we can press enter and we can get our transform handle back and again we can use escape and now we can navigate our scene press enter and now we get our transform handle back now when I press enter it's important that our cursor is inside the viewport so this will be context sensitive if I were to have the cursor inside the obj window and press enter we can see that this does something else entirely and we will talk about what happened here in a second but for now I will just go back to our obj level another thing to note here is that when you are using the transform handle you can hold down space and this will activate the view tool so now we can navigate our scene and when I release space it will bring me back the handle so now I can adjust things I can hold down space move things around and release space and I can continue to adjust by using the handle so this is super handy and it's something that you should get used to let's add another object in our C so I will press Tab and let's type Taurus let's press enter and let's add this over here and again we have our transform tool and I can either press Escape so I can move my camera up press enter to get it back or just hold down space and move my camera like so and then release space now I can also press s on my keyboard and I can select the cube so now we can see this yellow outline which means that the cube is now selected and I can press enter to get my transform handle and I can move this around so I can press again s select my Taurus press enter and then move this around and hold down space and move my camera around so let's maybe go ahead zoom out and let's just place this Taurus somewhere else further away from our Cube and let's say that we are working on our Cube and we forgot where we placed our Taurus I can actually come over here in the obj window and I can select the Taurus and now in the viewport I can hold down spacebar and press G and this will frame our camera on the Taurus now so this is extremely useful and I can do the same for the box I can select this box object over here in the obj window hold down spacebar G and it will Center on our Cube and if I don't have any object selected so I can just left click inside the center place over here and if I center now with spacebar G it will frame all of the objects in our scene so this is also pretty handy so this is pretty much the viewport so we are at the object level or the object Network in Houdini we have different networks for what we are trying to do so if I hold down left click over here we can see all the different networks that are available to us so we have image object material stage test so really we have a bunch of networks here but just like the nodes we don't really have to know all of these right away in fact 95 percent of the time we are only going to be working at the obj level and here is where we actually create all of our effects and later down the road we are also going to look into the matte and the out networks so the mat network is where we create the materials and most 3D packages have some sort of material window or materials tab so this is what this mad network is and the our network is essentially our render settings window again other 3DS will have like a window somewhere where you can adjust the render setting don't worry about this for now like I said most of the time we will be spending at the obj level so in the obj network we we create our objects and I can hold down alt and left click drag to duplicate any object and I can really drag and make a lot of copies of this and I can move these around and we can populate our scene like so now this might be a little weird for you if you have used other 3D apps before you might be used to seeing this which is our tree view so if we go here in this obj group we can see all of our objects over here and we can also access them we can see that when I select an object here it also selects it in our viewport so we can definitely use this to move around and this is what you might be used to so this will be sort of like the classic outliner that lists all of the objects in our scene but really you will be better off if you get used to working with this object Network view which is pretty much the default for Houdini and you will also find that you really have a lot of way to organize your notes so for example if I hold down shift and grab a few of these notes I can hold down a and drag horizontally to align them horizontally or I can grab these and I can hold down a and drag vertically to align them like so and I can grab these and I can also align them as well and I can grab these and I can create a network box and we can really keep things organized like so so maybe this will be our primary effects we can rename them here and I can do another network box over here and this will be our secondary so you can really keep things organized if you want and it just takes a little bit of getting used to so let me get rid of all of these and I will start with a fresh box a simple box at the center of our scene and let's focus on this for a second remember earlier when I had my cursor in the object Network and pressed enter and this is what happens so if I select this box geometry and press enter we see that we get a slightly different icon for our box geometry and we also have slightly different parameters here at the top so now we are inside the Box geometry container so this is actually only our geometry so now for this box geometry I can increase the axis divisions for example and I can set it to a different primitive type and we can do all sorts of new things here so we can also see that we are at the obj level and we have this little arrow here that points to box one so this is our container and if I press U on my keyboard we can go up at the object level so previously if I press double click we can see that now we are at the geometry level over here all right so if I go up we are back at the object level we can also see things maybe more clearly if we go in the tree view here and we can see that we are in the obj level and inside this box one container is going to be our box one geometry now for example if I go to the obj level I can rename this to whatever I want so I can actually rename this to box container so this will make a little bit more sense so if I go back to the tree view our box one geometry is going to be in our box container so let's go back back here so we are at the top level which is our object level and double clicking will access our geometry level and here is where we actually build all of our effects and where we will spend most of our time so for example and don't worry about what I'm doing for now if I press s and I press 2 I can go ahead and I can grab some points around and I can modify the geometry and we can see that we are starting to build a chain here don't worry about this for now we will come back to this in a second uh let's also append a transform and I can also use this to move it around so remember that we are still at the geometry level so now if I go up we can still grab this container at the object level and we can also move this around and we can see that all of these changes are added on top of the geometry that we modified so if I go back at the geometry level and on this transform node I can still move things around and I can go up and I can move things further here at the geometry level now I did all of these things just to say this one thing you you will not usually have to deal with transforms at the object level so over here in 99 of the cases if you want to move the geometry you will go inside and you will use a transform node and move it over here so if I go up all of these Transformations will be set to the zero zero zero and the default settings and on that note if you want to reset any settings you can hover over the text and if you hold down control and middle Mouse click you will reset them to their defaults so that's all I'm trying to say here whatever effect that you want to create you will start at the object level you will press Tab and type jio and you will add this geometry nodes so I will press enter and I can rename this so let's maybe say that I want to create a tornado here I will rename this to maybe effects underscore tornado and then immediately I will go inside and I will start building my chain over here now something else happened and we can see that our original queue became transparent so for example if I were to add a new jumper tree here so I will hit Tab and type Taurus and press enter our Taurus looks like it should but our cube is transparent and this is going to be this option over here where it says ghost other objects so this is the default that Houdini uses and if I were to switch this to show all objects now our cube is being drawn as it normally is now if I also set this to hide other objects we no longer see our Cube it will only show what's inside the geometry container that we are currently in so we are currently inside this FX tornado geometry container so we are only seeing the Taurus and this is extremely important because while this is saying hide other objects it is in fact not loading the object at all in our scene so it's not turning it invisible and working behind the scenes it is in fact not loading anything from the cube geometry this means for example that if I were to go up so I'm pressing U we can see now that when we are at the object level we automate automatically see all of the objects and when I step back inside the box container we now no longer see our Taurus so this is extremely important because if for example inside this box container we have a super heavy effect that has millions of points and we want to work on another effect we can go up and we can create a new geometry container and when I go inside that new geometry container we no longer have to deal with the millions of points that are contained within our initial effect so for example I could have our effects rain over here and inside here we will build all of our rain effects and if I go up we can now focus on our on our tornado effects without loading in any of the millions of particles from the rain effects so this is super useful to just focus on the current effect that you're trying to do without worrying about the other effects slowing down your scene and at any point you can come back here to this icon and show all objects and it will load all of the objects that are in your scene and sometimes these ghost other objects option is useful when mostly placing things around so you don't have to worry about intersecting geometry and you can really focus on what you're doing with just having an idea of where the objects are in your scene so it is sometimes useful but most of the time you will either use shawl objects or hide other objects so let's set this to show all objects and let's go up so again at the object level you will only create this geometry node you will drop it rename it to something more meaningful so effects Fireball and you will step inside by double clicking and then here you will actually build your effects at the geometry level so I'll go ahead and start flashing delete all of these and let's do another geometry node and I will step inside and you can see that by default this is empty so I can go ahead and drop down a box and I will hold down space in G so our camera can focus on this object one other thing to note here is that the tab menu is different at the geometry level and the object level so if I press tab over here while at the geometry level all of these nodes are actually different than what we have at the object level so it actually happened to me a couple of times when I was first starting out and I wouldn't be able to find the node that I'm looking at only to realize that I was actually looking for the node at the object level so when I press tab here we have different nodes entirely so just keep this in mind if you press Tab and look for a node and you don't find it make sure that you are at the correct level so let's go back inside our container so now that we finally got all the boring stuff out the way we can actually start having some fun and let's see how we can modify this geometry like mentioned earlier we have uh different settings that we can play around here but what we are going to do is add new nodes and Link them together so let's go ahead and I'll press Tab and I'll type color and let's bring out our color node let's link it to our box and we will change the color here let's maybe use green okay so I change the color to Green but I don't see it displayed in my viewport and this is because we have to set the display flag for our color currently our display flag is on our box which is indicated by this blue circle around our box so we can hover over our color and we can turn on this eye icon and now we are previewing the result of the color node so this is how we can change the display flag and the hotkey for this is going to be R so if I want to go back to my box I can select the Box press r i can select the color and press R so I can preview the result of the color uh so similarly we can now drop down a transform node so let's drop this down we will link it and we are now going to preview this transfer node by pressing art after selecting it and I can go ahead and modify the translate and the uniform scale and all of our options that we have and this whole operation here which I did which is dropping down a node and linking it and setting the display flag to that node so if I want to do all of this in one go I can let's maybe use a new node so I will type clip and if I want to directly append it to my chain and set the display flag to it I can hold down shift and then press enter and we can see now that it's linked to our transform and also has the display flag to this so we are now starting to build a chain here and at any point I can go to any of these and I can modify values here so I can select the color node and I can set this to red and it will propagate down our chain I can go back to the transform node and I can press enter for this because we have handles it's important to note that not all of the nodes have this handle but for the transform I can use this to move it around or I can use my parameter settings over here and I can even go all the way up to my box and I can change some of the settings here so I can turn on uniform divisions I can use all kinds of settings here you can see also that when I select this box we have the wireframe for where it started and this is sometimes pretty useful to know but if I don't want to see this I just have to go and select my clip node over here and just preview this you can also see that this clip also has a different transform handle so I can use this to see where I'm cutting the geometry which is essentially what the clip node does but if for example I go to the color and let's also set the display flag to the color by selecting the node and pressing R we don't have a handle in the viewport when we press enter but we do have these options here at the top so I can use these as well so I can set this to Blue and now I can go back to my transform and then I can go back to my clip so you can see that I'm selecting the all pressing R and switching through these and this will be a lot of what you're going to be doing on a daily basis so if I hover one of these notes Here we have some other options that we can try so after the display flag the most important one is going to be this bypass node over here so if I click on this we can see that now our transform is grayed out and we no longer are applying this transform on our geometry and the hotkey for this is Q so if I press q i turn it on and I can disable it by pressing Q again so this is extremely useful when you are troubleshooting and for example if I let's enable the transform back and go to my clip so this is the end of my chain let's say that for some reason this clip isn't working we can go ahead and quickly check if some of these other nodes are interfering if I turn them on and off by using Q so super important to know this and other than that we have this freeze option over here this will just mean that when you click this it says lock so this means that the geometry is now m embedded in the project file this honestly is not really important for now so forget about this option just for now I'll disable this hit okay and the other option that might be more useful is going to be this template display and in order to show this let's maybe do a duplicate of this transform so I can hold down alt and drag to create a transform and you can see that this is automatically linked to where it was so with the second transform I can now move this around and if I preview my clip and I also want to see the results of this transform I can go to this and turn on this template display and we can see now the wireframe and the hotkey for this is e so if I select this and press e we no longer have the template flag on so sometimes this is useful when you are working in larger scenes you might want to check where other nodes are positioned in your scene but probably for now you don't really have to worry about this the most important ones are going to be the display Flex or R and then Q to disable now if you want to remove a connection you can disconnect any two nodes if I grab a wire and press delete so you can see now that this is disconnected so let's reconnect and you can also if I grab this transform and I wiggle this we can see that this gets rid of the connection as well but really my preferred method is going to be holding down Y and you can see now that the cursor turns into a scissor so now while holding y I can drag across a wire and cut it like so so this also is very intuitive and makes a lot of sense and it's actually pretty fun so that's how you can disconnect nodes now it's important to note that the display flag can only be set on one of these nodes so if for example I select this other transform node and press R the display Flex switches from this initial transform to the second transform one but if I go up at the object level I can actually have multiple of these nodes and all of them can have the display Flex set to on so let's maybe just rearrange these bit so we can easily separate them and see what's happening so for example I can turn the display flag for this on and off so I can preview any object if I want and I can disable all of these or enable them but when we are inside the geometry level we can only have the display Flex set to one of these let's maybe hide other objects here and this is because when we are at the geometry level we can only have one single output now you might find this a bit annoying until you get used to it but really it's not as limiting as you might think it just takes a minute to really get used to this way of working if you really want to preview multiple nodes at the same time you would have to use a merge node so for example I want to have the clip the result of this clip and the result of this transform and merge them so I can drop down a merge and I can plug this here and also I can plug the transform here and now I can preview this merge node and I have both of them at the same time and when I go up let's set the display flag for this to be on and now I can see them both here let's maybe get rid of these so now I have both of these also at the object level but this isn't really what you usually will do so let's go back here let's get rid of this merge node and what we usually do after we build our chain and we reach the end of our effects we can drop down a null and we can append this null and I can rename this to something meaningful like out rain effects and really you can give this any name you want usually people like to use this out prefix whenever we're doing this so This null doesn't do really anything by itself it simply points to the end of our chain so at any point if I want to go back up here and I want to do some changes maybe to our box I can modify this box and maybe I also want to add some new nodes here so I can drop down another transform and add it here in between our box and the color and do some changes here we will have this now that will always point at the end result so this is super useful when organizing your scene and this is also very useful when you want to import the geometry into a different container and this is also something that you'll be doing quite a lot so for example if I go up and this is my effects rain if I want to do a separate container for let's say effects splashes and I step inside I can build my effects here so I can drop down a sphere for example and we can build our chain again let's maybe use a color here and a transform now this isn't really what you're going to be doing most of the time but let's just say that you're building up the chain for the splashes effects and we need our splashes to communicate somehow with our rain so if I show all objects here we need to somehow import this geometry into this separate container so for this we can use an object merge so if I drop down an object merge I can go ahead and I can go here where it says object one let's click click on this icon over here so if I go to the effects rain and collapse this geometry container we can easily point to our null which is going to be this outrain effects and this will be the end of our chain so we can grab it over here so I can hide other objects and now essentially our rain effects geometry is living inside of this container so this is the base of how you will get multiple effects to interact with each other so I'll go up and I'll get rid of splashes and let's go back in our effects rain so these nodes here that we added that transform the clip the color these are a specific type of node specifically when we are at the geometry level we are dealing with surface operators or subs for short and for example if we were in the out Network so if I go to my out Network here and drop a node so if I press Tab and select any of these nodes and I added here we are going to be dealing with render operator type nodes or robs for short and dynamic operators will be dots and so on so all of these terms simply refer to the type of operation that you're trying to do they're all essentially still just nodes so sub swaps dobs we are dealing with quite a few operator types here again just like the nodes and the networks we don't really care for most of these as VFX artists the ones we care about are going to be subs or Surface operators vops or vector operators or dots Dynamic operators and then maybe later better when we are rendering stuff we are going to be dealing with render operators or rops but for the most part we are going to be focusing on these three right here so think of these as sort of like mini networks all of these the stops vobs and dobs are basically contained within the object Network so they're like smaller sub networks so this is pretty important because again depending on what we are doing we are going to have access to different types of nodes so when we are in the object Network and inside the geometry level over here when I press tab we are going to have different kinds of nodes and when we want to create simulations we are going to be dealing with Dynamic operators so just for now I'll just create a DOT Network so a dynamic operator Network and when I step inside don't worry about this for now we will come back to this in a second but when I step inside we see that this changes the name here changes to Dynamics so now when I press tab we're going to have different kinds of nodes entirely now there is quite a bit of overlap so for example some nodes that are available at the surface level so at the geometry level are going to be available to us in the dynamic Network as well so in dobs so most of the time we're going to be doing similar things that we do in Subs we are going to be doing in dobs we're going to be using kind of the same nodes but they're going to be applied in a different way depending on the level that we're at this will make a little bit more sense in a second so don't worry about this for now all we have to understand for now is that all of these are basically sub levels of our higher levels so our big networks obj mat and so on these are smaller levels that exist within those bigger levels and again we don't really have to know everything we are going to be focusing here at the big level we are going to have obj so obj will have subs vobs and Ops which are the three main levels that we are interested in so this is pretty much what all of these sub robbed up thing means it's simply refers to the type of operation that we're doing so finally I can stop calling this the geometry level and call it what it is which is subs and this is what most people will say as well they'll say that we're in Subs not at the geometry level even though they're pretty much the same thing now that we got all that we can finally start talking about attributes and we are actually going to start using Houdini attributes are the most important part of Houdini your ability to create and modify attributes is the single most important thing that will determine your success as a VFX artist an attribute in the simplest terms is just a piece of information that you can attach to Geometry this attribute once you created will transfer down over to all of the other nodes so for example over here in our chain after our box let's go ahead and I will drop down an attribute create and let's create an attribute now don't worry about all of these settings for now we will get to all of these in a second let's just give this a name and I will say name will be driver and let's just give this a value of 1 over here again we'll cover all of these settings in a second and another quality of life tip here if you want to move a node and all of the other nodes that are above that certain node you can hold down shift and we can see that we drag the Box along with it as opposed to if I wasn't holding shift and just drag this node it will just single out this node so hold down shift and it will also move what's above it and if you hold down control you can move what's below a certain node so this is a great tip to keep things organized so I will just make some room over here so this is where we create our driver attribute with a value of one and to check that this is working we can go in our geometry spreadsheet and we can see here we have a list of all of our points and we have this driver over here with a value of one assigned to all of the points we also see that we have this p x p y and p z so this is the position and this is a built-in Houdini attribute but you don't have to worry about this for now we will talk about it more later so we can see that this driver is automatically assigned to all of the points and in fact you can't have an attribute exist only on certain points it either it's either on all of the points or none of the points if you wanted this driver attribute to only exist on certain points you will have to separate the geometry and in order to do that but don't worry about this for now so I want to say a few things about this geometry spreadsheet when I was first starting out with Houdini and I saw this window my first reaction was what the I have to learn Excel to do explosions so right now if you also have the same reaction don't worry about this window this window is only here to check that your attribute that you created is working so that's all this is you won't ever have to know that the point number 60 has a P value of 0.695 and a driver attribute of one uh it's it doesn't work like that I'm only in this window to see that this driver attribute was created and it has a value of one because if I look in my viewport we don't really have any visual indication that this attribute was created so this is why we have to go in the geometry spreadsheet so you will be using this quite a lot but you don't have to worry about this too much this is only here to troubleshoot and see that your attribute is working and it has the correct value that you assigned it so anyway let's go back and we created this driver attribute and we can see now that it will go to all of these other nodes below it so if I go in the geometry spreadsheet now when we added this color node we also added another attribute so color is another attribute but we see here that this driver is being passed down to all of these other nodes so when I go uh and I reach the end here with this null outrain effects we have our driver with a value of one on all of the points so what we do in Houdini is we use our attributes to drive other attributes so for example the color is an attribute and we can use this driver to affect our color now a value of one isn't really interesting so let's see how we can also modify this attribute after we create our driver over here and let's go back to our scene view let's drop down an attribute adjust float and while we are on this subject with the tab menu open you can see here here that what I typed was add add and F so this is another quick tip if you type the first letter or the first two letters you can find the node that you're looking for more easily so for example if I wanted to drop an attribute vob I would type a TV and it will pop up on the attribute vob but I only typed ATV so this is just something that you will get used to so let's go ahead and I wanted to drop one attribute adjust float all right so let's plug this here after our driver now don't worry about what float means we will get to this in a second but we can use this node to modify our driver attribute now currently this is said to modify our P scale so let's switch the name here to our driver so I will type driver and I will leave the settings as they are because we will get to these in a second I want to change this adjustment value tab here so I want to randomize this driver a little bit so we will set the pattern type here to a random value and the operation let's set this to multiply and this is mean and max value will change how much Randomness we add to our driver or rather multiply our driver with so now if I go back to the geometry spreadsheet we can see that this driver value is now different for each point so it will go from a value of let's see 0.000 almost zero to a value of almost one so in between we will have all of these random values and again this is all the geometry spreadsheet does it's here to check that your attributes are working and that you are getting the expected result so to use this driver now in our color let's go back to our scene View and let's go to color so remember that we created and adjusted the driver before our color so now in our color node we can set this color type to ramp from attribute and inside the attribute name let's type driver okay so now we can see that based on this ramp that the color provides we are going to have some random values in the range from 0 to 1 and we can also go to our geometry spreadsheet and we can see that the color is the same value on all of the three components that it has and it also matches our driver value so back in our scene view now I can adjust the ramp and I can maybe set this black color to red and I can set the white color to Blue and all of these things that we just did here is how Houdini works so all we are doing in Houdini basically is we are simply adjusting attributes and modifying them and any given geometry can contain a million attributes so when we add up a lot of different operations that's how you end up with really complex effects but at its core it's really all just attribute so hopefully this gave you an idea of how the stuff works so let's go to our attribute create and let's examine this a bit so we gave this a name here driver but this really could have been anything I could have named this my Vel and everything would have worked only now we would have to update all of the other places where we use this attribute so this attribute are just float I would have to go here and type my well and also inside the color we would have to type here my Vel all right so now everything would update and we would have the expected result so let's go back here and this is case sensitive so if I have a capital V here you would have to write it in the same way on all of the other places as well next we have class and we can see that the default here is going to be point so let's see what this means in Houdini we can attach an attribute to a geometry either on points Primitives vertices or detail so all of these are quite unique with different use cases but for us as beginners the most important one is going to be points and if you understand how attributes work at the point level that knowledge is going to transfer over to the other ones as well and uh probably maybe 90 of the time we are going to be dealing with Point attributes so think of it like this a geometry can be just points so for example a particle simulation is essentially just points now if you want to do a collapsing building we are going to need The Primitives and vertex as well so these two are kind of linked to each other but we are going to be dealing with these two on top of dealing with points as well so in Houdini point is King and this detail thing is something that is also on any given geometry and I'm not gonna lie when I first started out it kind of twisted my brain a little bit trying to understand this and I think it only makes sense once you see it in action but for example let's say that we have a particle simulation and each particle is going at a different speed now if I want to find out what is the fastest speed in that simulation we would have to store that information on the detail level because there can only be one one value which is the fastest speed basically so don't worry if this doesn't make any sense for now first we have to understand how the attributes work at the point level and then we can expand on this information next we have type and we can check this list and see that we can have many different types now in reality there are more types than this and here is a list of all of the types so if you're a nerd and have a background in programming all of this will be a no-brainer for you but you don't have to be a programmer to understand all of this and just like the other stuff not all types are created equal in fact the most important ones are going to be float and Vector now we're also going to introduce integer pretty soon because it comes up a lot and much later when we are all grown up we can talk about metrics as well but for now like I said we can focus on the float and the vector and just knowing these two can really take us pretty far so in Houdini I can go ahead and I will drop down and add a node and I just want to use this to create a simple point at origin so I will click this this plus icon over here and we create a point and if I move this point around in space here we are actually modifying the position attribute which is a vector type so if I go in the geometry spreadsheet we can see that this position Vector is made up of three components which are the X Y and Z dimensions and when I change it here it will also update in our spreadsheet and this is how we move points around basically so a vector will usually have three components but it can also have two components so when you are dealing with UVS for example you will have two Dimensions only X and Y so it's going to be a vector 2 made out of two components and when we are dealing much much later with quaternions that's going to be a vector 4 so a vector with four dimensions but we don't have to worry about this ninety percent of the time a vector is going to be made out of three components and that will be enough for us to do a lot of stuff with now if I append a transform node to this and I change the uniform scale we can see that we only have one component here so this is what's going to be referred to as a float value so this value here is going to multiply all of our values in each of these components at the same time as we can see here we are basically grabbing each of these values and multiplying it by this value that we are setting here so most of the time we are dealing with float values which can really be any numbers it can be something like 5.34 and this differs from an integer type which can only be a whole number so it can either be five or six it can't be 5.45 so the integer is usually used when an attribute can only be a few different values so for example if I have a particle simulation and the particles are affected by a force-like wind if I want to disable the wind in the middle of the simulation I could create an integer attribute wind and set it to 1 and then when I want to disable the wind I can set it to zero so it could be either on or off one or zero it can be something like 0 0.5 so it's just half on so I'll go ahead and delete this and let's do a little bit more practice with attributes so let's add another type of geometry that Houdini provides and I will add a platonic solids let's press r on this and I will set this solid type to this dodica hedron option thing or however you pronounce it and we will just increase the radius let's maybe try a value of 3 over here and I want to add more geometry to this so we have more points to play around with so I will do a subdivide and I'll set this algorithm option here to the last one which is this open sub div one and I will just increase the depth maybe to a value of three so now we have a lot of geometry that we can modify so remember that the position is also just an attribute that we can modify so over here I will drop down an attribute adjust Vector because the position is a vector type so let's go ahead and add this and by default this is going to look for the V which is the velocity we'll get to this in a second let's change this to P which is our position so it's important that you type this with a capital P otherwise would anyone recognize this and because we are going to adjust the vector when we go here to the adjustment values we have this first one here that says adjustment four and we have some options here the default is Direction and length or we can just affect the direction only or the length only so this is specific for vectors and let me just quickly illustrate this let's just focus on two Dimensions now X and Y to make this simpler but it's essentially the same thing for a 3D Vector so we have a point in space that has a value of 5 on the x-axis and a value of 2 on the y-axis so here is our point now these two values can't really exist without an origin so our origin in this case is going to be 0 0 and in Houdini when we are dealing with position and I go over here to the geometry spreadsheet to check our position all of these values are based from the center of our scene so I can press W to go into wireframe mode and over here where it says 0 and 0 this is where actually all of our position values are originating from so I'll press W again and let's go back to our graph so now we can draw an arrow from the origin to our point to represent this vector and this Arrow will have a Direction so where it points and also a length so how far along this Arrow will point to so this will be our length so for example we can now have another point that points in the same direction with a value of 2.5 on the X and a value of 1 on the Y so this will be the same direction as our original Vector but this Vector will have a smaller length so really you can think of this length as sort of like the overall scale of the vector so it's pretty important that we know this early on because we're going to be doing Vector operations in a minute and we have to know this difference and just another example if we have a particle simulation and for example we follow the position of a point through the entire simulation so let's say that our point will start over here at frame 1 and at Frame 2 it's going to be over here and and frame 3 is going to be over here and let's say that over here we reach frame 10 let's say that I want to keep this direction in which it's already going but I just want it to go faster so let's say we will want the point to go twice as fast we would be able to multiply this vector by a value of 2 so we can scale up this vector and then on the next frame so on frame 11 our point would be over here instead of where it would have initially gone so over here so all of this will make more sense and start to click as we do more stuff so let's go back now to our attribute adjust vector so let's keep this at Direction and length operation will be add and instead of adjust with constant let's go ahead and select here noise now I just want to say right away the noise is your best friend in Houdini you will be using noise on a daily basis to modify attributes so we modify the position of our points but this isn't looking too great if we scroll down we have our noise settings here so there are a lot of noise types and we can check all of these are and what they do so they are going to be quite different from one another let's maybe just increase the element side so we can see this better and maybe also I can add more resolution so in my subdivide I'll set this depth to maybe five right so let's go back and also if I don't want to preview the wireframe on top of my object I can press shift W in the viewport and now we don't see the wireframe so let's go back here and we can see that as I change the noise type we get really different results so as you learn Houdini you are going to learn more about these noise types so don't worry about this too much for now I will reset this value by holding down control and middle Mouse clicking so the default here will be simplex and we can adjust the element size and offset and also we can go down here to animation and we can also animate this noise and now if I hit play finally we have some animation on our screen so on this note about the play bar we can see here that we are working with 240 frames which is essentially 10 seconds but we are blasting through this entire timeline in maybe like three or four seconds so this is because we have to turn on this real-time toggle so this little watch icon over here if I turn this on and I go to the first frame and I hit play now we can see that we are actually previewing this in real time so at 24 FPS which is the Houdini default I don't really know why this option isn't turned on by default usually when I start up a new project file I will just turn this toggle on and I will just keep it on for the entire project so don't worry about this for now just turn this on and leave it like that so let's see how we can actually combine this attribute adjust Vector with another attribute and by itself this attribute adjust factor is pretty limiting so the better version here would be to use an attribute noise so I'll go ahead and delete this and I will drop down an attribute noise and let's use attribute noise Vector so the vector version let's add this here and we have pretty much the same settings here let's set the vector back to our p and this will work just like the attribute adjust Vector I can change the element size and the type and we can also let's go to the animation and we will turn on enemy noise so it's pretty much the same thing the only difference with this node is if I go up we have this blend option over here so if I turn this on we can see that we can blend between where our points were originally and where they end up after we apply the noise so we can either set this value directly ourselves here or we can go to where it says constant and we can set this to use attribute so if I click this now this blend value will be driven by an attribute that's called mask and really again this can be any name I could name this to driver and we would just have to make sure that attribute that we create is named driver but Houdini by default will give us this name and mask which sounds good to me so all we have to do now is before this attribute noise Vector we have to create an attribute mask that will drive our noise so we can see that this mess has to be a float value so one single component so we can use an attribute adjust float to create this attribute so if I drop this here let's go to this node and that review name will be mask and by default this attribute adjust float will create this attribute if we don't have it already so over here we did an attribute create and then we did our attribute adjust float but in reality we didn't really need this attribute create over here so if I delete this our attribute adjust float will create this value so if I go to the end here we have pretty much what we had earlier alright so let's go back to our attribute that just float here and work on our mask and let's press shift W and also view our wireframe so if I scroll down here let's set the type here to maybe line and I can visualize what this will do for us in the viewport if I go over here we can see that after the name we have this icon over here so if we toggle this on we will have a visual indication in the viewport of what's happening so when I set this type to line This gave us access to a handle in the viewport so if I press enter we see that this is the line that drives this attribute so basically this point over here will be zero and then this point over here will be a value of one and it's going to give us a smooth gradient over to one so it's going to be zero and then in the middle 0.5 and where it's red it's going to be a value of one so this is essentially our mask attribute and if I no longer want to visualize this we can click this icon again and we can also go in our geometry spreadsheet and we can see that we have a mask value that starts from zero and goes all the way over to one so if I check this we can say it start to increment so if I go back in my scene view this will mean that wherever we have a value of 1 our noise will be fully applied and at zero none of the noise will be applied and as a result we end up with this so if I press shift W and check my animation we have the noise only have full effect where our mask has a value of one so this is how we can start combining attributes and hopefully now you have a better idea of how it all comes together now let's do just one more example we will start with the same platonic solids we will go all the way up here where we didn't make any modifications and I will do a poly extrude and let's see this so This poly extrude is running over The Primitives and if I increase the distance here we can see that we push out our polygons and if I want to operate this over individual polygons I can go up here and where it says to divide into connected components we can set this to individual elements so now we are extruding each polygon separately now if I go to the local controls over here we can map this distance value to an attribute so we can turn on distance scale and this Z scale is going to be the attribute that drives this distance so again I can create an attribute adjust float and I can set this to Z scale and for this I will set the type to random and we can see that nothing really changed all of our extrusions now should have had a random value between 0 and 1 and this is because like I mentioned earlier our poly extrude operates Over The Primitives so it's looking for a primitive attribute so we can go in our attribute adjust and we can set the class here to be primitive and now we can see finally that something happened and we can go ahead and modify these values and now we have a different distance for each Extrusion so this was just an example to illustrate that this is where the attribute class comes into play it's pretty important which class you assign the attribute to but as I said earlier as beginners let's just focus on points and we can see that pretty much it's the same operations here so the way we modify the values is going to be the same whether it's points or Primitives or vertices but this was just a quick example to demonstrate to you that it does matter what class you assign the attribute to so we can modify attributes and we can create different attributes and modify those and combine them and if I hit Tab and type attribute we can really see all of the different operations that we can do with attributes so we can see there's a really a huge list here so all we have to do is learn what each of these do and then we know Houdini right not really all we really need to know is one single attribute here which is going to be the attribute vop so let's go ahead and let's add this to our scene and here it is and this is the single most important note that you have to learn in Houdini remember when I said earlier that your success in Houdini will be depending on your ability to manipulate and create attributes this is what I was talking about this attribute verb over here so all of these nodes the attribute adjust flow the attribute noise Vector all of these attribute nodes can be recreated inside this attribute vob so this is why this node trumps all of the other nodes now don't get me wrong you will still use some of these attribute nodes simply because some of these might take a minute to set up in vops and since Houdini already set them up there's no reason not to use them so we can still use all of this we don't have to create everything in vops but it is important to note that if you want you can recreate everything in vops so earlier when I said that we are working with surface operators we are now going to take it one step further and introduce vops so vops is referring to Vector operators but really we're not only operating on vectors we can modify and create any type of attribute so we can create float attributes integer attributes or any other kind now this is a huge topic and I have a separate course dedicated to specifically learning and understanding all the different nodes and operations that you can do in vops but for now we're only going to look at the basic stuff and see how everything works so we are going to connect this attribute verb to our subdivide over here and let's press R to visualize this and we will dive inside so we have these two blocks here and you can pretty much think of these as inputs and outputs so on the left we have our inputs and on the right we have our outputs and if we look closer here we see a bunch of letters and some of these letters that are on the inputs you will also find on the outputs and all of these are Houdini's built-in attributes so these are attributes that Houdini will understand by default so for example this V over here this will be our velocity and if we create and modify the Velocity in any way when we use this geometry with this velocity information and for example we want to create a particle simulation then Houdini will understand to use this velocity attribute and how to apply it to our particles so we have this built-in attributes and some of these are actually Global attributes so for example the frame here is a global attribute these are also sometimes referred to as Global variables so this Frame over here will return the frame value and we are currently on frame 76 so this will give us a value of 76 and it is global because no matter what geometry we are operating on we are still going to be at frame 76 so if we change the geometry and do operations on a different geometry this will stay the same and this is why it's a global attribute so time time Inc and frame are Global attributes but we don't have to worry about all of this for now everything will start to make sense as we start actually doing stuff but for now one important thing to notice is that some of these attributes have a different color assigned to them so green is going to be Vector till is going to be float and blue is going to be integer so like I said earlier the most important types are going to be vector and float and sometimes integer if I look down here we can see that we have a lot of these blue values so integer types but really the most important ones and the ones that you're going to be working with more is going to be the ID and the PT Nam over here I rarely find myself using the other ones and then we have these orange values over here so op input one two and three and if I go up we see these four dots over here on our attribute of op and these correspond to each of these op input parameters here so basically op input 1 is going to be ourselves so the geometry that we are currently doing operations on and if I were to plug this poly extrude node over here in the second dot I would be able to access this geometry from this op input 2. so if I want to interact with this polyester geometry in some ways I would do this from this open input tool and the same will be if I also want to talk with this geometry over here I can place it in my third input for our attribute Bob and I will be able to access it through here and we will get more into this later but essentially these orange values here this is what they represent so I can go up and like I mentioned earlier we can hold down Y and we can cut these wires so we remove the second and third connection and let's go to our attribute noise vector and I will disable this blend option for now and let's try to recreate this in vobs so if we examine this for a second we can see that we are running this over the P attribute so our position and we are adding the noise values on top so we can add subtract multiply whatever but we are adding so this is important to note here so in our attribute verb let's switch to this let's go inside so first we have to generate these noise values so I will search for noise here and we can see that we have a bunch of types here but the most basic one and the most common one that you are going to use usually is going to be this turbulent noise so let's go ahead let's select this and drop it in our scene and here it is now this by itself we can see that we have a bunch of inputs over here and we have an output which is this noise value now we can just plug the result of this noise so the output of this noise into our p and expect this to do anything in fact we can see that our geometry disappeared so I'll go ahead and let's remove this connection and let's take a look here first of all this all output is going to be a teal color so this is a float value and we want to modify the position which is a vector value so we have to switch this signature here where it says 1D noise we have to set this to 3D noise now we can see that this noise turned to Green which indicates that it's now a vector so now if we remember from our attribute noise node we added the noise values on top of our existing position so we have to plug our existing position in our output so now basically we are just taking the position as it is and outputting it without doing any modifications and now in between we can add our noise so let's go ahead and drop an add over here so I'll search for ADD and press enter and we will hook this here and then we can add our noise on top of our position so if I plug this over here our geometry moved a little bit but this isn't really the expected result and this is because the way the noise works it needs our position from where to generate these noise values so we have to plug our position so the p in our pause over here so in the position input for this noise and now we can see that we are getting a similar result to what we had in our attribute noise node so if I go to this turbulent noise now we can play around with the settings and we can also change the type so maybe I can use sparse convolution noise and now this is even more closer to what we had we can change the amplitude and we can increase the frequency and we can pretty much do the same things that we did with our other attribute noise node now this by itself isn't really impressive but what I can do now is I can build on top of this so we don't actually have to use these sliders to modify values in our noise I can actually drop a constant so I will type here constant and drop this and this constant is just a simple flow number it sounds fancy but literally it's just a number so I can use this constant now and plug this in our amp so our amplitude and now I can use this constant to modify our amplitude like this and this can be any number here doesn't really go from zero to one I can increase this if I want or I can even go in the negative values so still not really impressive but again I can build on top of this so just for example using only the knowledge that we have I can add I can drop down and add to this constant here and I can add our original position and we can see that we start to get some freaky results so maybe instead of adding let's see what happens if we do a multiply and we actually multiply our position with this constant and now if I change the constant we get a different result but again this isn't really useful but it's just to give you an idea that we can really build a large Network here of operations and we have control at each step also I can modify the noise value output over here so what we are outputting from this turbulent noise so I can do an ad here and I can also maybe use the position to add on top of the values that we output again this is just to give you an idea let's go ahead and maybe delete all of these and just keep our noise so what we had originally and by the way if you want to reverse the order of the nodes here if I select this add node and press shift R we can see that we switch the input order so this is really handy so it's important to note that for add or multiply the input order doesn't matter but it does matter for example if we want to subtract or if we want to divide or if we want to multiply a vector by a float value but all of this doesn't really matter right now but it's important to mention this because we are going to be dealing with this so input order does matter so be careful how you switch the order here so let's take it one step further here and let's say that I want to scale this amplitude of our noise based on the height of our points so the position of the points on the Y Dimensions I forgot to mention this but if you are in your viewport and you hold down space bar and press 2 3 or 4 we can switch through all of the different orthographic views so we can see that we are in the Right View here and we can go to front with spacebar 3 spacebar 2 will be top and space bar one will return us to perspective view so if I hit spacebar 3 and go in the front view we can see that this is going to be the Y and X Planes and we can see that the geometry on the y-axis can roughly fit between a value of negative 3 over here or at the bottom and at the top is going to be a positive three I will press W so we can preview the wireframe so we can see that it's three at the top and negative three at the bottom okay so press W again so we can actually use these values to scale our noise so we are going to grab our position and we need to split the position which is a three float Vector we need to have access to each individual Dimension so for this I will use a node called Vector to float and notice that I'm typing the abbreviation which is vtf so Vector 2 float let's press enter and add this and now we have three values that we can output here and this is essentially our X Y and Z components so from here we need the second one which is our y component and if I just plug this into our amplitude we get a different result but this isn't exactly what we want and this is because we are outputting exactly the values as they are here so we are going to have an amplitude value at the bottom of negative 3 and it's going to ramp up increasingly to a value of around positive 3 at the top and we have to remap these values to something that are a little bit more useful to us and to remap values we can use a fit range node so let's make some room over here and after we output our y value we can do a fit range and here we can say that our source main is going to be negative 3 so this will be the lowest value and our source Max is going to be 3. so this will be our highest value and now we are remapping these values to 0 and 1. so these are the default that Houdini gives us so this means now essentially that we are going to have an amplitude value of 0 over here and it's going to ramp up all the way to a value of 1 over here so where our y position is 3 and we don't really have to use 0 and 1 we can use any values here so we can see that we start to get some really cool results let's maybe just keep this to 0 and 1. so if I go back to this attribute noise Vector if I turn on this blend and let's go back to our perspective so hold down space bar and one if I enable this blend with our mask we see that we did these two steps so first we created a mask attribute and then we use this to blend our or mask we did this in one simple step in this attribute warp so if I go back inside instead of adjusting the values inside this network so if instead of adjusting the sliders here I can expose these values to the upper level so if I want to expose the destination Max here I can go to the destination Max input in our node and I will middle Mouse click and I can say promote parameter so now if I press U and go up if I scroll down here for my attribute vob we have this maximum value in destination and I can use this slider to adjust it at the stop level so now when I step back inside we can expose only the parameters that we need because most of these values we don't really need to adjust for example let's say that I don't want to touch the source mean and Source Max or I'm not really interested in changing the frequency or the offset of the noise we can for example here let's say that I only want to change the frequency I'm not interested in the offset so I will go ahead and I will middle Mouse click on frequency to use promote parameter and now I can go up and I will be able to access the frequency from over here so I can change this at the stop level now and I can play around with the maximum maximum destination range as well so we can choose what parameters we want to expose and this is pretty much the same thing that these other attributes work for example if I step inside we can see all of the nodes that actually create this attribute noise Vector node and we actually have a few attribute vobs over here and we have a bunch of other stuff and when I go up we can see exactly the parameters that Houdini exposed for us and this is the same thing that we are doing over here we are exposing only the parameters that we need but now we can keep building on this and really do whatever we want so we are not really limited to just modifying the noise or scaling it based on our position we can really do a lot of operations here so we are in the framework where we can build and expand on our ideas so this is the power of vops and the power of Houdini in general role we are using the low level nodes so the primary building blocks to create and modify attributes in any way we want so this whole thing that we did here this exact same process is what I use to build really complex effects only obviously a little bit more advanced than this but not really a lot more advanced than this don't imagine that I use hundreds of nodes over here and I build something like this the huge Network like this most of the time it's really just gonna be a few nodes and the reason being that I can pretty much stack a lot of attribute verbs so if I go up I can hold alt to duplicate the node and I can attach it to my other node and we can see that the same operations that we did here got added on top of the geometry that already existed so so in reality there are really a bunch of nodes like this and each of these attribute vops would do a different thing so maybe I want to modify the position here I want to modify the velocity with this one and I want to do an another thing here and in between these attribute valves there are going to be more regular nodes so maybe there's going to be a fuse here and it doesn't matter what this does the idea that I want to illustrate here is that you don't really have to do everything in just one single attribute verb you will usually stack a bunch of these uh when creating more complex effects so aside from all of these simple math nodes like add multiply divide there are really a lot of other operations so for example for vectors you have cross product you have dot product so you will encounter a lot of these and you will start to understand them and get to know them once you actually start using them so this is why I created the vop series where I go over the most used nodes and do quick examples on how to use them so definitely watch that right after this now this might be pretty obvious but at least as I was starting out this wasn't very obvious to me but this whole thing that we are doing here is essentially a for each Loop which means that this action here all of the operations that we do are really happening per Point only it's running on all of the points at the same time and this is how you actually have to conceptualize this so let's say for example that we only want to do certain operations only on the upper half of this geometry so if I press spacebar 3 and go in my front view let's say that I want something to happen to all of the points only if their y position is greater than zero so I can go ahead and where we split our position Vector we can grab this y value and we can compare this to a number so let's drop down a compare node and we want to say that if the position of the point is greater than let's say a value of zero so the condition here will be greater than so if it's greater than and 0 Let's see what this will give us if we plug this bull result over here in our CD so now we can see that all of the points that are below zero turn black and let's go back to our perspective view so what happens here is that this compare node can only return a value of 0 if the condition is false and a value of 1 if the condition is true so on that note this is why this bull result here is an integer value because it can either be 0 or 1 it can be 0.5 so like we mentioned earlier it can be half true it's either false or true so 0 and 1. so what this attribute vob is doing essentially is it's running over all of the points and if I turn on my point display here to help us visualize this better it's going to go on this point over here and it's going to check if the Y position of this point is greater than zero and then it's going to set it to 1 and it's going to go to the next one and it's gonna check if this y value is bigger than 0 and it's going to set this one and it's going to do the same thing for all of these and when it reaches over here on these points it's gonna look on this point and it's going to do the same thing it's going to check the Y value and this one will be below zero so it will set this color to zero so it's important to think of this attribute verb like this as operations per point and it's important to think of it like this because each point will have a unique numbers so I can turn on the point number display and we can see that there's a number attached to each of these points so this is going to be sort of like the unique identifier of our point so these values that we see here for each point is going to be this PT num here so the point number this is going to be how we can access this value so this pity num is an integer value that is a unique value for each of the points so two points can't exist having the same point number and this pity num is generated automatically no matter while geometry you add if you have particles or if you have ridges as long as there's points in the geometry this PT num will exist now this is extremely useful for us because this is how we will be able to identify certain points in our own geometry or from other geometries essentially a lot of the operations that we are going to do is going to rely on the Speedy num value so again this is why it's important to think of these operations as per Point operations now you don't have to actively think about it like this you just have to have this in the back of your head somewhere when you are doing stuff over here now a common thing that you can do with this pity num is since this is a unique value for each point we can use it as a seed to generate a random number between 0 and 1 that's going to be different for each point so from this pity num if I drop down a random now this will output a random value between 0 and 1 for each individual point so for example let's go back and let's turn off these Point displays and if I were to add this randomly generated value to our amplitude over here so after we do our feed let's drop down and add and let's add this to our amplitude and this is what we get so this will be completely random for each point as opposed to the noise value so if I disable this no for a second the noise values are also kind of random but they're not completely random per point you can see that we have a sort of Rhythm for it so there's a special algorithm that the noise uses to generate these values they're not completely random like this value that we generate here based on our Point number so this also comes up quite a lot and this is why I wanted to mention this so let me just get rid of these so these are more or less the basics of vops now the nerd version of the attribute vop is going to be the attribute Wrangle so if I go up I will drop down an attribute Wrangle so these look the same they have the attribute Wrangle also has these four inputs and this is because they are essentially the same thing only in the Wrangle we write code over here to do anything and everything so let's hook my geometry to our attribute Wrangle let's switch to this and let's say I want to move this geometry by two units on the Y Dimension I can say at P dot y plus equals 2 and we can see now that our geometry moved upwards by two units so this is how this works so this is Vex and this is the programming language that Houdini uses and you will hear this term get thrown quite a lot in the Houdini sphere so when you hear someone say Vex they're really just talking about code like this if I were to do this operation in vops let's maybe just do another vob node so drop on attribute verb over here I would have to add to our position so let's plug the p in our p and I will drop an add here and I can create a constant and by the way you can also middle Mouse click this input and you can choose to promote this as a parameter but you can also just turn this into a constant so this is essentially like dropping a constant and hooking it to our input so we will add a constant and let's switch the type here so this constant can be any type it doesn't have to be just a simple float so I will switch this to A3 floats and we can see that in parenthesis we have vector and we also have Vector I'm not really sure what the differences is I usually just use this version so three floats and I can set the second value here so our y component I can add 2 and we are pretty much have the same thing so what we did over here is what we are doing over here with this simple line of code now we can see that in vops this actually took a couple of steps and it was probably easier to just write a simple line to do all of this so there are definitely some cons and Pros for each side but the biggest cons of Vex is that you have to know programming so you have to be familiar with how code is written and where to add parentheses and not forgetting semicolons and all types of nerd sheet and before I started to learn Houdini I did have a bit of programming experience so I was able to pick up Vex pretty easily but everything you can do in Vex you can do in vops so you don't need to learn programming first in order to use Houdini now obviously if you have experience in programming you will be more comfortable using Vex so that's totally fine but the main idea here is that if you get good at either of these the skills will transfer because when we are in vops we are still essentially just programming only this is visual programming but we still have to know what a vector is what a float is how to split a vector how to use basic math operations what the cross product is and so on so if you get to understand and learn vops you will be able to make the switch to Vex more easily and it goes the other way around if you already have experience in programming or if you are using Vex already all of the things that you know in Vex will transfer over easily to vops we are essentially doing the same things now the harsh reality is that a lot of tutorials especially older ones are going to be using Vex this is the way it's been done for ages there's nothing we can do about it but I really prefer doing things in vops in fact in my day-to-day work I probably use valves around 90 percent of the time probably even more and let me just give you a quick example why there is a function called the find attribute value and we are not really concerned what exactly this does for now I just want to illustrate something so if I want to use this function in Vex I can type find attribute Val and we can see that this pops up a menu so we can select it from here and when I want to give this the argument so this is how programming works if I open parenthesis we have to put these arguments in the parentheses so if I open the parenthesis we can see that this gives us this enormous giant text window over here that tells us what arguments are and what they do and how to use them and what order and all the stuff that we need so we need a geometry this will be zero which is ourselves then we are going to need I don't know something like our Point number and then we need to specify what kind of type we want so we want float now this isn't really how the find attribute value function works but this is to say that if I get lost or I somehow don't place these arguments in order I have to select my function here and press F1 and go to the documentation and and check that I follow the structure that it gives us correctly so you will constantly have to search up the functions like even if you use them a million times you can still easily mess things up or whenever you haven't used the function for a while it's very easy to forget especially the order in which these arguments have to be placed so that matters a lot and when I first started using Houdini professionally I was actually using a lot of Vex and simply because all of the tutorials were using Vex so I used Vex myself and increasingly I found myself using the attribute vobs more and more so then one day I tried to use this find attribute well in the vops version so when you go inside the attribute vops and you search for find attribute value we can see that we have this nice little window and all of the information that you need to feed into this in order for this to work is all exposed for us right over here so we can point this at the right geometry for example and we can specify if this is a primitive Point attribute or whatever and we can specify what's the name of the attribute that we are looking for so let's say that we are looking for attribute class and then we can insert the search value over here and we can also specify if this is a string or integer attribute and then we can just use the result from here in the rest of our operation so this for me is honestly a lot more comfortable and it simply makes my life easier every time I had to use this function in Vex I would have to look up the documentation and see what I was doing wrong and where I was messing up the arguments and I was getting annoyed and I was wasting a lot of time just doing that every time now that could be me just being an idiot so it's going to be up to you to decide which path you want to follow but especially as a beginner with no programming experience and I know a lot of you come from Cinema 4D or blender and there's no way you wrote a line of code in your life I know you vops will be the way to go Houdini is pretty damn difficult to understand as it is and on top of this now you also have to learn how to write code that's a little bit too much now I gotta give credit where credit is due for example some things are kind of easier in Vex so for example if I want to do do a simple if statement if I want to do it in vops and I drop a nif block it's going to give me this thing which is a little weird and we have to plug a lot of stuff in here to make this work whereas in Vex this is a very simple one line if and in parenthesis we type position Y is greater than zero then at p y plus equals five so just an example if your y value is greater than zero let's add five units to that so it's pretty clean in Vex and it can get a little messy in vops so also a for Loop for each Loop here this can get a little messy but the point is here that you can still do them in vops Without Really knowing how to write code and this won't be the limiting factor as you're starting out fresh as a beginner and after you get a good grasp on Ops try to learn a bit of Vex and if you know vops already it should be pretty easy to learn Vex as well so excuse my rent we are going to be using vops all my latest courses and my future Ones Will mostly use vops as well and we don't have to worry about Vex that much for now so how does all of this tie together to create simulations so we know Subs where we create and modify geometry we know vops which we can use to create and modify attributes and finally we can start talking about the thing that makes everything work which is dobs so Dynamic operators and this will be the final ingredient to understanding Houdini so I'll go ahead and actually let's just get rid of everything and start with a simple box and drop this down and if I want to use this box to generate particles and have them move and create a simulation we would have to do this in a dop Network so I'm not going to hook this right away to the box but if I drop down a DOT Network here it is and when I step inside we see that we have this output and we are in the Dynamics context so now we are in dobs I just wanted to create this dot Network first because for particles we can use a pop net so I will plug plug this box inside a pop Network and if I preview this result we see that we are pretty much spawning particles every second so I'm saying particle but really it's just a point so in Houdini a particle is a simple point and this differs from other 3D applications where a particle is something different but in Houdini it's very simple a particle is just a point and this pop network is really just a DOT Network so we can see this title here where it says dub Network it says pop Network basically because it's a preset of a DOT Network so if I go inside we have a bunch of nodes already laid out for us but we are still in the Dynamics context so this is essentially just a dotnet and we can recognize this output node that we had in the Dom Network as well so we have a bunch of nodes here and we will get to these in a second but first let's go up and let's create a velocity attribute so we also give these particles a movement so before we introduce our Bob net so right after our box so let's go ahead and create this velocity attribute with the attribute valve so let's drop down an attribute of op and I can rename this to set V so set velocity and if I step inside I will just create a simple constant all right and let's use a float Vector because the velocity is a vector and let's say that I just want to push these particles one unit on the X Direction so I will set this first value here to 1 and I'll leave this as 0 0. so this is just a vector that points in the X Direction and if I plug this in my V I can now check it in the geometry spreadsheet and see that we have this velocity information and now if I go back and I go into my pop network if I reset the simulation now we can see that our particles are moving in this direction that we assign to our Vector like so so this is just to quickly demonstrate how it all comes together and now for example I can introduce Some Noise to this vector so if I go up I can generate a noise based on our position so I will type here turbulent noise let's use a 3D noise because we are working with the velocity and I will simply add this on top of the value that I already have and now if I reset the simulation and check this out we can see that our particles also have a little bit of Randomness to them so this is how it all comes into play so let's go up and let's go back inside our DOT Network and let's examine these nodes we have a pop object over here a pop source to the right a pop solver and our output and really this merge doesn't do anything we can get rid of this for now so we have basically these four nodes now it's pretty important to get familiar with this structure because this is more or less the same way all of the other simulations are built so this pop object is simply a container which holds all of our points and this pop Source will look at our geometry and use it to scatter Points each frame so this is why the points start on the surface of our Cube so we sourcing the points over here and then our pop object will hold all of these points and then they get solved by this pop solver and this is the engine that's telling the particles how they should move at each frame and then finally we have this output and this output node is just here to make sure that what we are exporting at the sub level so when I go up what we see here at the sub level is actually what the output is pointing to so in this case uh our pop solver so no matter what my display flag is set to when I go up level it will point to this pop solver because of the output and this works the same way on the sub level as well so for example if I have a box and the display flag is set to this box but I also have a Taurus in the scene and we have an output attached to this Taurus now even if my display flag is on the box when I go up we are actually seeing the Taurus so this is what the output node is doing it simply points to the object that we want to export at the higher level so this is actually pretty useful sometime at the sub level as well but inside a DOT Network we are always going to have this output so like I said this is just here to point to the correct node that we want to export now this solver here this pop solver is actually the heart or the engine of the simulation this is what separates essentially dops from the stops and there are different types of solvers so for example we have the flip solver for uh water simulations we have pyro solver for smoke simulations we have rigid body solver for uh ridges so for collapsing buildings and stuff like that we have Vellum solver for Club simulation and I think these are really the main ones that we use most of the time and these solvers all have different rules and algorithms and calculations that tell the points or the geometry or the volumes how to actually move so this is why a flip solver will make your particles move like water and this is how the Pyro solver knows how to adveact the volumes because each of these use different like I said calculations and algorithm and if you really want you can also modify these calculations that are happening under the hood so for example if I grab the flip solver and I right click and choose allow editing of contents when I step inside here we can see a huge Network so if I press Ctrl B I can actually maximize any window in Houdini so we can see how everything is done at every step of the way and we have access to all of these so all of these nodes together are what's actually telling the flip solver how to solve our particles and we can see that it's really a huge Network and you won't probably ever have to deal with this so let's go up and press Ctrl B we can see that Houdini gives us the main settings that we have to worry about so in all of these steps these are the settings that you will adjust to modify the way your particles behave so like I said in 99.99 of the time all of these settings will be more than enough to control to offer you complete control over the particles and maybe down the line later in maybe 10 years you will want to go inside the solver and change some stuff here but really this is for future you to worry about so don't worry about this for now uh all of these solvers have a bunch of settings that you can play around with and really control the simulation and there are really a lot of settings and and things you can do with all of these parameters now also it's important to note that all of these kind of follow the same structure like I mentioned earlier so let's maybe make some room and for example the flip solver will need a flip object so we are going to attach this here and the power solver is going to look for an object so the first input is always going to be an object so for the Pyro it's going to be a pyro it's going to be a smoke object actually so we can attach this here rigid body solver we are most of the time is going to be RBD packed object so all of these have object in their name Venom solver is going to be Vellum object so hopefully this gave you an idea we always need an empty container it doesn't really have to be empty all of the time for and this Depends for the kind of simulation that you're doing so for example RBD packed object will usually contain some geometry so it doesn't need to be empty but basically all of these solvers are looking for this object type node so this is what I'm trying to say and then you will also have an output usually attached to all of these like so and then on the right where we have this pop Source some of these will also have a source to the right so for example for the flip solver I can actually use the same pop source so I can plug this over here and I can use an output here and if I actually go back and reset this simulation and press play we actually see that this is working so if I go inside we are are actually doing a flip simulation now so the particles are actually behaving like water and we can see that they are also moving in the direction that we created on our velocity with the attribute valve so I can play this and we can't really see this right now but for example if I increase the density of the pi the particle so let's maybe use a lower value here 0.05 don't worry about any of this for now but this is just to show you that uh we now have basically a particle simulation just like that and this is also good to demonstrate that if we learn how a basic simulation works it will transfer over to the other kinds of simulations that we are trying to learn so really the simplest kind of simulation for now is going to be a pop simulation so this pop solver and actually if I right click and step inside so if I right click and choose allow editing of contents and step inside we can see that this is not nearly as complicated as our flip solver so let's go up again this doesn't really matter for us at the this point it might come into play much much later down the road so let's get rid of all of this and let's go back to our simple pop simulation all right now to show how a solver works at the most basic level we can use the simplest version of a solver which is a sub solver so if I go up I will go ahead and get rid of this.net and I will place this inside a simple solver like so and let's preview this so press R and let's step inside so over here we have this previous frame node and we have these four object merges and all of these correspond to the inputs that we have at our top level so for example if I plug another geometry here in our input 4 we can access this from over here so it's just a simple object merge we could just go ahead and delete this and I can make a new one and point it to whatever geometry I want so this is basically what all of these are and also note here that it says we are at the geometry level but really we are inside a dob Network we can see here that in our effects ring container we are inside our solver and then we have a dop network over here and then this subsolver is actually inside this Dom Network where it says Dynamics here if we go inside right we are back at the geometry level but this is really more like a dog Network because the operations that we do are applied at every frame now don't worry about this too much this is essentially just because this way we have access to our sub-level nodes so all of the nodes that we have at the sub level as opposed to the Dom Network where we have access only to the top level nodes so it's a special kind of dot Network now like I said whatever we do inside here gets applied every frame so this is the part that I want to talk about we can see that even though our geometry is plugged in our first input this object more so this input one is what we would actually want to Output as well so if I plug this here we can see that nothing changes all we did here basically is just bring our Cube geometry from the sub level into the solver now the reason this previous frame node is special it's because instead of looking at our geometry at the sub level we are looking at the geometry at the previous frame now I know this is getting a little bit confusing so it's easier if I just illustrate this so let's plug this back our previous frame in our output and if I add a transform node over here and for example I will just set the Translate Y value here to 0.1 so we can see essentially that we just moved this Cube 0.1 units upwards this transform operation that we did here will get reapplied each frame now we can't really see this inside our solver we have to go outside at the sub level and this is just the way the soft solver works and I will also get rid of this connection with our Taurus but now if I play the animation we can see that our cube is continuously moving upwards so each frame we are reading the geometry from the previous frame and we are applying a transform value of 0.1 and as a result now our cube is flying upwards indefinitely so we can see now that all we did here is we applied a transform node so if I go up and if I were to do this at the sub level and I drop down a transform and set the translate to 0.1 this will just get applied once and we wouldn't have any animation so let's get rid of this and in order to preview the results of the solver I can pin the viewport so I can click the spin over here and this will pin the viewport at the context that we are currently at so now no matter where I go it's always going to show me this result over here so now I can step inside and we can preview the animation of this subsolver now usually inside a regular.net we can preview the animation just fine inside the dotnet but when it comes to the subsolver we have to do this kind of trick where we pin the viewport outside of the solvers so this is just how the subsolver works so anyway this is what the previous frame does so for example if I were to apply this transform to our input 1 we can see now that we no longer get any animation and this is because at each frame we are reading the geometry from the sub level as it is without any Transformations applied to it so at each frame we are simply reading the geometry applying the transform to it and then at the next frame we are reading again the geometry as it is on the outside of the solver so the changes don't accumulate in any way and this is why this previous frame node is different because we are reading the geometry from the sub level at the first frame and then we are applying the transform and then on the next frame we are actually reading the result of this transform node and applying a new transform node on top of that so this is the core concept of how simulations work and don't worry if this doesn't make sense right away in fact this actually took me quite a while to understand and I really encourage you to try this out yourself and do some other sub operations inside the solver and see how they get applied when they're running in the context of a simulation and maybe you'll get a better idea but like I said don't worry if you don't get this right away so let's see how this looks with a noise instead of just a simple transform so I will get rid of this and actually we will need more subdivisions so let's go up and let's go let's get rid of this attribute well we don't really need this for now uh let's go to our box uh and we just want to increase the subdivisions here so I will add more axis divisions here and just give this enough geometry so we can apply Some Noise to this let's go back inside our solver and let's do this again with an attribute vob so we also get a little bit more practice let's rename this to add noise and we will do the exact same thing that we did earlier we will take our position all right and we are going to add a turbulent noise to this position so we will generate this from our position so let's plug this here and we will add this on top of our already existing position and let's not forget that this turbulent noise let's set this to 3D noise and somehow I lost my subdivision so let's go up oh and we actually have to reset the simulations so when this bar over here is orange this means that we modified something in the simulation so we usually have to go up a level and reset the simulations so this reset simulation is going to be available for all of the dot Network so when I reset the simulation now we actually have our cube with the subdivisions updated so let's go back in our noise and we have a 3D noise let's switch this to a sparse convolution noise and we will reset our timeline so what happens here is that the default amplitude for this noise is quite high so each frame we are reapplying the amplitude so if I go frame by frame we can see that it's really doing some really huge changes here so all we have to do really is let's just set the amplitude to a smaller value so we have smaller increments each frame so I'll set the amplitude maybe to 0.1 and see what happens now so if I play the animation now we get something that's looking a little bit more a little bit nicer a little bit more organic and one thing I can do here if I want to expose a parameter we know that we can middle Mouse click on what parameter we want to expose and click promote parameter if I want to expose all the parameters of any node at the same time I can right click on it and go to Vex swap options and choose create input parameters so we can see now that all of these are getting exposed at the top level so I can make my modifications here so we can see that we get something pretty interesting and if I were to grab this attribute op I will control C and I will go up at the sub level and if I just apply this without a solver onto my box let's take a look and play the animation obviously we're not gonna get any animation at all but at the sub level we could animate this amplitude we can animate this in different ways but I'm just gonna do it by keyframes so at the first frame name of my timeline I'm going to hold alt and left click on this amplitude so we are adding a keyframe for this value 0.1 and we can see that we have a green keyframe over here on our timeline and I will go maybe forward 72 frames and I will just increase this amplitude so this will automatically create a new keyframe for us and maybe I can zoom in on this timeline so this is our second keyframe and I can increase this value here and now if I go back I can play the animation and we see that we have kind of the same result but this is not really the same if I look at the result of the sub solver and just to ignore the polygons for now I will press W and go in my wireframe mode we can see that this is kind of a different result we can even see the way the points are moving this uh at least at the start this looks a little bit more organic in its motion and maybe we can see this better if I work with points instead so I will just turn this box geometry into points let's go back to our box and let's drop a scattered node so this will do exactly what it says it's just going to scatter a bunch of points on the surface of the geometry and the forward options here I will turn off relax iterations so we get a random position for all of our points and I will just increase the total count here to maybe a hundred thousand and I will plug this in my solver and also our attribute op so let's go to our sub version of this add noise and let's play our animation so this is what we get and let's go back to our solver and let's see what we get so we can see that this is a little bit more this looks a little bit nicer it looks more like a particle simulation it looks more fluid as opposed to our soft version so maybe I can template this by pressing e and I can preview them at the same time so we can see what's happening here we are getting different results and for example if I were to go inside my solver so maybe I will add a value of 0.2 on my on the Y value here if I play the simulation now we get an even nicer result let's maybe increase the offset to a value of 1 and see what we get so when I play now we get an even more interesting result and if I were to animate this value at sub level let's go to our end noise and again I will just add a keyframe for the offset go forward to 75 and let's maybe just increase this offset to five let's maybe take a look uh probably this is too much so let's try an offset of one let's play we can see that our noise sort of starts to swim vertically so this is what's happening essentially and this is our result as opposed to the solver version which looks like this so this is happening because in the sub version we are not really accumulating the noise in any way at each frame we are reading in the same point so it doesn't matter if we are on frame 10 or 50 we are still bringing in just this geometry so we are generating this noise based on the position of the points where they are over here so we are animating the amplitude and the offset but it's still grabbing the noise values at each frame for from where it started whereas in the solver if I go back each frame we are actually creating new noise values based on their updated position so this is why this looks a lot more organic and this is why simulations in general can have that fluid like motion so that's something we can't achieve through just animating values we have to know where the point is previously in order to achieve really organic movements now let's try a cooler type of noise which is going to be a curl noise so let's get rid of this and I will do an attribute Swap and start fresh and uh and again I will want to add on top of our position let's drop down a kernel noise and this noise is very good at mimicking a fluid motion so with the right values here you can kind of get this to look like a smoke simulation and I'll show you how this works so I'll generate this from my position and let's add this to our existing position just like we did with our turbulent noise and I will expose all of these values by right clicking and going to Vex vob options and create input parameters let's go up and I will reset my timeline and by default again the amplitude will be way too high so I will just drop this down and I will just increase the step size a little bit so we don't have any flickering errors and if I play this now we can see that we really get a cool motion and probably the amplitude is still too high so I will drop this down even more and May maybe I can drop down the frequency slightly and also maybe the roughness let's reduce this and let's see what we get all right so this is pretty cool also I can change the way we visualize these points so if I right click on this Cube over here I can select particles and I can select this pixel display so now they're a little bit smaller and it kind of looks more like actual particles so we are starting to get something really close to an actual particle simulation and again I can play around with this offset value as well to introduce even more variation in our noise each frame so let's maybe set this to a value of 0.5 probably this is too high or actually this is okay let's maybe try a value of one okay introduce even more movement so that's fine and now we can also combine this entire thing with a transform node so I can also move these particles up as they get more and more noised up so if I drop a transform and again let's set the translate to 0.1 and if I play the simulation this is way too much so let's try 0.01 instead all right so now over time our particles are also moving upwards I'll maybe change the amplitude to something even less let's maybe try 0.02 all right so this is pretty cool so just like in vops where we have to know in the back of our head that all operations are happening per point at the same time in Dobbs we have to know that each frame depends on the previous frame so this is how we have to adjust our way of thinking when we are inside Houdini and trying to do simulations now we can bring this closer to the way our pubnet behaves and I'll go up and I will un-template the result of the scatter so we only see the result of the solver so the way the pop net works and let's do a pop net over here and explain this better so inside this pop net what this popsource is doing it's looking at our geometry at the sub level and it's using this scatter node to scatter points on top of the geometry and it's sourcing it at every frame so to do this inside this subsolver we can go ahead and we can merge this input one so if I plug this here it's just our points but we can merge a new set of points each frame so we can drop down a merge after our transform here and we can bring in each frame new points and we can see that they are already overlaid on top of each other so if I reset the simulation now we have a continuous emission of points uh maybe this is a little bit hard to see because the there are a lot so if I go up I can reduce the scatter let's maybe reduce this to 1000 and let's reset the simulation so we can see now that we have a continuous emission and this is what the pubnet is also doing the difference is that the pop net is randomizing the position of the scatter each frame so in our scatter let's maybe turn this back into our Point display and I can also press D on my keyboard and I can go to the geometry Tab and I can increase the point size so we see this better there is a global seed value here and if I change this we can randomize the position of the points so in order to get a new random position each frame we can map this value to our frame so inside here I can do dollar sign F and this will bring me my frame value so we can see that this gives us a value of 42 and we are at frame 42 so now if I check the next frames we are going to get a random distribution each frame and we haven't really talked about this thing I just did here with this dollar sign F but you can assign this dollar sign F variable to pretty much any value you want so for example I can also use dollar sign F here in the force total count so now at frame 1 I will get only one point and then at Frame 2 I will get two points and we can keep bringing in more points as our timeline progresses and I can get rid of this expression if I hold down Ctrl shift and left click so now I can set this back to maybe let's do a thousand here now what I wanted to show here is that now since we have a different distribution of points at each frame when I go inside the solver and I hit play we can see let's maybe turn this back into pixel display now we can see that we actually have something that looks really close to a normal simulation so maybe I can now increase the total count a little bit to introduce more points so here we have it so let's go inside and try to make this noise a little bit cooler maybe increase the frequency and bring back some of the roughness and let's maybe switch the type to a Simplex noise and add more offset value to this let's see what we get so maybe this is slightly cooler now this offset value isn't really doing a lot for us so we can go back inside here and this curl noise can actually take a fourth dimension for our position which will be essentially the time so don't really worry about this but we can do a vector to Vector 4 over here and I'll plug our position inside the vector and I will promote the second value here and I'll get rid of this curl noise and let's do a new one and I will set this to a 4D noise so this is only available for curl noise and I think anti-alias the flow noise but we don't really have to worry about this for now I just want to get a slightly cooler result over here so I'll set this to a Simplex noise actually I will right click and promote all of these input types and generate this from our position and I will add this on top so let's go up increase the step size and reduce the amplitude and actually let's go back and instead of promoting our fourth value here let's link this to our time so all of this is basically still the same curl noise but now it's using the time as a fourth dimension to properly evolve our noise so now if I go up and I play the simulation we get something a lot closer to an actual particle similar relation now don't worry about all of this noise stuff for now you will get used to working with noise pretty soon so as one final thing let's go up and let's uh just do an extra few steps to make this even cooler I'll append a trail stop here and I want to compute the velocity then I can do an attribute of op and I can go inside and I can use this velocity to get the length of the Velocity so this is essentially the speed and I will want to fit range the speed to some custom values and I also want to promote all of these to the top level and finally we will use a ramp parameter here which is going to be a color parameter and uh and I will plug the result in our color so if I go up I can play around with the ranges of our speed and I can also give our particles some different colors so when they're slow I want them to be red and when they're fast maybe I want them to be a sort of blue and I can play with my values even further and I'll press D and go to the background here and we will set this to dark and now if I look at animation we get something a little bit more interesting with more variations so so I know I went super fast just now with introducing a new node and doing a lot of operations that we are not familiar with all of this was just to give you more of an idea of the stuff we usually do in Houdini and this will conclude the intro to Houdini for VFX now I know I haven't covered rendering but that is kind of a different topic and honestly rendering isn't usually where people get stuck it's pretty straightforward you just create a material add some lights and set some noise threshold in the render settings and hit render and that's pretty much it now obviously we can get super fancy with materials and building Shader networks so that's why I'll probably do a different course for that but as a beginner you should really focus on all of the stuff that we talked about in this course so we have to get used to the sub tools and how to modify attributes in vops or Vex if you think you're better than me and then also how dops work and really when it comes to Dobbs this is where we have to Branch out into the different solvers that Houdini provides so I will have a separate course for learning the basics of each solvers so there's going to be intro to flip intro to pyro intro to Vellum so we have to understand how all of these work and the differences between them and then also really get comfortable with using vops and on that note I want to show you one final thing is that if I we have the stores over here and if I drop this into the pop net so we can see that we scatter some points and earlier we created a velocity attribute outside of this pop net but if I go inside I can actually drop here a geometry vop and I will place it below our source so this geometry vault is essentially exactly like an attribute whop so if we step inside we have the exact same layout and we have all of the nodes that we have in vops but again the difference here is that this gets applied at each frame so for example I can do a constant value and I will set this to be a three float so exactly the same thing that we did earlier let's maybe use a value of 1 on the Y and if I plug this into the velocity and reset the simulation we can see that our points are moving upwards so this is great so so far this is not any different from the way we did it earlier when we assigned this velocity value at the stop level and this is because each frame we are just adding the same value to our points but for example if I were to add this value on top of the Velocity that we already have so if I plug the V inside our V here and I add this constant value on top of the Velocity if I play the simulation now we can see that after only a few frames our particles start to get crazy and this is because we are also adding the velocity that already existed in the previous frame so at frame one we are going to add a velocity of 0 1 and 0 then on the second frame this set of points that moved will already have this 0 1 0 velocity and we are adding on top of that so on the second frame our first set of points will have a velocity of 0 2 and 0 then on the third frame we are going to keep adding on top of what we have so this is why only in a few frames since this is an accumulative process because this is an ad operation we keep adding more and more on top of the vector that we already have so we can see that after a while the vectors get really huge so this is going to take a while to get used to in terms of what dop operations do but I wanted to show you that you do have this attribute verb it's called the geometry verb in a DOT network but it's still just an attribute verb so we have access to this and in fact most of the simulations especially particle simulations I Rely almost entirely on doing stuff inside the geometry pop so if we learn how to use the vops at the sub level it's really going to come in handy when we try to do simulations as well inside a DOT Network so that's all I wanted to say I hope you enjoy this course and that you got a better idea on how Houdini operates and don't worry if some stuff didn't make sense as I was starting out a lot of things I just kind of understood and that was actually enough to do some pretty cool stuff and only much later I really actually understood what's happening so I'm trying to say that you don't have to really understand this stuff right away as long as you kind of got an idea of how stuff works and really everything only starts to make sense if you actually get your hands dirty and do the stuff in Houdini yourself so it's not really enough to just watch videos and get the information you actually have to be inside of Houdini and you have to lay down notes and try things out and fail a lot of times really until eventually stuff starts to click so that's all for now hopefully we can see each other again in a new tutorial
Info
Channel: Voxyde VFX
Views: 63,536
Rating: undefined out of 5
Keywords: houdini, vfx, visual effects, tutorial, beginner, nuke, vops, sops, course, free, cgi, 3d
Id: JbxNElzALrM
Channel Id: undefined
Length: 120min 8sec (7208 seconds)
Published: Sat Aug 05 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.