Jump to content

Recommended Posts

How are you managing your caches?

If I have 4-5 sims that builds on top of each other, all of them has a cache, and I change something in the first sim, I need to go and re-cache all the other caches (That maybe are located different places in my network). Are there a way to manage this "chain" of caches, so it's possible to have a better overview of all caches in the sim, and be able to quickly re-cache the sims that need it?

What is a good workflow for this?

Share this post


Link to post
Share on other sites

Hi Bobby, I was also trying to solve this issue. I am freelancer, so I don't know how bigger studios solve this.

Here is a thread discussing it:
https://forums.odforce.net/topic/39743-file-cache-sop-checking-for-dirtiness/

I was considering many approaches, but I ended up with a simple "manual" solution. I search for dependent caches, with a script like the following. If you are interested in this "manual" solution, I will clean it up and post here (and on my blog http://lex.ikoon.cz)

 

def fc_downstream_filecaches(node) :
    global dependents
    global filecaches
    candidates = list(set(  node.outputs() + node.dependents()  ))

    for candidate in candidates :
        if candidate.type().name() != "filecache" :
            if candidate not in dependents :
                dependents.append(candidate)
                fc_downstream_filecaches(candidate)
        else :
            # filecache, don't iterate
            filecaches.append(candidate)
            fc_invalidate(candidate)

        # If candidate's parent is a dopnet, check also dopnet,
        # because Dop I/O is dependent on Dop Object,
        # which is often independent.
        parent = candidate.parent()
        if parent.type().name() == "dopnet" :
            if parent not in dependents :
                dependents.append(parent)
                fc_downstream_filecaches(parent)
                
def fc_invalidate_dependents() :
    dependents = []
    filecaches = []
    node = hou.selectedNodes()[0]
    fc_downstream_filecaches(node)

 

Share this post


Link to post
Share on other sites

in production you usually build a ROP net where you fetch your Caches and connect them in order as they depend on each other

then just run the ROP dependency chain as you need, there may be a pre-render scripts that will update the cache versions based on some rules like hipfilename or something, but in a nutshell you just create an accompanying ROPnet to your setup

  • Thanks 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×