Dragon Fire Breath - Houdini VFX Tutorial

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
creating a cool fire breath simulation is one of those quintessential Houdini setups that really shows you how much fun this software can be so it's a pretty simple setup and I definitely had to make a tutorial about this the project file is available for download if you follow the link in the description so this Dragon animation I grabbed from sketchfabs so I will provide you with a link where you can find this model and we're gonna go ahead and let's bring this in Houdini and start from scratch so I will just go up and create a new container here to the side let's rename this to import dragon and let's just start from scratch here because there are a few things to take into account here so I want to make sure that I cover all of it let's just go ahead and grab our alembic animation so I will drop an Olympic node and I will load in my dragon animation let's load unpack delayed load Primitives and also throw down a convert here so we are not working with packed geometry and this is currently our animation now depending on what kind of geometry you're importing from and the software that you're importing from we can see that if I drop down this geometry Tommy and compare this is not probably the actual size of the Dragon so we will go ahead and just use a transform and right away I want to say that scale matters for this effect so in order to get the realistic behavior of how a fire breathing effect will would work in real life we have to make sure that we are also working with the correct scale so I'm roughly going to estimate that this dragon is at the very least at least way bigger and in the original example that I did I set the uniform scale here to a value of 50 so if I compare it to the size of human it uh it's around this size it's probably even bigger it's probably a hundred times bigger but I settled for a value of 50. I don't necessarily want to work with very high scale values either so to split the difference between where it was and 100 I just settled on 50. and this is the whole reason why I wanted to re-import the geometry just so I can touch on this aspect here scale does matter with this effect or with any kind of simulation in general so be mindful of that anyway this will be fine let's just drop down a null here and this will be my Geo dragon and I'll go ahead Ctrl C and I'll just create a new geometry container for our effects so this would be effects uh let's go with let's just go effects underscore fire and uh we will bring in our Dragon back so we have it in this network as well and we can hide other objects now so the first thing that we have to do is we are going to create a source that will essentially shoot out particles from our mouth and now that I'm seeing this let's just go up let's go back to our dragon and we can see that he only opens his mouth late in this animation so what I'm gonna do is just down a Time shift and push this guy forward maybe 100 frames I think so now if I check the animation he opens his mouth around frame 46 let's just push this forward maybe 130 frames so it's a little something like this and also very important here because we are going to be using sub steps later for our pyro simulation it's just best to remove these integer frames option over here so that we are able to now evaluate this animation at each frame so for example if I do another time shift here if let's remove the expression and get rid of integer frames if I scroll further with smaller increments here we can see the problem here is that it doesn't smoothly interpolate between frames so we can see how it snaps and this is also because in this time shift we have to set the expression here to dollar sign FF right so now we can see that we have the correct value and uh no matter how smaller in increments we have here the alembic animation will smoothly interpolate between each frame so this is very important when we have sub steps between each frame that we have the correct animation in that specific sub step it won't probably affect the final result that much but it's just a good practice to have to ensure that we are working with the right setup from the start and this interpolation here is especially important when we are dealing with collisions we won't have any collisions in this case but again it's just good practice so let's go back and let's go uh let's go in our fire container make sure that this is side other objects so first we will need to create our source that will spray particles opening from the mouth so we somehow need to be able to track this entire region and attach our source to the head so what I'm gonna do here is I'm just gonna go in a side view by holding spacebar 4 and I will press s on my keyboard and I'm just gonna go ahead and grab let's grab the lasso tool and let's just select roughly the head or portion over here and I will press delete and in this blast node let's delete now selected so we are only left with the head so now we can get uh the average of this position we can do an extract centroid and let's set this to detail and this will give me a point let's go ahead and let's turn on the display go to Geometry turn on the point size so we can see this clearly so this will do exactly what it says it's going to compute the centroid of our geometry and now we can see we have a point that attaches to roughly the center of our head which is great so we can attach the sources to this and we can also offset this a little bit so if I drop down a transform and I push this forward a little bit and maybe a little bit down as well this transfer will now apply on top of the animation that we already have so it will follow the heads movement let's maybe bring this back a little bit so it's somewhere right in the center of the mouth opening something like this should be fine so let's now go ahead and create our source for the particles we can just use a simple sphere let's set this let's zoom in on this with f and let's set this to polygon and just increase the frequency and we will do a mountain here so we can noise this up and have a little bit more of an interesting Source here decrease the element size decrease the amplitude let's do something like this and let's also animate this because why not so we will decrease the pulse the pulse duration and we end up with something like this let's maybe make this animate faster we want this to be a nice and chaotic effect so most of these pulse durations for all of the noises will have a fairly low value so it's nice and fast which will lead to a more chaotic motion of our fire so now in order to tell the what size we need for this sphere let's go ahead and just copy two points and point this to our centroid point over here so the one we just found and if I go go to the result this is now sticking to our geometry and I can probably say that we can reduce the source scale here let's try maybe 0.1 and now I can go back to my noise let's reduce the noise as well all right and probably I think this looks pretty good nice and chaotic maybe let's decrease the amplitude to 0.1 and let's reduce this element size even more and just increase this to 0.15 let's try something like this okay this will be fine now we need a Direction so we need the particles to go in this direction and we also want a little bit of spreading and what we can do we are going to create this direction at rest state so when our geometry is like this at the center of our scene we're just going to point this Vector up and spread the vector a little bit so let's go ahead and let's see how this works what I want to do first is scatter a bunch of points so I don't want to use the scatter option in the pub net later I want to scatter my own point so we have more control let's turn off relaxed iterations and let's press D here set this back to a value of three so the point size and maybe just give this a little bit more resolution so the first thing that I want to do is and what I usually do is introduce a little bit of variation to the density of our points so how many points we scatter per surface so for this we can just do an attribute noise float and we can create this density attribute we can name this anything we want here so I'll just go with noise and let's go ahead and create a visualizer for this I will decrease the size here the element scale and now I just want to use this attribute to delete points essentially so if I drop down a blessed node I can say that if the noise value is greater than 0.5 let's go ahead and set these two points we can get rid of those points so if I decrease this further let's try or maybe I can increase this 0.7 and now we can go back to our adjust float let's turn off the visualizer and let's just reduce the element size here let's do something like this we can also read my values so we can delete more points or less points if we want so we can do something like this and of course we will animate this so let's go to animation animate noise and let's also like I mentioned earlier we're going to set the pulse length to a low value so we have nice and chaotic motion so these are the particles that we are going to Source in as opposed to just having all of the points emitting at once again this is just to introduce even more variation in our noise and now let's take care of our velocity Vector so let's just start with an attribute of op and let's rename this to set V if I step inside let's just promote our V to a constant value and let's just point this up so if I set this V Vector to 0 1 and 0 we should just have a vector that points completely up we can also create a visualizer for this if I select this V over here and let's turn on our visualizer let's go to our view this automatically created our Point rail so this is our current velocity and now if I go to my copy two points we should we need a way to align this V with our direction of the head because currently this point that we created doesn't have any information for the directions so we need to create a normal Vector for this if I go to my point so if I look at my point over here in the center of the mount we need a Direction so we need our normal to be facing the same same direction as our head and in order to do this we can go to our geometry and we can grab one of the points from our geometry here and the best point that I found for this will be one that's right in the center of the mouth so if I press W to do to go to the wireframe I can press s here and let's press 2 to grab our point and I'll just grab this one over here in the center let's press delete and uh we can disconnect this blast node from over here and create a separate chain so if I look at this blast node and I set this to delete unselected we have this point over here that's right in the center of the mouth and now we can make our centroid point so this one we can make it look at this point that we just deleted from the center of the mouth and we can use it to create the normal Vector so we are just using this point that we deleted here from the center to Anchor our centroid point so from here we can do an attribute Swap and I will place this set second point that we have in our second input and let's go here and let's grab our second points position and we can do an import Point attribute from the second input so the PT num value will be zero because we only have one point and if we do a subtract from our position to the second position and plug this inside the normal let's turn on our normal display and we can see that we get this let's maybe also increase the trail here so we can go to guides and we can scale up the normal tool let's use the value of one so this will be now our Direction and it's always going to be facing in the same direction as our head as we can see over here well almost uh I think we're we're pretty close we get something like this so now we have this point that's following the center of our mouth essentially and it's also pointing in the right direction and now if I go back to my copy to points we almost have what we are looking for we can simply rotate this geometry so after our attribute up over here we can drop down a transform and we can rotate this 90 degrees on the X so I'll set this value here to 90 and if I go back to the copy two points it's always it's going to use this rotation and it's going to align it with the normal from our point and we get this result so now if I just do a pop net here from our copy to points let's go inside and let's turn off the guide emission type here as we mentioned we already scattered our own points so here I will set the type to all points and we should already have something happening here if I press play something is happening but obviously we will need to increase the velocity so in the attributes tab we can scale up our velocity vectors so let's start with a value of 10 here and now if I press play we kind of get what we want let's also go to the birth Tab and we don't need these particles to last this long so let's set the live let's maybe try 0.4 and 0.1 and also in the attributes tab let's set this to add to inherited velocity and this will also introduce a little bit of variance in our velocity so it will make it more like a spray effect so we end up with something like this and from my previous example I know that I ended up with a velocity value of 15 over here so it was something like this and this was roughly the speed that I needed so right away I want to mention that the inherit velocity value here so this value and also how long the particles last will drastically affect the look of this effect so these are very important parameters that I did a lot of tests until I got right so the life expectancy and again the inherent velocity these are very important to play around with and test things out because for example uh I think the inherent velocity kind of makes sense right so if I increase this to 25 then our fire will move even faster so let's set this back to 15 but also how long the particle lasts will determine how far the fire is being pushed so if I set this to a value of one and I make them last for a longer time our fire will be continuously pushed by this particle so if I set this to a lower value the fire will have an initial push and then it will sort of slow down a little bit when there's no longer any particles to push the fire around so it's only going to continue moving from inertia so these are just values to be mindful of so we are almost ready with our particles one thing that I want to happen is I don't want a continuous emission so I want to Source the particles in and then I want to fade them out so our sourcing let's go back to our transform over here for our source and let's see if we can animate this noise values so this noise value over here we can see if I decrease or increase it we Source in more or less particles so we need a way to control this the easiest way is to just add a float parameter here so I will just drag a float value in my route and let's rename this label to enemy and also the parameter let's set the name to NM so we will control this value with this float instead so let's copy parameter and let's get rid of this and pay based relative references and now I can increase or decrease this and let's maybe let's just go to the parameter interface and we'll set the range here let's use a value of one and hit apply and accept so it's just a little bit easier to control so we can start from no particles so roughly value of 0.19 let's look at our Dragon animation and decide when our emission should start to happen so we can take a look at this animation right when he opens his mouth maybe from this Frame so 12 I'll then left click on this animation and we can increase this over a duration of let's say maybe a few frames so at frame 16 we should have some emission happening so we will just increase this value let's press F to zoom in let's do something like this all right and now let's go back to our Dragon so we are going to keep emitting values and then we can see now that the mouth closes so we we can add another keyframe for the same value here go forward in time maybe another few frames and then scale this back down to roughly 0.1 which should get rid of all of the points all right so if I look at this animation we will bring in points for a few frames and then we are going to stop emitting any point so if I go to the pop net we should have our particles stop emitting so this will be the result and we can play around with the timing even more and I encourage you to do so but this will be fine in order to move along with the rest of the setup and finally for our velocity let's go back to the rest State for the points and also preview the velocity and maybe let's preview this before we did the rotation so in our set V we also want to add a little bit of noise here so let's go ahead and after the set V we can just do a point velocity let's set this to keep incoming and just go to the curl noise Tab and I'll reduce the throw size and the scale and also the pulse duration and let's maybe decrease this even more and this will essentially determine the spreading so we can already kind of have an idea on how the points will now spray so if I go back to my simulation let's take a look so we now have the spreading as well and I think that this is already looking pretty decent so now we can start creating our attributes that we need for pyro now for this specific effect we are only going to need the burn and the temperature and we want to add noise to this value so we can do an attribute noise float and the first one will be burn so let's also preview this create a visualizer Let's uh disable the velocity and look at our burn we can pretty much leave these settings as they are I might just decrease the element size and we also of course want to animate this let's set the pause duration to 0.25 and we can also play around with the ramp here so I might want to squeeze these values a little bit now the problem with doing our attribute noise after our pop net is that this noise pattern we can see that it's pretty much swimming over the points so uh so it's not sticking to the points and while this isn't necessarily the deal breaker in the case for pyro it's not really the ideal solution so what we can do is Sim simply just add this onto our Source Point instead so I'll just add this after our Point velocity and now if I preview the simulation with the pop net we can see that this burn attribute that we created is going to stick with the movement of the particles and I can also tell that probably this element size for the noise needs to be even smaller so I'll set this to 0.15 and let's take a look maybe we can go even further let's try point zero seven let's press play right so I think this will offer us plenty of variation for our burn and we also want to do the same for our temperature so I'm just gonna go ahead and duplicate my burn and for this duplicate we can just change the name here to temperature instead and just to have even more variation we can change the offset of our noise and we don't really have to preview our temperature because it's going to be pretty much the same as our burn so we can always come back and adjust these values later but now we can go ahead and use our particles to create the source for the smoke so we are going to do a volume rasterize attributes let's uh rasterize our burn and temperature and right off the bat let's decrease the particle scale to let's try point one and this particle scale matters a lot over here so we will have to do some tests with this value and after we simulate we can decide if this is too big or too small so we will see this in a second we also have velocity for our points so we can turn on the velocity blur and we can increase the shutter let's set this to smear backwards and also increase our blur samples and we can see this very harsh areas right around our particles that sort of kind of looks like an error so this is not really ideal and this will be apparent in our simulation as well so we will just turn on this normalized by clam coverage which will smooth everything out so this will be the bird and the temperature and I'm gonna go ahead and duplicate this by holding alt and I want to rasterize the velocity attribute in a separate node because I want to add some further noise to this velocity so after we determine the movement with our pop net we can also do a point velocity over here let's uh set this to keep incoming and we can turn on the display Point Trails here we can go to the curl noise and let's add curl noise and we will increase this scale a little bit and also we can play around with the swirl size and of course we can decrease the pulse duration so this is the reason that I want to rasterize this in a separate node because if I were to do our Point velocity display over here and go to the volume rasterize this velocity blur will no longer be entirely accurate because with this point velocity it kind of disrupts our velocity so we can see that as I turn this on and off we have a little bit of weird velocities this might not be apparent at this voxel scale but it can mess things up when you go to a higher resolution so usually I just like to separate the all the attributes so if we had density we would separate this as well from our velocity let's go ahead and merge this back by selecting them and holding down alt so now they are back together and we have all the volumes here and we can go ahead and finally start doing some simulations we will drop this inside a pyro solver and let's straight away link the voxel size of the Spiral solver so let's copy parameter and paste relative references so we want our sources to be the same resolution of our pyro solver so we can already change some settings here because this is a rather fast moving simulation we will need at least two Max substance here but I found that a value of 3 was even better I generally wouldn't go higher than three like no matter how fast the smoke simulation is generally three values should be fine for 99 of cases also we can turn on this advectional reflection here so I will set this to single project and this is also a very good option when you have very fast moving smoke generally When the Smoke is moving super fast it tends to lose a lot of volume or really fast because of the way that the density is pushed around by the fast-moving velocity this so with this advection reflection option turned on this will preserve the volume a little bit better this will slow down your simulation a little bit so be mindful of this you can try you can do some tests with or without this and see if you get similar results so it might not be needed in some cases to turn this on but anyway let's go forward we are not interested in the bounce for now we don't have any collisions so we can go to sourcing and let's take a look over here we have the defaults that the power solver provides let's just go ahead and get rid of all of these and start from the top we have our burn so let's Source our burn into our flame and the operation here should be maximum so we don't want to accumulate this value and let's go ahead and also Source in our temperature as well and we will set this temperature to Max so temperature will go into temperature and finally we will have the Velocity so let let's Source in our velocity this will be a vector and the name will be V and the Target Field will be well and we are going to change this in a second but let's just leave this at add for now and see what we get with these options so if I press play all right we kind of get a decent result we even have a little bit of noise and most of the breakup that's happening in this smoke is gonna come from this let me make some room here it's going to come from this point velocity here otherwise we really shouldn't have any breakup that much because we are not using any turbulence or disturbance yet so this is why this point velocity node here is useful for us let's go back to our sourcing and let's also go ahead and preview this with a pyro big volume because we are going to render this with a spiral bake it's going to be useful for us to preview the final result instead and I will disable this material let's go ahead and turn on the scatter and also the fire now currently nothing is showing and this is because in our scatter volume we don't have yet a density feel so if I go to the bindings tab here go inside scatter we have we need this mask volume which is looking for the density but we haven't created the density yet so just for now I will disable the scatter so we can see that basically we just have the fire now which is binded to our temperature so if I go in the temperature this is looking for the temperature and we also have a mask option here that we will enable later when we have the density but we can take a look and this is the current result so right away we can decide if this uh fire can emit the density so it can be a smokeless fire but if we created the density we will have access to the scatter field here and we can use it as a mask in our fire as well and just create a more visually pleasing result so we are going to use density for this and we can generate this density from our flame field so if I go in the power solver let's go ahead and go to the fields here and we can turn on this option to emit from flame and here we can determine the flame range so if we have flame values that are below 0.2 we won't have any density and it won't add more densities over values bigger than 0.5 so if I simulate for a few frames we should already have a little bit of density but now that we have a few frames simulated we can compute range so we can see how far our flame field can go and we can see that the default values were pretty accurate so let's just set this to 0.5 and let's also set this back to 0.2 so we don't want to have density in areas that don't really have higher flame values and we can also turn on the remap flame range here so we have a smooth transition between the lowest and the highest values and we want the operation we want this smoke to accumulate so we can set this operation to add for our temperature I will also turn down the cooling rate so this is how fast the temperature dissipates so I want this to last a little bit longer to have more flames and stuff so I'm just gonna reduce the cooling rate to 0.1 and we can also emit more temperature from a flame and this I found that creates a little bit more of a realistic result it doesn't really change the overall simulation that much but it's a nice thing to have so I'm just gonna set this operation to add and again for the flame range let's go with the same 0.2 and 0.5 values from earlier and I might scale this down to 0.5 now these are all values that you will have to adjust and make a lot of tests so you can make a test with this Summit from flame and another test without this option and see what different results you will have so in general all of these settings need a lot of tweaking also in this step I will turn on the speed Fields so now we can map different microsolvers to the speed of the simulation and now finally to optimize things a little bit we can cut essentially the fire when it's outside of the camera so I'm gonna go ahead and place my camera frustum HDA and this will be included with the project file if you download this you will just have to place it in your otls folder let's go and let's point this to our camera and we will increase the size on the X here so it passes where the fire would be and also introduce some padding here so I will set the X and Y values to 1.2 and 1.2 and if I press W I think this should be enough let's look at our fire and template this all right so when the fire pretty much passes this region we can go ahead and delete delete our Fields essentially so we no longer simulate so we waste time simulating things that are outside of the camera now in our sourcing there is an option for the sync volume but I really have no no idea how that works and how you're supposed to use it so if you know how the sync volume Works inside of pyro please point me to some resources in the comments because I really I couldn't figure this out but uh so what I did was I grabbed the camera first time and this is a closed geometry so I can do a VDB from polygons and I turn this into an SDF we don't really need Super accurate Voxer size here so we can just leave this at point one and I just want to have enough region outside of this SDF so I want to have enough information outside the borders so that our fire can interact with what happens when it's outside of our camera frustum so for this I will let's use World space units for narrowband and just increase the exterior band so I can press W and as I increase this we can see that we introduce more voxels right around our SDF so now we can sample these voxels inside with our pyro solver so let's go ahead and drop a null from here and rename this to SDF so we can point to this I will grab this Ctrl C let's go inside the power solver and we can use a gas filled vop and let's plug this in our Force output and we will go to the inputs let's turn on input 1 and point this to our SDF and inside here we can grab the sample of this SDF so we will do a volume sample from open input one let's do a volume sample sample it from our position and we will compare this value and say drop down a compare node so let's maybe just go up so I can explain this a little bit better what's going to happen here and just simulate a few frames now when I simulate this I can probably tell that this is a little bit too slow so I can just go to my pop net here and this is what I said earlier that let's step inside and if I increase the life expectancy we will push the fire even further so I can increase the life expectancy let's try in 0.6 and introduce more variants as well and uh we will leave the inherent velocity at 15 so now our points are lasting longer so it will push the smoke even further and maybe this is spreading too much so I can go to my point velocity for the noise and let's just drop the scale so we have a little bit less spread all right I think this should be good let's go ahead and simulate more frames here let's go ahead and let's set this voxel size to 0.1 just so we can have a faster simulations so we can continue with the setup all right so we can see when the smoke is reaching the outside of the bounds of this of our camera frustum we can go ahead and just delete all of these fields right over here we will cut them off and we are using the SDF for this so we have values right outside this region and since this is an SDF we are going to have a sample value of 0 right on the border of the camera and the further away we get from the border we're gonna have increasing positive values and inside the SDF we have negative values so we can simply sample the SDF and say that if your value is greater than zero so this will mean that you are outside of the SDF so if this value is greater than zero we will go ahead and just force all of the fields so the burn temperature and density will force them to zero so this will get rid of them and we will no longer have to simulate anything there so in our power solver let's go back in the gas field top and here we grab our sample of the SDF so we can say that if this is greater than zero we will grab all of our fields and set them to zero so let's go ahead and do a bind on our burn and we will export this back to our barn let's turn on use this note to set parameters and set this to always so now essentially this is a buy and Export so we'll plug this here and this compare node will give me a value of 0 if the condition is not met and a value of 1 if the condition is matched so we want the reverse of this we want a value of one if it's inside and zero if it's outside so we can do a complement for this to revert this result and we will multiply our burn with this complement so we'll plug this here and for example this is this is a noticeable with the burn field but we can cut the density in real time so we can do the same with the density let's copy this and set this to density and Export this back to density and set this to always and use this node to set parameters plug this here and if we do a multiply with this complement value when I plug this we should see this now it's cut right where our camera Frost name is and the only field we have left is going to be the temperature sure so let's do this for the temperature as well let's grab all of these copy them over and let's set the name for this to be temperature control C and let's paste this over here and actually we still haven't got rid of this and this is because I'm cutting off the burn but the actual field is called the flame burn is the name of the source field but we are sourcing it to create the flame field so this uh name here should be flame so let's set this to Flame and this to Flame as well and now we got rid of this so now this will optimize our setup a little bit and we can see that there's no longer any smoke here so let's go back to our camera and let's run a higher quality test let's use 0.05 time scale it's also something you can play around with especially in this case with a very high moving smoke it might be beneficial to increase the time scale you can try something like 1.5 and let's simulate this maybe we can also do a cache pyro test and let's save to disk so let's go ahead and re-simulate so I'll just go I'm just gonna click reset simulation and now we should have some smoke so let's go to our pyro bake and let's increase this density scale over here so we can see we have a little bit of density maybe we can turn down the fire so we can start to see the smoke a little a little bit better and we can play around with a source range here so I can increase this and now that we have density we can actually go let's disable the fire for now let's go to our scatter field and now we can see that this is uh working sort of as it should so we can play around with the settings here and I might want to increase the bluing here and also these are settings that you can go back and forth with to get um to get a cool result and now there's not a lot of use doing this now since we are working with the low quality resolution and we still have a lot of settings to adjust so the first thing is going to be to add disturbance to this so let's go to the shape tab let's turn off disturbance and we will map this to our speed so I will turn on the use control field and if we simulate a few frames and hit compute range we can see that we get really high values now we don't really want to use this as our upper threshold for the disturbance we will set this to a rather low value so we can use something like maybe a value of three so this will mean voxels that have a speed larger than this value of 3 will no longer get even more disturbance applied to it and we are going to set this to a rather high value so we can use a value of 15 here what we really need in this control field is this minimum threshold for the control range so we have to set this let's set this to 0.5 which will mean that when our smoke slows down it will no longer get Disturbed so we are going to only disturb the very fast move moving parts so we're gonna break them up and then when the simulation slows down it will already be broke enough so we will have a lot of features and we can just leave those alone and just simply and simply simulate them as we normally would so this is why this lower threshold here is very important so let's go ahead and let's do another test and we should already start to see this is already looking way nicer we now have a lot of features to play around with let's go back to our pyro bake and also enable our fire uh and maybe I can play around with the source range and in our fire I'm also going to turn on the masking option here to mask it with the density and we can go ahead and increase the mask Center here and play around with the settings and we'll come back to this in a second maybe I can also go to the smoke here and I want to just darken this a little bit okay so we're looking pretty good now we can also add Divergence to this if we want more spreading but we can increase the spreading of this by adding flame expansion so in the shape tab let's enable flame expansion here and let's take a look at the settings we are mapping it again to the flame range Let's uh set this again let's maybe use 0.2 and uh 0.5 so the same values that we kept using and we have to play around with this expansion rate but let's see what the default will give us so we should have a little bit more spreading let's maybe look through our camera and one thing that I should have done from the start we can see that the smoke starts to rise over here and I don't really want that now this is the correct Behavior that's supposed to happen because smoke rises from the Heat and there is a lot of heat over here but for this specific shot I want the smoke to just go straight down because from this angle I'm not really interested in having the smoke Rising so I will go to the buoyancy value here and just disable this and now our smoke will no longer rise so this will be specific for this shot and from this angle usually you will probably want to have this on but anyway if we resemulate now we should no longer see our smoke risings and as a result we are going to push this uh fire even further in this direction of the breathing so we are getting pretty close I would say of course we can still turn on the turbulence so I'm just gonna turn this on because I always turn this on basically let's leave this at temperature and let's maybe increase the threshold range so we don't have as much everywhere and I will just use a larger swirl size for this and maybe a lower amount and it should be fine I might even want more disturbance let's try a value of 20 and I can also add more disturbance if I decrease the minimum range here so I can set this to a value of 0.3 this might be a little bit too much but we'll we'll just have to see so we're getting pretty close we can go ahead and maybe decrease the voxel size so let's increase the resolution let's use .05 and see what we get the final resolution that I used for this was 0.025 so this will bring us pretty close I would say okay I think I kind of like this to be honest it has a uh we can see that this has a lot of directionality to it so I actually think this is looking pretty cool now there is this thing we see this mushroom cloud kind of thing happening and this has been a problem with pyro simulation since forever and the ways to fix this is to disturb the velocity that's coming in so this is why we have this point velocity so we can add noise on our source here uh let's set this back to a value of two and if we have more noise on our velocity we are going to have more breakup but also this mushroom cloud is happening because the velocities are changing too fast so this is sort of going from 0 to 100 in like a half a second and this is this is where the mushroom clouds start to appear so what we can do to fix this is go back to our sourcing here and in our sourcing Tab and instead of adding our velocities we can pull them so this spooling is sort of like a blend and when we are working with vectors we'll have to turn on the direction strength here as well and now the default settings for this if I play the simulation now we won't really have enough velocities but we can see that we got rid of that mushroom clouds but now the Flames are not really being pushed Enough by our particles so what we can do is increase the acceleration strength so I will set this to a value of 50 and this acceleration strength will determine how fast we blend in the velocities so for example if this were like 8 than here it will probably give us the same result as a regular ad but we will set this to a lower value but still pretty high so so a value of 50 will bring the velocities in pretty fast but it won't be as fast as the add operation so this is all that we are interested in we want to blend in the velocity so because we are blending in the velocities they won't be as strong and harsh and create that mushroom cloud look so now as a result we should still have the fire being pushed by our velocities and now that we are blending in the velocities we can see that we we still have a little bit of the mushroom cloud look but we got rid of we got rid of some of it it's not really as apparent we can even try a lower value here so if I try 25 uh we are gonna have even less of a mushroom cloud but now our velocities might not be strong enough to push our fire enough so you will need to find find a balance with this acceleration strength between having too much of a mushroom cloud and two less of the smoke being actually pushed by the velocities but for my example I think I used a value of 50. and let's take a look at the result all right uh we probably have too much smoke now that I'm seeing this or rather our pyro bake is an um configured properly let's just disable the scatter all right let's go back to the fire and even though this is a pretty cool effect I think the time scale really turned this look uh it made everything a lot more chaotic than it should be I believe let's take a look at some of the settings here I will set the time scale back to 1 and maybe also I can reduce the disturbance a little bit and also in the Pyro big volume we can bind the fire instead of the temperature where the temperature is going to be everywhere we can bind it to our we can bind the intensity to the flame instead so the flame volume dissipates faster than the temperature so we won't have really bright areas everywhere and I can now go back to my settings here for the fire and I can increase this back and also play around with some of these other settings maybe I can decrease the smoke density and let's turn on the scatter back and let's decrease this intensity play on round with some of these other settings all right so now we have uh so now I think it looks a lot better but still we have too much breakup I would say we are kind of missing that directionality that we had earlier so this is where all of the tweaking will star so you have to play around even with the scatter amount so if we scatter more points over here so all of the tweakings really starts right from the beginning so if I increase more points if I scatter less or more points this will give us a different result also in the volume rasterize we can play around with the particle scale so we can also decrease this or increase this and it will give us different results and really at every step you will need to go ahead and do this and tweak things and turn certain things on and off and see what the different results you will get but this is essentially the setup and like I mentioned in the beginning if you want you can go ahead and inspect the hip file that I provided so here you can find all of the settings that I use in order to get this look so if I go to my cached result let's take a look I think the Pyro big is not working properly let's maybe see and uh here it is not the Super highest resolution I think we are working with a fairly low density grid I would say we could have probably pushed this further maybe to a value of 0.001 but for again for this camera angle and for this shot uh this this was uh just fine so go ahead and inspect this project file if you want and to create this Shader inside the redshift you have to go to the Pyro big volume and inside the bindings tab the less the property here will be bake emission volume so you have to turn this on and then in my material settings let's go to the fire here we have a simple volume Shader that's attached to the volume input for the redshift material here we are mapping the scatter to the density and here I'm using a fairly low scatter coefficient compared to the absorption coefficient so this is what's going to make the smoke uh appear thicker or more transparent by increasing the absorption coefficient so this is very important and then for the emission I set the name of the channel to the CE name that is created by us right over here so this will have to match the name we give it in our channel in the emission tab set this to a scale of two and then for the color mode this is also very important we have to set this to replace color Channel again we will point to CE and then emission mode will set this to color ramp so this is how you can render the fire inside redshift and then I did a very fast comp in Nuke so this is how I render this out with the dragon and the fire and we can see that the file already looks pretty good but for the dragon I split all of the aovs for the diffuse reflection and there's a couple of lights and we can see that I have aovs for all of the lights so I put the aovs for the dragon back together and I merged this on top of a ramp so this is just a simple ramp with some noise that travel was in the direction that the dragon is flying so I merge this over here and then on top of this I separated the smoke for with all of the lights so I just have a couple of Lights here there's a sun and a couple of dome lights and when you put them all together you get the density we can plus this on top of our comp and then from here I separated the entire volume lighting of this pass and if I subtract my redshift light so this pass from this one we can separate only the GI of the volume so then we can paste this on top after we do some changes here with the grading and on top of this I see that I place this fog layer so this is created in Houdini so this is just a very simple fog layer created from the camera frustum directly inside Houdini it's just a volume with some noise that's moving in the opposite direction of the Dragon essentially so very simple and it's included in the Houdini project file if you want to check this out so we add this on top and here we have the fog emission so actually I just faded this out with a great note so it's not as strong when the dragon essentially stops the fire breath it just faded this out otherwise it looks like this so when we add this on top and this operation here should be plus we can see that with this first grade node that controls the animating we fade off the emission so I think it just looks a little bit more natural like this and then we are using AP glow on the emission so this AP glow is available on Wikipedia and it's a very good exponential glow and we plus this on top we add some motion blur and we can see that with the motion blur we really get rid of a lot of this kind of like this voxel stepping thing that's going on over here so this is why I don't usually worry when I render volumes directly inside Houdini I don't worry about setting up the motion blur to happen directly at render time because the motion blur inside of nuke really works where Works super well and it really does wonders especially for volumes it works really well with particles but with volumes it just does a super nice job and hopefully you can agree with me and finally uh just because I want to be fancy I added a simple flare here and I multiplied it with the Blurred result of the AP glow so if I go to this so from my glow layer I blur this out and I think I graded this up and I can use this to multiply the flare so it's only happening where when we have really bright spots on our screen and when we add this on top this is with just a little bit of flaring happening over here nothing super fancy this entire shot probably needs a lot more work even with the simulation and everything but I just wanted to make this effect a little bit more presentable and I'll also clean this file up a little bit and I also provide you with the new project in case you want to check this sold as well but that's pretty much all I wanted to cover so I hope you like this tutorial I hope you found it useful let me know what you think and I'll see you next time
Info
Channel: Voxyde VFX
Views: 18,118
Rating: undefined out of 5
Keywords:
Id: Ogzm2gnkMTU
Channel Id: undefined
Length: 52min 12sec (3132 seconds)
Published: Mon Sep 18 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.