Randomised particle movement


^and speed of 0.1 :slight_smile: very nice. I’m still going to plug betterwind :smiley:


Here is the result of driving 2K particles over 100 frames with the setup I mentioned above.
Spawning a particle every 1 unit, shading Color by Age/Lifespan via global KCM, Krakatoa Particle Rendering, 744K particles. Lit by one spot light. Render time 1.985 seconds.


Haha NICE! … show off :smiley:

I like the color by age :wink:


Couldn’t resist, taking forever on this slowly little machine…

Color by age, emission by density


Wow! Beautiful art you two! How the heck could this render under 2 sec Bobo? What are the machine(s) specs?

And Johnny, how did you get those nice glow on the particles front?

Do any of you guys mind sharing a SS of the flow chart :D?

Beautiful abstract art! This could well represent some hadrons colliding :smiley:


The 2 seconds are for frame 100 only without the preroll of the 99 frames before that. With preroll, rendering only frame 100 takes about 15 seconds. After you do it once, PFlow keeps the last frame in memory, so rendering again takes 2 seconds. The machine is 2x4core Xeon, but since I rendered in Particle Mode, only the sorting was multi-threaded, the attenuation calculation and the drawing were single-threaded. The typical drawing speed of Krakatoa is around 2MP/sec., and because I had less than a million, lighting and drawing them was rather fast.

I will post the MagmaFlow screenshot tomorrow as I have it in the office. In short, it had

Age as Float Divided by LifeSpan as Float subtracted from 1.0, to the power of 2.0, controlling Input3 of a Blend node with two color inputs - one cyan and one dark blue. Output of the Blend went into the Color channel.


Riiiiight… I can almost get it :blush: You had to rely on script to do it, correct?

Better wait for your SS tomorrow :D. Please, excuse my small brain :cry:

Edit: Did a quick test here with 738K particles in total (Spawn by travel distance, shape facing particles) and it did render (MentalRay) in 3 seconds (with a translation time of 30 or so seconds). Now the only thing that’s missing is the color by particle age…

After that I’ll buy your PF&Maxscript DVDs Bobo! Promise!


Well, I used Krakatoa so the color by age was done with a simple Channels Modifier (the node-based MagmaFlow editor we added last release). It looks somewhat like this, but I blended two colors instead of defining a gradient:

It could be done using Vertex Colors and a Script Operator - my PFlow DVD has some examples of that. But doing it in Krakatoa is just simpler and faster. And the MagmaFlows are really fast - usually around 10 million particles per second.


Hey Bobo, what do you achieve by squaring the normalized age? You make it exponential curve instead of linear or what?


Ahn… sorry to bother you Bobo. I thought you used just PF to achieve that effect and used Krakatoa just to render. Now I see that without Krakatoa I’d need a different approach. Thanks for the info anyway!


damn! That worked like a beauty. I just had to reduce the Turbulance to match the scale of my scene, but cracking up the Influence is really the key to all this. Thanks again Bobo!


Yes, since the division of Age/LifeSpan produces a value between 0.0 and 1.0, 0.0 to the power of 2 remains 0 and 1.0 to the power of 2 remains 1.0, but 0.5 ^ 2 = 0.25, so the linear graph changes to an exponential curve similar to this one:

Obviously, one could use the Curve Node to do the same, but the Power operator lets you change the curvature by just changing the second input value, so it is just faster to set up… I would use the Curve Node only for complex bezier curves.


Hey Bobo, I was just thinking here that maybe it could be possible to make a loop with the length of the animation for every particle and, at each step, a random normalized vector is calculated to point in the direction the particle would go, also a random velocity value is calculated and is applied.

I just don’t know how to code it in Maxscript :smiley:

Also, how would one proceed to achieve the shading you did in Krakatoa using only PF?

Sorry if I’m being inconvenient… I’m just too damn excited about the images you and Johnny posted!!


Then welcome to the goodness :slight_smile:

@Bobo - way cool, I actually hadn’t thought of that and I was using curve mappings even for the exponents! Will simplify things from now on, thanks!


There is a split amount in the flow that spawn 1000±200 particles every 10000nth particle, then dispersed with a little speed+variance. In Krakatoa I have a global override for the emission channel that is controlled by density, so the more dense the particles the brigther the emission appears to be. and it helps having a great Mentor :slight_smile:

A couple more @

4k - Particle Render - 100 million particles

4k - Voxel Render - 100 million particles The emission is a bit different in voxel, this one has even a lower density and is still a quite a bit brighter.

EDIT:Is it just me or does PNG seem to render brighter in firefox?


Wow! Beautiful Johnny! Thanks for posting the images!! The particle render is far more interesting!

So, if I understood correctly, your particles are bright at some points not because of some glow effect, but because you have a dense pack of particles. Very clever! How long did it take to render this awesomeness?

And the question I asked Bobo I ask you too: how would one proceed to achieve the kind of shading Bob did in Krakatoa using only PF?

Not having krakatoa to play around is just awful :stuck_out_tongue:


First of all, Krakatoa has free Evaluation mode with very few limitations. You can even render up to 480x360 without watermark to post on YouTube. So go grab it and play with it.

You can set the Vertex Color of each particle to a color calculated using a Script Operator. On my DVD, there is an example of shading sphere particles based on their speed, as well as other properties (incl. stealing the color of a textured object in the vicinity), so the approach would be similar. Basically you enable the Age, LifeSpan and Mapping channels, for each particle read the Age and LifeSpan, divide the one by the other, use the value to blend between two colors and set the Vertex Color channel to that value. Add a Material Dynamic to the flow, set the Diffuse map to Vertex Color Map and done. There are other approaches, for example setting the Texture Map 1 channel’s U value and mapping to a Gradient for fancier results, but that is the basics. (You cannot say I am keeping it secret, but I wouldn’t mind if people would buy the DVDs ;))


Thanks, although I can’t take any credit it’s all Bobo’s fault. yes, I agree the voxel render still needs some tweaking

Yes the bright spots are very dense clumps of particles, one reason why the Voxel render I did is so overbright, it needs a way lower density.

and yeah what Bobo said :smiley:

BTW those DVD’s are a downloadable too, if you didn’t want to wait for snail-mail…and get the Krakatoa Demo :wink:


Thanks guys! Really appreciate! Guess it’s time to listen to Bobo’s lessons!


This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.