WEBVTT 1 00:00:02.266 --> 00:00:03.166 Realistic 2 00:00:04.457 --> 00:00:08.957 Realistic Intergrated Niagara System Control 3 00:00:23.700 --> 00:00:26.849 Hi, I am Park Hyun Sang 4 00:00:26.849 --> 00:00:32.379 Today, we will learn about controlling the Niagara System 5 00:00:32.379 --> 00:00:36.849 Effects create changes during content execution 6 00:00:36.849 --> 00:00:43.940 When linked with the system, it can utilize various graphics and interact with external variables 7 00:00:44.680 --> 00:00:49.040 They can be used in conjunction with Blueprints, 3D mesh data 8 00:00:49.040 --> 00:00:53.680 or controlled directly in Niagara through materials 9 00:00:53.680 --> 00:00:57.340 Dynamic Material for Controlling Material Effects 10 00:00:57.799 --> 00:01:03.220 Go to the Props folder in the Start Content section 11 00:01:03.220 --> 00:01:06.000 Open the Materials folder inside 12 00:01:06.000 --> 00:01:10.839 Since we will use a chair, drag and copy 13 00:01:10.839 --> 00:01:15.080 the material labeled M_Chair into the VFX folder 14 00:01:15.080 --> 00:01:19.480 So the material in the Props folder 15 00:01:19.480 --> 00:01:22.675 has been copied to the VFX folder 16 00:01:22.675 --> 00:01:26.421 To avoid naming conflicts, 17 00:01:26.421 --> 00:01:32.838 rename the material to Chair_Dissolve 18 00:01:32.838 --> 00:01:34.440 Open the renamed material 19 00:01:34.440 --> 00:01:39.679 and we will modify this material on our chair 20 00:01:39.679 --> 00:01:41.919 to create a dissolve effect 21 00:01:41.919 --> 00:01:45.639 First, let's select the area 22 00:01:45.639 --> 00:01:47.760 so that the nodes 23 00:01:47.761 --> 00:01:50.541 can fit in here 24 00:01:50.541 --> 00:01:53.320 Check the master node now 25 00:01:53.320 --> 00:01:54.800 For its opacity 26 00:01:54.800 --> 00:01:58.340 we need to adjust its transparency 27 00:01:58.340 --> 00:02:01.160 For this, change the blend mode 28 00:02:01.160 --> 00:02:05.080 from Opaque to Masked 29 00:02:05.080 --> 00:02:07.619 activating the Opacity Mask property 30 00:02:08.039 --> 00:02:12.520 By default, the Opacity Mask is visible even when 0.5 is entered 31 00:02:12.520 --> 00:02:14.320 It does not support partial transparency 32 00:02:14.320 --> 00:02:17.039 For instance, entering 0 will make the object invisible 33 00:02:17.039 --> 00:02:20.039 while entering 0.3 also results in invisibility 34 00:02:20.039 --> 00:02:23.080 It's either fully visible or fully invisible 35 00:02:23.080 --> 00:02:24.959 so either 0 or 1 36 00:02:24.959 --> 00:02:29.499 as the Masked mode only recognizes binary visibility 37 00:02:29.499 --> 00:02:35.560 We will control this Masked effect 38 00:02:35.560 --> 00:02:39.120 dynamically through the Niagara System 39 00:02:39.120 --> 00:02:43.720 To allow Niagara to input values directly into the material 40 00:02:43.720 --> 00:02:48.720 create a Dynamic Parameter node 41 00:02:48.720 --> 00:02:53.839 his node appears to control color at first glance 42 00:02:53.839 --> 00:02:56.839 but it provides four slots 43 00:02:56.840 --> 00:03:00.070 for inputting float values or decimal numbers 44 00:03:00.070 --> 00:03:03.219 So we have four parameters 45 00:03:03.399 --> 00:03:06.839 We will use these four parameters 46 00:03:06.839 --> 00:03:09.360 to control the dissolve effect 47 00:03:09.360 --> 00:03:13.600 First, assign names to each parameter 48 00:03:13.600 --> 00:03:15.759 and set their default values 49 00:03:15.759 --> 00:03:19.600 Name the first parameter Noise Scale 50 00:03:19.600 --> 00:03:23.800 the second Dissolve Value 51 00:03:23.800 --> 00:03:27.199 the third Dissolve Edge 52 00:03:27.199 --> 00:03:31.839 and the fourth Emissive Power 53 00:03:31.839 --> 00:03:36.039 In this example, these names 54 00:03:36.039 --> 00:03:39.839 are predefined for convenience 55 00:03:39.839 --> 00:03:42.960 However, in real-world scenarios 56 00:03:42.960 --> 00:03:46.679 these names are often assigned later 57 00:03:46.679 --> 00:03:49.279 as the effect develops and requirements arise 58 00:03:49.279 --> 00:03:52.520 We don’t typically start off with specific name 59 00:03:52.520 --> 00:03:56.000 As we work on the effects, we gather the things we need 60 00:03:56.000 --> 00:03:59.320 and that’s when the naming often happens later on 61 00:03:59.320 --> 00:04:01.119 Let's work with this much 62 00:04:01.119 --> 00:04:03.940 Now, in the default values 63 00:04:03.940 --> 00:04:08.119 the Red parameter is linked to slot 0 64 00:04:08.119 --> 00:04:12.960 Green is slot 1, Blue is slot 2, and Alpha is slot 3 65 00:04:12.960 --> 00:04:17.399 The parameters are connected like so 66 00:04:17.399 --> 00:04:23.359 For Red, we’ll input 0.01 67 00:04:23.359 --> 00:04:28.760 Green, let’s go with 0.5, blue will be 0.2, and for Alpha, we’ll set it to 8 68 00:04:28.760 --> 00:04:30.160 With these settings 69 00:04:30.160 --> 00:04:32.180 for the Noise Scale parameter 70 00:04:32.180 --> 00:04:36.239 the value that gets output for Red is 0.01 71 00:04:36.239 --> 00:04:39.200 You don’t really need to worry about the actual colors 72 00:04:39.200 --> 00:04:41.040 in these default values 73 00:04:41.040 --> 00:04:44.920 These aren’t being used to create colors 74 00:04:44.920 --> 00:04:48.359 Now, if we want the image to dissolve naturally 75 00:04:48.359 --> 00:04:51.440 we’ll need to apply some noise 76 00:04:51.440 --> 00:04:54.920 The usual node for generating noise 77 00:04:54.920 --> 00:04:58.000 in a material is called the Noise node 78 00:04:58.000 --> 00:05:01.040 this node takes a position value 79 00:05:01.040 --> 00:05:04.760 so we’ll grab the World Position 80 00:05:04.760 --> 00:05:07.079 It comes up as Absolute Position 81 00:05:07.079 --> 00:05:12.160 Now, we’re going to multiply the position value 82 00:05:12.160 --> 00:05:14.639 with 0.01 83 00:05:14.640 --> 00:05:19.160 Calculate the position value with 0.01 84 00:05:19.160 --> 00:05:21.399 and feed it into the World Position input 85 00:05:21.399 --> 00:05:26.359 Let’s connect this to the Opacity Mask 86 00:05:26.359 --> 00:05:28.559 What happens is 87 00:05:28.559 --> 00:05:33.079 it looks like parts are torn away 88 00:05:33.079 --> 00:05:35.000 with some areas visible 89 00:05:35.000 --> 00:05:38.160 either that or others transparent 90 00:05:38.160 --> 00:05:43.160 Let’s temporarily disconnect this from the Base Color node 91 00:05:43.160 --> 00:05:45.700 and instead connect it to the Base Color 92 00:05:45.700 --> 00:05:48.560 Now you can see the noise pattern 93 00:05:48.560 --> 00:05:51.000 applied as an image 94 00:05:51.000 --> 00:05:52.819 The white areas are visible 95 00:05:52.819 --> 00:05:55.299 and black areas are transparent 96 00:05:55.299 --> 00:05:57.359 That's how it works 97 00:05:57.359 --> 00:06:00.339 If we don’t adjust the scale before applying this 98 00:06:00.340 --> 00:06:04.419 the noise will appear extremely fine 99 00:06:04.419 --> 00:06:06.160 But if we zoom in 100 00:06:06.160 --> 00:06:10.880 you can see these tiny noise patterns 101 00:06:10.880 --> 00:06:14.320 This is because it’s applied based on the World Unit scale 102 00:06:14.320 --> 00:06:18.279 To make the noise pattern bigger 103 00:06:18.279 --> 00:06:22.040 we multiplied the unit by 0.01 earlier 104 00:06:22.040 --> 00:06:24.480 Another way to use noise 105 00:06:24.480 --> 00:06:29.320 aside from the Noise node, is to utilize textures 106 00:06:29.320 --> 00:06:32.160 Let’s create a Texture Sample 107 00:06:32.160 --> 00:06:35.559 and search for Noise in the texture options 108 00:06:35.559 --> 00:06:37.799 here are plenty of noise textures available 109 00:06:37.799 --> 00:06:39.460 For this example 110 00:06:39.461 --> 00:06:41.941 I’ll select Offset Noise Distance Field 111 00:06:41.941 --> 00:06:43.079 and connect 112 00:06:43.079 --> 00:06:46.480 this noise to the Base Color here 113 00:06:46.480 --> 00:06:51.720 As you can see, the noise pattern is applied here 114 00:06:51.720 --> 00:06:55.880 Most noise textures are tiled 115 00:06:55.880 --> 00:06:58.920 so we can use Texture Coordinates to control the tiling 116 00:06:58.920 --> 00:07:02.200 You could set it to repeat three times horizontally and vertically 117 00:07:02.200 --> 00:07:05.239 By connecting this to the UV input 118 00:07:05.239 --> 00:07:07.920 you can create finer 119 00:07:07.920 --> 00:07:09.760 or larger patterns 120 00:07:09.760 --> 00:07:14.880 The UV values in this texture sample are influenced by 121 00:07:14.880 --> 00:07:17.579 how the UVs of a 3D object 122 00:07:17.579 --> 00:07:22.200 are unwrapped from the polygon into a flat surface 123 00:07:22.200 --> 00:07:25.279 If you apply this directly to opacity 124 00:07:25.279 --> 00:07:27.720 it will depend on how the UV is unwrapped 125 00:07:27.720 --> 00:07:31.119 This is commonly referred to as a seam 126 00:07:31.119 --> 00:07:32.520 These seams are 127 00:07:32.521 --> 00:07:34.401 the boundaries where polygons are separated 128 00:07:34.401 --> 00:07:36.320 like the edges of UVs that don’t connect 129 00:07:36.320 --> 00:07:39.760 If we unwrap the UV of a cube 130 00:07:39.760 --> 00:07:42.640 we can lay it out in a traditional unfolded shape 131 00:07:42.640 --> 00:07:44.200 Just like this 132 00:07:44.200 --> 00:07:49.519 or separate all six sides individually 133 00:07:49.519 --> 00:07:53.399 These disconnected areas 134 00:07:53.399 --> 00:07:56.040 are what we call seams 135 00:07:56.040 --> 00:07:59.480 Because of these seams, patterns may not appear continuous 136 00:07:59.480 --> 00:08:01.920 which can make the object look messy 137 00:08:01.920 --> 00:08:05.079 To avoid this 138 00:08:05.079 --> 00:08:07.480 we use noise textures 139 00:08:07.480 --> 00:08:09.640 also called noise nodes 140 00:08:09.640 --> 00:08:11.920 Noise nodes, as you can see here 141 00:08:11.920 --> 00:08:17.600 are based on the world position values, allowing us 142 00:08:17.600 --> 00:08:23.600 to apply effects cleanly without being affected by UV seams 143 00:08:23.600 --> 00:08:25.721 Now, let’s clean up unnecessary effects 144 00:08:25.721 --> 00:08:27.701 remove the textures 145 00:08:27.701 --> 00:08:32.520 and reconnect the base color to restore the original appearance 146 00:08:32.520 --> 00:08:36.559 Using this noise value 147 00:08:36.559 --> 00:08:39.400 we’ll create an additional dissolve effect 148 00:08:39.400 --> 00:08:42.159 First, we use a Step node 149 00:08:42.159 --> 00:08:46.719 By connecting the noise value 150 00:08:46.719 --> 00:08:48.919 to X and the dissolve value 151 00:08:48.919 --> 00:08:53.359 to Y, we can create a step effect 152 00:08:53.359 --> 00:08:54.200 Like this 153 00:08:54.200 --> 00:09:00.479 When we connect this to the alpha opacity mask 154 00:09:00.479 --> 00:09:03.239 the green channel 155 00:09:03.239 --> 00:09:05.719 Dissolve value, index 01 156 00:09:05.720 --> 00:09:08.520 Lower the value increases the visible area 157 00:09:08.520 --> 00:09:10.400 Let's lower it by a lot 158 00:09:10.400 --> 00:09:13.479 It eventually shows more of the object 159 00:09:13.479 --> 00:09:16.119 Raising the value for the green channel 160 00:09:16.119 --> 00:09:19.520 so much that it is now over 1 161 00:09:19.520 --> 00:09:21.001 eventually hides most of the object 162 00:09:21.001 --> 00:09:23.881 You can see how the value is getting adjusted 163 00:09:23.881 --> 00:09:29.819 This demonstrates how the dissolve value 164 00:09:29.819 --> 00:09:35.720 can control visible and invisible areas through the Step node 165 00:09:35.720 --> 00:09:41.679 Next, we’ll duplicate the Step node with Ctrl-C and Ctrl-V 166 00:09:41.679 --> 00:09:46.039 To the dissolve value, we’ll add 167 00:09:46.039 --> 00:09:47.580 the dissolve edge value 168 00:09:47.580 --> 00:09:50.813 of 0.2, which we set earlier 169 00:09:50.813 --> 00:09:54.719 Connect it to the Y input of the copied Step node 170 00:09:54.719 --> 00:09:59.400 leaving the noise connection the same 171 00:09:59.400 --> 00:10:02.879 Then, we use a Subtract node 172 00:10:02.880 --> 00:10:05.420 Subtract 173 00:10:05.420 --> 00:10:10.599 Let’s label the dissolve value Step output 174 00:10:10.599 --> 00:10:12.260 as a 175 00:10:12.260 --> 00:10:15.139 Let's just call it an a 176 00:10:15.139 --> 00:10:18.799 And the dissolve value with the edge added 177 00:10:18.799 --> 00:10:22.559 Let's call it as b 178 00:10:22.559 --> 00:10:25.019 By subtracting a from b 179 00:10:25.020 --> 00:10:26.900 the result is 180 00:10:26.900 --> 00:10:32.500 that we highlight the boundary of the noise pattern 181 00:10:32.500 --> 00:10:37.039 The Step node operates by transitioning from black to white 182 00:10:37.039 --> 00:10:39.840 or by converting gradients 183 00:10:39.840 --> 00:10:44.039 We have this grey for the smooth gradient 184 00:10:44.039 --> 00:10:46.840 but now we will set a standard 185 00:10:46.840 --> 00:10:52.159 For example, if the input is less than 0.5, it outputs 0 186 00:10:52.159 --> 00:10:56.600 If it’s greater than 0.5, it outputs 1 187 00:10:56.600 --> 00:10:59.139 That's what the Step node does 188 00:10:59.139 --> 00:11:02.080 This means areas with a value of 1 are visible 189 00:11:02.080 --> 00:11:04.640 and areas with 0 are invisible 190 00:11:04.640 --> 00:11:09.280 If we set the dissolve value to 0.5 191 00:11:09.280 --> 00:11:11.460 visibility will be determined by 192 00:11:11.460 --> 00:11:15.719 whether the value is above or below that that threshold 193 00:11:15.719 --> 00:11:18.880 Then we add the edge value 194 00:11:18.880 --> 00:11:21.599 the edge value of 0.2 195 00:11:21.599 --> 00:11:24.440 represented by a red line 196 00:11:24.440 --> 00:11:28.320 It reduces the overall visible area 197 00:11:28.320 --> 00:11:31.080 The red area here is b 198 00:11:31.080 --> 00:11:37.960 When applied to a single mesh with a noise pattern 199 00:11:37.960 --> 00:11:40.359 the green is a 200 00:11:40.359 --> 00:11:43.440 and the red is b 201 00:11:43.440 --> 00:11:47.760 These regions appear differently, as you can see 202 00:11:47.760 --> 00:11:51.400 and when we subtract a from b 203 00:11:51.400 --> 00:11:55.239 only the orange part remains visible 204 00:11:55.239 --> 00:11:58.239 Using this principle, we’ve created an edge 205 00:11:58.239 --> 00:12:02.599 and now, we can determine the dissolve color 206 00:12:02.599 --> 00:12:05.919 using a vector parameter node 207 00:12:05.919 --> 00:12:10.159 named Emissive Color 208 00:12:10.159 --> 00:12:13.780 Let’s set this to red for now 209 00:12:13.780 --> 00:12:18.119 Next, we multiply the Emissive Power value 210 00:12:18.119 --> 00:12:22.679 and the result from the Subtractive node 211 00:12:22.679 --> 00:12:25.760 then connect this to the Emissive Color 212 00:12:25.760 --> 00:12:28.060 When you check the result 213 00:12:28.061 --> 00:12:33.240 you’ll see the edge area now has a glowing effect 214 00:12:33.241 --> 00:12:35.261 If we connect the a region 215 00:12:35.261 --> 00:12:37.880 back to the opacity mask 216 00:12:37.880 --> 00:12:41.640 the area visible after subtracting the red b region 217 00:12:41.640 --> 00:12:44.000 Let me mark it in green 218 00:12:44.000 --> 00:12:45.520 This is a region 219 00:12:45.520 --> 00:12:46.959 the green, the a region 220 00:12:46.959 --> 00:12:50.999 We subtracted the red, b, from the green, a 221 00:12:50.999 --> 00:12:55.039 So that results in that natural-looking 222 00:12:55.039 --> 00:12:57.159 glowing boundary like so 223 00:12:57.159 --> 00:13:00.119 With that, we’ve created the dissolve material 224 00:13:00.119 --> 00:13:02.000 Let’s save this 225 00:13:02.000 --> 00:13:05.679 and turn it into a material instance 226 00:13:05.679 --> 00:13:07.919 By creating an instance 227 00:13:07.919 --> 00:13:10.599 you’ll be able to adjust 228 00:13:10.599 --> 00:13:14.499 parameter values later 229 00:13:14.499 --> 00:13:17.200 or change colors 230 00:13:17.200 --> 00:13:19.039 or things like that 231 00:13:19.039 --> 00:13:24.000 like turning the Emissive Color green 232 00:13:24.000 --> 00:13:25.319 or adding blue 233 00:13:25.320 --> 00:13:28.087 You could do all that 234 00:13:28.087 --> 00:13:33.760 We created the instance to allow for more variations 235 00:13:33.760 --> 00:13:35.840 Now, the next step is 236 00:13:35.840 --> 00:13:40.320 to use Niagara for this dynamic parameter 237 00:13:40.320 --> 00:13:43.640 to dynamically control these parameters 238 00:13:43.640 --> 00:13:45.479 The material is ready 239 00:13:45.479 --> 00:13:48.520 so let’s create a Niagara asset 240 00:13:48.520 --> 00:13:50.039 In the content browser, right-click 241 00:13:50.039 --> 00:13:52.640 and select Niagara System 242 00:13:52.640 --> 00:13:55.880 This time, we’ll use a template 243 00:13:55.880 --> 00:13:57.840 Among the available templates 244 00:13:57.840 --> 00:14:02.559 Blowing Particles generates particles that move beautifully 245 00:14:02.559 --> 00:14:07.479 Let’s select it and click the Create button 246 00:14:07.479 --> 00:14:13.359 We’ll name the Niagara system FX_Chair Dissolve 247 00:14:13.359 --> 00:14:17.939 With that, we’ve created the system that includes an emitter 248 00:14:17.939 --> 00:14:23.400 from the Blowing Particles template we selected earlier 249 00:14:23.400 --> 00:14:28.719 Normally, we’d delete unnecessary modules 250 00:14:28.719 --> 00:14:30.260 but in this case 251 00:14:30.260 --> 00:14:34.480 I’ll simply disable them so you can see 252 00:14:35.440 --> 00:14:38.520 what’s been removed while we proceed 253 00:14:38.520 --> 00:14:44.640 Let’s deactivate the Shape Location under the Particle Spawn section 254 00:14:44.640 --> 00:14:49.760 Then, let’s also turn off the Gravity Force 255 00:14:49.760 --> 00:14:54.159 The petal-like effects that were previously falling downward 256 00:14:54.159 --> 00:14:58.400 now appear to be floating sideways 257 00:14:58.400 --> 00:15:03.719 Under the Particle Spawn section, click the plus button 258 00:15:03.719 --> 00:15:08.280 to add the StaticMesh Location module 259 00:15:08.280 --> 00:15:11.959 Set the Preview Mesh field of StaticMesh Location 260 00:15:11.960 --> 00:15:17.640 to sm_chair, and we see a warning pop up 261 00:15:17.640 --> 00:15:21.760 This means that one of the options in this Static Mesh 262 00:15:21.760 --> 00:15:27.059 specifically the CPU Access option, is currently disabled 263 00:15:27.059 --> 00:15:28.919 which is causing an issue 264 00:15:28.919 --> 00:15:32.640 You can simply click the Fix Now button to resolve it 265 00:15:32.640 --> 00:15:37.080 Now, let’s temporarily turn off the Initial Mesh Orientation 266 00:15:37.080 --> 00:15:41.200 Also, let’s disable other modules like Wind Force for now 267 00:15:41.200 --> 00:15:48.719 Here's what StaticMesh Orientation that we added does 268 00:15:48.719 --> 00:15:52.320 You can already see the shape of the chair 269 00:15:52.320 --> 00:15:57.000 It might have been hard to discern with the movement 270 00:15:57.000 --> 00:16:00.039 but you can now see that StaticMesh Location 271 00:16:00.039 --> 00:16:05.320 can use the Mesh itself as the particle 272 00:16:05.320 --> 00:16:09.200 This allows particles to form naturally 273 00:16:09.200 --> 00:16:13.640 around the shape of the chair 274 00:16:13.640 --> 00:16:15.960 and then disappear accordingly 275 00:16:15.960 --> 00:16:20.320 From here, let’s start modifying the Emitter step by step 276 00:16:20.320 --> 00:16:25.080 Currently, the Emitter is set to run infinitely 277 00:16:25.080 --> 00:16:27.840 continuously operating 24/7 278 00:16:27.840 --> 00:16:32.159 We’re going to adjust this so that it runs only once 279 00:16:32.159 --> 00:16:38.320 And since it won’t loop, we’ll set it to operate for just 5 seconds 280 00:16:38.320 --> 00:16:42.159 Next, let’s increase the Spawn Rate of 15 281 00:16:42.159 --> 00:16:48.159 We’ll adjust it to generate 100 particles per second 282 00:16:48.159 --> 00:16:53.520 The Lifetime at the Initialize Particle section is 12 seconds, which is very long 283 00:16:53.520 --> 00:16:57.640 We’ll shorten this to a range between 284 00:16:57.640 --> 00:16:59.080 3 and 5 seconds 285 00:16:59.080 --> 00:17:03.719 allowing the particles to disappear much faster 286 00:17:03.719 --> 00:17:05.200 For the starting color 287 00:17:05.200 --> 00:17:08.599 we had previously set the material’s Red 288 00:17:08.599 --> 00:17:13.839 The color value to RGB, Red, Green 0, and Blue 0 289 00:17:13.839 --> 00:17:16.560 We multiplied this by 8 290 00:17:16.560 --> 00:17:20.702 This corresponds to the Emissive Power value 291 00:17:20.703 --> 00:17:24.547 of 8 for the alpha channel in the Dynamic Parameter 292 00:17:24.547 --> 00:17:27.680 So Red is 8 293 00:17:27.680 --> 00:17:31.359 creating a brightly glowing red color 294 00:17:31.359 --> 00:17:33.000 To achieve a similar effect 295 00:17:33.000 --> 00:17:38.719 we’ll set Red as 8, Green as 1, and Blue as 0.2 296 00:17:38.719 --> 00:17:41.980 This results in a more nuanced color 297 00:17:41.981 --> 00:17:46.485 not entirely pure red but leaning strongly towards red 298 00:17:46.485 --> 00:17:50.440 Since the particle size is currently quite large 299 00:17:50.440 --> 00:17:55.419 let’s reduce it to a range between 2 and 5 300 00:17:55.419 --> 00:17:59.280 This will create a smaller, petal-like appearance 301 00:17:59.280 --> 00:18:01.380 For the particle 302 00:18:01.380 --> 00:18:04.920 for example, the original size of 4 to 8 303 00:18:04.920 --> 00:18:08.079 was generally too large to resemble petals 304 00:18:08.079 --> 00:18:12.640 By reducing the size, we can create 305 00:18:12.640 --> 00:18:16.280 a more delicate, petal-like look 306 00:18:16.280 --> 00:18:18.700 Finally, let’s adjust the Wind Force value 307 00:18:18.700 --> 00:18:27.119 If the particles are blown away too strongly, we can't see the chair well 308 00:18:27.119 --> 00:18:29.619 So, in this Wind Force setting, the X-axis value 309 00:18:29.619 --> 00:18:32.899 which controls the forward movement, down to 20 310 00:18:32.899 --> 00:18:39.599 This way, they will form a recognizable chair shape 311 00:18:39.599 --> 00:18:41.400 Instead of having the particles move forward 312 00:18:41.400 --> 00:18:46.399 we’ll make them rise slightly upward, like flames 313 00:18:46.399 --> 00:18:49.719 I’ll set the Z value to 50 314 00:18:49.719 --> 00:18:55.119 Now, as you can see, the particles appear briefly 315 00:18:55.119 --> 00:18:58.079 in the shape of the chair at the beginning 316 00:18:58.079 --> 00:19:02.280 and then fade away nicely 317 00:19:02.280 --> 00:19:09.560 Let me highlight only the modules where I’ve made changes 318 00:19:09.560 --> 00:19:12.520 We modified the Emitter State and the Spawn Rate 319 00:19:12.520 --> 00:19:14.800 Arranging them sequentially, this is what we did 320 00:19:14.800 --> 00:19:19.560 For now, I’ll stop here for this particular particle effect 321 00:19:19.560 --> 00:19:25.199 So, that concludes my adjustments to this Particle 322 00:19:25.199 --> 00:19:29.479 There are additional features like Mesh Orientation 323 00:19:29.479 --> 00:19:34.179 Instead of using billboards 324 00:19:34.179 --> 00:19:37.879 you can see how the particles 325 00:19:37.879 --> 00:19:40.799 can rotate as sprites 326 00:19:40.799 --> 00:19:44.040 These functionalities have been added here 327 00:19:44.040 --> 00:19:45.640 With these additional options 328 00:19:45.640 --> 00:19:50.040 you can experiment with turning effects on and off 329 00:19:50.040 --> 00:19:52.400 and think about 330 00:19:52.400 --> 00:19:55.479 what fits best with your intended outcome 331 00:19:55.479 --> 00:19:59.079 So I made adjustments to the Emitter, Spawn Rate 332 00:19:59.079 --> 00:20:04.239 Initialize Particle, StaticMesh Location, and Wind Force 333 00:20:04.239 --> 00:20:11.719 I’ll highlight all the modules where I modified specific parameters 334 00:20:11.719 --> 00:20:13.479 to give you a clear overview 335 00:20:13.479 --> 00:20:16.359 Next, we’ll add another module 336 00:20:16.359 --> 00:20:19.239 but this time, it won’t be for the Particle itself 337 00:20:19.239 --> 00:20:21.719 It’ll be to display the chair 338 00:20:21.719 --> 00:20:27.640 Right now, while the particles are being generated, the chair itself is not visible 339 00:20:27.640 --> 00:20:32.199 First, right-click and select Add Emitter 340 00:20:32.199 --> 00:20:38.000 Then, from the list of templates, choose Single Looping Particle 341 00:20:38.000 --> 00:20:41.400 Click the Add button 342 00:20:41.400 --> 00:20:46.880 As you can see, a white particle has now been generated 343 00:20:46.880 --> 00:20:52.479 We’ll deactivate the modules we don’t need for this 344 00:20:52.479 --> 00:20:57.439 We’re going to use a mesh this time, so turn off the Sprite Renderer 345 00:20:57.439 --> 00:21:00.599 Now, nothing is visible on the screen 346 00:21:00.599 --> 00:21:04.199 So, let’s add a Mesh Renderer under the Renderer section 347 00:21:04.199 --> 00:21:08.199 In the Mesh Renderer, we’ll add the chair 348 00:21:08.199 --> 00:21:09.719 Click on Mesh 349 00:21:09.719 --> 00:21:15.239 and you’ll see that the current mesh is set to a gizmo 350 00:21:15.239 --> 00:21:17.560 which is displayed as an arrow-shaped gizmo 351 00:21:17.561 --> 00:21:19.232 You can see this 352 00:21:19.232 --> 00:21:23.760 Open the Mesh settings and search for _chair 353 00:21:23.760 --> 00:21:31.199 Once you select the chair, you’ll be able to see it 354 00:21:31.199 --> 00:21:37.040 At this point, you’ll see the default Material applied to the chair 355 00:21:37.040 --> 00:21:39.119 However, this isn’t what we’ll be using 356 00:21:39.119 --> 00:21:42.479 We need to change the Material to the Dissolve Material 357 00:21:42.479 --> 00:21:47.880 Currently, this is default Material set in the StaticMesh Editor 358 00:21:47.880 --> 00:21:52.319 To use the new Material 359 00:21:52.319 --> 00:21:57.040 we’ll activate the Material Override option located just below 360 00:21:57.040 --> 00:22:03.839 This enable the Override Material option below 361 00:22:03.839 --> 00:22:06.719 Clicking this plus button 362 00:22:06.719 --> 00:22:12.199 allows us to replace the existing Material 363 00:22:12.199 --> 00:22:17.880 where you can assign a custom Material to the Index field 364 00:22:17.880 --> 00:22:23.599 I’ll connect it to M Chair Dissolve 365 00:22:23.599 --> 00:22:26.119 You can now see the dissolve effect applied 366 00:22:26.119 --> 00:22:32.640 We need to access the dynamic parameters in the Material 367 00:22:32.640 --> 00:22:35.839 so to the Update section 368 00:22:35.839 --> 00:22:41.359 we’ll add the Dynamic Material Parameter module 369 00:22:41.359 --> 00:22:43.359 We’re adding it to Update 370 00:22:43.359 --> 00:22:48.400 because we want the effect to change over time 371 00:22:48.400 --> 00:22:50.359 That's why we did this 372 00:22:50.359 --> 00:22:54.959 Now, as this Emitter is already linked to the Material 373 00:22:54.959 --> 00:22:56.660 This Material here 374 00:22:56.660 --> 00:23:02.020 This data with dynamic parameters, connects to Emitter 375 00:23:02.020 --> 00:23:04.319 Without any setup 376 00:23:04.319 --> 00:23:10.880 the defined parameter names are automatically listed here 377 00:23:10.880 --> 00:23:16.439 The default values we set in the Material are ignored 378 00:23:16.439 --> 00:23:20.319 and the values are defined in the module 379 00:23:20.319 --> 00:23:24.839 If we increase the Noise Scale value here 380 00:23:24.839 --> 00:23:30.439 you can see how the size of the noise pattern changes 381 00:23:30.439 --> 00:23:33.079 Increasing the Dissolve Value allows us 382 00:23:33.079 --> 00:23:39.359 to control the appearance and disappearance of the object 383 00:23:39.359 --> 00:23:45.000 The Emissive Power for the edge is set to 0, so you can’t see the boundary 384 00:23:45.000 --> 00:23:47.239 If we adjust the edge value slightly 385 00:23:47.239 --> 00:23:51.119 and set the Emissive Power to a stronger value 386 00:23:51.119 --> 00:23:55.359 for example, let's try 8 again 387 00:23:55.359 --> 00:23:56.539 you’ll notice 388 00:23:56.540 --> 00:24:00.792 that the edges of the dissolving area now glow 389 00:24:00.792 --> 00:24:05.319 You can also adjust the thickness of the edge 390 00:24:05.319 --> 00:24:07.339 making it appear 391 00:24:07.340 --> 00:24:10.540 wider or narrower 392 00:24:10.540 --> 00:24:14.880 These adjustments are flexible 393 00:24:14.880 --> 00:24:18.161 For Noise, for example, you could leave it 394 00:24:18.161 --> 00:24:21.609 at a single value like 0.01 395 00:24:21.609 --> 00:24:26.640 For Dissolve Value, since it needs to transition from fully visible 396 00:24:26.640 --> 00:24:29.599 to gradually disappearing 397 00:24:29.599 --> 00:24:31.920 a single value won’t work 398 00:24:31.920 --> 00:24:37.000 To handle this, click the arrow next to the value 399 00:24:37.000 --> 00:24:41.000 We’ll change the value type to Float From Curve 400 00:24:41.000 --> 00:24:42.939 The curve will now align 401 00:24:42.939 --> 00:24:47.001 with the particle’s lifetime 402 00:24:47.001 --> 00:24:49.009 If the particle lifetime is 10 seconds 403 00:24:49.009 --> 00:24:50.860 the curve starts at a value of 1 404 00:24:50.860 --> 00:24:55.000 and transitions to 0 at the end of 10 seconds 405 00:24:55.001 --> 00:24:56.121 This isn't what we want 406 00:24:56.121 --> 00:24:59.880 It is not gradually disappearing 407 00:24:59.880 --> 00:25:04.439 It is gradually appearing 408 00:25:04.439 --> 00:25:09.319 So we’ll reverse the curve 409 00:25:09.319 --> 00:25:12.400 Using the template, I’ll flip the graph 410 00:25:12.400 --> 00:25:17.419 At the 0% time mark, it isn't entirely visible 411 00:25:17.819 --> 00:25:22.679 Let me zoom in so that the graph fits here 412 00:25:22.679 --> 00:25:28.760 At the 0% time mark the value should be around -2 413 00:25:28.760 --> 00:25:32.160 ensuring it’s invisible at the start 414 00:25:32.160 --> 00:25:37.680 At the 100% time mark, the value will be set to 2 415 00:25:37.680 --> 00:25:40.439 1 won't make it disappear completely 416 00:25:40.439 --> 00:25:41.919 So let's make it disappear completely 417 00:25:41.920 --> 00:25:44.520 Just as you can see here 418 00:25:44.520 --> 00:25:46.219 Let's zoom again 419 00:25:46.219 --> 00:25:48.600 From -2 to 2 over time 420 00:25:48.600 --> 00:25:53.800 We created the desired effect of a smooth transition 421 00:25:53.800 --> 00:25:56.280 At this point, when you enable the Override Material option below, the plus button becomes active and clickable 422 00:25:56.280 --> 00:26:00.359 If you want, you can change the curve to Auto in the middle 423 00:26:00.359 --> 00:26:04.859 which lets you adjust the speed of how it fades out 424 00:26:04.859 --> 00:26:08.560 You could make the fade out slow down gradually 425 00:26:08.560 --> 00:26:11.079 or the opposite to this curve 426 00:26:11.079 --> 00:26:13.999 The steeper the curve 427 00:26:13.999 --> 00:26:17.880 the more noticeable the change becomes 428 00:26:17.880 --> 00:26:21.199 This could be a good opportunity 429 00:26:21.199 --> 00:26:24.800 to experiment and try out interesting effects 430 00:26:24.800 --> 00:26:25.580 Like this 431 00:26:25.580 --> 00:26:29.339 You can control how things change over time 432 00:26:29.339 --> 00:26:31.599 using this type of graph 433 00:26:31.599 --> 00:26:34.319 It’s a useful way to test different things 434 00:26:34.319 --> 00:26:36.740 Currently, the effect we’re working with 435 00:26:36.740 --> 00:26:41.760 the Blowing Particle, has a factory runtime of 5 seconds 436 00:26:41.760 --> 00:26:47.319 and the particle lifetime is also set to a maximum 437 00:26:47.319 --> 00:26:48.199 of 5 seconds 438 00:26:48.199 --> 00:26:50.680 What this means is 439 00:26:50.680 --> 00:26:53.479 So, after the factory stops at 5 seconds 440 00:26:53.479 --> 00:27:00.079 the particles can last for another 5 seconds of lifetime 441 00:27:00.079 --> 00:27:02.040 So they disappear here 442 00:27:02.040 --> 00:27:06.099 The entire visible duration for the Blowing Particle 443 00:27:06.099 --> 00:27:10.680 is estimated as around 10 seconds 444 00:27:10.680 --> 00:27:17.359 The default lifetime for the Single Looping Particle is set to 10 seconds 445 00:27:17.359 --> 00:27:18.079 10 seconds 446 00:27:18.079 --> 00:27:21.880 If left as is, the particles will remain visible 447 00:27:21.880 --> 00:27:24.160 even after the other effects disappear 448 00:27:24.160 --> 00:27:27.880 For instance, the dissolved chair would still linger partially 449 00:27:27.880 --> 00:27:31.040 which may not be what you want 450 00:27:31.040 --> 00:27:35.040 But you have several ways to control this 451 00:27:35.040 --> 00:27:40.760 Adjust the graph in the Dynamic Parameter module to a straight line 452 00:27:40.760 --> 00:27:42.839 witching it to a Linear curve 453 00:27:42.839 --> 00:27:45.839 Again, a Linear curve 454 00:27:45.839 --> 00:27:48.359 So it won't last for the entire lifetime 455 00:27:48.359 --> 00:27:49.680 But just the half 456 00:27:49.680 --> 00:27:52.640 Changing more quickly for just half the lifetime 457 00:27:52.640 --> 00:27:54.680 That's one way of doing it 458 00:27:54.680 --> 00:27:58.079 Alternatively, you could manually adjust the values for 5 459 00:27:58.079 --> 00:28:00.680 Every time, one value 460 00:28:00.680 --> 00:28:02.220 5 seconds again 461 00:28:02.220 --> 00:28:05.239 Blowing Particle, Emitter time, all 5 seconds 462 00:28:05.239 --> 00:28:07.099 It'd be more efficient 463 00:28:07.099 --> 00:28:10.419 if a single parameter controlled everything at once 464 00:28:10.419 --> 00:28:14.160 Instead of chaining each value 465 00:28:14.160 --> 00:28:19.760 we can control everything with one value 466 00:28:19.760 --> 00:28:21.839 I will show you how 467 00:28:21.839 --> 00:28:25.439 Synchronize the Lifetime value in Initialize Particle 468 00:28:25.439 --> 00:28:30.160 with the Emitter State’s duration 469 00:28:30.160 --> 00:28:34.319 Open the Lifetime dropdown, and from the options 470 00:28:34.319 --> 00:28:37.680 select Current Looping Duration 471 00:28:37.680 --> 00:28:41.000 under the Emitter section 472 00:28:41.000 --> 00:28:46.680 Now, the particle lifetime is linked to the emitter state 473 00:28:46.680 --> 00:28:49.040 keeping them synchronized 474 00:28:49.040 --> 00:28:52.400 Next, since the State values 475 00:28:52.400 --> 00:28:55.280 that for Single Looping 476 00:28:55.280 --> 00:28:58.439 and Blowing Particle are currently different 477 00:28:58.439 --> 00:29:02.920 so we need to unify them using a shared parameter 478 00:29:02.920 --> 00:29:05.359 Go to User Parameter, click the Plus button 479 00:29:05.359 --> 00:29:07.660 Make New, Common 480 00:29:07.661 --> 00:29:09.987 Select Float 481 00:29:10.000 --> 00:29:15.520 Name it Share Loop Duration 482 00:29:15.520 --> 00:29:19.280 and set its default value to 5 483 00:29:19.280 --> 00:29:22.400 Once that’s done, same thing 484 00:29:22.400 --> 00:29:26.560 Blowing Particle's Emitter State and Loop Duration fields 485 00:29:26.560 --> 00:29:27.920 Click on the arrow below 486 00:29:27.920 --> 00:29:31.119 Search for ShareLoop Duration 487 00:29:31.119 --> 00:29:37.079 You can search for User Parameter to connect them 488 00:29:37.079 --> 00:29:38.359 So it's connected 489 00:29:38.359 --> 00:29:43.019 Also, Single Looping's Emitter State 490 00:29:43.019 --> 00:29:45.439 Lifecycle mode, Self 491 00:29:45.439 --> 00:29:48.319 Loop Behavior, Once 492 00:29:48.319 --> 00:29:52.400 Duration, ShareLoop Duration 493 00:29:52.400 --> 00:29:55.560 Click on the arrow below to connect 494 00:29:55.560 --> 00:29:58.699 All the values at Share 495 00:29:58.699 --> 00:30:04.920 are now synched with Loop Duration of each Emitter State 496 00:30:04.920 --> 00:30:07.880 By changing just this one value 497 00:30:07.880 --> 00:30:13.400 The value at Emitter State was connected with Particle's Lifetime 498 00:30:13.400 --> 00:30:19.959 Like this, you can adjust the duration for all emitters at once 499 00:30:19.959 --> 00:30:26.400 We created both the Material and Material Instance earlier 500 00:30:26.400 --> 00:30:32.239 The Mesh Render is currently connected to the Material 501 00:30:32.239 --> 00:30:36.400 When we connect it 502 00:30:36.400 --> 00:30:37.640 let’s try that now 503 00:30:37.640 --> 00:30:42.239 We switched the connection to the Material Instance instead 504 00:30:42.239 --> 00:30:48.880 At Instance, the Dynamic Parameter section isn’t visible 505 00:30:48.880 --> 00:30:52.239 However, when using the Dynamic Material Parameter 506 00:30:52.239 --> 00:30:55.679 values such as Noise Scale and Loop Value in the Material 507 00:30:55.679 --> 00:30:58.760 are still passed through 508 00:30:58.760 --> 00:31:04.520 and the applied effect on the chair works just fine 509 00:31:04.520 --> 00:31:08.160 Through the User Parameter 510 00:31:08.160 --> 00:31:12.439 we’ve established shared connections across components 511 00:31:12.439 --> 00:31:15.239 including Initial Particle 512 00:31:15.239 --> 00:31:17.680 Material to Instance 513 00:31:17.680 --> 00:31:20.640 Instance to Mesh Render 514 00:31:20.640 --> 00:31:23.719 and finally to the Dynamic Parameter 515 00:31:23.719 --> 00:31:29.119 Not only are Niagara systems internally linked 516 00:31:29.119 --> 00:31:34.940 but they’re also seamlessly connected with external assets 517 00:31:34.940 --> 00:31:38.960 Configuring Blueprint for Niagara Control 518 00:31:38.960 --> 00:31:44.000 To wrap up the example, we’ll explore 519 00:31:44.000 --> 00:31:47.680 how to integrate Blueprint 520 00:31:47.680 --> 00:31:51.319 Niagara, and Static Mesh to manage effects 521 00:31:51.319 --> 00:31:55.760 Let’s start by creating a Blueprint asset 522 00:31:55.760 --> 00:31:59.280 We’ll set its base class to Actor 523 00:31:59.280 --> 00:32:04.719 and name it BP_Dissolve 524 00:32:04.719 --> 00:32:07.839 Once created, open the Blueprint editor 525 00:32:07.839 --> 00:32:12.839 Blueprints generally serve two roles 526 00:32:12.839 --> 00:32:16.280 One is to group different components 527 00:32:16.280 --> 00:32:20.160 and the other is to enable programming 528 00:32:20.160 --> 00:32:22.239 For grouping, we can combine 529 00:32:22.239 --> 00:32:25.000 different types of actors 530 00:32:25.000 --> 00:32:30.359 like how we grouped multiple emitters in Niagara 531 00:32:30.359 --> 00:32:35.599 We’ll link a Static Mesh with Niagara 532 00:32:35.599 --> 00:32:38.500 Through simple programming 533 00:32:38.500 --> 00:32:42.641 we’ll add an interactive toggle mechanism 534 00:32:42.641 --> 00:32:45.827 to turn these on and off as needed 535 00:32:45.827 --> 00:32:48.520 For Niagara effects 536 00:32:48.520 --> 00:32:50.800 different user interactions 537 00:32:50.800 --> 00:32:53.680 often trigger a reaction 538 00:32:53.680 --> 00:32:55.680 This allows effects to manifest or deactivate 539 00:32:55.680 --> 00:32:59.920 in response to the desired scenario 540 00:32:59.920 --> 00:33:03.439 Let's start with the components 541 00:33:03.439 --> 00:33:07.359 Start by adding a Static Mesh component 542 00:33:07.359 --> 00:33:09.359 For this, for Static Mesh 543 00:33:09.359 --> 00:33:12.359 select sm_chair 544 00:33:12.359 --> 00:33:15.359 which will be the base of everything 545 00:33:15.359 --> 00:33:18.000 Next, click on the plus button 546 00:33:18.000 --> 00:33:23.719 to add a Niagara Particle System component 547 00:33:23.719 --> 00:33:27.699 By default, newly added components 548 00:33:27.699 --> 00:33:33.680 often become children of the previously added component 549 00:33:33.680 --> 00:33:37.199 For this setup, it’s not a major issue 550 00:33:37.199 --> 00:33:40.520 However, if the parent-child relationship affects movement 551 00:33:40.520 --> 00:33:44.439 you can drag the component to the Root to Attach 552 00:33:44.439 --> 00:33:48.880 This allows the Niagara system 553 00:33:48.880 --> 00:33:51.359 and Static Mesh to function independently 554 00:33:51.359 --> 00:33:53.959 or be controlled separately 555 00:33:53.959 --> 00:33:56.839 So, let’s connect the Niagara component 556 00:33:56.839 --> 00:34:01.640 to the FX_Chair Dissolve system we created earlier 557 00:34:01.640 --> 00:34:03.359 That's set 558 00:34:03.359 --> 00:34:07.680 Click the Add and include a Box Collision component 559 00:34:07.680 --> 00:34:11.479 Once added, drag it back to Root and attach it 560 00:34:11.479 --> 00:34:13.280 The Box Collision’s role is 561 00:34:13.280 --> 00:34:17.359 to detect when a user-controlled player character 562 00:34:17.359 --> 00:34:22.199 gets close to the chair, triggering it so that 563 00:34:22.199 --> 00:34:24.399 it dissolves gradually 564 00:34:24.399 --> 00:34:27.520 You can adjust its size 565 00:34:27.520 --> 00:34:33.520 by scaling it up as needed 566 00:34:33.520 --> 00:34:37.479 With this, the component setup is complete 567 00:34:37.479 --> 00:34:40.360 Currently, the chair is visible 568 00:34:40.360 --> 00:34:42.919 and the Niagara system is also active 569 00:34:42.919 --> 00:34:45.360 We see both of them together 570 00:34:45.360 --> 00:34:49.280 When the player enters the Box 571 00:34:49.280 --> 00:34:53.159 of when the character approaches it 572 00:34:53.159 --> 00:34:59.439 we'll deactivate the Static Mesh and activate the Niagara effect 573 00:34:59.439 --> 00:35:01.439 First, press Compile 574 00:35:01.439 --> 00:35:06.399 to ensure the three components are properly recognized 575 00:35:06.399 --> 00:35:11.439 Next, go to Event Graph for some simple programming 576 00:35:11.439 --> 00:35:15.200 To prevent the Particle system 577 00:35:15.201 --> 00:35:17.585 from starting on its own when the scene loads 578 00:35:17.585 --> 00:35:21.840 so we’ll take two precautions 579 00:35:21.840 --> 00:35:27.679 Locate the Begin Play event node 580 00:35:27.679 --> 00:35:32.360 This node triggers once when the actor 581 00:35:32.360 --> 00:35:36.719 is placed in the world or 582 00:35:36.719 --> 00:35:40.479 when the simulation starts 583 00:35:40.479 --> 00:35:44.120 Drag the Niagara component into the graph 584 00:35:44.120 --> 00:35:49.320 We want the Niagara component disabled 585 00:35:49.320 --> 00:35:53.600 so its active state as disabled when it begins 586 00:35:53.600 --> 00:35:56.000 Use the Set Active node for this 587 00:35:56.000 --> 00:35:59.040 For this box called New Active 588 00:35:59.040 --> 00:36:04.000 Disable this box so that we can't tick it 589 00:36:04.000 --> 00:36:07.199 Also, for this Niagara component 590 00:36:07.239 --> 00:36:11.239 ensure that its default Auto Active 591 00:36:11.239 --> 00:36:14.040 is turned off 592 00:36:14.040 --> 00:36:21.320 For player interaction, use the Actor Begin Overlap event node 593 00:36:21.320 --> 00:36:24.600 For Actor Begin Overlap 594 00:36:24.600 --> 00:36:30.199 copy and paste the Niagara component and Set Active node 595 00:36:30.199 --> 00:36:32.600 then connect them to the Overlap event 596 00:36:32.600 --> 00:36:38.199 Now, enable Active and also activate Reset 597 00:36:38.199 --> 00:36:40.039 Enabling Reset 598 00:36:40.039 --> 00:36:42.779 ensures the Niagara system 599 00:36:42.780 --> 00:36:45.499 starts from the beginning of its timeline 600 00:36:45.499 --> 00:36:50.120 rather than resuming from where it paused 601 00:36:50.680 --> 00:36:57.879 It will start from 0 and continue when Set Active and Reset are activated 602 00:36:57.879 --> 00:37:02.600 Let's compile with these two setups 603 00:37:02.600 --> 00:37:05.800 Let's return to the level 604 00:37:05.800 --> 00:37:08.320 and test this out 605 00:37:08.320 --> 00:37:12.000 Place the dissolve chair in the world 606 00:37:12.000 --> 00:37:14.760 and click the Play button to test the setup 607 00:37:14.760 --> 00:37:16.840 Now, when it runs 608 00:37:16.840 --> 00:37:19.439 we see our Third Person character 609 00:37:19.439 --> 00:37:22.080 We can click to control the viewport 610 00:37:22.080 --> 00:37:24.520 Now, as you approach the chair 611 00:37:24.520 --> 00:37:26.280 let’s move closer slowly 612 00:37:26.280 --> 00:37:31.360 Once you step into the chair’s Box Collision area 613 00:37:31.360 --> 00:37:36.040 you’ll notice the effect is triggered 614 00:37:36.040 --> 00:37:40.159 But the chair itself remains visible, which feels a bit off 615 00:37:40.159 --> 00:37:44.479 To address this, we’ll add a step to the Blueprint logic 616 00:37:44.479 --> 00:37:47.320 During the Begin Overlap event 617 00:37:47.320 --> 00:37:50.320 or when the player enters the Box Collision 618 00:37:50.320 --> 00:37:54.479 we’ll drag in the StaticMesh component 619 00:37:54.479 --> 00:37:56.919 and toggle its visibility off 620 00:37:56.919 --> 00:37:59.639 This is Set Visibility node 621 00:37:59.640 --> 00:38:00.940 Set Visibility 622 00:38:00.940 --> 00:38:04.000 By doing this, the chair will disappear visually 623 00:38:04.000 --> 00:38:05.399 So for you 624 00:38:05.399 --> 00:38:11.120 you need to know the difference between Active and Visibility 625 00:38:11.120 --> 00:38:13.040 Let's first compile 626 00:38:13.040 --> 00:38:14.840 and run this again 627 00:38:14.840 --> 00:38:16.800 Press Play 628 00:38:16.801 --> 00:38:18.281 and approach the chair once more 629 00:38:18.281 --> 00:38:19.222 It disappears 630 00:38:19.222 --> 00:38:22.040 Did you notice something strange? 631 00:38:22.040 --> 00:38:23.800 Let me do it again 632 00:38:23.800 --> 00:38:25.840 Press ESC to pause 633 00:38:25.840 --> 00:38:29.959 Take a look at the shadow of the chair 634 00:38:29.959 --> 00:38:32.479 Let's Play it again 635 00:38:32.479 --> 00:38:35.719 The chair casts a shadow on the ground 636 00:38:35.719 --> 00:38:38.200 Entering the collision area, this happens 637 00:38:39.000 --> 00:38:42.599 Particles function purely as effects 638 00:38:42.639 --> 00:38:45.399 which means they don’t cast shadows 639 00:38:45.399 --> 00:38:49.120 By placing a StaticMesh in the world 640 00:38:49.120 --> 00:38:53.699 you can ensure that shadows are drawn 641 00:38:53.699 --> 00:38:55.560 even when the effect isn’t active 642 00:38:55.560 --> 00:38:57.919 Let’s press ESC to go back 643 00:38:57.919 --> 00:39:00.280 At Begin Play 644 00:39:00.280 --> 00:39:02.600 let's activate Active 645 00:39:02.600 --> 00:39:05.479 This is for a quick comparison 646 00:39:05.479 --> 00:39:09.479 Let's disable the Niagara's Visibility 647 00:39:09.479 --> 00:39:14.040 I’ll use the Set Visibility node and set it to false 648 00:39:14.040 --> 00:39:20.320 Then, Set Active and Set Visibility for the StaticMesh remain unconnected and won’t function 649 00:39:20.320 --> 00:39:23.439 We’ve turned off the visibility for the Niagara effect 650 00:39:23.439 --> 00:39:26.560 When I start the simulation 651 00:39:26.560 --> 00:39:29.520 and quickly move into the Box Collision area 652 00:39:29.520 --> 00:39:32.520 The visible effect will deactivate as expected 653 00:39:32.520 --> 00:39:34.679 Let’s compile 654 00:39:34.679 --> 00:39:37.600 Let's Play to test it out 655 00:39:37.600 --> 00:39:42.280 During the effect’s activation, the particles suddenly disappear 656 00:39:42.280 --> 00:39:45.239 When I step into the active particles 657 00:39:45.239 --> 00:39:47.278 they vanish abruptly 658 00:39:47.278 --> 00:39:51.120 This highlights the difference between Visibility and Active 659 00:39:51.120 --> 00:39:55.959 Setting Active to false essentially 660 00:39:55.959 --> 00:40:00.120 halts the factory process of generating particles 661 00:40:00.120 --> 00:40:02.600 However, even with the cessation 662 00:40:02.600 --> 00:40:06.959 particles that have already been generated 663 00:40:06.959 --> 00:40:10.560 remain in the world 664 00:40:10.560 --> 00:40:14.760 Conversely, disabling Visibility 665 00:40:14.760 --> 00:40:19.199 stops both of these things 666 00:40:19.199 --> 00:40:25.239 both the display of particles and the factory process 667 00:40:25.239 --> 00:40:27.479 So the effect that was in action 668 00:40:27.479 --> 00:40:31.800 vanishes entirely as we saw in our project 669 00:40:31.800 --> 00:40:35.120 If you want particles to fade out naturally 670 00:40:35.120 --> 00:40:36.679 letting each particle 671 00:40:36.679 --> 00:40:41.479 exist for its assigned lifetime before disappearing 672 00:40:41.479 --> 00:40:43.520 so to manage deactivation 673 00:40:43.520 --> 00:40:46.479 you should use Active instead of Visibility 674 00:40:46.479 --> 00:40:51.600 to manage activation or deactivation 675 00:40:51.600 --> 00:40:53.439 So this is what we have 676 00:40:53.439 --> 00:40:58.000 There’s an unusual behavior I’d like to show you 677 00:40:58.000 --> 00:41:03.879 Approach the back of the chair repeatedly, something is off 678 00:41:03.879 --> 00:41:05.840 Let’s rotate this 679 00:41:05.840 --> 00:41:07.219 Rotate 680 00:41:07.220 --> 00:41:09.334 Let's Play 681 00:41:10.439 --> 00:41:12.239 Let's approach the chair 682 00:41:12.239 --> 00:41:17.560 The chair suddenly snaps back to its original orientation 683 00:41:17.560 --> 00:41:21.479 This happens because the effect 684 00:41:21.479 --> 00:41:25.479 should operate in Local Space 685 00:41:25.479 --> 00:41:29.639 We rotated the chair in the world 686 00:41:29.639 --> 00:41:32.800 but it is the Actor that rotated 687 00:41:32.800 --> 00:41:36.760 The rotated Actor’s components 688 00:41:36.760 --> 00:41:40.320 such as the mesh, Niagara system, and collision box, all align accordingly 689 00:41:40.320 --> 00:41:42.760 It is all synchronized 690 00:41:42.760 --> 00:41:46.479 To fix this, enable Local Space 691 00:41:46.479 --> 00:41:50.159 for both the Single Looping Particle 692 00:41:50.159 --> 00:41:51.980 and the Blowing Particle components 693 00:41:51.980 --> 00:41:54.619 Let's Play and compare 694 00:41:54.619 --> 00:41:56.380 With Local Space enabled 695 00:41:56.380 --> 00:41:58.639 when I approach the chair 696 00:41:58.639 --> 00:42:02.379 it disappears as we designed it so 697 00:42:02.379 --> 00:42:06.879 Finally, besides controlling visibility 698 00:42:06.879 --> 00:42:10.600 you might find that the playback duration 699 00:42:10.600 --> 00:42:14.040 of the particles feels too long or too short 700 00:42:14.040 --> 00:42:19.120 Using the Share Loop Duration parameter 701 00:42:19.120 --> 00:42:21.479 we’ve ensured consistent control 702 00:42:21.479 --> 00:42:25.040 We can adjust the playback duration dynamically within the Blueprint 703 00:42:25.040 --> 00:42:28.040 increasing or decreasing it as needed 704 00:42:28.040 --> 00:42:34.239 In Begin Play, if you search for Set Parameter in Niagara 705 00:42:34.239 --> 00:42:41.239 you can assign values to various parameter variables 706 00:42:41.239 --> 00:42:46.080 Since we created the Loop Duration as a float type 707 00:42:46.080 --> 00:42:50.439 we first create a Niagara Float node 708 00:42:50.439 --> 00:42:52.639 and connect it to the event graph 709 00:42:52.639 --> 00:42:55.800 Next, name the value exactly the same as before 710 00:42:55.800 --> 00:42:59.639 as Share Loop Duration 711 00:42:59.639 --> 00:43:04.280 If you want the effect to last only 2 seconds 712 00:43:04.280 --> 00:43:05.399 assign that value 713 00:43:05.399 --> 00:43:06.719 and run the play test 714 00:43:06.719 --> 00:43:11.479 Now, it fades out much faster 715 00:43:11.479 --> 00:43:15.439 If you set the duration to 10 seconds 716 00:43:15.439 --> 00:43:20.479 Like this, let's lengthen it before we test it 717 00:43:20.479 --> 00:43:24.719 It remains active for a much longer time now 718 00:43:24.719 --> 00:43:28.399 When handling effects like this 719 00:43:28.439 --> 00:43:33.000 there are many factors to consider 720 00:43:33.000 --> 00:43:35.679 Beyond what we covered in this lecture video 721 00:43:35.679 --> 00:43:37.520 Conduct thorough testing 722 00:43:37.520 --> 00:43:41.699 to create your own stunning effects 723 00:43:42.099 --> 00:43:46.379 Today, we explored how to control the Niagara system 724 00:43:46.479 --> 00:43:50.520 by creating a dissolve material and applying it practically 725 00:43:50.520 --> 00:43:54.600 Because effects are real-time assets that change dynamically 726 00:43:54.600 --> 00:43:59.719 planning and pre-design are even more critical 727 00:43:59.719 --> 00:44:04.599 than for 3D meshes or materials 728 00:44:04.599 --> 00:44:09.500 Let’s wrap up by summarizing what we’ve learned today 729 00:44:09.500 --> 00:44:10.500 Thank you 730 00:44:11.999 --> 00:44:12.780 Controlling Material Effects with Dynamic Materials To directly control materials in Niagara, create a Dynamic Parameter node 731 00:44:12.780 --> 00:44:13.581 Noise Texture Multiply the World Position with the Noise Scale parameter using a Multiply node Connect the result to World Position 732 00:44:13.581 --> 00:44:14.302 When using general textures, patterns may appear awkward due to UV mapping 733 00:44:14.302 --> 00:44:14.963 To directly control materials in Niagara, create a Dynamic Parameter node 734 00:44:14.963 --> 00:44:15.524 Creating Dissolve Material Generate a Step node, then connect Noise to X and DissolveVal to Y Connect DissolveVal to DissolveEdge 735 00:44:15.524 --> 00:44:16.204 Use the boundary between wide and narrow areas to create edges 736 00:44:16.204 --> 00:44:17.865 Creating Niagara System Add a Static Mesh Location module If an error message appears, click Fix Now to resolve it 737 00:44:17.865 --> 00:44:18.705 Emitter Settings Add Dynamic Material Parameters in Particle Update Dynamic material data is directly connected to the emitter 738 00:44:18.706 --> 00:44:20.086 User Parameter Select each Emitter State and link them to Share Loop Duration Allows controlling multiple emitter values with a single parameter 739 00:44:20.086 --> 00:44:21.147 A material instance can be linked to the material Enables integration with both internal Niagara systems and external assets 740 00:44:21.147 --> 00:44:22.028 Blueprint Setup for Niagara Control Blueprint Creation Add a Static Mesh component 741 00:44:22.029 --> 00:44:26.209 Add a Niagara Particle System component Add a Box Collision component