Jump to content

Handeling cache chain


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?

Link to comment
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)

 

Link to comment
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
Link to comment
Share on other sites

  • 5 months later...
  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...