Non-Linear Dynamic Caching Systems
By Homam Bahnassi
This article is divided into the following sections:
Introduction to The New Cocktail
Welcome to the bar! Today, you’ll taste particles made of ingredients that we all know in XSI, but in a new cocktail mix!
Behind the XSI bartender, you can see that he already has tasty mixes of rigid body dynamics and tail simulations... All made with
his powerful animation mixer! But what about particle simulations?
Unfortunately, at the moment he doesn’t seem to have the specialized tools for creating our new delicious particles cocktail mix.
Oh well, then we will have to use the current mixer along with other available tools to create our particle mix...
We will make a sample shake and pass it over the customers to see what do they think about it. I bet the will like it when they
know about the list of vitamins and healthy features that this mix contains!
And if they like it, then it is up to the bartender to standarize this new mix and add it to his every-day menu...
Mixing The Particles Well Without Shaking
First, let’s introduce a workaround for creating the particle mix using
the currently available set of tools... We want to use the animation mixer to control particle simulations!
The idea is simple, and we’re not going to go through a step-by-step tutorial to show how to do it.
This is actually based on the fact that XSI deals with particles as points of the cloud, where the
particle operator is deforming them in space just like any other deformer or other operator that is deforming geometry objects’ points.
Depending on this fact, we will plot the particles movements to shape animated clips. These can be mixed in the animation mixer pretty
much the same way with geometry objects.
The attached scene shows this concept in action!
We have a small issue however... While particles are being emitted through time, their
points count is changing, which is not the case for ordinary geometry shape animations. So to make sure the shape
animation trick works correctly, we have to emit some particles at the beginning only and store different clips for a couple of simulation cases.
In the attached scene, you can solo the two bottom tracks to view the movement of the original particle clips.
Now let's mute the bottom two tracks and see how the new mix is gonna taste when using mixed particles from the two upper tracks.
Well? How does it taste? Yummy, eh? It actually uses a lot of delicious ingredients, all mixed together (time wrap, extrapolation,
standard blend, weight curves, etc…)...
Oops, the mug is empty! Unfortunately, it’s a little bit limited because we don’t have specialized tools to prepare a more
sophisticated mix. But still, it’s helpful in cases where the particles count is constant through time.
(I used it once to mix and control the animation of flocking fish school (available from
3dtutorial.com) where I mocapped the fish
control object, plotted the particles and then used the mixer to fix their movement).
Below, you can find a list of healthy vitamins in this new mix…
Benefits From This System: The Vitamins
- Vitamin B12-Complex: Using all the powerful animation mixer functions on top of the simulated animation.
- Vitamin B13: Managing/Combining cached simulations.
- Vitamin B14: Easy animation visualization and control by using mixer ghosting.
- Vitamin B15: Referencing cached simulations between different scenes.
- Vitamin B16: Building non-destructive simulation libraries which can be combined later with additional custom behavior for fitting scenes.
- Vitamin B17: Accessing the simulated data externally (given that it becomes exposed through a decent API like the dotXSI FTK).
Now these were some... There is actually many additional vitamins/minerals that I didn't mention. If you’re interested,
you can ask your doctor about it!
I can already see the smile of satisfaction over the customers' faces! Try it... You'll like it!
Writing The Final Recipe
It is time then for writing down how exactly do we want this feature to be in the end...
The list below is actually a subset of a complete wish list that was discussed at XSI Base at sometime ago...
We want to be able to:
- Depend on the simulation caches as a plotted data for later reuse in the mixer.

- Ray-cast-based mixing for getting rid of particles-IDs mixing limitations.
- The ability to cache/mix sub-components of the particles (positions/velocities/color/…)
- Having a PTK (Particles Tool kit) for accessing cached data externally.
- Referencing cached files with additional controls such as re-loading/offloading/etc.
A Final Word: The Bill
Since this was a test-drive for the new mix, then it will be for free!
If at some point Softimage decided to integrate this idea into XSI, then I believe we'll have to pay then…
Let's just hope it won’t cost a lot.
Finally, I would like to thank one of my students “Abdul Raheem Younes” who enlightened me with
the idea in his Monday class when I was explaining to him the different ways of caching/managing simulation systems in XSI.
Thank you Abdo… and thank you all people… Take care!