Time Offset Cache

I seem to be encountering an issue where my eddy cache doesn’t obey the time offset node. I know someone posted about retiming, and it was said that is not a feature supported, but I just want to offset the cache. I looked through the documentation and there doesn’t seem to be a specific Eddy retime function. Does anyone have any tips on how this could be done?

Goal is that I have a cache of 400 frames, and I just want to use the same cache with offsets as duplicates without needing to run 4 different simulations.

There may be an expression based way, but I am not really versed in python.

Any help would be greatly appreciated.



Can you try putting the TimeOffset node directly after the E_CacheLoader node? That should definitely work.


Hi Ronnie,

I have tried right after the cache loader and after a channel node, and results seem to be inconsistent. I will do some tests to see if it’s a GUI refresh issue or if it’s happening in render as well.


I just did a test in the GUI and a render and the time offset is not registering. The
Is is with the Time offset applied right after a cacheLoader node.

Perhaps you can send me a nuke script to see how your downstream graph is set up.

You can send it over to support@vortechsfx.com

Hi Ronnie,

Sorry, but I wouldn’t be able to do that without getting clearance from our facility. It looks like it may have been a network server disconnect to the machine that was causing the issue. It randomly started working and is now showing a refresh in GUI and in render correctly.

Thanks for the response.


So I think I finally found the issue.

I currently have the following:

Cacheloader—>Timeoffset—>EChannel(density)+axis—>eMerge(Additive) with another >Timeoffset—>EChannel(density)+axis going into the same eMerge node as a secondary pipe.

When this happens, it seems to inherit only one of the time offsets. I seem to be able to fix this by turning on “First input bounds only”. I am not sure why this matters? But without that checked it makes both inputs the same offset regardless of what it is fed upstream.

Is there a way to create a scene node that can be fed.into the shader so that I can run out a master precomp with multiple timeoffsets of the same cache, as it does not seem to work by combining multiple eMerge nodes together and feeding into the shader. One timeoffset always seems to override all the others when merging them.

For instance I have 9 axis that need to have various offsets, and currently it seems that the only way to render these is by eMerging a max of two together and selecting the “first input bounds only” which isn’t very efficient.

I’m hoping it’s just an easy fix or something I’m just not understanding.


And doing a check, it looks Iike that “first input bounds only” isn’t a solution. It’s actually dropping one of the assets.

I have provided two screen grabs showing the issue.

Hi Cameron,

Could you try duplicating the E_CacheLoader node, so that each TimeOffset has its own unique E_CacheLoader as an input? I suspect that might fix it. It shouldn’t affect performance although the extra nodes might be annoying.

There are some potential known issues where the Nuke TimeOffset node doesn’t interact correctly with the Eddy nodes and I think this might be one of them. Unfortunately they are tricky to fix, but we’ll keep this case in mind for a potential fix in future.


I tried doing this, as well, thinking the
At might fix it, but it doesn’t change the result. Had the same issue duplicating the cacheloader node.


Is there another way to create an offset, by any chance?

Ah, unfortunate that didn’t work, it must be a deeper issue than I thought.

Have you looked at the new instancer features we added in recent versions? If you’re okay with Eddy picking a random offset for each of your axis nodes (within a range you specify, and you can modify the random seed to get a different set of random offsets) then it should be quite easy. Take a look at the eddy_instancing_example_01.nk example scene, you would just need to replace the E_InstanceItem node with a E_InstanceItemVolumeCache node.

If you want to control the time offsets exactly, then you’d need to use particle instancing. This is quite a bit more complicated, but see the eddy_instancing_volumecache_example_01.nk example scene which is doing exactly this. Setting the time offset on each particle needs a C++ expression currently, and if you wanted to set the particle positions directly that might also be a bit tricky.

We recently added a couple of training videos for the instancing too.

Alternatively I’ve just added a quick fix: a frame offset value on the E_CacheLoader itself. This will be in the next Eddy version, 2.7.1, which we expect to release very soon. Using this instead of the TimeOffset nodes with multiple E_CacheLoaders should work as expected.

Thank you for the support. I will take a look and keep an eye out for updates.


We’ve just released Eddy 2.7.2, this has a frame offset option on the E_CacheLoader itself as a workaround for the issues with the TimeOffset node.

Amazing. I will have our pipeline team download and install.


Hi Niall,
Our pipeline team are experiencing crashing issues with this new version. Could you confirm the versions of Nuke this has been confirmed for? Or if there are versions of Nuke that have known issues. I couldn’t find anything on the vortech website regarding this.


It’s seems we are getting crashes by simply creating an Eddy node:

This is what is in terminal on crash:

We were previously on v2.4.1

Hi Cameron,

There’s a different installation file to download for each version of Nuke, so make sure you downloaded the file that matches your Nuke version. Those are all the currently supported Nuke versions.