Softimage 2014 cachedat files


Here’s something I noticed when I started up Softimage 2014 SP2 for the very first time. It spent about 26 seconds writing some cachedat and cachehdr files in my User folder:
Startup_file_summary
During subsequent startups, Softimage just reads in the cachedat, which takes a lot less time (eg < 0.005 seconds).

I looked back at my previous versions of Softimage, and it seems these cache files were new in 2014. There's actually two cachedat files, each with an associated cachehdr header. You'll find them in your %XSI_USERHOME%\Cache folder:

C:\Users\xsisupport\Autodesk\Softimage_2014_SP2\Cache\{870AB238-90C2-4336-8D46-B2CDD31C8A34}.cachedat
C:\Users\xsisupport\Autodesk\Softimage_2014_SP2\Cache\{870AB238-90C2-4336-8D46-B2CDD31C8A34}.cachehdr
C:\Users\xsisupport\Autodesk\Softimage_2014_SP2\Cache\{AD8CCDD2-C275-46E3-9881-265DB5BC84BB}.cachedat
C:\Users\xsisupport\Autodesk\Softimage_2014_SP2\Cache\{AD8CCDD2-C275-46E3-9881-265DB5BC84BB}.cachehdr

One cache is read at startup. The other is updated when you first drag an ICE node into an ICE tree (and then if you start a new XSI.exe session and drag the same node into an ICE tree, Softimage will read from the cache). Running strings on these cache files showed lots of ICE node/compound names, so they seem to be strictly for some sort of ICE-node caching (eg ports, layouts, logic, …).

Using modulo to delete points from a cached simulation


hat tip to tekano bob who did all the work; I’m just pointing out some things about his ICE tree 🙂

First, he’s using the Element Index in case the ID was not cached (if you cache with the Cache Manager, then by default the ID attribute is not cached).
modulo_getelementindex

When I saw that, I thought maybe I could use First Valid to use either the ID, if available, or the Element Index:
modulo_getpointid

But that gives wacky results, because Delete Point automagically restores IDs to all the points in the cached simulation. So you have no choice but to use the Element Index.

Another interesting thing I’d like to point out is how you can use modulo to delete two-thirds of all points (instead of just deleting every third point). Now, modulo by 3 has three possible results: 0, 1, and 2. If you test for modulo != 0 or modulo > 0, then you’ll be deleting two-thirds of all points:
modulo_two-thirds

If you test for modulo = 0, then you’ll delete every third point:
modulo_one-third