Particles, particulary painful

With this post I want to summarize and share my experiences I had using the particle system in current blender 2.61.

The current production phase calls for a lot of vfx, mostly to be done using dynamic particles. I will not go into detail as to what exactly the shots are, but I think just describing the overall concepts and approaches will give you an enough complete picture.

It soon was clear, that using the particle system from 2.49 was out of the question, as I needed some effects rendered using the volume shading with point density input from various particle systems.

So the first task was to export all the camera animation as well as all the objects and animations for the other needed parts. It turned out, that blender 2.61 does a decent job in importing old 2.49 files. At first look, everything looked ok. On deeper inspection though, I noticed broken rig setups regarding constraints and drivers across multiple armatures.

The effect was, that the resulting animation wasn’t exactly the same as in the original 2.49 version. Fortunately, the vfx work needed here did not call for pixel accuracy, so after a few manual tweaks I accepted the setup.

The next task was to come up with a solution and workflow to tackle the needed vfx work. The shots in question require several layers of moving particles, partly rendered as instanced objects and partly as volumes.My intention and need was to be totally in control on how those particles moved. I had a very precise picture in mind how the whole system should behave and move over time. With one word, I wanted to animate the overall behaviour of the  particles in a very controlled and predictable manner. But the individual particles should expose a random and chaotic appearance.

An example would be e.g. a tornado, where I control the overall shape and movement but let the system fill in the chaos. Or another example are the vfx used for the death eaters in the harry potter movies. ( That does not hint at any tornado being used in the shots … 🙂 )

My first idea was to use keyed particles, as those seemed very controllable in various aspects. What I did not realize then, was that they are too deterministic. The interpolation of the particles between the used keys is linear and gives a decisively unchaotic appearance. I was under he impression that random fluctuations and external force fields could be overlayed, but alas, that is not the case. Any physical properties are turned off as soon as keyed particles are used.

Well, that made it clear then to use the physics type particles and use force fields of all sorts to get the desired results. Well, there went the controllable and predictable attributes …

The headaches using this approach are manifold. Let me just list some of the shortcomings using this approach:

  • The animatable properties of particle systems are rather limited.
  • Controlling particle properties through textures work, but any animation of the  textures themselves is completely ignored and noneffective.
  • Force fields have to be animated by hand. The animated properties act indirectly on the movement of the particles and thus you have to guess the outcome.
  • Multiple force fields with overlapping effects are even harder to control
  • Trying to animate a moving particle stream along a path could be done using a curve force field, but you loose ( to a big degree) the interaction with other force fields and are left with something similar to the keyed approach.
  • To see the effects, you have to rerun the simulation every time you change anything.

The last point on the list wouldn’t be such a problem, if the cache system worked reliable. It happened very often, that I didn’t see any changes allthough I tweaked the force field animation a lot. Even freeing the cache didn’t work. Only changing some basic parameters (like changing the numbers of particles) I was able to reset the cache.

And I had to do this for a lot of particle systems all at once, thus multiplying the amount of time needed to get a result which at least had some resemblance to my original concept.

The next surprises came when actually rendering out those particles. Each particle system was rendered out to a different render layer all with various lights and masking applied. It turned out that 2 of my 8 particle systems didn’t render at all. They showed up very nicely when rendering the single layer alone, but would vanish as soon as all the layers were activated. Setting up those particle systems from scratch solved this problem. Another glitch was that the masking I set up in one layer was also active in another one, and thus ruining the render of that layer. Unfortunately I have not found any workaround for this one.

Another glitch is if you want to have a vector blur pass done. Allthough a lot of warning messages are produced in the console about missing objects in the speed table I got my vector passes. They look nice for 90% of the frames. But for some frames you get huge spikes in velocity for individual particles, which results in sudden long streaks in the compositor.

All in all, I have to do 3 shots with this type of heavy vfx, and I am halfway through. This should give you an idea how time consuming this whole process is.

The verdict on the current state of particles in blender is quite clear: a nice toy if used in demonstrations or simple setups. As soon as you ramp up the complexity and requirements you will have to face serious limitations. I would not use the term ‘production ready’ for the current implementation. And sadly the same has to be said about hair and cloth as well …

Well, sorry for the long rant-like text. I just had to make room in my head to be able to go on :)My hope now is, that the 3rd shot requiring this sort of vfx will benefit from the experience gained so far, but one thing is for sure: compromises will have to be made …

Author: loramel

Test

8 thoughts on “Particles, particulary painful”

  1. Agree very much. Unfortunately it seems that most coders and users who don’t push it much seem to think that as long as it can make simple demos for youtube, then it’s perfectly fine for production…

  2. Ah, memories.

    I had similar issues just trying to do simple snow particles for Durian. I had some sort of workaround trick for making sure the particle cache would actually clear out and refresh, but I’ve avoided particles in 2.5x since then so I can’t remember specifically what it was.

    I think it was tabbing in and out of edit mode on the emitter object/mesh.

    Of course, we had to commit the caches to svn as well, which added to the, uh… convenience of it all. I should have complained a bit harder at the time about several things, but the focus just slipped into wanting to get things out the way, so workarounds kept winning over when I found them. I’m really hoping Mango actually stays a shorter film, so that focussed user / dev feedback can get more of the attention span when required.

    1. I already had imagined, that you must have run into those same limitations during production of sintel.

      The trick with entering edit mode is a nice one :), thanks for that. I too, have to transfer the caches to my render server and have to be very careful not to mess up everything.

      And I can completely understand the situation about using workarounds to get the job done. I do not have a fixed deadline here, but after almost 3 years I want that project to be finished, so I am able to do other things again 🙂

      Sending constructive bug reports have to wait until then. These are problems which can’t be reported with a simple bug report. The problems show irregularly and always in the full context of the production, so I have to see if I can put together a concise report. But that will be a project in itself …

      Mango may have need for particle related VFX work, so the hope is there that this area will receive some attention. But then, there is also tracking, compositing and cycles on the list.

  3. As a motion graphic artist this is the main thing that’s really lacking in blender for me, it seems users like to compair Blender to other 3D software and how much better it is, so I’m going to do the opposite here. If you look at Cinema4D which in my profession is probably the most widely used 3D software, from a particle, simulation, dynamics standpoint Blender is a FisherPrice toy compair to C4D. I mean thinking particles, expresso, mograph and MoDynamics. This is one area we have a long way to go. Don’t get me wrong I think Cycles, Camera Tracker, and all the other improvements are amazing.

    But can we get some love for the particle system now. Really enjoyed reading your article. Thanks for posting it.

    1. Well, especially the particle system in blender seems to have its own queer evolution.

      There are some design decisions I do not full understand. While the particle system got reworked/rewritten for the 2.5 series, the static particles (aka hair) lost functionality.

      My impression is, that now and then interest flickers up and one developer is diving into this complex area. But as interest gets lost or time constraints on part of the developer cut in, the development comes to a halt, and you end up with a half developed feature. It never seems to be a coordinated approach. I know this is OSS and I do not want to belittle in any way the work done so far in this area.

      What I miss here, but then this may be missing insight, is a clear statement on the current state of individual features and, related to that, a development roadmap with clearly laid out priorities.

      While this is partly done for the open movie projects, you do not get a clear statement about the roadmap of all the individual features. There is no real indication about the completeness (or production readiness) of certain features.

      This leads to the assumption that anything can be done, often very heavily defended by die hard fan boys, which in the end does not help the development of blender at all.

      I for my part are immensely grateful for a tool like blender, as it enables me to do the things I have dreamed of for long. But as I develop my skills, I start to see some of the shortcomings. And while I would love to be able to use blender for my projects, I will look for alternatives in specific areas to get my vision done. But I will try to have my voice heard and can add a bit to the further development of blender.

  4. I’ve avoided using Blender’s Particle systems long from the 2.4x versions. I use an outdated version of AfterEffects, that is still loads better when doing this sort of a thing; ofcourse, there is the limitation and inflexibility of not being 3D integrated though. Previously, it was simply because my older machine could not handle a fairly large amount of data at once (caps at 2 million polys I believe), but now, even with a comparatively better one, I’ve always stayed clear of the system. It just did not seem like one of Blender’s strong points, to be used effectively.

    But honestly, I do not know much about using particles in general as well. I’ll gladly dabble in animation and crazy rigging than this.

    Like you pointed out, some of the biggest shortcomings of using OSS is exactly that, development. While the idea of it and spirit is commendable (and brag-able for people :)) there’s this obvious issue with coordination- motivation to complete something, more so.

    Your posts are immensely helpful, particularly from a production standpoint, and also to let people understand the Blender isn’t a rock solid piece of software; I wish to thank you again for the time you take to share these.

Leave a Reply

Your email address will not be published.