♪♪♪ Zak Parrish: Greetings and welcome back. In this video, we are going to create a basic sprite emitter. We will create a simple particle system that looks like some sparks to get things started and get your feet wet. To keep things organized, the first thing I want you to do is create a new folder. Click the New button and select New Folder inside the Content Browser under the Game folder. Call this "MyParticleSystems". I will open this folder. The first thing I want to in here is click New and select New Folder. We will call this "Sprite". This folder will be for a sprite emitter. Many particle systems you create are going to be part material and part particle effect. I don't want to spend a lot of time on the material side of things, but we do need to keep it in mind. Right-click in the Content Browser and select Material. I will show you how to make a really basic Material that is good for things like sparks and whatnot. We will call this "Mat_Sparks". Double-click Mat_Sparks to open it up. I will drag over the Material Editor and maximize it. First things first, this does not need to be an opaque surface. Select Translucent from the Bleed Mode drop down. Select the Shading Model drop down and set it to Unlit. That means we only really worry about Emissive Color and Opacity. All I want for a spark is a fuzzy circle of some color. I can define the color in the particle system. We will stretch it out to make our spark a little bit later. This will be really simple. Right-click in the graph and type, "radial". Select RadialGradientExponential. We are not going to change too much about this. We could plug this RadialGradientExponential right into Emissive Color and Opacity. Click the icon to preview this on a flat plane so you can see what that looks like. That is pretty good, but we are going to make it a little more useful for a particle system. Right-click in the graph, type "Particle Color". Select a Particle Color node. This is going to take in inputs from a particle system and use whatever colors we feed into the particle system to drive the Material. Drag off the RGB data pin, type and select "Multiply". Plug the RadialGradientExponential into B of the Multiply. Plug the result of the Multiply into Emissive Color. Drag off the Alpha, type and select "Multiply". I can also press M and click to create a Multiply node because it is faster. Drag off the result and plug it into Opacity. That is really all we need to do for this material to work. Click Apply and click Save. We are done here. We can close the Material Editor. We are going to create our particle system. Right-click and select Particle System. We will call this "P_Sparks". Double-click to open up P_Sparks. We are inside Cascade. We have our default Material on these right now, which is the little crosshair sort of thing. Select the Required module. The Required module is always going to be there and you can't get rid of it. It contains your Material. Select the Required module. Click the Material drop down and search for "Mat_Sparks". There it is. Select Mat_Sparks. and it will drop that in. It will take a second to load. There we go. You can see our little circles doing their thing there. There are all kinds of fun things to be aware of in the Required module. We have some controls for the emitter. In this case, we have changed the Material. Use Local Space means if we rotate the emitter, the particles would move in the direction of the rotation. Or if we were to move the particle system around the level, the particles would move as if they were parented to the emitter. If we scroll down a little bit, we have Duration. Duration is how long this emitter is going to work. We have Delay and Sub UV. We are going to talk about Sub UVs a little bit later. Sub UVs are useful for things like fire and smoke, or anything powered by a flipbook. We are going to set the Screen Alignment, which is how the particles are rotated as they face the camera. We are going to set the Screen Alignment to Velocity. That means they are going to rotate in the direction that they are moving, which is very useful for us. Next, we are going to select the Initial Size module of the particles and decrease their size. Inside the preview window in Cascade, it can be a little tricky to know how big your particles are, or what the particles look like, or what their movement is really doing in the real world, etc. It is very useful to take your particle system and drag it into your level early on, so you can get an idea of what things really look like. Be sure to check your particle systems early and often. Select the Initial Size module and we are going to change this. Right now it is 25.0, which is pretty big. Set the Max X, Y, and Z values to 4.0. Set the Min X, Y, and Z values to 2.0. That will give us a little bit of a random range. I think that is working fairly well. We can leave them emitting from a single point. We can spread them out so they emit from more than a single point. Right-click, go under Location, and select Initial Location. Now, I like my Initial Location to be up near the top so I generally move it up. It doesn't change anything or make anything behave differently. It just makes me feel better to have all my initial settings up toward the top, and then all the over life effects happen afterward. Select Initial Location. Expand Start Location. Expand Distribution and it already has Max and Min values. That is kind of cool. Set the Min X, Y, and Z values to -20.0. Set the Max X, Y, and Z values to 20.0. Now, it is kind of spread out a little bit all over the place, as you can see. If we take a look over in the level, you see what that looks like. These particles are a little bit hard to see right now, but we are not worried about that just yet. Initial Velocity is the direction the particles are going to be traveling the moment they are spawned. Right now, they are primarily being pushed upward. I would like to push them on the X-Axis. Set the Max value for X to 200.0. Set the X Min value to 100.0. That will give us some nice variation. Let's even out Z. Let's change Y and Z a little bit. Set the Max Y and Z values to 20.0. Set the Min Y and Z values to -20.0. We have a lot of variation, but generally speaking we are just pushing out on the X-Axis. You can see here; it is starting to look kind of like snow is blown out. There are a few things we can change. I am going to make use of my screen as much as I can. Select the slider for this panel and slide it over. Press the Windows key and right arrow. to tack Cascade to the right-hand side. We are only going to be using one (1) emitter here, so we can do this for now. Now we can kind of see it in the level while we work, which is pretty cool. I am also going to rotate my view around to the other side. If I don't, it looks like the particles are going in different directions and that confuses and therefore irritates me. Select the Lifetime module. I am going to change the lifetime of my particles. They need to live longer than they are. Set the Min to 4.0 seconds, and the Max to 5.0 seconds. Just a quick pro tip for those who are keeping track. Make you stay aware of the order in which Min and Max are listed. It is a known thing that back in the days of UE3, Max would be often be listed before Min because it appears first in alphabetical order. Sometimes, it is swapped around. Check it out. For Initial Velocity, it is Max and then Min. The Lifetime module has it as Min, then Max. I am not saying I am super happy about that. It gives us things to improve in the future. I want you to be aware of it, so you don't accidentally trip over it. We have Lifetime set for the particles between 4.0 and 5.0 seconds now. You can see those particles are now moving on to the next area. I feel like the particles could be bigger. I don't want to do that just yet. Let's make the particles fall first. I feel like they need to fall. I want sparks that fall and bounce. Once you know what you want the particles to do, the order in which you add things is really up to you. Right-click and go to Acceleration. Select Constant Acceleration. Set the Z value to -980.0. I think -980 would be gravity. That is a little extreme for what I had in mind, but it is not bad. I am going to drag the emitter over. I feel we could use a lot more particles now Select the Spawn module. Under Spawn, change the Constant value to 300.0. There are a lot more particles. That is way too many. Change the Constant value to 50.0. There we go. It is still pretty thick, but not overdoing it. Let's make them stretch out the way sparks do. Let's change the color first. That could be good. I am going to maximize Cascade for this so you can see the Curve Editor. Seeing the Curve Editor is really important for this next part. Select the Color Over Life module, which came in by default. We are going to add that to the Curve Editor by clicking the curves icon. We have two (2) sets of curves here. We have the AlphaOverLife curve, which is a scalar value so it only has one (1) curve. Then we have the ColorOverLife curve, which is a vector. It has R, G, and B data, so it is going to be three (3) curves all in one. Let's say I am not worried about Alpha right now. For now, I will turn off Alpha by clicking on the little yellow box at the end of the tab for AlphaOverLife. For Color Over Life, we have the numerical data. I will often start off by adding in the numerical data first, and then I will clean it up in the Curve Editor. That is a personal preference. You can start over in the Curve Editor by pressing CTRL + left-clicking to add keys that way. That is your prerogative. It is important to know how these values work inside of a curve if you are editing it numerically. You are really only concerned with the In Val and Out Val. I do not recommend you edit tangents using the numbers if you don't have to because you will find editing tangents is a lot easier in the Curve Editor. You have a visual representation of what that tangent is doing. Unless you are a lot better at vector math than I am, and if you are, then I applaud you. Your In Val represents where you are in time. Your Out Val represents the actual value given to the key at that given point. Here at Point 0, In Val would be the moment the particle is spawned. The Out Val would be the color the particle has the moment it is spawned. For Point 1, our In Val is 1. This is the moment the particle dies. The Out Val is what color the particle will be at death. Let's set the Out Val color at Point 0 to a bright and intense red. Remember we are driving Emissive Color, so we can really push this value. Set X to 30.0 for red. Set Y to 3.0 for green. Set Z to 1.0 for blue. We start to get something that is very red. If we change Y to 10.0 for green, we start to get something that is orange and still glowing pretty heavily. If we take a look, you can see those sparks starting to come out which is pretty cool. At the moment of death, right now everything is fading back to white. I don't really care for that at all. Let's leave it the same color. If you know you are going to be doing the same color, you could make this value a constant. Just to show off a little bit, let's say we change the color of our sparks as they fall. In the Out Val, leave X at 1.0 for red. Set Y to 5.0 for green. We will increase blue. Set Z to 25.0 for blue. Now as the particles fall, they transition from white and then eventually to blue. We need to shorten the lifetime considerably to really see that. Under Lifetime, change the Min to 1.0 and the Max to 2.0. Now, you can see those particles starting to turn blue as they fall. This is kind of cool, but I would like to see it be a little bit more ostentatious. Set Z to 40.0 for blue. Set Y to 20.0 for green. They will start to become more of a teal color, which I feel like is going to jump out more. I am also not seeing the sparks enough. I haven't set when the sparks streak out. I know when the sparks streak out will change how much we are able to see them. My gut tells me to increase the Initial Size value. Select the Initial Size Module. Set the Max to 6.0. I only need to worry about the first number. I can lock the axes. I am changing everything out of habit. There we go. The sparks are much bigger. Now you can really see those sparks starting to fall, which is pretty cool. For example, let's decrease the Lifetime value a little bit more. Everything lives for exactly 1.0 second and now you can really see that color shift starting to take place. Now let's add that stretching behavior where the particles actually stretch out in the direction they are moving. This is done by going into the emitter. Right-click and go down to the Size module. Select Size By Speed. There are two (2) settings you need to be aware of: Speed Scale and Max Scale. We are going to change these in size on the Y-Axis. Set the Speed Scale Y value to 1.0. We want to turn it pretty far. Set it to 3.0. We are not going to get that much of a change until we increase the Max Scale as well. Max Scale kind of works like a cap. By changing the Speed Scale, you can see our particles are starting to stretch out. Set the Max Scale Y value to 6.0. There we go. Now, the sparks are really starting to fall. However now the particles themselves are larger, you will probably want to go back and make some tweaks. That color is very bright. It probably doesn't need to be that bright. We can decrease the Out Val at Point 0. Instead of 30.0 x 10.0 x 1.0, set X to 20.0, set Y to 7.0, and set Z to 1.0. At Point 1 for the blue, set Y to 10.0 and Z to 20.0. We will cut the original values in half. This will cut back some of the intensity. I think I want our initial location to be more from a singular point. Instead of making it just one point, I will tighten this up. Set the Max X, Y, and Z to 5.0 and the Min X, Y, and Z to -5.0. There we go. That is working pretty well. The next thing I want to do is have these particles collide when they hit the ground. Right now, they are just passing right through the ground. That is cool, but it is not what I want. Right-click in the Emitter List and go to Collision, which is up near the top because of alphabetical order. Select Collision. This automatically stops the particles. The particles are hitting the ground and then dying. They are not passing through anymore. We need to change the collision behavior. First, we want to go into the settings. I will move this slider so everyone can see the Details panel. Max Collisions is the maximum numbers allowed. Set the Max Collisions Min to 2.0 and the Max to 3.0. Now, the particles are colliding. Then we have a collision behavior. What happens after we have collided the max number of times we can? We kill the particle. That is all well and good, but we are not getting any bounce from that collision. Bounce is controlled in the Damping Factor. Damping Factor is kind of how much of the energy you are going to retain on each bounce. Right now that is set to 0, which is not particularly useful to us. Set the Damping Factor Max value to 0.3 for X, Y, and Z. Set Min for X, Y, and Z to 0.1. There you go. The particles are bouncing a little bit at the end. This is showing off some different behaviors. With that, we have created our first particle effect. It is not going to win any sort of effects awards, but it does get your feet wet. You created an emitter. You created some different modules. You edited several settings. You tested it in the level. Go into Cascade. Line up a representative shot in the Viewport. Click the Thumbnail button. Now in the Content Browser, we have a thumbnail that actually looks like our particle system. I want to show you how to make this particle system emit light. It is a single module and it is pretty cool. If you haven't seen it or don't know it is there, then you don't know what you don't know. Double-click to open the particle system up. I will maximize Cascade. Let's say I want these sparks to illuminate my scene in some way. I can right-click. Since this is a standard particle system and doesn't an extra type data module, I can go down to Light and select Light. This will add a Light module. If we take a look at this in the level, the effect is now adding light. The light is actually a little bit on the intense side. Let's make some changes to it and tweak it. I like the Use Inverse Squared Falloff. Deselect the checkbox for Affects Translucency. It can keeps things simple there. It does not need to spawn 100% of the time. Ever single particle does not need its own light. This will still look just as good without so many lights. Set Spawn Fraction to 0.2, and now only 20% of these are emitting light. You can see it still looks really nice. We can tweak the Radius value, and increase it. We can decrease the Brightness value slightly. You will see that light is automatically inheriting the color we applied to our particle. That will wrap things up for this video. Thanks a lot.
♪♪♪ ♪♪♪