How to Continue a Cached Sim

Yes, this page is still a Work In Progress (WIP).

There are a variety of ways to continue a sim in TP.

New in TP 6.6 is the "Initial State" operator. More on this soon...

For now we will discuss a simple method to continue a cached sim without having to re-cache the entire thing.

Let's say you have a sim already cached from frame 1 to 100. You find you want to continue that sim to frame 150.

Summary

In a nutshell, we need to capture the velocity and spin of all particles at the last frame of the existing cache, and then on the first frame of continuation (last frame of old cache + 1) we apply the velocity and spin to the particles. We must nest the existing cache inside a new dynset and setup the continuation rules inside this new dynset, and then cache the parent dynset.

This method has some drawbacks, discussed below.

Honestly, if your original cache sims in under an hour or two, just re-cache it from the beginning with the new shot length, unless of course you absolutely have to have that exact original cache, in which case the method below can help.

Steps

First, you must create a new dynamic set (dynset) and put the existing cache inside it.

Then create a sibling cache called "Continue Rules" (at the same level as the cached dynset). This dynset will hold the rules for continuing the cache.

The first rule inside "Continue Cache" we will call "Store Initial Data".

Inside "Store Initial Data" create a new "Memory" operator to hold some variables. Add Velocity and Spin, called "myVel" and "mySpin".

Setup a rule that says, "on the last frame of the existing cache, store my velocity and spin into myVel and mySpin". This is done with a Time Interval and storing the particle velocity and spin into the myVel and mySpin.

Next, create another dynset that says, "Read and assign the myVel and mySpin values from Memory onto the particles." This is done by setting a Time Interval condition set to the last frame of the old cache plus 1, and reading the memory variables and assigning them to the particles via a ParticleData operator (the easiest way).

Now cache the "Continue Cache" dynset. This will capture all the data from the original cache, and the velocity and spin of the particles will continue based on the last frame of the original cache.

Now here is the real problem... all the rules like gravity, forces, jointing, collision engines, flow solvers, etc., must be added again. Basically duplicate them from the original cache and nest them inside "Continue Cache". This sucks will but it will allow you to continue an existing cache.

The bigger problem... is how to setup jointing between particles and keep that data. Unfortunately the only real way to do that properly is by adding Data Channels to your particles in the original cache that store information about those joints, like what is the PID of my joint partner, what is the integer class of my joint, what is the alignment of my joint, etc.