In our render management software we would like to be able to open the rendered image sequence in rv and set the current frame to a specific frame.
So far I haven't found anything in the docs. -in wont work because the artists want playback to cover the full image sequence but look at the specific frame they selected in our render management software when we launch rv.
It looks like the .rv file stores a currentFrame, but even when I in the session, but when I open that .rv file the playhead ends up on the first frame.
4 comments
-
Jon Morley Official comment HI Mike,
In order to do this you will need to know enough information to calculate the global frame number and bind a function to be executed after the files are loaded to set the frame. The most sensible approach I think would be to make a package that reads frame number input from the command line (with commands.commandLineFlag) and waits for the "after-progressive-loading" event to set the frame (with commands.setFrame).
However...
I think it might make more sense to leave RV open and use its network control API to load sources and set the frame if you are planning on reviewing lots of material. That is much more efficient than to open and close RV constantly.
Please tell me more about how your software interacts with RV and have a look at the following documentation:
Thanks,
Jon -
Mike Hendricks Thanks, that helped a lot.
For the time being the artists want to launch a new instance of RV each time, so I went with the first option. Here is the Mode code I came up with. It works great. `rv -flags currentFrame=20 /path/to/image/sequence.#.jpg` This command will open the filename and set the play head to the 20th frame in the sequence(1 indexed)
```
from rv import commands
from rv.rvtypes import MinorModeclass CurrentFrameMode(MinorMode):
def afterProgressiveLoading(self, event):
cmdFlag = commands.commandLineFlag('currentFrame', None)
if cmdFlag is not None:
commands.setFrame(int(cmdFlag))
event.reject()def __init__(self):
MinorMode.__init__(self)
self.init("py-CurrentFrame-mode",[("after-progressive-loading", self.afterProgressiveLoading, "")],None, None)def createMode():
return CurrentFrameMode()
```
I was able to get a proof of concept of using the network control API using rvshell. If the artists change their minds down the road, I think it will work well, especially as we would be using a Qt app to launch it. The Network control API looks like it can be very useful. -
Mike Hendricks By the way, here is how the artist is using this:
The user uses our render management software to see their render jobs on the farm.
They can right click on a job that has rendered frames, and select the 'Open in RV' menu item. This will open RV and load the specified frame sequence using `rv /path/to/image/sequence.#.jpg`. It defaults to the first frame of the sequence.
They can also see the render status of each individual frame. If they right click on one of the frames they can select 'Open in RV'. This will open RV and load the frame sequence. But they want it to default to the frame they have selected. -
Jon Morley That is terrific, Mike! Thank you for sharing as well!