On many occasions, for various editorial and sanity reasons, we need to load non-contiguous image sequences in RV:

my_sequence.0000.dpx
my_sequence.1001.dpx
my_sequence.1002.dpx
...

Obviously, loading this sequence in RV results in a timeline consisting primarily of nonexistent images, with the useful portion of the "sequence" packed on the end. Currently, I use a missing-frame handler to skip over these gaps during playback, but the timeline is still pretty useless.

It would be great if there were a way to explicitly load a non-contiguous sequence in such a way that the missing chunks were factored into the reading of the files from disk, interface updates, etc.

• Jon Morley Official comment

Hi,

The ability to collapse missing frames has been added as an optional package in RV 6.2.8. Please give it a shot if you are still looking for this kind of functionality.

Thanks,
Jon

• Jacob Medendorp

We need this too!

Has there been any progress on this?

• Alan Trombla

Hi Jacob,

No sorry, this is a very low-level change to the way RV handles sequences, and we haven't figured out a good way to make it possible yet.

Please note that from the command line, this will load only existing images.  They'll be loaded as separate sources:

rv -noSequence foo.*.dpx

Hope that helps,

Alan

• Jim Polk

Hi Alan,

Using 4.0.9 and EXRs, this isn't working for us,...the files load, but the behaviour is still "Hold"...

Is there some kind of mode or other flag we should use?  Any packages need to be loaded or unloaded ?

If we could get this to work, it would solve a huge problem for us,..

Thank you,

Jim

• Alan Trombla

Hmm, what platform are you running on ?  Can you please give me the exact command line you used ?

Thanks,

Alan

• Jim Polk

Sure,..Apologies, I should have included that,...

We're on Win7-64....I'm calling RV over our network like so:

Y:\it\software\networkexe\Tweak\RV\4.0.9\bin\rv.exe -noSequence AA.####.exr

I just have about a dozen or so EXRs,...numbered as so:

AA.0420.exr  thru  AA.0425.exr

then our break for missing frames, then

AA.0435.exr  thru  AA.0440.exr

Thank you,

• Jacob Medendorp

• Alan Trombla

Hi guys,

Please note the "*" (asterix) in my example command line.  "####" or any other "sequence specifier" won't work.  The -noSequence command line flag basically stops RV from trying to assemble a sequence from a collection of names on the command line.   There is no way (without writing some code), to "unpack" a name that already represents a valid sequence (like " AA.####.exr"), the files have to be provided to RV separately on the command line for this to work.

Hope that clarifies,

Alan

• Jim Polk

Hey Alan,

Yes, I did notice that, and did try it that way.  Unfortunately, I get an error in the RV Console window

"Error: No files in this sequence AA.*.exr (0)"

Even though the files *are* there, just as before..

Thank you,

• Alan Trombla

Hi Jim,

Sorry, I think I'm not being completely clear.  In order for the -noSequence thing to work, the file names have to be provided separately on the command line.  Unfortunately, I'm not familiar enough with the windows shell, but it looks like it's just passing AA.*.exr as-is to rv.exe instead of expanding the wild card.  If you can figure out some way to make the shell expand the wildcard, or otherwise get a list of separate files for RV, that's what we want.  Also, if there is only that AA sequence alone in a directory, you could pass the dir name to RV instead (with -noSequence).

Hope that helps,

Alan

• Jim Polk

Hi Alan,

Hmm,..well...Along the lines of your last two sentences,...I also tried both of the following,..

Example 1:

Y:\it\software\networkexe\Tweak\RV\4.0.9\bin\rv.exe -noSequence AA.0420.exr AA.0421.exr AA.0422.exr AA.0423.exr AA.0424.exr AA.0425.exr AA.0435.exr AA.0436.exr AA.0437.exr AA.0438.exr AA.0439.exr AA.0440.exr

and

Example 2:

Y:\it\software\networkexe\Tweak\RV\4.0.9\bin\rv.exe -noSequence ./temp

(where the EXR's are in "temp",etc)

Both ways yield the same results,...RV is opened, image files are loaded...unfortunately two things happen...

First, again using both syntax's, I get 12 sequences each of 20 frames length,...

and second,  the "missing frames" are again in a "Hold" behaviour.

Sorry, it just appears that the "-noSequence" flag just isn't working correctly for us...

Thank you for your time and patience,

Jim

• Alan Trombla

Hah, I think RV is out-smarting us (or we're out-smarting ourselves ;-) ).  Do you perhaps have the "Sequence From File" package turned on ?  If so then I think -noSequence is working fine (making 12 single-frame sources), but then the sequence-from-file code wakes up and turns each one of those into a full sequence.

Try this:

Y:\it\software\networkexe\Tweak\RV\4.0.9\bin\rv.exe -flags ModeManagerReject=sequence_from_file -noSequence ./temp

Alan

• Jim Polk

and your the new command line..

Thanks!!

• Jim Polk

Sooo close!....that last command does what we want...but the frames are out of numerical order...

• Alan Trombla

Arg!  Unfortunately that's just what we're getting from the directory traversal.  I think the only option is to explicitly list the files on the command line (as in your "Example 1"); does that work ?  Not fun to type, but maybe this is a scripting situation ?

Anyway, whether that works or not, we'll try to bump up the priority of a "don't render missing frames at all" option of some kind.

Cheers,

Alan

• Jim Polk

Hey again Alan,...

Looking at "missing_frame_bling_mode.mu", I see a function named "renderNothing",...while it's companion functions show up

on the View menu, the "renderNothing" function does not,...would enabling/calling that function do the trick you think?

Thanks,

Jim

• Alan Trombla

Hi Jim,

No, sorry, if you look carefully in that code you'll see that the renderNothing() function corresponds to the "hold" menu item.  That's because all this mode is doing is rendering something "on top" of what RV's core is rendering and RV's default behavior is to render a previous (in the sequence) existing file for files that don't exist.

Cheers,

Alan

• Jim Polk

Hi Alan,

...ahh, I see....before I go too far down this trail,...is it possible for a customer/developer like myself to use either Python or Mu to create an RV package

that would achieve our goal?

Thanks,

Jim

• Alan Trombla

Well, I think the "real" solution (getting RV to "remap" the frames of a sequence of files so that only the existing files appear in the sequence) is not accessible to scripting code (or even C++ plugin code).  It's very deep in the core of RV (which is why we haven't provided a solution yet).

On the other hand the workaround we were trying to achieve above (with the -noSequence flag) would be fairly trivial to implement as a Package.

If you want to try that the steps would be something like:

1. On request from the user (menu item or whatever), get the value of the #RVFileSource.media.movie property from the current source, suppose it's something like "foo.1-300#.jpg".
2. Call existingFilesInSequence() to get the list of files in the "foo" sequence that actually exist (I'm not sure in what order you'll get this back on windows, but you might need to sort the list at this point).
3. (Call addSourceVerbose() for each existing file to make each one a separate source.
4. ((probably) delete the original source.

Note that you'd have to turn off or otherwise disable the "Sequence From File" functionality to make this work, otherwise it will still blow up each of those files into the whole sequence.

Hope that helps,

Alan

• Nathan Rusch

Somewhat tangential to this discussion, I've often wished for some kind of frame mapping capability on the RVFileSource node itself. I know the RVSequence node has some EDL control possibilities, but if you need to remap the frames for a single source (which is basically the goal of my original request), you end up creating all kinds of otherwise useless top-level nodes in the session just to get things to play as expected.

It would be really cool if the RVFileSource (and I guess RVImageSource) nodes had properties on them that could be used to define input-output frame mappings for this sort of precise retiming.

• Jim Polk

Hey Alan,...apologies, got pulled away for a while, now back at this...

Maybe I'm not finding/selected the "source"...but in trying to find a handle to the frame nodes,..i did something like:

types = commands.nodeTypes()

for type in types:

nodes = commands.nodesOfType( type )

print type, ": ", nodes

and RVFileSource (as well as RVImageSource) are empty lists,...I even went further (thinking it might be in one of those "Default" entities)

and tried a

for node in nodes:

seqFiles = commands.existingFilesInSequence( node )

but all nada,..all empty lists,..what am I doing wrong here?

Thank you,

Jim

Have attached my *very* simplistic code example..

• Alan Trombla

Hi Jim,

Hmm, not sure what could be going wrong there; nodesOfType("RVFilesSource") should only return nothing in the case where there are in fact no Sources loaded.

I just tested the whole procedure, and it seemed to work as expected.  Here's that code:

sources = rv.commands.nodesOfType("RVFileSource")for s in sources :    media = rv.commands.getStringProperty(s + ".media.movie")[0]    files = rv.commands.existingFilesInSequence(media)    for f in files :        rv.commands.addSource(f)    rv.commands.deleteNode(rv.commands.nodeGroup(s))

This was in RV 4.0.10 on the mac.  Can you tell me what version you're using on what platform ?

EDIT: oh, sorry.  Looking at your code more carefully, I see you're calling nodesOfType in the init() function of the mode.  If the mode is loaded automatically, this means your code will run before any sources are loaded.  You need to call it in response to user input (hotkey or menu item) or other event, so that it can operate on sources after they are loaded.

Cheers,

Alan

• Jim Polk

Doh!...I shoulda' thought of that!....

Now, works like a charm! :-)

Thank you very much, Alan

Cheers,

• Jim Polk

Hey Alan,...have one more question along this tangent ;-)

Currently, I'm using command line syntax to reject "sequence_from_file" and load our custom "NoGaps" plugin,

whose mode is triggered when user hits "Alt + 1".   The artists love it, but are asking it this mode could toggled off...;-)

Thinking abstractly,...Let's say I define "Alt + 2" to...

1)  deleteMode()  for NoGaps,..Is there such a command as 'deleteMode()' or does a change of current mode achieved by just creating a new mode?

(Btw,..are these modes "stacked"?....can I push a mode, pop one off the stack? etc..)

Before I start digging,..is something like this even possible ?

Thanks!

Jim

• Jim Polk

Hi Alan,

I believe you may have said that a  "don't render missing frames at all" option would be in the next release...

When do you predict the next new release would be released?

Thank you,

Jim

>> Anyway, whether that works or not, we'll try to bump up the priority of a "don't render missing frames at all" option of some kind

• Alan Trombla

Hi Jim,

No, sorry, "bump up the priority" definitely does not mean "will be in the next release".  A lot depends on how hard it turns out to be.  The only reason we didn't add something like this the first time it came up, is that its not easy.  It's not scheduled at the moment, but if I can nail it down enough to get it on the schedule, I'll let you know.

To answer your general question, we're releasing 4.0.11 today, and the next release will probably be out in 1-2 months.

Generally:

• RV has any number of Modes active simultaneously.
• In addition to being loaded, a mode can be "active" or "inactive" (inactive modes do not receive any events).
• The active/inactive state of a mode can be controlled by another mode.  This might be a little tricky from Python (since the ModeManager is written in Mu).

If the "Alt-1" action is to do the work of "blowing up" the source into a lot of one-frame-sources, as we discussed above, then I think you just want to deactivate the sequence_from_frame mode during that action.

If you want to open a support ticket and send me your code, I can probably offer pointers.

Cheers,

Alan