Spawn Particles around Surface (UE4 Cascade) [Need Help]

Hey Folks, I need some help here. How do I spawn particles that sit on a surface?

Does Cascade have a setting that allows me to enable that or is it a blueprint/programmer thing? The idea is that the rain/droplets will be attached to a character that will be running through an environment. I want the Z-Axis to be pointing outwards.

Any ideas on how to do this? Thanks.

If it’s just for a character running through rain, you could let the raindrops collide with the character and use these drops as a source emitter. The collision event then spawns your splash particles. https://docs.unrealengine.com/latest/INT/Resources/ContentExamples/EffectsGallery/2_D/
I’m not quite sure about velocites, but i think there was a way to use the sources velocities. After the drops bounce off the surface their velocity vector is what you want, if i understood you correctly. You could always adjust these velocities via blueprint or code. Collision is not the cheapest option though, so faking it is probably better.

If you want to spawn the particles on the mesh (faking splashes), here is a video on how to do that. I think the velocities ar also adjustable to use the vertex normals, if not do it via blueprints or code.

“splash mesh”

keep in mind that each emitted mesh is a drawcall, so that splash mesh emitter is already 30+ drawcalls in that image alone. Additionally, spawning thousands of cpu particles isnt that great either.
Its a great way to burn the ms/fps to the ground.

Id use the uncharted way, and fake the splashes inside the shader of your surface.

Is there away around getting a drawcall for each emitted mesh? There is no reason why instanced meshes using the same shader should use individual drawcalls.

1 Like

sadly nope.

Maybe in Niagara, but sadly nope :frowning:

Additionally, if you know what you are making, or find that the end result is using a lot of meshes being spawned at the same time… you could always go back to max/maya/whatever and merge all the meshes into one drawcall.

All identical mesh particles in a single emitter are batched into a single drawcall now. I don’t remember when we changed that but it’s been in for a while. For randomization, we will often pack multiple mesh shapes into a single static mesh and choose them using vertex color logic in the vertex shader (collapsing unused vertices down to zero or pushing them into the ground or other tricks), that way you can select multiple random meshes but only pay a single draw. Good for VR or Mobile.

4 Likes

Yep, same tricks as Frostbite. Is that rolled out to everyone in UE now?

@TobiasTobasco I see. So having the rain spawn from a mesh triggered by a blue-print/event would be less intensive than collision. I’d have to ask one of the programmers about that I’m new to blueprints as well.

Okay, so that solved some of the problem! Now I need to figure out how to get the drops to follow the mesh. Right now their pointing upwards. I assume that the particles would spawn up to a certain rotational degrees, otherwise it’d be doing weird stuff.

Does the velocity vector change the orientation of the collision? Is that a cascade or shader setting?

@Luos_83 Okay, so GPU over CPU for the best FPS. I was misinformed about that. I notice panels changes when going over to GPU and I’m unable to do things like sparks sticking to the ground. It creates issues with constant acceleration (weird bouncing when it’s supposed to stick). It was also a question of quality.

Does GPU have nicer/same looking particles and is just a performance boost? I’m still learning this stuff.

@Wyeth I see. So you’re storing multiple meshes and telling which ones to be randomly visible via vertex color/initial size correct? That’s a pretty neat trick I’ll have to check that out!

One thing I notice is that when the meshes are spawned, some will be squished like ovals even though the X and Y values are the same in both initial size and size by life. The mode is set to PSA Square. The mesh should be the same since only the X value is being affected throughout.

I tried other settings but I’m not seeing a change (yea I corrected the out val at 0,0 to 1,1,0).

O_o nobody ever told me, nor corrected me on answerhub, or private chats for that matter…
dude… DUDE!! that is the best news I could have at the start of 2017.
have. my. babies. now!

That said, any chance you can perhaps find which ue4 version added this feature?

I still haven’t figured out the splash rotation thing yet and the strange squishing on the Y-axis hasn’t gone away either, but I’ll figure that out eventually (unless its a bug).

Anyways, I still have more questions I’d like to ask-

How do I control particles via wind direction in Blueprints? What node enables the particles to be effected by wind, and what event in the blueprints triggers that? I’m slowly learning the whole process.

Or if that’s not possible, how and what parameter do I expose to fake wind direction in cascade? Is it velocity or acceleration, or neither? I’d guess that it’d be by life instead of initial location to create that sweeping motion. Thanks.

It looks like (GPU only) particles are controlled through Vector Fields. So rain particles would require me to import a premade field to control the direction their swirling/moving. CPU particles cannot do this, so that removes the option of having raindrop splashes matching the rain (kill on impact triggering splash mesh spawn).

Does anyone know if it’s possible to create rolling mesh collision in Cascade? Example: Big Explosion with rock debris flying everywhere, rocks bounce and collide with the ground then roll off slowly. Can cascade do this?

I think it may have to do with the damping factor under Actor Collision module.

With Mesh Data enabled, it looks like Freeze is the only option that will work (besides kill/halt collision). Someone mentioned something about friction but I don’t see that option under any of the modules. Any ideas?