We have been working on a customizable, artist-friendly way of specifying particle velocities for particle systems in Unity. The built-in particle system animator only allows for a very limited range of motions, and it would be really hard to make the particles flow around obstacles or create vortices.
But before we dive into the details of our custom particle editor, why don’t you have a look at the result in the demo below? (We also demonstrate a Unity implementation of the shimmer shader effect from the previous post as well as a shader which creates foggy mirrors)
The screenshot below shows our editor in action. You are able to specify motion of the particles in a 2D plane by placing control vectors, solids, sources, sinks, etc. Velocities are then computed for the entire plane by running a fluid solver for a certain amount of iterations using your inputs as boundary conditions. This only takes a few seconds and ensures that you get a nice and smooth velocity field in the entire plane. In the scene view, control vectors, solids, sources and sinks are displayed in order to help with aligning the motion with the scene geometry.

We have chosen to create a 2D editor instead of a full 3D editor since it greatly simplifies the user interface as well as reducing the computational load of the fluid solver. Our system still allows you to create 3D motions by extrapolating the 2D motion into space using a linear fall-off.
But more importantly, the system allows for using a linear combination of several velocity fields. Therefore, to specify a 3D motion you create several 2D motions and position them differently in your scene. The below screenshots show 5 planes combined to create a swirling, tornado-like motion. The highlighted plane in the left image specifies the horizontal motion, while the the highlighted plane in the right image and the 3 remaining planes contain sources and dictate an upwards motion.
The custom particle system fully integrates with the built-in particle emitter, animator and renderer meaning that all other aspects – save for the motion of the particles – are handled in the usual way. Other highlights include the ability to:
- Emit particles from your custom sources rather than the single particle emitter
- Add vortices to the velocity field
- Change the weight of each velocity field separately at runtime, effectively turning on and off various motions
We plan on putting this custom particle system and editor on the Unity Asset Store in the near future.






Tweets that mention Unity Custom Particle System Demo « Computer Graphics Lab -- Topsy.com
Feb 11, 2011
[…] This post was mentioned on Twitter by Juan Sebastian Muñoz, Jens Fursund. Jens Fursund said: Unity Particle system with baked fluid dynamics: https://viscomp.alexandra.dk/2011/02/11/unity-custom-particle-system-demo/, looks cool! […]
Martin Weiss
Feb 15, 2011
Hi
We’re a group of students at Aalborg University who are working with particle systems for a game on 8th semester (Medialogy). When is this plugin going to be available if at all? You can answer in Danish if you want 🙂
Cheers
Martin
admin
Feb 24, 2011
The extension just went live on the Unity Asset Store today. Check it out here.
Matthew Woods
Sep 12, 2011
Hi,
I had a question about your custom particle plugin. I am trying to create a school of fish swimming in a circle with Unity’s built in particle system. I am fairly happy with the results except for one major thing. The stretched particle renderer does a good job of making the fish look like they are moving along their swimming vector, but whenever the fish swim left they look fine, but when they swim right they appear upside down. I’m wondering if your custom particle system can solve that. I’m guessing not, as you sound like you are using the same particle renderer, but thought you might have some ideas.
Here is a link to a unity answer thread on my problem:
http://answers.unity3d.com/questions/162769/preventing-quotzombie-fishquot-a-question-about-st.html
Please let me know.
Thanks,
-Matt Woods
admin
Sep 16, 2011
Hi Matt,
as you’ve guessed, our particle system won’t solve your problem since we use the standard renderer. I’m afraid you won’t find a good solution using particles since there is really no way mirror particles; you can only rotate them. Maybe you could render geometry and only use the particles’ positions and velocities to move the geometry?
Cheers,
Brian