Fire Aura VFX - Houdini & Nuke - Full Course

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
for free welcome to a new Houdini course in this course we are going to learn all about controlling particle and smoke simulations we'll start off by splicing together multiple particle simulations that we can use as a pyrosource using the smoke simulation we can attack particles to get a unique magical look I'll also show you a quick and easy setup to create Embers and also a firewall that serves as a background layer in the com section we will bring all of our renders together we'll go over best practices and some of my favorite notes and workflows that I use on a daily basis so I hope you will enjoy this course and let's get started welcome to a new Houdini course we are going to start as we usually do by doing a quick overview over the entire project so here I am inside of nuke with the final result and we are going to create a couple of layers here so we have the fire in the back we have the main effect so the aura itself and then we also have a separate layer for the Embers that are in front so let's take a look at these layers so this will be the entire company nuke so it's not going to be anything too complicated we will start by bringing in the background so we'll also create this in Houdini this is just a simple firewall and we really only need this to have something subtle in the back we don't want this to take too much of the main Aura effect so after we do some adjustments here we end up with this which is a very subtle layer as we can see now the main layer is going to be the aura layer itself so this will be the fire and our character and we can see that this is what we start with and this is what we end up with so we are going to do quite a bit of changes here to achieve this look first we are going to split up the character in all of the respective aov so if I disable any of these Shuffle nodes we can see that these all of these give us individual control over certain channels so we have control over the GI the subsurface scattering the specular and all of that and after we split all of these up and put them together we will put our character on top of our fire and then from the same render we also have a costume pass that we are going to create inside the fudini so this is using a funnel Shader which we will use to create certain effects and masks to highlight certain parts of our character like so and then on top of this we are going to finally bring the emission layer from our main render so this is the emission so only our particles and we are going to add some motion blur to this and do some color adjustments so we can place this on top of of our comp and then we can add some glow and here we have our Ember so we will also create this layer inside of Houdini we will add this on top and then using our original firewall render so this render here we can use this as a distortion map to help us achieve that heat wave effect so if I disable this we can see that we distort our character and then we also use the same layer to blur our entire image on top of the Distortion so here we can see that when I turn this on and off we also have this blurring here which again helps us to sell this heat wave effect finally we have some post-processing effects and we end up with the final result over here and so this will be our nuke com as we can see this is not super complicated if you're familiar with some of my other courses you can tell that this entire comp here is pretty much lightweight to what we normally do so this will be the layers that we want to create and if you want to follow follow along with the nuke part as well all of these render layers will be provided to you if you follow the link in the description and this is in case you don't want to spend time rendering the layers after you've assembled them in Houdini you can go ahead and just use mine instead so now if we go in Houdini most of our work will be to create the particles on our character and this is the result that we end up with now unfortunately this doesn't look very good in the viewport but when we render this we are going to get this result so let's go back and examine this scene for a bit we will start from the beginning over here on the left and also this project file is available to download so check the link in the description we are going to start with our character now unfortunately I can't share the exact same character that I used inside this render because this isn't mine I bought this character on sketchfab and I will provide a link in the description if you want to use this character as well but this effect can work with any character so in our case we are just going to use the test geometry Tommy model so we have our character and we are going to scale him up a bit so we work with larger units and this will enable us to control our fire a little bit better so the default scale if we take a look so if I disable this transform node and go in one of the front views we can see that we are working roughly with a two unit size and in general this is a little bit too small for fire simulations so this is why I scale him up a bit so we are working roughly within the 0 to 5 range so we are scaling him up by a uniform scale of three so essentially this entire effect can be split into three phases and in the first phase over here we are going to create a bunch of particle simulations so we see here that we have a bunch of Pop Nets we have four in fact so if I look at these one by one here we can see one of them and this will be another one for the the entire body and again another one for the entire body as well and then we also have this one over here which controls sort of the lateral spreading of our effect like this and we are going to create all of these individual pop Nets and then we are going to splice them together into one single simulation so this way we'll have unlimited control and we can use this simulation as a base for our fire and for example here if I also wanted to have these sort of lateral spreading here on the legs as well I would be able to Simply create another pop simulation and merge it with the rest of our simulations so this is how we can control the effect so we are going to use the result of the simulation here is the cached result and this will be a base and also a velocity field for a pyro simulation so we can see here that I have an object merge which basically points to the result of our combined pubnets and one is for the density the other one is going to be for the velocity and then we have a couple of extra Fields over here this will be an SDF and this is another velocity field that will help us our direct our smoke further when we do the simulation so in the spiral solver if I go to the sourcing tab we see that we have the density we have our velocity so these two and then we also have a Divergence field which is going to be this one over here so all of these sources combined will really help us to achieve a very customized movement for the smoke and we are going to end up with this simulation and then this simulation we are going to use two advect particles so again we are going to do a pop net and we are going to start from the same geometry as a source and we are bringing in some helper geometry that will allow us to further control the movement of the simulation so the cached result will look something like this and this is the final result that we end up with and after the simulation we can adjust the colors and then we can do further modifications and we are going to scale it back to the original size of our mesh so basically it's going to be three times smaller and here I have a couple of extra nodes that will control the P scale and we are also going to use a re-time to speed up the simulation so we are going to simulate all of the phases sort of in real time so a bit slower and we are going to Cache a bunch of frames so we can see here that I cached 500 frames for this just so we can speed it up so we are going to make our particles go two and a half times faster than the regular version so this will help sell the intensity and the power of this effect so this was just a quick overview and we will recreate everything from scratch with the next lesson before we get started with building the actual project I want to do a quick demonstration on some of the techniques that we're going to be using so this is mostly in relation to the lateral spread of the fire so we can see where the fire here converges into one point on the side in order to create this very specific Movement we are going to use several methods but the one that I want to showcase is how to Leverage The Power of sdfs to our direct particle and smoke so let me just drop down a grid and what I'm gonna do in this lesson will not be directly connected to the project itself I just want to demonstrate this technique so you don't have to follow along let's go ahead and drop a scatter I will randomize the global seed for frame so I will set the global C to B dollar sign FF and relax iteration turned off let's increase the count and then I can drop this inside a pop net let's step inside and let's go to the source I will disable the guide and let's use all points for emission type and also we don't have to make our particles last forever so let's just set the life expectancy maybe to a value of 3. so now we are basically just spawning a bunch of points and let's go up let's Create a Sim simple sphere and I will template the Bob net with E and let's preview the sphere let's press enter and I'll just move this up a little bit and I'll increase the uniform size so I'll do something like this and let's turn this into an SDF so let's drop this inside a VDB from polygons and I want to use distance VDB so SDF and probably we can reduce the voxel size let's use 0.3 so we know that the SDF stores a distance value to the surface so we have a bunch of voxels and I can even use a VDB visualize 3 and let's maybe go ahead and reduce the voxel size so we get a more accurate display of our voxels let's do something like 0.05 and I will template this and go to the SDF so all of these voxels simply contain a value that's basically saying how far apart it is from the surface and if it's outside it's going to be positive values and if it's inside it's going to be negative values Now using these values we can compute a gradient so a a vector that points in the direction of the increasing value so if we compute a gradient volume from this SDF we are essentially going to create a velocity field that's going outwards from the center of our sphere and for example after this VDB from polygons let's do a VDB analysis and by default this will grab our only volume that we have so the surface and we see that now it is a vector 3 volume so previously over here we have a float volume so the voxel zone is stored a float value so the distance and then using this value we can now store a vector that points in the direction of this increasing value and to visualize this as a velocity field let's do a volume slice and let's also do a volume Trail and let's plug these and let's get rid of this VDB visualize tree and we can see that this is our volume that we create and we can also see that we only get a border of our sphere and this is because when we create the SDF it is going to use the exterior and interior band voxel so if I increase this I expand the borders of this volume now what we want here is to fill the interior so it reaches all the way to the center and we can see now that we end up with this velocity Vector that points outwards from the center of our sphere and now if I grab the sphere and I change its shape so if I increase its height and do something like this our velocity field will update to point to the center of the object so we can use this velocity field to help guide our particles exactly into the spots that we want and I'll get rid of all of these nodes and only leave the VDB from polygons and let's also set the radius back here to 0.5 on all directions so let's go ahead and plug this as the second input in my pubnet let's go inside here and let's drop a geometry verb and to use the SDF let's go to inputs here and set the second input let's point to our second context geometry so now from inside this vob node let's go ahead and from op input so we can do a volume gradient and we will sample this from our current position so I'll plug the P inside the sample pause and this volume gradient will automatically compute this gradient field that we created with the VDB analysis node so we can do this directly inside the vops so now the result of this will be this Vector that points from the center of our sphere and if I plug this result inside the velocity and press play we see that the points are moving away from our sphere and this is because the values of the sphere are increasing from the inside of our sphere so it goes from negative to positive outside we can simply reverse this Vector direction if we do a negate here or if I multiply this with a minus 1 which is essentially what the negate will do so now since we inverted the direction we end up with this result so the points we can see that they are pointing right in the center of our sphere and for example if I go up and I look at my sphere we can see how this work so this is right at the center of our sphere and if I grab this sphere and move this around let's go ahead and reset our simulation we see now how all of the particles point to this new updated position so we can tell the points exactly where we want them to go and we can also determine the radius of this effect by simply increasing the sphere so this is the power of sdfs we don't have to use pop attract or any other pop forces and stuff like that so this is the technique that will help us guide the particles and when it comes to volumes we can do something a little bit similar let's go ahead and drop a test geometry rubber toy and I'll scale this up and I'll go ahead and let's create a smoke from this so let's do VDB from polygons and let's use fog density and we can use the same SDF that we created here so the sphere I will just copy this over let's go ahead and I want to merge this because I want to Source them both in the same pyro solver so I'll go ahead and from here here I'll do a pyro solver and for our sourcing let's go ahead and get rid of everything inside everything except the density and we have this SDF which stores again the distance values so it's going to be the surface volume let's go ahead and Source this in so I will hit plus and Source volume will be surface and if I Source this into our Divergence field so let's uh use Divergence here now our smoke will be sucked towards the center of our sphere so normally Divergence makes our smoke expand so just real quick I will disable the Second Source let's go ahead and use the density as our Divergence so with the default settings and a source scale of one if I hit play now it's going to take our source density and it's going to expand the smoke based on that density so if I increase this Source scale here to 10 then the smoke will be expanding even further and this is really the base of x explosions by using these Divergence so I'll go ahead and remove this and let's start our Divergence pack that's based on our SDF since the SDF will have negative values by default when it's inside our sphere when I press play we can see that it's starting to suck up the smoke to the center of the sphere so I can also template this sphere and I can see that if I move this around and I reset the simulation now the smoke will be sucked towards the center over here so this is the effect that we get so it's pulling our smoke towards the center and it's also Contracting the smoke as well so we are losing the volume actually and this is the key ingredient to get this tapered look so if I look at the final effect here what we see here is not what normally happens in a pyro simulation because the default behavior of the smoke is to maintain a and preserve the volume as much as possible so if we are not using this Divergence trick to contract the smoke here in certain areas we can't really get this tapered look on our simulation so this is how we are going to use sdfs and they're going to be a big part on creating this effect and now we can go ahead and with the next lesson we can actually start building the project so let's go ahead and get started and I will create a geometry container let's rename this to effects underscore Main and let's step inside and drop our Tommy test geometries so this effect will work with any kind of model you just have to make sure that the model that you're using is a watertight mesh so in order to ensure this for the resolution option here for Tommy we will use low resolution and this will get rid of the extra elements like loading and stuff like that that we don't really need so from here because this gives us quite a low resolution mesh let's just do a remesh and I will set the target size to maybe 0.015 and this should be enough and for example if I duplicate this and let's say that the model that you're using doesn't have this option to do a low res version so you would have a model with clothing and a lot of other extra items that you don't need I would recommend that you just press s and select your model and just get rid of everything that's not necessary and then from here we can close this off with a poly cap so this will turn it into a water Tight Mesh and then you can either do a rematch from here or do a VDB convert and turn it into an SDF and then convert it back to Geometry so whatever the case may be you need to make sure that it doesn't have any holes just so we can create volumes and we can emit particles properly from the model so like I mentioned in the overview we will need to increase the size of this model quite a bit so if I go in the front view by pressing spacebar 3 Tommy will be between 0 and 2 units on the y-axis and this isn't necessarily a deal breaker but I find it that pyro simulations are a lot easier to control if you are working with at least I would say five units so what we can do from here is just drop down a transform and I will increase the uniform scale to a value of 3. so now Tommy has a height roughly to around five and like I said this will just allow us to better control the Pyro simulation and then when we create a simulation we will just have to reduce it by a factor of three so we will just simply do one multiplied by three all right so let's undo this and let's set this uniform scale back to 3 and now we can start creating our particle sources we will create a different particle source for each simulation that we will do and we will do four simulations and splice them together and we will start with just a simple simulation that has a pop wind at its core so let's go ahead and let's just do a null here so we keep things organized and this will be our GEOS our C so our geometry source and we can start creating our sources so let's do a scatter and we are going to use scatter for each of these sources uh let's turn off relax iterations and I will just increase the force total count I'm pretty much just eyeballing this value here we just need enough points here so that we can create interesting sources and assign some cool noise values to these points so maybe 40K in this case will be fine we can always come back and adjust this later so let's do an attribute verb from here and let's create some noise so let's rename this to add noise and let's step inside and we can use many different noises we can use a turbulent noise but let's uh in this case use an anti-aliased flow noise so I will type here a a flow noise and let's drop this down let's use for Signature let's use for the input 1D noise because we want to evolve this noise so we want to animate this from our position we will do a vector to Vector 4 and then we will plug the time as our fourth component here and let's plug the result in our position and then uh the noise result let's do a fit range here so we have further control and we'll plug this into the CD and now to keep things simple let's go ahead and right click and choose to promote all inputs for our noise and also for our feet so let's create input parameters now I can go up let's make some room here and let's just increase the frequency and create a more interesting pattern and now we can use the minimum and maximum Source values here for our noise so I might want to I think these default values are pretty alright as they are let's take a look at the animation all right and we can adjust the speed of this animation if I change this fourth component here in the frequency so if I want to make this slower I can reduce this value here and this will work we probably need something a little bit fast so maybe the value that was earlier uh was fine so let's just use a value of 2 and because this will be kind of a chaotic simulation so having a higher speed will help us all right let's also add a rest attribute so we can further control our particles after they've been simulated and now from here we want to get rid of all of the points that are completely black so if I press D and I change the background to the light display we can see that we have a lot of these dark points let's go ahead and maybe switch this displayed particles to points so we only want to spawn particles if they have a little bit of whiteness in them so let's press D and let's go back to our dark display and from here I will do a blessed node we will set the group type to points and let's set an expression here at CD bigger than zero and let's delete non-selected so now if I turn on the point display we can see that if I turn this blast node on and off we get rid of a lot of points so we only want to simulate again just the points that have a color value bigger than zero so they're not completely black and if I place this inside a pop net let's go ahead ahead and step inside and set up our dots and for our pop Source let's set the emission time to all points and let's disable guides and here we will just do a simple pop wind let's go ahead and let's just give this a little bit of amplitude maybe a value of one let's press play and see what we get okay so already this is pretty decent we might want to reduce the pulse length so this will make our noise that's driving this pop wind animate a little faster so I will set the pulse length to 0.5 I will maybe decrease the swirl size as well let's maybe use 0.45 let's leave the amplitude at one let's also switch this back to pixel display and also we want these particles to last only a little bit so in our pop sources let's go to birth tab let's set the life expectancy let's maybe start with 0.6 and also introduce a little bit of live variants let's maybe do zero point 25 these are completely arbitrary it's just to give us a starting point so let's check the simulation now and this is pretty much what we want in terms of this first simulation I believe and if for example I want this layer of simulation to add vect our fire even further I could just simply increase the life for our particle so if I do a value of 2 here then each particle because it lasts longer it has more time to affect our smoke when we do the Pyro simulation but because we only want this to give our particles a just a slight initial noise we don't really need them to last for a long time so we actually want them to be rather short in live duration so let's uh set the life expectancy back to 0.6 okay and let's press play so I think this will be fine we can always go back and adjust our settings here and I will encourage you to play around with some of these live setting things and maybe also some of these pop wind settings as well one final thing that we have to do here whenever we want to use our own scatter as a particle Source inside a pop net as we did here so if I go up we scatter the the points ourselves if we use this in a pop net we have to randomize This Global seed value per frame so inside the expression for the global seed here let's do dollar sign FF and now every frame we will get a new seat and in our pop net this will now fill up our geometry a lot better probably this is not super noticeable in this case but this dollar FF expression we always want to use when we are using the scattered points inside the pop net so that's just something to keep in mind so this will be good for our first layer of simulation and let's go ahead and take care of our second layer for the second layer we want particles that flow vertically along our mesh so we basically want the particles to fly upwards in the y direction but we also want them to retain the shape of our mesh sort of like they're flowing along the character and we don't really need to change the source an awful lot for this so what I can do is I can simply grab all of these nodes except the pop net and I will press Ctrl C and just paste them over here and start off with the pretty much the same Source what we can do here for the noise is we can just simply change the offset just so we get a different noise pattern so they're a little bit different than the than the previous source so we always want to introduce variation where we can let's go back here to our Second Source I might also want to play around with the frequency of this no noise as well let's go ahead and let's just increase this even more so let's do let's do something like this let's Press Play Let's maybe reduce the frequency of the time so our fourth dimension here make them slightly slower and this will be fine so I want the particles to fly upwards but I also want them to fly a little bit inside towards the center of the character so the easiest way to achieve this is if I simply create a point from where to base this Vector that I'm looking for and if I drop down an ad to create this point let's hit this plus to create a point and I will press enter in the viewport and I'll just bring this up and I can go to the geosource let's grab this and press e to template let's go back to our point so I want all of these points to look at this point and create a vector based on this position so now if I go back to the Blessed node Let's do an attribute vob let's un template our geosource and go back here let's uh place the ad in our second input so we can reference it inside let's rename this to set V for set velocity let's go inside so from our open input tool we can do an import Point attribute and the point number will be zero because we only have one point so we can create a constant and leave this at zero pointed to our pity num and this has to be an integer and probably it would have been easier if I adjust middle Mouse click and promote the PT num to a constant so it's pretty much the same thing and with this import Point attribute this will look for the p as the default attribute which is what we want now we can do a subtract from our own position and we will place the position of our point from outside as our second input in this subtract and I can visualize this Vector if I place this inside the normal if I turn on the normal display this will be the vectors and we can see that the vectors are pointing in the right direction but they're going away from the point so I want them to go towards our Point here and I will just reverse the order of the subtraction by pressing shift R and now we have the vector that we are looking for and now to better control this Vector let's also do a normalize so all of the vectors have a length unit scale of one and we are using the normal to visualize this Vector but really we want to export this to our velocity so I'll plug the result in our V and I can actually get rid of this normal connection here and let's turn off the normal Point display I will go up and if I place this inside a pop net let's go ahead and use the same sourcing as the previous one that we created so inside our DOT Network for our pop Source again we will use all points for emission let's turn off guide and because we already have this velocity attribute if I play the simulation our points should be moving towards our goal that we created here so our single point let's go back so we are getting what we are looking for so far we also don't need these particles to last forever so in the birth tab let's go to life expectancy probably we need these particles to last around the same as our first layer Let's uh maybe try a value of one and a live variance of 0.3 and let's see what this will give us and I think this will be fine maybe we don't even need them to last this long one other thing that we can do is we can actually randomize the speed of our particles so I don't want to change their Direction I just want to randomize the length of this velocity Vector a little bit so let's go back up and inside our set V attribute vob we can go ahead and generate a random value for each of our points let's just create a duplicate of our geometry globals here by holding alt and dragging and from our pretty num let's do a random and we also want to fit this value let's say that from 0 to 1 which the random generates let's use destination mean currently we have the destination mean set to zero meaning that some particles aren't moving at all let's say that the minimum speed I want them to have will be let's try maybe something like point 35 all right so now the particles will vary in speed from 35 to 100 percent basically and to apply this value let's do a multiply after our normalize and I will plug the fit result in our second multiply here and now if I reset the simulation we also have a bit of variation in the speed so again following the principle of always adding variation wherever we can and on that note we can go inside our dotnet and let's also add a pop wind here as well let's increase the amplitude decrease the swirl size and I will also decrease the pulse length and let's take a look alright so now it's starting to look a lot more interesting and now we want to force our particles to stick to the geometry so they follow the shape of our character and by having the particles follow the shape of the character the effect itself will be a lot better integrated with our mesh so whenever we can we always want the particles to interact with the source object from where it comes from and to do this we can use an SDF and we will go up and we will create this SDF from our geometry over here to the side and maybe I'll make some room so over here to the side let's do a VDB from polygons and we want to create this SDF so we will leave this at a distance VDB let's increase the resolution here so we get more accurate result let's use 0.01 maybe we don't need this much accuracy let's use 0.02 instead and now in order for our particles to not escape this SDF field we can increase the band voxels here for both exterior and interior and I like to use World space units here just so I get a better feel of how big our exterior band voxels are and I think that a value of 0.25 for each of these should be plenty of room and from here I will do a null and this will be our SDF I will go ahead and grab this null and press Ctrl C to copy and we want to go back in our pop net and let's do a geometry verb here and for our inputs let's set our second input to be sop and let's point to our SDF that we created and now if I go inside we can access the SDF geometry from op input 2 and we want to use a volume sample and also a volume gradient so let's drop this here and we want to point the sample position to our p and all also here as well for our volume sample and these operations that we are going to do here I go into a lot more detail in the volume sample and volume gradient video that I have available for free so if you are not familiar with this technique go ahead and check out that video from our volume gradient we want to do a normalize and we will multiply it with our volume sample so let's plug this here if I grab the current position of our Point let's go ahead and plug this back in our P if I do a subtract and I subtract this Vector that we created here with our volume nodes let's go ahead and plug this here now all of our points are sort of being forced on the surface of this geometry and I found that this volume gradient and volume sample technique gives us the best results when we want to stick points to a surface but in reality we probably could have used a minimum position as well so just as an example if I go up and I go back here and I grab this geosource and let's go back here and let's use input 3 to point to our source if I were to do a minimum position so if I drop this minimum position node here plug the pause inside our P I could just use this node instead to update the position and as we can see it almost works the same way so if I play the simulation now we do have pretty much the same result the only problem here is that this sometimes creates a little bit of artifacts around the edges of the geometry so this is a little bit hard to see because we're not working with a lot of points but when we have millions of particles this might be a problem so usually when I do the sticking to Geometry I like to use the volume gradient and volume sample so I'll plug this back into our position so let's play the simulation and I think this will be fine we might want to just increase the pop wind strength to add a little bit more more noise into this movement so I will just increase the amplitude here let's try 1.25 so let's Press Play I think this is maybe too much let's just use a value of one okay so this is pretty good and this will be our second layer so let's now go up so we have the first layer and then we have our second layer probably we could have did we could have done a file cache but I will leave this as it is for now let's go ahead and rearrange this slightly and I can start merging our layers so I will grab this pop net let's drop down a merge and let's merge it with our second layer okay so now we are starting to add up our particles so we pretty much have this second layer that we created which is the point sticking to the surface which is kind of our main layer that's going to drive the movement and on top of this we also have these random spots that fly a little bit away from our geometry so when we add up all of the layers together other we will have a general movement for our fire but also a lot of variation as well which will create a more believable result so if I look at the merged result this is a pretty good base now of course we'll still need to add the lateral spread of this fire which is pretty much the selling point of this effect but on top of that when I analyze the effect in the anime itself it seemed to me that aside from the lateral spread of the fire there was also some fire right around the head area as well so we can create a separate particle simulation only for that and we can use the same source as we used earlier so I will just go ahead and grab all of these notes up until the blast let's Ctrl C and copy them over and let's see how we can create the particles around the head let's go to our blast node result and again we want to randomize the pattern for this noise so I will just increase the offset slightly and uh for this maybe I will increase the frequency even more and I want to probably decrease the minimum value here so I want to scatter slightly more points maybe something like this and let's press play to also check out the speed and I think this will be fine maybe we can even increase the frequency even more and let's set the speed to a value of three okay I think this will be fine and for these particles I only really want them to exist only in this area so pretty much only from shoulder level and up so I can do a clip from here and I will just get rid of all of the particles that we don't need so if I press enter in the viewport I will just grab this handle and bring it up right until where I want to delete all of the points that are not of use for us so let's do something like this and maybe I will turn on the point display so we can see this better so we need to create a vector that points up and a little bit outwards as well so to the sides and we can pretty much use this same setup that we did earlier where we set our velocity based on a point so let's go ahead and grab this attribute warp and add and I will Ctrl C and I will just paste them over here let's plug this here so for this attribute of op I can maybe just create a visualizer for our velocity so I'll just click this V here turn on my visualizer let's take a look at our V alright so now we can see our velocity clearly now we simply have to grab this point that we created I will press enter in the viewport and I will just bring this down and I want the vectors to point away from this point so inside our attribute op I will reverse the order of this subtraction so press shift R and now we can see that they point away let's go up let's go back to our point and I can also bring this a little bit in front so I want these particles to also move slightly back so we can see how easy it is to add to direct exactly the movement of our particles and if I for example want them to spread out a little bit more I can just drag this point up and now we have even more spreading so I will uh place this back down here and I believe something like this should be okay all right so I will turn off the visualizer and I will actually just duplicate this pop Network so I'll hold down alt and drag this over and inside our pubnet I don't want the particles to stick to the geometry so I will step inside and I will just get rid of our geometry Vault that forces our particles to be on the surface of the geometry and if I play the simulation we almost get what we are looking for now the amplitude of this pop wind is a little bit too strong so I will just reduce this to 0.2 and maybe also reduce the throttle size to 0.3 let's go ahead and use a pixel display and let's play the simulation and this is what we are looking for maybe let's say that I want more noise so I will increase the amplitude all right and something like this will be fine let's go ahead and also merge this layer in our main effect so let's place this here and let's preview everything at the same time all right looking pretty good we might want to do some speed adjustments here and there but let's go ahead and take care first of our final layer which is the lateral spread for the final layer we can start with the same source that we started so far so let's go ahead and grab all of these layers so up until the blast and do another copy of these over here to the side and go to the blast node and again we want to adjust the offset of our noise and probably the frequency is fine as it is and in order to achieve this lateral spreading Movement we can break it down in a few steps first we need to create a vector that points towards the goals that we want so we're going to do kind of the same thing what we are doing over here with a point that we create that will help us guide our particles only in this case since we need a point on each side we actually need two points and we need to change up this setup a little bit let's first go ahead and go back to our geometry and I will template this node with E and I will create another Point here to the side let's create this and let's go ahead and press enter in the viewport and I want to place this over to the side where I want one of our spreading goals to be and then from here we can simply do a copy and transform and for the settings here if I set the scale on the X Direction here to negative one we are going to have a copy onto the other side I probably also could have used a mirror so if I do a mirror the default settings should be fine so let's actually just use a mirror instead since this is essentially what we are doing and we can adjust the handle here for our mirror but since our character is exactly in the center of our scene all of these default settings will be fine so we just want to create the same point on the other side and now if I go back and adjust this point our second point will adjust as well so this is what we want now earlier when we were just using one point we could grab the position of that point by using the point number zero but since we have two points now we can no longer access it giving it directly the point number so instead we need to determine based on our our positions on our geometry so our particles based on their position which of these points is closer and retrieve that point number so we can then import that point attribute so we can do this inside a pop net let's go ahead and drop down a pop net and I will just go ahead and we probably could have just copied one of the other pubnets but let's just go real quick and set the emission type here to All Points turn off the guide and let's set the life expectancy we want this to last longer so we'll use a value of 3. let's go ahead and drop a geometry node and we want to grab our points from outside so let's go ahead and from over here I might even do a null and this will be our lateral goals and let's go ahead and I will grab this Ctrl C let's go back here and inside our inputs let's access this from input 2 and point this to our sub our lateral goals so now inside our geometry Vault like we mentioned earlier we want to grab the nearest point from our gold points geometry so open input 2 let's do a near point and we want to grab it based on our position so let's plug our position inside the pause and now this will retrieve the point number that's closest to our particle so we can use this inside an import Point attribute and we can point the file to our second input so like I said earlier we need this near point now because we can set the PT num directly to a value of zero and now that we have the nearest point we can create this Vector that points towards our goals and we can do a subtract from our P let's subtract the position of our points and I think we have to reverse this Vector but let's just plug this inside the velocity and see what we get so if I press play it's going in the opposite way so like I said we need to reverse their orders with shift R and if I check the simulation now we are kind of getting the movement that we are after of course we still have to do some adjustments here but we are on the way now we don't really need to simulate the entire body mesh for this so just like we did earlier with the other simulation layer we can go ahead and remove all of the points that we don't need from our body mesh so I'll go up and what we can do to make this easier for us to select and also keep it fairly procedural we can just drop down a sphere and we can use a copy to point and use our goals as the source point so let's maybe arrange these notes and if I preview the result now I can grab the sphere and maybe we can also template our source points so we can see what we are doing here and with this sphere I'll press enter and I can go ahead now and increase the uniform scale and now we can use these spheres to just select the points that we are after so I will just increase this this size a little bit and what we can do is we can just do a group after our blast let's set this to points and let's plug our spheres in the second input and we want to use keeping bounding regions and let's use bounding objects so now I can do another blast node here let's set this to points and let's select this group that we just created and we will delete unselected so now I can grab the sphere and if I increase or decrease the radius we can grow or Shrink our selection so I think we are looking for something like this and I can also play around with the individual radio scales here so maybe I can do something like this and I can lower this on the Y and I think something like this will be fine so if I go back to the result now we have this and already if I were to just place this in our merge node so we can preview it with all of the effects we can see that this is the result that we get now we still need to fine tune this final layer but hopefully you can see where I'm going with this so let's go back to this layer here and the first thing that we notice is that there is this very ugly stepping in the movement of our particles and this is that pesky stepping issue that you will keep running into when you are dealing with particles in Houdini and I have a separate video dedicated specifically to how to fix various stepping issues and there are a couple of routes that we can take here we can either randomize the velocity per particle or we can fade in the velocity using the age of our particles which is what we are going to do so let's go back inside and inside the geometry vop let's go ahead and let's do a multiply after our subtract so after we get our Vector we can do a multiply and If I multiply this with age so I'll grab the age and place this as our second value for the multiply what happens now is that the particles will start with a speed of zero percent and over a duration of 24 frames so at 24 frames they reach one second which means they will have a hundred percent speed so we can see now that we are slowly ramping up their speed and we mostly get rid of that stepping effect and the overall effect is a little bit more organic now I want to speed up this process of increasing the speed so I want the particles to speed up faster and I can use a fit range after our age so let's drop a fit range here and let's reduce the source Max to maybe 0.4 so this will mean that roughly after 10 frames after a particle is born it will go from a zero percent speed to 100 speed so it just ramps up a little bit faster so if I preview the result now we get the initial speed that we had earlier and we get rid of the stepping so this is the first component of creating this movement now I also want a tapered look so I want this effect to have on each side a large base but I want the particles to pull inside a little bit more so they're not as uniform looking as they are here now in order for the particles to know where they have to go to create this pulling motion we have to create an additional geometry specifically we have to create just a couple of lines that will help us guide our particles so let's go up and we need to create these lines based on where our points are so let's go to our points and I might want to change the display here to points and there are a couple of ways that we can create this line based on the points but the easiest one will be to just give these points an ID so I will do an attribute verb here and let's step inside and we are going to create this ID attribute based on their point number so from the pity num we will do a bind export and let's rename this to ID and now I can go up and now I can use a transform node here and merge the result of this transform node with our original particle so if I just do a merge here and place the transform as our second input if I do an add we can go to polygons and we can set this by group and I'll set this tool by attribute and attribute name will be this ID that we created so now if I go back to the transform if I increase the uniform scale here we can see that we draw a line from where they originally were to where they are now with this transform node so again we have their initial position then we alter their position with a transform node we add these sets together and because they have the same ID that we set over here so let's maybe rename this to set ID so because each point has the same ID value when we add them together it simply draws a line between the points and we can use this transform no now let's go ahead and set this uniform scale to zero and I will just increase increase the position on the Y until we get the shape that we are looking for and I might want to template the geometry as well or rather it would be better if we template the particle so let's template our particles and I can better judge where our transform position should be so I can increase the direction on the Y here to something like this and we can now use this geometry to make our particles get closer to this curve based on their position so let's do a null here and let's rename this to curve I'll go ahead and grab this node with Ctrl C and let's reference this in our geometry verb here so in input 3 sub I will set the path to be our curve let's go inside and we will need to create a new Vector which we will add to our original Vector so the result of this multiply I will go ahead and duplicate our vob Global inputs and we can use minimum position to grab the closest point where each particle would fall on our curve so from op input 3 over here which again references our curve geometry let's do a minimum position we will generate this mean pause from our position so if I want to preview this result I can plug this directly inside the p and we can see now that all of the particles maybe I can do a mix here between their original position and their position on the curve I can use this bias to demonstrate what's happening so this is where they are initially and again the main pause will find the closest position on our curve geometry so each point will go over to this position where it finds on the curve I'll go ahead and let's get rid of the position connection I'll get rid of all of this so now we want to create a vector from our position to this new position on the curve so from our P we will do a subtract let's subtract this minimum position and we will add this to our original Vector that already has this this direction so from the subtract over here let's add this to our vector and let's see what we get now we can see that the particles are actually going away from our curve and this is because we have to reverse our Vector so shift r on this subtract and now if I play the simulation this will be the result and this is the movement that we want and for example if I want to make this effect A Little Bit Stronger so I want this taper to be stronger I can do a multiply constant here and I can increase the length of this Vector so if I do a multiplier of 2 here our particles will start to move towards our curve even faster so we get this result now this is probably a little bit too much let's maybe use a multiply value of 1.3 this should be fine all right and we can press play so this will be the initial movement and I can always just go up and go back to our points and if I change our position for our point so if I place this up I can always go back and now our particles and then our smoke simulation as well will follow wherever this point is so let's maybe just place this back roughly where it was to something like this and I think we are on our way and one final thing that we want to do here is also add a little bit of noise as well like we did with our other simulations when we added the pop wind only in this case we are just going to add the noise directly inside our geometry pop so I will step inside here let's maybe just create another copy of our inputs and we want to use a curl noise for this so let's drop down a curl noise and I will set the signature to 4D noise because we also want this noise to evolve so from our P we will do a vector to let's see Vector to Vector 4 and let's place the time as our fourth input this will be our position and for the scroll noise let's go ahead and use simplex and let's place the result in our ad and see what the default settings will give us so let's press play and I think this is actually looking pretty good with the defaults I might want to reduce the amplitude just slightly and I can increase the frequency so the time frequency the fourth component over here to make this animate faster so it's a little bit more chaotic and more like fire alright maybe an amplitude of 0.8 will be my final value here and I think maybe I want the points to be further apart so we increase the length of this effect overall so I will go to my points here and I will just move them over to the side slightly more let's press play right so this is slightly better now when I created the original simulation I did spend a lot of time adjusting these settings but this is mainly how I set up this entire pop simulation let's go to our merge result and see how everything is coming together alright so this is pretty all right maybe I can use pixel display here and I think I want to increase the radius of our fourth layer so this one over here and I can go back to the sphere which again these spheres are being used to cut up our sources over here so I can increase this sphere radius a little bit more and let's go ahead and re-simulate all right so I think this looks slightly better like this now again I will leave you to fine tune all of the settings to get exactly the movement that you are after one other thing that I can see here is in the original example as well my lateral points were also a little bit behind the character so if I press enter I can also bring them slightly behind or something like this and I can re-simulate so it also has a little bit more depth like this I think I can even place them even more behind and re-simulate all right so I think this looks slightly better and by doing this we can also get a really good idea of how the final simulation will look like and at each point I can go to each of these layers and I can hard direct this further and get exactly the movement that I'm after so after we merge everything together we can recolor all of these particles based on their rest attribute so we have a rest attribute for all of our sources and I will go ahead and grab either of these add noise attribute whops so I'll go ahead and grab this for example so again this is the one that's setting the color let's paste this over here and we will use this as a base Now the default result will be using the position of where the points are in space so what we want to do is go inside and let's grab our rest attribute so over here I will type rest and I want to use this as the position from where we get our noise values and let's set this type to A3 float so now the noise is sticking to the geometry and I can increase the frequency and I will also want to decrease the minimum amount so I want to make this brighter overall and maybe I want to increase the frequency even more and let's set the speed here to a value of 2 and let's play the simulation so we end up with something like this and the reason we want to use a noise over here and also I want to increase the offset for this just so we make sure it's a different pattern from the rest so the reason we want to use a noise here is because we are going to use these noise values to create our density attribute so when we do the volume rasterize and turn all of these points into a volume we want to have variation in this density so we are going to use this noise values speaking of which let's go back inside and now our noise is currently assigned to our color but we also want to use the same values as our density so in between the fit range and the color I will do a bind export and and over here I will also create this density attribute so if I go up we have one more thing that we want to take care of and the problem that happens here is because we are overlaying a lot of particles together we don't really have a consistent gap between the points and this is pretty important when we turn the points into volumes so for example if I were to do a pyroscatter over this geometry and this is just to illustrate something so if I do a pyrosource rather so let's do this and let's set the mode to surface header we can see that the points have a consistent distance between each other so let's also maybe use Point display and maybe I can decrease the particle separation so we can see this better and this is the type of source that pyro prefers as opposed to a regular scatter so if I just do a normal scatter over here and turn off relax iterations and increase this we see that the position of the points is a little bit random and the points themselves are not really trying to stay away from each other so they're not really respecting each other's space especially when I compare it to the pyrosource like this now this isn't necessarily a big problem some of the time you can totally use the volume rasterize on scatter points that are like this the problem is that when we are turning the points into volumes and we have a bunch of points like like over here where they are very close to each other when this is turned into a voxel the density values of the points will be sort of added together which means that we will have a much higher density where points are very close to each other and a lower density where there's more space between the points and especially in our simulation here where we have really a bunch of points that are really close to each other and are kind of on top of each other we will have a much higher density value in those regions and that will make our pyro simulation lot harder to control so we need to somehow turn all of these randomly scattered points into something more uniform and the easiest way that we can do this is if we use a fuse node so if I drop down a fuse this will merge all of the points that are within a distance threshold that we set over here so if I increase this to a value of 0.035 this essentially now means that for any given point it's going to look in a radius of this value over here so 0.035 and if it finds a point within that radius it's going to merge the point so we can see the result here if I turn this on and off that we really get rid of a lot of these overlapping points and wherever we have areas like this where there's not a lot of points that are overlapping we kind of have the same result but over here in these other areas where there's a lot of overlaps we are only going to keep the points that we need in order to do our volume rasterize so all I'm trying to say with this is that we kind of have to preserve a point separation value in this simulation in the same way that the Pyro source does for us automatically over here so now that we have set up everything we can go ahead and let's do a file cache I will set this base folder to my job variable let's give this a base name so this will be our pop Sim and because we are going to simulate this in real time and then speed it up we need to Cache a lot more frames than what we need so if we want our animation to be 150 frames and we know we have to ramp up the speed twice or maybe even more we have to make sure that we save at least 300 frames or more so in my case I will just save 500 frames to be sure and I will save to disk and now we are ready for the Pyro simulation let's go ahead and after our file cache I will just drop down a null and this will be our aurig Pop theme so original uh Bob simulation and I will grab this node and let's create our pirate simulation chain over here to the right just so we keep things organized I will drop down an object merge and paste my particles here and then we can access it from this object merge so the first thing that we need to do is turn all of these points into a volume so we will use a volume rasterized attributes let's set the attribute name here to B density which is the one that we created with the noise and by default we don't have a particle scale this will default to one and we want to set the particle scale to a lower value let's try 0.1 and we can probably keep this at 0.1 for now at least and for voxel size I will also leave this at the default 0.1 because we will link this later with uh the voxel size of our pyro simulation so let's also turn on velocity blur because we have a velocity attribute and we can use this velocity blur option here to smear our particles in the direction in which they are moving which will give us an overall smoother result for this volume and it will also help us fill the gaps between the voxels so for the main shutter setting here let's set this to 1 shorter offset let's set this to negative one so it looks in the backwards Direction and let's also increase the blur samples maybe 10 will be enough so this will be fine and this will be our density source so let's rename this to SRC density and we also want to use a second volume rasterized node so let's go ahead and duplicate this by holding out and the attributes that we want to rasterize here is going to be V so this will be basically our initial velocity field that will drive the movement of the smoke and it's going to be based on our particle Source because we have this velocity attribute so if I turn on the velocity display here we can see the velocities for all of our points and we are using these points to create this velocity field so by default the display of this isn't really helpful for us so we can do a volume slice from here and we can plug this into a volume Trail and if I visualize the result we can better estimate how this velocity field looks like and let's maybe create a null here as well and we can use this to point to this velocity field so we will name this to SRC V so the volume name for this will be this V over here and for the volume rasterized attributes we want to maintain sort of the same settings so one thing that I will do here is I will reduce the particle scale for this to have so 0.05 so now in terms of simulation this will sort of have our velocity field will have a smaller in influence on the movement of the smoke if the particle scale here is set to a lower size and I know this ahead of time because of the initial test that I did so we have to be mindful that the particle scale in both the cases for the density and also the V attribute this particle scale is very important here and once we decide on a certain particle scale we usually don't want to change this so we can change the voxel size and we can increase this resolution to get a higher quality simulation but usually we want the particle scale to stay the same in both cases one other thing that I can do for this velocity volume is we can do a point velocity before we do the rasterize so if I go to this point velocity let's set this initialization value here let's set this to keep incoming so we maintain the original velocity attribute that we had and I will go to the curl noise Tab and just turn on this add curl noise and I will increase the scale here maybe a bit and let's decrease the pulse duration so we make this faster and I will also decrease the throttle size so now this will also add additional noise on top of the Velocity that we already have and we are going to maintain the velocity that we had for the most part and we can use this to introduce just a little bit more variation to make our simulation have more interesting motion and more features so we can come back and adjust these values later let's go ahead now and I will drag this over to the side I will grab the source density and the source volume hold down alt and drag a wire here so we can merge these volumes together and then from here we can drop this into a pyro solver okay and let's go ahead and link up the voxel side so let's right click copy parameter I will link it to our first volume rasterize and also two hours seconds so our velocity field let's go back to our power solver settings and let's take a look here at some of the options that we will need first things first let's go to the sourcing and let's get rid of everything except for the density and our V and since we have this V volume here that we created with the rasterize we can go ahead and preview the simulation as it is and we can see that it kinda has this direction that we are after so the letter will spread and this upward movement of the fire but the default sourcing here for the velocity is this add operation so this will make our velocity field be a little bit too strong and sometimes we want this operation to be add but in the case of this specific simulation we want to blend in the velocities slowly over time so we have a much more controlled motion so I will set this operation here to pull and if we are using a vector field we want to turn on Direction strength as well and for the Excel duration strength this is how fast we are blending in the velocity field so I will set this to a value of 10 and again this 10 value here is what I ended up using when I did the original test but it took a little bit of experimenting until I get to this value so feel free to try different values for acceleration deceleration strength I usually leave to one for maybe 99 of cases so we only have to usually worry about the acceleration strength so let's go ahead and reset our simulation and if I press play we see now that the smoke is a little bit slower but it's still going in the direction that we want so this will be a decent start let's maybe go to our setup and let's decrease the voxel size here to 0.05 so now we essentially doubled the quality of the simulation so if I press play we get a much nicer result now so let's fine tune this simulation and I will go to the fields here and make this dissipate a little bit faster so I want the smoke to not not last as much I will just increase the dissipation here to point 15 maybe we also don't need this flame field because we are only dealing with smoke and I will also turn on the speed field because we want to use this speed fill to map different micro solvers to this field speaking of which we can go in the shape Tab and I want to turn on disturbance let's go ahead and I will maybe increase this value to let's try a value of three threshold field we look for density so that's fine and I will also turn on this use control field which we can see that by default it will look for the speed field that we turned on over here in the field step so let's go back here and this essentially means that in order for the disturbance to be applied the smoke will need a minimum speed of 0 over here so I will just increase this and say that we need a minimum value of 0.2 so now wherever the smoke is not moving as fast we won't have this disturbance take place I will also turn on the turbulence and for the settings here we will set the threshold field to look for our density because we don't have a temperature field and for the most part the default settings should be fine over here let's go ahead and reset the simulation and see what we get so we can see a little bit of disturbance and a little bit more breakup and also some overall noise from our turbulence so I think this is looking all right and now that I'm seeing our pyro simulation I can safely say that we might need a bigger source for our spreading layer back in our pop simulation so now we can actually go back to our layers here I will go to this spreading layer let's preview a few frames and let's just increase the area of effect here so I will go to my spheres here let's go to the sphere size and I will just increase the uniform scale and just make this bigger so now our source is bigger as well and I will also grab our goals here so I will grab this point let's press enter and I will drag this over to the side and we can see that we have to go back to our spheres to readjust our sourcing but I just want to make this lateral spreading a little bit bigger and probably something like this will be fine let's go back to our sphere and I will increase this size back so now if I look at my simulation all right this I think will be a little bit better so I want an overall bigger influence on this lateral spreading let's go back now to our first simulation and for this first layer that just adds a little bit of overall noise throughout the simulation I maybe want the particles to last a little bit less than they currently are so in our pop sources let's set the life expectancy here to 0.4 and let's uh reduce the light variance to point 15. so I don't want these particles to last too long so they push the spiral simulation even more because we already have a lot of noise going on from our microsolvers as well so let's check out the result and I think this will be slightly better so let's go back up and we will re-cache all of our particles now so this will be our new simulation let's go back to our pyro Sim and see what this will give us so let's press play so now we sort of have a better result we have a better silhouette of this effect so I think we are on the right path now now one simple thing that we can do with the simulation to help our smoke integrate better with the character is we can actually use the character as a collision object so let's go to our geometry here I will grab our geosource so again this is just our character let's uh go over here and let's do an object merge bring in our character geometry and we want to use SDF Collision so let's do a VDB from polygons here and since we are using an SDF we can go ahead and grab the resolution of our pyro solver let's copy parameter and we want the same resolution to be on our SDF so for our SDF options here we want to fill interior because we want to have information all the way inside our character for the collisions to properly work and I can place this as our second input which is our Collision volume so let's go to our pyro solvers and in the Collision tab we can set this to SDF plus volume collision and for the Collision SDF let's go ahead and remove this and let's point this to our surface Collision because this is the name that was given by default when we create this SDF all right so it's pointing to our surface and we don't have a volume velocity because this is a static mesh but if we would have been working with an animation we could have used this velocity volume as well so let's reset our simulation and see what we get so now our smoke will follow the shape of our character mesh even better so this will will help us a lot when we are actually affecting our particles in the later section and we can actually see that this looks pretty cool and pretty close to the final result and just for fun I can do a pyro bake volume from here just to shade this effect a little bit nicer and I will turn off this assigned material which usually just gets in the way since I'm using redshift most of the time so let's go ahead and uncheck this let's go ahead and let's enable scatter and for the bindings here in the scatter tab let's set our source volume because we don't have a temperature we will set this to density and let's go back to our scatter and play around with the settings and see if we can get something that looks a little bit cooler so I will just mess around with some of these settings here and we usually want to increase the dense the density scale of our smoke so I can increase this as well and let's set the small color here to be something darker so we end up with something like this maybe we can play around with the settings even more or we can uh we can change this mask scatter until it goes the other way sort of so we can have something like this or we can just go ahead and get rid of the of this the density entirely and uh probably we can just use the fire here so in the bindings let's also point the fire to our density and also the color volume and now if I decrease this we just have uh just plain old fire and I think this looks actually pretty good so we could definitely render this as a volume as well but usually if we render it as particles we kind of get a more magical and stylistic look so that is the style that I'm going for in this effect but definitely you could 100 render this as volumes all right so let's leave this here for now let's go back to our pyro solver and there's one final thing that we want to do here now depending on the look that you're going for this might be what you want but I want the ends here for our lateral spread to be tapered a little bit more so we increase the strength of the overall silhouette so we are going to use the Divergence field as demonstrated in the first lessons to help us squeeze our fire more into these two points on the sides here and this is also good practice to show you different ways that you can control a pyro simulation so let's go ahead and create this Divergence field and we will base it on our goals that we created here so we can grab this entire setup that we have here where we create our spheres that we use to cut a part of our sourcing so I'll go ahead and grab all of these nodes Ctrl C and I just want to bring them over here to the side and let's go ahead and look at our or rather template our particle source and let's go over here and I will leave these spheres as they are and let's just turn them into an SDF so from here I will do a VDB from polygons and we don't really have to use a high resolution here because this whole volume this whole SDF volume is going to be simply to help us guide our particles into a specific shape and we don't really need a whole lot of detail here so I will leave the voxel size at 0.1 but we do want to fill Interiors so we do want to have information from the surface all the way to the center of each of these spheres so we need to turn this field interior option on and the default name that we have here is going to be surface let's rename these two Divergence because we also have this surface name here where we are doing our Collision so let's go back here I rename these two Divergence and now I can simply merge this I'll go ahead and grab both of these nodes with the volume slides and volume Trail and delete them so this was only for visualizing our velocity field I will grab this merge and just bring this up and now I can plug this VDB from polygons let's maybe just drop a null here to keep things organized and this will be my Divergence all right and I will plug this in our merge and now in our pyro solver let's go ahead and reset the simulation or go to the first frame and in the sourcing let's add another source and we want to Source our Divergence we can see that we don't have this we only get our density here so we will just type Divergence and the Target Field will be Divergence as well and I just want to mention that this name that we gave this here doesn't have to be divergency it can be anything so we can do something like pull and I will just have to use the same name here as a pull but the Target Field has to be Divergence so this is the built-in name that Houdini recognizes the same way we have Vel over here and density here these names can't be changed but their Source volume can have any name that you want now for the operation here I will want to blend the Divergence values as well so again I will use a pool operation and for the acceleration here I found that a value of 25 was fine in this case and I also increased the source scale to 8 here and again both of these values are values that I came up with by doing a lot of experimentation so if I play the simulation now let's also on template our source so we can only see the smoke if I play the simulation now we can see that we get this tapered effect that we were after over here to the sides so our smoke is also pulling towards the center of our spheres but also so this is making our smoke contract so we are losing volume towards the center here which in turn will make this tapering effect even more pronounced so this is perfect to what we want and in fact I will do a file cache and I just want to show you the difference between using this Divergence field and without so I will go ahead and I will just cache maybe 80 frames and I will uh let's set the base folder here and maybe this will be our volume let's set the name here to Velocity field and save to disk all right and I will go back to our pyro solver now and disable this Divergence and let's do another version without this Divergence so we can compare alright so check it out this is weight Divergence and this is without Divergence so we can see that even over here in the head area we are actually grabbing some of this density and pulling it towards the center of our spheres as well so this is how we can use Divergence to shape our pyro simulations in very specific ways now when I'm looking at these two simulations side by side maybe the scale of this Divergence effect is too strong so I can go back to the Pyro solver let's turn this back on and let's reduce the source scale here by a value of 4 and I will go ahead and let's save to disk so now when I compare we have a tapered look over here and we maintain sort of the overall motion now like I said earlier depending on what you're going for you might not want to use this Divergence technique over here but it does come in handy a lot of the times when you are trying to get a very specific look for your pyro simulation especially since the Divergence like I said can help us reduce the overall volume of a simulation and again the default behavior of a virusimulation is to preserve the volume so it's very hard in general to squeeze the simulation in a specific point so this will be our pyro simulation let's set this to the first version I'll go ahead and remove the Pyro bake and from here I can drop down a null and this will be our velocity field so I'll rename this to well and we can go ahead now and do our particle advection and one final thing that I want to mention here is if I go to the power solver we set the Divergence Source scale here to a value of 4 but normally when we are sourcing in Divergence and we are using positive values the default behavior of the Divergence is to expand the smoke so normally in order to have the contraction we would have to set this to a negative value so we would have to use a negative 4 here instead but the reason we don't have to do this is because when we create this SDF so if we go to our spheres our values inside the Spheres already have a negative number so if I do a let's just do a VDB visualize 3 from here and template our sphere geometry so the way way the SDF works is when we are going inside the geometry we will increment a negative value so we have a value of zero on the surface and when we go further inside we will have negative 0.1 negative 0.2 and maybe in the center here we'll have a negative five value so because this value is already negative when we go to our pyrosource here we don't have to set the source scale to a negative value and this is specifically when we are working with sdfs if you were to use a regular volume and you want to obtain a contraction you would probably have to use a source scale with a negative value so that's just a little FYI for this and now we can work on the particle adduction so for this next part make sure that you have watched the fixed particle stepping video and also the gradient advection video where I go over in depth over the techniques that we are going to be using so now to start with our particle infection we will need a source so we will need to Source our points and we can actually use the same source that we kept using when we created the initial pop simulation so I'll go ahead and grab again these four nodes let's Ctrl C let's bring them over here and in order to avoid this long line that goes along all of our networks let's go ahead and get rid of this connection and we will do an object merge instead and we will point to our geometry node so let's grab our geometry Ctrl C let's paste this over here so we can recreate this chain and we have this particle source so we can go ahead and for our noise we can increase the frequency for this and I want to decrease the minimum value so we want to bring in more points and we don't have to spend a lot of time right now because we can adjust this later but I will want to increase the roughness here as well so something like this will be fine and this is perfect as a starting point and now we will do our pop simulation so let's drop this inside a pop net let's go inside and for our emission type set to All Points let's set the barf here let's maybe give this life expectancy a value of 3 and we can come back and adjust this later also introduce some live variants so let's set this to one disable guides and now we can do the advection so let's do a pop at vect by volumes and we will go ahead and go up let's grab our velocity Ctrl C and we will go ahead and point our sub path to this velocity for advection type we want to use update position for velocity update for this this we will do final velocity because we do want to update the velocity of our particles towards the other frames as well so let's press play and let's first set this back to pixel display I will play the simulation and let's see what we get so we can see that by default uh this is a little bit too chaotic and let's go ahead and do the volume gradient as well so I will go up and we want to compute this gradient velocity from our initial pyro simulation and let's do a volume analysis and we will compute the gradient here based on our density so now I can also drop in now so we can point to this let's rename this to gradient let's remember however that our new velocity value is based on the density so the name will be density as well so I'll go ahead and grab this null and Ctrl C and I can go back in our pop net let's duplicate our pop-up vac by volumes and we'll plug this after our first one and for the second pop-up fact we will point this to our gradient null and the field name here like we mentioned has to be now density and by default the velocity scale is way too high so let's set this to a very low value something like .01 and now if I play the simulation we get a closer result to what we are after so essentially we are squeezing our particles towards where there are higher density in our smoke simulation and this velocity scale I think is still too high so let's set this to 0.005 and let's play the simulation so I think something like this is very close to what we are after and I think this will be fine let's make our particles last a little bit less and I will set the life expectancy to a value of 2 like variance of 0.5 so let's play the simulation again and I think the particles are still lasting too much uh or rather too long let's go go back inside set the life expectancy to 1.5 and let's leave the light variance at 0.5 so I think this will be my final values for the life okay so this is slightly better now let's also scatter fewer points here while we are working on the simulation just so we have a faster preview so I will reduce this Force total count here and let's reset our simulation all right so this will be enough points for us to judge uh if we are having the result that we are after and we can see that when I play the simulation our particles stop at a given point here and this is because I forgot to set the cache frames here we also need to Cache 500 frames for this so I will set this to 500 and let's save to disk and one other thing that I want to do here is if I go inside I want to blend in the velocity scale of both of these pop-up vect nodes so let's go to the first one and I will turn on this use of expression and we want to blend in the velocity Scale based on our particle age so this is exactly the same thing that we usually do and the technique that I explained in the fixed particle stepping video so we will say that will scale multiplies equal to fit and in between I will say at age and from let's say 0 to 0.2 so this value here is in seconds let's blend this from 0 to 1 and also I want to blend in the scale of the second one as well so I will turn on this use of expression let's go to our first one and I will just copy this expression here and let's paste our code and in the case for the second one I want to blend this over a longer duration so I want a slower blend and in order to do this I will increase the second value here for our feet expression so I will say that maybe from 0 to 0.5 I will want to blend in the strength so overall this should help us get a smoother result from our sourcing position to the final position so if I play the simulation I'm not sure how noticeable this is so you'll just have to trust me that this provides a better result for us also following the same idea from our pyro simulation we can make our particles collide with the mesh as well so so with the character mesh so I will make some room over here and let's go up and grab our geometry so over here where we have our geometry I might just do a null to the side and let's rename this to jio call for geo collision and I will grab this now let's go back inside and do a static object and bring in our Collision object so our geometry and let's merge this in our chain so let's place this here and this here and be careful of the order here so we have to make sure that the static object is on the left of this merge let's reset our simulation and now we can see our geometry here I'll go ahead and turn off display a geometry because we don't really need to see this and if I play the simulation now again this might not be super noticeable but now it is colliding with the geometry and when we do our higher quality resolution simulation and we scatter like 10 million points this will be a lot more noticeable all right so we are on the way and now if I go outside we see that we also bring in the Collision geometry so in the object merge here we can set this object to be Star Pop and another star so it will only export to the sub-level the pop object so only our particles so this is the current state of the simulation and what we can do from here is we can help create that tapered look even more on the sides of the simulation and even though I'm pretty happy with how this looks I do want to show you that you can still alter the motion of our particles after you advance them so you can combine them with different forces and we can create this force that will pull our particles closer to our goals by simply creating a vector from their position to our goals sort of the same thing that we did earlier with the near Point function so let's go ahead and look for our goal points so our lateral goals goals here I will go ahead and I will just bring this over do an object merge and just bring this over here and I will set this as our second input in uh in the pubnet okay so again this object merge is simply our goal points let's go inside and after our advection over here we will do a geometry vop and let's set our second input here we will use second context geometry we could have done the same thing by setting this to soft and just updating the path here but I just want to show you that you can also use the context geometries so if I go up it's going to be this it's going to be the inputs of our DOT Network here anyway let's go back inside so this is looking at our goal points and inside this geometry vop I can go ahead and let's do a near Point function and we will base this on our own position and now this will retrieve the point number of our gold points so it's either going to be zero or one so we want to use an import Point attribute to retrieve the position of our points and again the file will have to be our gold points file so our second input and then from our current position if I subtract the position of our goal points we essentially get a vector that's going to point towards these goals and we can grab our current velocity let's grab the current velocity as it is and place it as our output velocity so essentially we are doing no changes and to this velocity I will then add this Vector that we create with the subtraction so I will plug the subtract result inside our add and let's reset the simulation and see what we get all right it's going in the other way let's go ahead and fold the subtract I'll press shift R to reverse the order so now we should get the correct vector and if I reset the simulation we see that we get the same result that we had earlier but we also see that we are maintaining that advection that we had so this flowing motion but obviously this Vector is too strong so let's first of all normalize this Vector so let's do a normalize here so it's a unit length of 1 and let's reset and see what we get so now this is slightly better now this is actually a very cool result of its own so hopefully this will give you some ideas of the stuff that you can do but what I want here here is I want to have a radius that determines the strength of this Vector so I only want this Vector to be strongest here where we actually have the point and in order to scale this vector by this radius we can simply compute a distance from the current position of our particles to this end goal position so using the same position here where we grab the position we can grab our current position and we will simply do a distance so we will grab the distance of our current position to the position of our goal points and now essentially this creates this radius that we talked about and to further control this we can also do a fit range and now all we have to do is multiply our Vector that we created here so after our normalize we will do a multiply and we will scale it with the result of this fit now currently we are looking for a distance value from 0 to 1 meaning that when our particles are going to be one unit away from our gold points it's going to have a speed of one so first of all we need a reverse effect happening here so I want the destination mean to be one and the destination makes to be zero and now essentially the closer the points are to this goal the stronger this Vector will be and the stronger the pulling motion itself so let's go ahead and re-simulate and see what happens all right so probably this is a little bit hard to tell but for example if I were to increase the source Max here for our feet this essentially determines the area of effect so if I increase this to a value of 5 let's say and reset the simulation we can kind of see that this will start to grab the particles that are further away from the end goals and it's going to move them towards the end goal so let's maybe just go up and go to the top level here and let's do a file here so we can compare with and without this additional movement so let's uh set the base folder here to job this will be final pops and we can probably only simulate 100 frames to test this let's save to disk and then I will go to version 2 here let's go inside and I will get read or rather disable this geometry Vault node with q and let's go back up and we will recatch the simulation without this pulling motion so as I check the versions now we can clearly see the difference this additional motion has for us so with this additional Vector we see that we enforce this lateral movement of our smoke and I think this looks just slightly better now over here towards the head I'm not sure how noticeable this is but if I look at the version without the bullying and go back to the pulling version I can kind of see that some of these particles from the head are pulling maybe too much towards our end goals so we can scale down this radius that we were talking about if I go back inside let's enable this back and let's go back here and let's reduce the source Max to a value of three let's go up and and let's increment this maybe to version 3 and let's save to disk so now if I compare the versions this is with a radius of 5 and this is without any pulling and then this is with radius of three so now that I'm seeing this uh if I compare version one with our other version with a radius of three I think maybe a radius of 4 would have been the right balance between having too much and not having enough so I will go back inside here and setting the radius for our source Max here to four and now this should be good for our final simulation let's go ahead and I will just override version one and save to disk all right so this will be our final seam okay so now we can compare it with the pulling and without the pulling and hopefully you will agree with me that with pooling we have a little bit more intent in the movement overall and it's helping the effect give it a better and more pronounced silhouette let's take care of the coloring now and because we added this noise here for our source we have a lot of variation in our color now we don't actually have color we just we're just working with black and white values but we can map those values to a color gradient and we can simply do this with a color node if I set the color type here to be ramp from attribute I can point this to the same CD attribute so our own color and now we have the same thing and now I can grab this handle here and we can change this gradient to something that that more closely resembles fire so I will give this an orange color with a little bit of a red tint and I also want to make sure that we have whiteness in this value so we will reduce the saturation just a bit and I will also squeeze this range a little bit so I can decrease this second value here to have a little bit more of a contrasty look so let's maybe do something like 0.5 and honestly what I'm doing here is I'm just mimicking what happens inside the Pyro bake inside the Pyro bake node so if I do a pyro bake volume if I turn on the fire for example we can actually just go ahead and I can copy parameters so we can use the same ramp that Houdini uses for the fire and I can just paste the values over here so this should give us the most accurate looking fire I'll go ahead and get rid of this pyrobate node and something that I usually like to do with particles to visualize this better in our viewport I can multiply the color and this will give us a way nicer effect so I will drop down an attribute whop let's go to our color and Let's do let's place this back in our color and in between I will do a multiply and I will promote the second input so if I go up now if I set this to 1 we have our original result but now as I increase this we start to mimic the way a fire would look so if I increase this to a value of 3 we are getting a cooler result and also the other thing that I usually like to do is I can set the alpha to a lower value so the alpha is an attribute that Houdini internally recognizes sort of like color or P so I can just go inside here and I will do a bind export and I will set this to be Alpha with capital A and I will promote this input let's promote parameter and now if I go up I can use this value here to make our particles a little bit more transparent and we can see that we actually get a way cooler result now this won't affect our render in this case because we are using redshift so it doesn't affect the material or the render unless we explicitly use this Alpha attribute again this is just for viewport purposes uh you can hopefully you can agree with me that this looks a lot better and closer to what we are actually going to end up rendering and now I can also increase the color multiplier so our first value here and this actually looks a lot more like fire essentially when we reduce the opacity of our particles we get that additive effect that happens in render time so again this is just something I like doing for reviewport purposes so I can rename this to viewport previous and we can now play back our animation and this is what we have alright so pretty cool now I will admit that the way I color these particles in this particular case it's pretty simple and straightforward we could have gotten a lot more complex by using the age of our particles to map certain colors or use a rest attribute to generate some noise values but honestly I think just a simple ramp in this case gets us maybe 95 percent there so with that being said I do encourage you to try out to color these particles in different ways and see what you can come up with and one final thing that we have to do here is we have to speed up our particle so we can do a re-time and I want the input frame range to match our cache frame range from the file cache so I'll go over here and whatever cache we are using here I will copy parameter and I will want to paste relative references here and let's just set this speed to a value of 2 and see how this will look all right and uh this stops because we don't have enough cached frames but this will be enough for us to tell if it's uh fast enough so probably I think we can go even further we can do something like 2.4 let's try this okay so I think this actually looks pretty alright now I know that we have to Cache again 500 frames so it matches our other simulations I'll go ahead and set this to 500 and because we have to catch a lot of particles we can also clean up the attributes of our particles so we don't store as much data on our hard drive Let's do an attribute delete here and if I look at my point attributes let's go to our attribute Elite if I look at all of the point attributes we kind of need the color and the velocity and the age maybe if we want to do further adjustments and we see that we have a lot of these heat attributes so hit an ml hit num heat path we don't need all of this so I will say that if your attribute starts with hit I want to get rid of all of those attributes so I will type heat and followed by a star and if I look at the attributes we don't have any of these heat attributes so this will help us save a little bit of disk space now if I go forward until we have all of the particles on the screen we are working with roughly 140 000 points so if I go to the scatter over here and I add another zero this will mean that we will end up at 1.4 million particles and let's say that I want around 10 million so I will probably have to add another zero here so now we are working with 14 million points now this might be a little bit too many let's just I will turn this first 4 into a value of 3. so probably this will make us end up at around 9 million points which should be plenty so now I can go ahead and let's save to this so we can take a look at our final result now so I think this is looking really really cool even as a viewport preview I think this is looking great and maybe I can also so preview the geometry so we can get a better idea but I can say that I'm very happy with this result so this will be our main layer and I also want to show you how to create some really cool looking Embers like this because even though this looks pretty simple there's actually quite a bit of stuff that you have to get right to get a really cool and convincing result and now we can start creating the Embers let's create another geometry container and I will rename these two effects Embers and I will step inside we can start with any kind of source and we should keep this source as simple as possible so I will just drop down a grid I will press enter in my viewport and while holding shift I'll grab these handles on either side and I just want to make this a little bit more thin and I can also maybe expand this region a little bit and we can use this as a source for our particles now it's always good to introduce Some Noise to your sources so in order to have enough resolution here I will drop this into a remesh and uh probably 0.2 here will be fine and then I can use a mountain node and I will turn off this noise along vector and I can increase the element size so we just want to add a little bit of noise and we can also animate this noise so in the animation tab I will turn on anime noise and let's take a look at the speed maybe we can reduce the pulse length to make this faster and I believe this will be fine let's increase the amplitude slightly and now we are good to go so from here I will do a scatter let's turn off relax iteration and we only want to scatter a few points here and we want to randomize the global seed so for expression here I will use dollar sign FF so now we get a different scatter each point and we want to give this particles some initial velocity so we can do the same thing we did in our initial pop simulations where we create a separate point that we can use to drive our Vector so I will drop down an add let's create this point and let's press enter and I will just drag this down slightly we will go back to our scatter and let's do an attribute warp let's plug the point in the second input here and I will rename this attribute of Optus set V let's go inside and let's grab this point position so we will do an import Point attribute promote the PT named constant of 0 and we can do a subtract so we will subtract our position from the point position and if I plug this result inside the V Let's also turn on the visualizer which is set to this V attribute and now we can visualize this velocity so now I can go up and I can grab this point press enter and let's say that I don't want as much lateral spread so I will just place this point a little bit more below and I think this will be fine let's go ahead and normalize this velocity value so we can better control this vector and also we can randomize the length of this Vector now so let's generate a noise I will just copy over my inputs and we can do a turbulent noise for this we can leave this as 1D input because we want to randomize the length and let's leave this at the alligator noise and we will multiply what we have by this value so if I plug this here this will be the result let's actually set the noise to a simplex and let's do a fit range here so we can control the values and I will reduce the source mean to a negative 0.5 and also the source Max as well and I can go to the turbulent noise and I will increase the frequency and also the roughness so we introduce even more variation and we want to animate this noise and the easiest way that we can do this is we can use the time to create a new Vector so I will plug the time inside a flow to Vector node let's use this as our second component and let's plug this inside the offset so now our noise is animating as well and this will be fine for our starting point let's go up and I will remove the visualizer let's plug this inside a pop net and let's do our usual setting so we'll go inside and for the pop Source we will use all points turn off the guide and for the birth let's start with a value of 5 and a variation of two let's press play and see what we get now we do have this nice velocity so I'm pretty happy with the direction but obviously we need these to go faster so we can go inside the attributes Tab and there's this inherit velocity scale here that we can use so if I just increase this and and set it to 10 now our particles will be 10 times as fast but they will maintain the direction that we set so if I play the simulation we get this result so this is fine for now let's introduce some drag to these particles so we will do a pop drag and let's attach it here by default the resistance is one so let's see what this will give us okay so we have a nice initial burst and then they slow down we might want to reduce the resistance so let's try a value of 0.25 and let's also adjust the life of our particles so let's go to the birth tab here and let's set the life expectancy to a value of 2 and a live variance of one so I want them to disappear way sooner so let's reset the simulation and see what we get okay so we are getting closer and the one thing that we can do to to introduce more variation is we can randomize this air resistance per particle so what we can do is we can turn on this use of expression and we can do a quick Vex line to randomize this resistance so this parameter name will be error resist so I will type this here and I want to take whatever value we have and I want to multiply with a random value based on the ID of the particles so we will do multiplies equal and we can do Rand which will give me a random value between 0 and 1 and we want to use the ID as our seed so now if I play the simulation some of the particles will have a lower resistance and some of the particles will have a maximum resistance of 0.25 now we can also further control the 0 to 1 value if we do a fit range so we can do fit 0 1 and in between parentheses let's say that maybe we want to scale this resistance between 0.5 and let's maybe say the maximum 1.4 and let's see what this will give us all right so I'm pretty happy with this result so far the final thing we will need is also some wind so let's also add a pop wind let's turn on the amplitude we need quite a higher amplitude here let's try 1.5 let's also reduce the pulse length a little bit and let's see what this will give us so we can see that the pop wind is working so I'm pretty happy with this we might want to increase this amplitude even further and I might want to have even less resistance let's try a value of 0.15 so I don't want them to stop so abruptly so let's play our simulation and I think this is slightly better and one other thing that we can do is we can randomize this initial velocity so we can randomize the direction itself so if I go up and look at my velocity attribute with our visualizer we randomize the length of this Vector which pretty much randomizes the speed but we could also randomize the direction so what we will do here is let's go inside here and let's do another copy of our inputs in fact I will just go ahead and grab all of these nodes with the turbulent noise and I will copy all of these so we also have this Vector here that animates our offset and for the settings here I want to use a 3D noise and we will leave this as simplex and now I can add this on top of my original Vector so what I can do is actually we want to add this here after our normalizer let's do a net and I will plug the result of this 3D Vector here so now we can see that we start to randomize the direction and if I increase the amplitude and maybe even the frequency now we will have even more variation in the movement so if I go to the pop net let's take a look alright so now we have a lot of variation maybe as I'm seeing this I want to adjust the pop win so I will go to this and I want to increase the scroll size I want the randomness from the pop wind to have sort of larger swirls in the movement okay a so we end up with something like this let's maybe set the display to points okay so I think this looks pretty good and also I think we have maybe too many particles so I will go up and I will just reduce the scatter amount let's use maybe a value of closer to 50. so I think this is slightly better with less particles so this will be our particle simulation and now we actually have to create the mesh of our Embers and it's not really enough to render these particles as plane spheres or just simple points we have to actually create a mesh that more closely resembles what an ember would look like without an emotional blur so if I check the Amber render that we have here we can see that there's actually a lot of texture in most of these Embers even though there's obviously a lot of motion blur and depth of field we can see that it's not really a plain sphere that gets this motion blur applied and it's creating this streak effect it's actually a shape that has a lot of variation in the silhouette and also in the texture as well so this is how you can achieve more believable Embers and on that note we can go back here and we can create this Ember mesh and we will start with a simple Circle so to the side I will drop a circle and I will set the orientation here to be ZX so I want this to be flat on the ground and I will increase the divisions here let's maybe try a value of 150. we will leave the type as close and we want to alter the silhouette of this circle and we can do this with an attribute noise nodes so we will drop a mountain here and the default behavior for this node is to have this noise along Vector which is what we want because we want to alter the silhouette but we don't have this normal vectors so we simply want a vector that's tangent to our Circle points and we can achieve this by dropping down a poly frame and I will turn off the normal name and for the tangent name we'll set this to be our normal so I'll set this to n and if I turn on the point display we see that we have this direction now so this is the direction in which I want the noise to be applied so if I go to this mountain node we can use this to only alter the silhouette of our Circle and we can see that this is still flat on the ground and this is what we want so I will increase the amplitude here so let's go ahead and play around with the amplitude and maybe the element size we can also go in the fractal settings here and we can introduce more roughness I might want to increase the element size and maybe the amplitude so we just want to break up that circle shape with this noise all right so I think this will be fine and from here what we can do is drop a remesh and I can press shift W to preview this wireframe and I want to maybe introduce more subdivisions so I will set this maybe let's try Point 15 and now I want to use a second Mountain node so we will drop another one and for this one we don't want this noise along Vector so I will turn this off and I just want a noise that alters the shape overall so I will reduce the amplitude here and I think Simplex is fine but we can also try sparse convolution for this and if I decrease the element size I can also decrease the amplitude so now we have this overall noise let's go ahead and let's set the target size for our rematch even lower so we have more resolution and we end up with something like this uh I I think I want actually the Simplex version here uh let's increase the element size and decrease the amplitude so I think something like this is fine for our Amber mesh and we can do a null here and let's rename this to Amber source and we can plug this inside a copy to points and use our particles as our template points so now if I look at the result obviously the size here is way too big so we can start adjusting our particles and we want to do an attribute warp after we simulate them let's rename this to set p-scale and I want to fade the scale of the points as they age so let's go inside our attribute op and we can use the normalized age for this which is a value that goes from 0 to 1 along their entire duration so we will do a bind and let's grab this NH attributes on age and we can do a bind export from here and let's export this to P scale now it currently goes from zero to one and we want the reverse of this so I will do a ramp parameter in between our binds here so we can further control what happens and I will set this to a spline ramp and I also want to give this a name so let's do ramp P scale and I will copy this to the label as well so if I go up let's go to our copy to points and see the result that we have so they start off with a p scale of 0 and increment to a value of one over their entire duration so what we want is the reverse I will click this button here to reverse the ramp so now they start from one and they will go to zero and I will want to maybe adjust the ramp so I might want to have them Fade Out only in the later half of their life and I will grab all of these handles and set them set the interpolation here to B spline so for the first half of their life they will have a p-scale value roughly of one and then over the next half they will fade to zero let's go inside here and we also want a global multiplier for the scale and we can do a multiply here and promote the second input so this can be our Global P scale and if I go up now I can control and set exactly how big I want them to be also I want to randomize their P scale for each particle so we have to generate a random value so let's go back inside and let's do a random value based on our ID so from ID we will do a random and we can also map this zero to one random value that we get to a separate ramp so let's do another ramp parameter and let's rename this to ramp random and I will copy this to the label as well and set this to a spline ramp let's plug our random result here and let's multiply apply our value by this as well so if I go up I can reset this ramp or random and we can create an exponential ramp here so I want most of these to be rather small and only have a few portion that are really big so I will create another Point here and drag this over and grab all of these and we will set them to B spline so now I can further control this and as we can see here now only about five to ten percent of the particles will have their full p-scale age and currently we have a lot of particles that actually have a p-scale of zero so we can grab this first value here and let's say that the minimum value that I Want Is Random to have is going to be let's just increase this to maybe 0.2 and I can also drag this node up a little bit or rather this handle and I can adjust the global P scale now so this is our current result and in order to preview this faster because we have a lot of geometry we can go to the remesh and we can decrease the target size so let's use a value of 0.3 just so we previewed this faster in our viewport and then when we do the rendering we can set this back to a value of 0.1 so if I play the simulation now this is our result so I think this is pretty good one other thing that we can randomize is going to be their orientation and the easiest way that we can do this is if we drop an attribute randomized and we want to randomize our n attributes on the normal and we will set this to be direction or orientation so now all of the particles have a random orientation and whenever we want to use this attribute randomized node and we are working with particles it's very important that we go to options and we enable the seed attribute to look for our ID and let's check our simulation so everything is working nicely so we randomize our orientation and we randomize the P scale but we still have the same shape for all of our Embers and this is not realistic so what we want to do is randomize the shape itself and if I go to my Ember source so our mesh we could simply randomize the offset value of our noises so we can see that if I grab this mountain noise and I change the offset here we get a different shape entirely so this is the value that we want to randomize now we can link this offset value and randomize it based on the ID of the particles so each particle would get a different shape but this takes a little bit of computation time and it's going to make our simulation slower and we don't really need a completely different shape for each particle what we can do instead is we can just create 10 predetermined variation of this shape and randomize that predetermined shape for all of the particles so let's go ahead and see how we can create 10 variations here we can use a for loop block so I will drop down a for loop with feedback and since our Circle and our poly frame so these two nodes here won't really change and only values that I want to change is going to be the offset values in our Mountain we can set our for Loop to begin after our poly frame and let's make it end after our third Mountain node here so if I look at the result we are not really getting the expected result let's set the iterations may be to a value of 3 and start from there and the problem this is giving us a wacky result is because the gather method here is set to feedback each iteration and what we want to do is merge each iteration so we simply want to create a new variation of our shape and merge it with the other shapes as well so I will set this to merge iteration and then in our blog begin we don't want to fetch the feedback we want to fetch the input so each time this for Loop will run it's going to start back at our polyframe nodes so at our base shape and if this is set to fetch feedback it would mean that it's going to do all of the operations with our Mountain nodes and the remesh and it's going to start at that result so it would recursively iterate on the already modified shapes but what we want to happen is to start at the Circle each time and we just want to randomize the noise values so again we need to set this to fetch input and here we want to merge all of our variations together so in order to randomize this value now we will need to create from our for loop block let's create meta import node so we have access to the iteration number which we can use as a seed in a random expression so I will go to our first Mountain node and I will click on this Cog wheel here and I want to add spare input and we will point this to our block metadata so I will drag this over here in the spare input slot and I can access the information of this block now with a detailed expression so inside our offset value here I will type detail and to access our node in between parentheses I will type negative one we want to look for iterations so in quotation marks I will type iteration and this only has one component so I will set this to zero and now it's going to Simply look at the current iteration number so if we have three iterations here it's going to go 0 1 2 and 3 and this will be the offset that we are going to use and we want to do the same thing for our second attribute noise node and let's add another spare input point this to our blog begin metadata and inside the offset I will just actually copy the expression that we have over here so we'll grab this copy it over here and I might want to just add a random value here so let's add a value of 5 just so it's a different value from our first expression and now if I look at the result we have the four variations that we created and we can see that they are right on top of each other but this is fine if I were to go to single pass and check each individual variation that we get we can go to one two so we have these three variations and now I can create more so let's just increase this let's do 10 variations and I can also check each variation and see what we get so this will be all of our predetermined shapes for our Embers alright so I will turn off single pass and in in order to randomize this shape for each particle we will have to work with packed geometry so also before the end of this for loop block I will drop down a pack here as well so now these are packed and we see that we have only 10 points here so 1.4 each of our variation and now in our copy two points we can use this space attribute option here to randomize the shape for each of our particles and we just have to create an integer value that corresponds to each uh separate variation so since we have 10 variations here we will need to create an integer attribute that has random values between 0 and 9. so in total we will have 10 variations for that attribute so let's go ahead and do another attribute warp after our attribute randomizer on our particles let's rename this to set VAR and we can give this attribute any name that we want let's go inside and from the ID here let's do a random and we we have to fit this attribute like we mentioned from 0 to 1 to 0 and 9 and we have to turn this into an integer value otherwise this doesn't work so from here let's do a float to integer and we can do a bind export and like I said we can give this attribute any name we want let's set a type here to integer and we will just use name VAR and now I can go up let's go to our copy to points and if I turn on this piece attribute option and set the attribute name here to VAR which we just created now all of our particles will look at our ampersource and it's going to randomly grab one of the 10 variations that we created for our mesh so if we look at our points we can see that this has a different mesh and this is using a different one so now we really have a lot of variation so we randomized the orientation the P scale and we can also see that this is running in real time so I'm running this at 24 FPS now I can go ahead and go to the image here and increase the target size so let's set this back to a value of 0.1 so we can have a nice high quality resolution mesh as we can see here and this is running in real time as well and this is because we packed our points so we don't have to store each shape in the memory we are just copying the memory footprint of either one of these 10 shapes that we create so we can see that this is a very efficient simulation and on that node because we are working with packed Primitives now let's go up and for our render settings we have to go to the redshift obj Tab and whenever we are working with packed Primitives we have to go to instancing tab here and let's turn on instant soft level packed Primitives otherwise we won't be able to render this in redshift so we created this mesh for the Embers but this is really only half of the process the other half would be creating an actually interesting material and because we are going to generate a procedural texture in redshift we need this text sure to stick to the particles so let's go back inside and what we can do is we could set up a UV attribute for our shape but the other approach would be to create a rest attribute and point the texture positions to that rest attribute so this way the texture sticks on the Embers so I'll go ahead and add this rest attribute for our sources here so let's drop down a rest position and now we can map all of our noises to this rest attribute and with this we are done with our Ember so I can drop down a null from here and this will be let's say out Embers now in the render there's also this fire that's behind our character and we can see that this is a very subtle effect here and I wasn't really sure if I wanted this layer or not but I decided to go for it anyways so it's not just simply a black background behind the character and this is the render without any compositing effects and this is pretty simple to create so I just want to run you through the setup in Houdini real quick so let's go in Houdini so to start off this fire effect we start with a simple grid then we do a rematch to introduce more subdivisions with a mountain node we noise up this source and then I also do a band deformer here so it wraps a little bit more around our character so if I do show all objects the character is actually facing the other way but I want this firewall to have this curved surface as far as the emission goes so let's go ahead and hide other objects and from here we scatter our points we add some noise to the points and we get rid of all of of our black points so exactly the same setup that we used in our initial pop simulations and for optimizing this Source we grab the camera frustum and we use this to group our points that are intersecting with this camera frustum and we delete all the other points so this is again to optimize our simulation so we don't end up simulating stuff that's outside of the field of view of our camera and then with an attribute vop we generate a velocity vector and here we are creating this Vector with all of the same operations that we kept using in the other setups and then we can use this as a source inside a pop simulation so if I press play this is the pop simulation so very basic and then we can use this simulation to create our density which looks something like this after we do our rasterize we also introduce even more variation in the velocity with a point velocity node with this add curl noise option and we rasterize these points to turn this into a velocity field then we bring both of these together so our volume sources and we plug this inside a pyro solver and in the pyrosolver I'm using pretty much the defaults here if I go to the sourcing we have our density source and Target Field density and we are sourcing the velocities in our valve field with this pool method that we used earlier as well and inside the field step we have this speed volume and then in the shape lab we use disturbance and turbulence and for disturbance we are pretty much using the defaults and mapping the control field to our speed and for the turbulence we just add a little bit of amplitude here so we can see that these are very basic settings and then this will be the cached result and I'm also using a pyro bake volume here just to preview this better in our viewport but really the material is created entirely in redshift and this is again just for viewport purposes so this is the set setup for how to build all of these effects and all of the layers and in the next lesson I want to show you also how I render these layers and all of the renders have a very simple setup but there are a few tricks here and there so I just want to go over real quick on the material setup and some of the render settings that I used for the renders we have this main layer which will be the fire and the character itself so this fire is rendered as particles and if I go to the scene view we have our fire node over here and since we already set up a p scale at the sub level the only thing we have to do here since I am using redshift is to go to this redshift obj Tab and I have to go to the particles Tab and check this option to render object as particles and I also use this global scale multiplier since we have millions of points over here we have to use a really low P scale value so I'm using this multiplier option over here and I'm scaling them way down to 0.05 and when it comes to rendering emissive particles like in this case the challenge is always going to be finding a balance between the P scale value and the emission intensity inside the material so again for this obj tab the most important thing is going to be setting the p-scale here and setting this option here to render all object as particle and now let's check out the material that I created for this so in the material tab I have this PRT material and if I step inside this is a very simple material so for the main settings here I'm using zero weight on the color so I'm using no color I'm setting this to zero no reflection this is again zero and really the only thing that I'm using here is going to be the emission Channel and for this we are grabbing the color of the particles with this particle attribute lookup node so this is set to bring in our CD and I'm also filtering this through a ramp so this isn't really necessary especially if we already set up the colors of the particles at the sub level but since I wanted to have some extra control I decided to create this ramp over here and we can see that this is almost exactly like the ram that we set up at the sub level so the one that we grabbed from our pyro big volume the only difference here is that I added an extra handle right over here which in introduces just a little bit more red color into the emission but like I said this isn't 100 necessary especially since we are doing further grading inside of nuke later and for our intensity I set this to a really high value so I usually set the emission intensity for the particles really high so I can get nice reflection and GI and subsurface scattering on our objects that interact with the particles and then since we are separating the aovs inside of nuke I can grab only this particle layer and I can scale it down so if I go to the render here I can check out the aovs and we can see if I go to some of the reflections and the GI so here we have the reflection and we can see that this is really bright and also our GI as well and our subsurface scattering so I usually prefer to have these layers a bit brighter so I can scale them down if necessary because it's a lot easier to do do it in this way rather than having them too dark and then scaling them up because we don't really have enough color information and I prefer having all of the layers brighter than they need to be and now if I go to the emission we have this here and even though this looks pretty cool as it is we are going to scale this down the brightness of this in Nuke so I can also go to the redshift options over here and I can demonstrate this if I were to let's say this to filmic and also apply to non-beauty aov so I can scale this down and we can see that this is what we will actually end up with so I have to scale this way down by a strong multiplier here but we will see this in a second in Nuke so I'll go ahead and reset it to default and again this emission intensity that we set here is directly related to our P scale for the particle so if the particles were bigger here so instead of the 0.05 value I would have a 0.5 value so they would be 10 times as big I wouldn't need to set this emission weight so high Ai and this is only a high value here because all of the particles are really small so they need some extra strength in order for the particles to have brighter Reflections in GI and subsurface scattering now for the model itself this will depend on what kind of character you are using and in this case this model was made up of a lot of different parts so if I go to the material tab if I go up over here and I go to the left we really have a lot of materials here so there's a separate material for all of the clothing items and the sword and body parts and really all of the assets so this is why we have a lot of materials only for the character so any character that we use will have a different setup but what I want to go over in this case is to make sure that if you are working with an organic character so something that has skin like a human or any kind of organic character the skin material has subsurface scattering so if I go in any of these skin materials if I go inside the key in body for example we can see that over here I'm using a texture in the subsurface scattering color so this texture is really the Albedo of the character or base color if you're more familiar with that term and instead of pointing this in the base color over here I'm using subsurface scattering which is set to mode random walk and I also have this radius color that closely resembles something like a skin tone and if I look at the subsurface scatter aov so if I look at my SSS let's check this out over here this is how I got this very nice and detailed pass and it's the layer that's going to make the interaction between the fire and the character more believable and again this is only in case you are using a human character or an organic character so if you're using something like a Mac or something like that you don't have to worry about SSS but I just wanted to cover this part real quick so this is for the character and the main fire render let's go ahead and also take a look at Tower Amber setup for the Embers we only had to worry about the Amber's object so we can see here inside this redshift drop I'm only pointing the objects at our render object so in our obj tab we are only concerned with this we don't have to worry about how this interacts with the character since the Embers are going to be in front of the character and the fire anyway so for the settings for this Embers object uh over here we have to make sure again that we go to the instancing tab and we enable this instant sub-level packed Primitives so the same thing that I mentioned earlier and now let's check out the material for our Embers and to better see our materials I'll go ahead and disable the motion blur and the depth of field effects so we can better see the texture so I'll go to the out tab let's go ahead and I will disable motion blur and I'll also go to my camera settings and disable the bokeh effect so now if I zoom in on a number this is actually how it looks and this is the texture so this is achieved through the simple material inside these material settings I only have a base color here that's slightly dark I have a bit of reflection with roughness and then inside the emission channel the emission is driven by a noise so this is a maxanoid that's using type blister turbulence and I alter the settings here just slightly to get a cooler pattern and I'll grab this noise and press R so we can just preview the noise and we can see that this is what we get so this black and white noise I'm filtering through a ramp to get this fiery look and this is the ramp again it's almost exactly the same fire Ram that we kept using and then to get this really bright emission I'm increasing the emission weight here to a value of 10. so the more I increase this value the brighter our Embers will be and in this case a value of 10 was fine but I could also set this to 50 and we can see that kind of look that we get and then when we add our motion blur so if I enable motion blur in our render up we also have to check this option here to enable instances in the particle blur since we are working with instances we get this very nice trick here and we can see that each shape has a lot of breakup in this streak that it creates so again if our Embers were just normal particles like spheres we would not be able to get all of this detail and this detail is also a result of our noise that we are using in the texture so this is how I got this Ember render layer to look more realistic and just a little bit cooler overall and then finally we also have our firewall and again for this render up I'm only pointing at the fire and let's go over the fire material as well so I'll go up over here and Inside the Fire we are using a volume Shader with the density set to zero so really we are just using the emission and since in our simulation we don't have a temperature or a flame field we only have the density field I'm mapping the emission channel to density scale is 3 so the more we scale this up the brighter our fire will be and I'm using the same wrap that we used in all of our other renders so this ramp from black to Orange and again if I wanted this fire to be brighter I could just increase the scale here and this is the result that we will get or we could make this darker if we wanted to so this is a very simple render setup so this is how I render the layers and now we can move forward with the new part and recreate the comp let's go ahead and start our comp and we have the three main render layers over here and I will grab this render with the character and the flames and let's start by separating all of our aovs so from here we can do a shuffle and inside the shuffle node I will go to the no tab over here and in between brackets I will say I will type a value in 1 and close brackets and this expression now simply tells us which channel we Shuffle over here in our title so if I go to the shuffle Tab and I switch this to depth now we will get the depth over here let's start by shuffling out our diffuse and I will link this up by simply dragging them over so this will be our diffuse and from here I will press M to add a merge node let's go ahead and drop another dot over here with control I will go ahead and copy this Shuffle node with the dot by pressing alt C and I can drag this over and rearrange these nodes so we can start creating a network of over here and add another dot with control and all of these merge operations for our shuffles will set to plus so let's set the operation here to plus and I will also grab this merge node and let's press shift X to reverse the order so I want the B layer to be first and over here to the right we will add our a layers and because our render also has Alpha information so if I press a we can see the alpha of our character we will have to unpremold all of our Shuffle nodes to do the grading properly and then we will do a pre-mult at the end so after the shuffle we will do a non-premold and let's add another unpremold to this one as well and for our second Shuffle let's uh select our specular so we need the diffuse specular reflection and GI to recreate the beauty pass for our character and I'll go ahead and grab all of these notes press alt C to create a copy I will link this up then I will press I'll see again and let's link this up as well and then I can grab all of these press alt C and let's link this up again so we just create a duplicate of all of the shuffle nodes and now we can go one by one and select what we want so we have the diffuse we need a specular let's go ahead and bring for this third one the reflection then we will need our GI and then finally we will also need our subsurface scattering in this case so let's bring this SSS Channel over here and we have two extra that we don't need so let's go ahead and get rid of these and I'll drag this over so if I look at this result we have our character and we can check all of these layers one by one and see what each layer adds to our render and we can also grade them now separately so after we add all of these up we have to bring back the initial Alpha channel that we use so from our final merge node I will press K to add a copy node and we will point this second Arrow to our main render and I'll add another dot here to keep things organized and we want to reverse the order here so I will press shift X because we want to grab the Alpha from our main render and copy it over to our merged result with the shuffles and now that we have our Alpha information back we can do a pre-mold and this will get rid of any border errors that we might have and for this on primall to work we actually needed the alpha information so in our Shuffle nodes we also have to bring the Alpha from our main render and we can select the Alpha from over here from the second row in the shuffle let's point to our Alpha and let's connect this here to our output layer and we have to do the same for all of these other on-premols as well so if I select the alpha here let's go ahead and grab this point it to our output Alpha and now when I go to the on-premold we see that we have an extra layer here around the edges of our character and we will do the same for all of the other Shuffle nodes so I will just do this now and now we can add a grade node with G and hook this up for all of our channels and for example I can grab the diffuse and I can gain this down and I'll do the same for the specular and now I can also control this so we'll see this highlight on the head disappears and also a little bit on the skin as well let's take a look at our reflection so this will be an important layer I can increase the gamma and increase the gain to increase the contrast let's do one for our GI so I can also decrease the gamma here slightly and increase the gain and for our subsurface scattering as well I can increase this but I think I will decrease this instead so we can affect the grading of each individual Channel I might go to the GI grading and I actually want to increase the gamma and now we can grab our firewall render and I'll press M to add a merge node and we will point the a layer here or the b in this case to our character render I'll add another dot here and I want to reverse this order so I'll press shift X and if I look at the result now we have the fire behind the character and with this fire layer I want to warp this fire to sort of wrap around our character so from here I will do a grid warp let's add this here and we will set the divisions to 3 or rather 4 I believe and now we can grab these handles over here and shape our fire in the way that we want so I will just drag this down and I want this file to sort of have a curvature to it so I'll grab some of these nodes and bring them down and I will also bring some of these up and we can control the handles here for our points to control the way these points interpolate so I will just drag this down and we'll do something like I mentioned into more of a curved look so if I preview the result with the character and I turn off this grid warp effect we can see the difference and I believe it looks a little bit better and it integrates better with our character and now from here we can do a crop so we don't have to render everything that's outside of our render region and I will drop a great node and let's gain this down so we can make this darker and I might also want to reduce the gamma and we can see that when we reduce the gamma we introduce maybe more red than what we want so we can also do a saturation and we can decrease the saturation a little bit and I can do another gray note for example and I can go to the multiply and we can increase only the green channel to bring back a little bit of our yellowish color and we can go back and forth between our grading adjustments until we get something that we are happy with so I might reduce this even further and another thing that I can do is I can fade this out towards the top so I can drop a ramp and we can use this ramp as a mask in inside another grading adjustments so I can do a simple white to black ramp and I can add another great node and point the mask to this ramp and now if I look at the result I can gain this down and we want the reverse effect so we can select this invert option over here and we can see that as I decrease the gain we only affect the stop portion of our fire and I can also control our ramp so I can expand this a little bit and let's look at the result with our character so I think this is fine for now I will go ahead and let's grab all of these and place them more at the top so we have more room to work with here and I want to introduce more bright spots in this firewall render so I can use a keyer node let's drop this here and point it to our fire and with this keynote if I press a we can see what parts we select from our fire so I can increase this contrast if I drag these handles here closer together and if I press a again and I do a pre-mold we end end up only with this part that we filter so some of these brighter parts and I can add another gray node here and I can gain these up and maybe the gamma as well and I can also go to the multiply here and maybe introduce more yellow so the green Channel and now I can merge this on top of what we had so I'll press M and I'll set this operation to plus so we have this extra layer that bumps up the brightest spots in our fire and let's look at this with our character and now we can go back to our great nodes and maybe we can play around with some of the settings here until we get something that looks slightly cooler and finally I will do another great node right at the end and we can use this to control the overall look for this fire render and I think something like this will be fine for now because we can always come back later and adjust the settings here after we add other layers as well finally we want to add a blur here so let's do a defocus and I will just increase the defocus amount so we only want to introduce use some slight blur to this layer all right so let's move forward from here and let's set the actual fire of the character so we will need our main render this one over here we can do a poster stem node and let's link this to our render so this is essentially like an object merge Works in Houdini it's simply a node that points to our render so this will help us to organize our comp and we can hide this wire Connection by pressing alt H so now we will only see the wire when we have this node selected so from this render let's go ahead and grab one of these Shuffle nodes I'll press Ctrl C and let's paste this over here and with the shuffle node we want to bring in the emission and we no longer need this Alpha because we are simply going to add this on top of everything so we can get rid of our Alpha connection and for this emission layer we can start with a motion blur so this was mode out everything and this will also get rid of a lot of the noise in our render which is great let's maybe reduce the shorter time to 0.4 or so it's not as strong and we also want to increase the samples so let's maybe try value of a and this render is pretty okay if I were to just simply merge this on top of what we have we can see that this works nicely as it is a couple of things that we can do here is let's maybe just add another dot here I can do a great node and I want to gain this down just a bit and what I can do is introduce some white spots in the areas that are brightest in this fire so we have a bit more variation in the colors and also it's going to sort of give it more of a feel that it has a hot core so we can do the same thing that we did earlier with a keyer so let's point this to our motion blur and we can do a pre-mult after this and now I can grab this here and I can squeeze these values in until we get only the really brightest spots and after the pre-mold I will also do a gain and I will gain this down and decrease the gamma as well and now for this layer let's do a saturation and let's uh almost get rid of the colors entirely so I will grade this down let's uh just grade this down so it's completely black and white and I think I also want to decrease the gain even more and also the gamma so now I can add this on top I will do a merge which I will set to plus and if I turn this on and off we can see the effect that this layer will have so over here especially it kind of feels like we have this hot core around the brightest spots of our fire so this is how we will bring in this fire pass so the emission and I also have a special pass from our main render which is going to be the fresnel Shader and we will use this to drive certain effects on the character itself so I will make some room in between the character and the fire so I'll drag all of these nodes down below and let's add another poster stem node and point to our main render I'll press Alt H to hide the node and from here let's grab another one of the shuffle nodes so I'll press Ctrl C and let's copy this over point to our render and here I will grab the fresnel pass so this fresh layer which is really just a fresnel Shader that I set up in Houdini and exported this as a costume aov and the first thing that I want to do with this layer is use it as a mask in a Grade note to affect the whole render so our fire and the character I will drop another great node here and I will Point The Mask to our fresnel Shader and if I go to the result I will set the mask to use rgba red because we don't have an alpha on this fresnel Shader so let's go back to our grade and if I set this to invert and I increase the gamma we can see that this will only affect the areas that are outside of this white regions so we are essentially going to darken everything except for the silhouette of our character and to further control this I will add another gray note for our fresnel Shader which again is our mask for this grade and first let's set some settings for the main grade node over here so I will just decrease the gain and let's make some more subtle changes here and now with this other great node to affect our mask I can increase the gamma maybe a little bit and we can see what this will do for us if I look at the mask directly so I can further control this here and then we can go to our grade node and I just want to maybe decrease the gamma slightly and we can see what this does for us if I turn this on and off we maintain the brightness around the silhouette of our character and we darken everything that's more in the center and now that we have this mask as well we can go back to our character aovs and for example I can go to the SSS and maybe I want to increase the gamma now and for the GI as well so we can further fine tune our look and also I believe this smoke in the back now we have to go back to our grade and I can increase the gamma back and also with our frenel Shader we can add a couple of extra effects so from this Shuffle I will drop another grade and I will decrease the gamma for this maybe increase the gain and I will do another great node which I can use to turn this into more of a fiery look so I want to increase the red Channel and I will decrease the blue and let's further increase the red and now if I merge this on top our character will have this very strong and sharp outline so let's set this to plus and if I turn this on and off we can see what this does for us and I might want to introduce even more red so I can further control the grading and also I can use this same layer to add some glow as well so I will do a crop after our grade and we will use the AP glow node which is a free exponential glow node available on Wikipedia so I will provide you with a link for this if you want to use it as well and let's tweak the settings of this glow so we want something fairly sharp and maybe I will increase the persistence so the spread and I will add this on top as well and let's set this to plus so if I grab all of these layers that we created with this frontal pass and turn them off we can really see a big difference here and let's look at the result with the fire on top as well alright so I believe this is starting to look pretty good of course we can add some glow based on the fire emission as well so let's do another crop here and let's also use the AP glow node and for the settings here I will want a pretty large persistence which is sort of the radius and I will decrease the intensity maybe and I can decrease the response to sharpen this a little bit let's add this on top and see what we get and set operation to plus so now with this extra glow it's all starting to come together and I might want to increase the the persistence even more and maybe the intensity as well so this will also be up to you when your own preferences but I think this is looking fine for now and from here we can bring our Embers layer as well so here I have the Embers and this will be a simple plus operation so I will just drop down image and we can set operation to plus and let's add a gray note here and I might want to decrease the gamma and maybe the gain a little bit but we don't really have to spend a lot of time on this layer because I think this looks pretty good as it is so now that we have all of our layers in the comp we can do some overall post processing effects and the main one that I'm interested in is adding a heat wave effect and we will need for this a distortion map and also a blur map and we can base this map off of our firewall render so I will go over here to the top I will do a poster stamp to point to this firewall render and I will grab this and drag this down and press alt H to hide the node so we can use this as our Distortion and blur map so for the Distortion I will use XD is stored which is another node available on Wikipedia and I'll point the source to our main chain and the Distortion map I will point to our firewall render and let's preview the result of this let's set the Distortion from map which will now look at our render and now all we have to do is control our distort blur settings and I will decrease the blur and let's also decrease the Distortion and also I want to decrease the blur map value here so we can see as I turn this effect on and off the effect that this will have and probably this is a little bit too strong so I will decrease the Distortion amount even more and I think something like this looks a little bit better and now for our blur we will use an eye blur node and again this will be available on Wikipedia and this is looking for a mask but our mask needs an alpha so from our render we will do a shuffle and we will Shuffle the red channel in our Alpha channel so if I press a we have of the sulfur Channel and I want to further control this so I will do a grade which I can set to channels Alpha and now I can gain this down and I can increase the gamma so I want this to be a little bit sharper something like this and I also want to stretch this out so it covers more space vertically so I can do a transform from here let's drop this down after our grade and I will just uncheck the uniform scale so I will press this two over here and I will just increase this and I can also bring this down or rather up further so I just want to stretch this so it covers the whole screen so we end up with something like this and now essentially wherever we have white spots we will have blurring so we will point this mask from the eye blur node to our transform and let's look at the result I'll press a to go back to our rgba view and if I increase the blur size we can see these areas now that will be blurred so this thing combination with our X distort will create this nice Heat Wave effect and it's also going to help blend everything better together finally I also want to add some lens flare effects and we can base this lens flare on our emission channel from our main render so over here where we let's grab our fire from here so where we Shuffle this out let's do another poster stem node and bring this down below so we'll point this here I'll drag this down press alt H to hide the node and I want to only select the brightest parts of this file so I will do a keyer with a remote and I will increase this contrast here to only bring out the brightest parts let's add the gray node as well and gain this down and maybe decrease the gamma and I also want to blur this a little bit so it's a bit more smooth so let's drop down a blur and increase the size slightly and now I can use this render in a convolve node so so first I will need a filter shape and I will create a simple radial for this so I'll drop down a radial and I just want to stretch this quite a bit so I will hold down control and drag the handle out until we get a nice horizontal strip like this and also I will remove the clipping so I will set this to no clip and I will drop this into a convolved node and let's Point our so this needs to be our filter let's go ahead and point the filter to our radial and the image to our render so now it's essentially going to take all of these values here and it's going to stretch them out based on the radial shape so the longer I make this line or whatever shape I give this filter the convolve is going to use that shape and now I can go back to our gray note for the render and if I decrease this I can make this a little bit more subtle and also maybe back to our gear I can gain this down and maybe I want to increase the blur here a little bit and this we can merge over our main render so let's set this to plus and this will be our lens effects of course I can still go after this convolve and add the great node and I think this is too red so I can go to the gain here and increase the green channel so we get a little bit more yellow or I can just simply decrease the red so something like this and it's going to be a matter of fine tuning all of the grade nodes to get a really good result here and finally no render is complete without adding some grain so I will drop a grain node here and we can try some of these presets here and see which of these looks best and then we can fine tune all of the values and we don't want to overdo this effect so I might want to reduce uh reduce all of these channels but obviously with the grain all of our layers will blend a lot better together and with this we have completed the entire comp so I hope you found this section useful and like I mentioned in the beginning of the course because we don't really have a lot of layers this was a pretty simple comp especially compared to some of the other courses that I have but even though we kept things simple we can still see a big difference between the final result and the one that we start with and I hope this encourages you to spend a little bit of extra time compositing your effects because I can promise you that it's going to make you a better VFX artist and with that being said we have reached the end of this course and I hope that you found it useful please let me know what you think and hopefully we can see each other again in a new course
Info
Channel: Voxyde VFX
Views: 23,461
Rating: undefined out of 5
Keywords:
Id: ceZwMBlA7dM
Channel Id: undefined
Length: 164min 38sec (9878 seconds)
Published: Tue Aug 29 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.