AWS Thinkbox Discussion Forums

Houdini detection of existing IFD and or images?

Hi,

Let’s say you have job that you submit the first time with an interval of 2.
so frame 1,3,5,7 etc are getting rendered
but then you want the other frames rendered as well, of course I could resubmit the job with an offset of 1 and again interval of 2.
but in my case that’s not useful.
Is there a way via python to detect existing output and then skip that task? so then I could resubmit the whole range with interval 1 and let deadline skip the frames that have been rendered.

thanks!

I suspect to do what you want you’d need to hack the Mantra plugin. Though if you set it up to delete the .ifd upon render completion, then on the second time through submit it without generating IFDs, that might accomplish what you want, albeit with the pre-existing frames “erroring” out due to lack of IFD.

I could see this as a decent RFE, something along the lines of a toggle that says “don’t overwrite existing renders”. Some queues have this already, though what they more typically do is prevent you from successfully queueing if any pre-existing frames are found. However, for as many times as you’d want this feature, I can see where it could bite you and because it /didn’t/ rerender something that you wanted.

The only solution I can think of would be to do the frame skipping. Is there a reason this won’t work? Maybe a simulation that would make it look jittery?

On the Thinkbox side, I’m not sure of a way we could get Houdini to do this… Is it possible from within Houdini itself?

If you want to go the hacking route (might be a bad idea), the file that actually controls Houdini is named “hrender_dl.py” in “[repo]/plugins/Houdini” and it runs whenever we’re rendering something.

When rendering, it looks like we essentially do this for every task:

startFrame=1 # first frame for task
endFrame=1 # last frame for task
increment=1 # how many frames to skip, not sure what drives this as Deadline normally handles this by creating more tasks

frameTuple = ( startFrame, endFrame, increment )

rop.render( frameTuple, resolution, ignore_inputs=ignoreInputs )

So, you may be able to get this to work manually, or you can play with the increment.

Digging even deeper, it looks like the increment is hard-coded in the plugin at “[repo]/plugins/Houdini/Houdini.py” here: (it’s being passed to “hrender_dl.py” using our own “-f” flag)

...
        elif regionRendering and singleRegionJob:
            arguments += " -f " + str( singleRegionFrame ) + " " + str( singleRegionFrame ) + " 1"
        else:
            arguments += " -f " + str(self.GetStartFrame()) + " " + str(self.GetEndFrame()) + " 1"
...

You could dabble there, but it could bring down the farm if you don’t create a new Repository off to the side.

thanks for the info guys!

we’ll keep it manual for now!

cheers,
Martijn

Privacy | Site terms | Cookie preferences