RV Held Frames (Longer than Source)

For those who have had to hack around RV’s lack of support for holding a frame past the region of a movie/frame sequence, what is your approach? Do you use retime nodes, or stacks with blank movieprocs?

I haven’t had to do this in production yet, so I’m curious what works well (hint ADSK, this is something we’d like native support for).

Thanks!
-Kessler

Hi Kessler! How are you? :slight_smile:

I don’t know if this an option for you, but adjusting the EDL of the sequence node should work.

The source node will by default repeat its last frame when fetched passed it. In this case, it is not the source that extends itself, but the sequence node that reveals (untrim) 10 frames passed the end of the 1st clip.

In this example, I assume I already have 2 clips loaded in RV. Both clips are 50 frames long. I want to extend the 1st clip by 10 extra frame so frame 51 to 60 are actually frame 50 repeated 10 times.

Let me know is this is helpful or not. :slight_smile:

Note : Stack node also has a mode.strictFrameRanges option which I think is off by default. When turned on it will stop repeating frames outside the sources’ range. But, since I think it is off by default, it probably does not to what you are looking for.

Eric

seqNode = rv.commands.nodesOfType("RVSequence")[0]

print "BEFORE"
print rv.commands.getIntProperty("%s.edl.frame" % seqNode)
print rv.commands.getIntProperty("%s.edl.source" % seqNode)
print rv.commands.getIntProperty("%s.edl.in" % seqNode)
print rv.commands.getIntProperty("%s.edl.out" % seqNode)

#BEFORE
#[1, 51, 101]
#[0, 1, 0]
#[1, 1, 0]
#[50, 50, 0]

frameArray = rv.commands.getIntProperty("%s.edl.frame" % seqNode)
frameArray[1] = 61
frameArray[2] = 111
rv.commands.setIntProperty("%s.edl.frame" % seqNode, frameArray)

outArray= rv.commands.getIntProperty("%s.edl.out" % seqNode)
outArray[0] = 60
rv.commands.setIntProperty("%s.edl.out" % seqNode, outArray)

print "AFTER"
print rv.commands.getIntProperty("%s.edl.frame" % seqNode)
print rv.commands.getIntProperty("%s.edl.source" % seqNode)
print rv.commands.getIntProperty("%s.edl.in" % seqNode)
print rv.commands.getIntProperty("%s.edl.out" % seqNode)

#AFTER
#[1, 61, 111]
#[0, 1, 0]
#[1, 1, 0]
#[60, 50, 0]

Note : I had to toggle view (leave sequence view and come back to it) for the full range to update from 100 to 110.

1 Like