Hi,
I am trying to render storyboard slides with a python script, but I have quite some trouble doing this.
The most difficult part is to define a specific frame rate and then render the slide at each frame.
Right now I am doing this with a loop that is controlled by messages.
But often frames are missed or they are closer together than the defined frame rate.
I hope someone can help me with this.
Here is a part of the script:
while not isFinished:
if not isPlaying:
isPlaying=True
self.sendMessage( "SLIDE_PLAY", ((self.mySlideId,),))
self.sendMessage( "AT_DELAY", (1.0/float(TheFramesPerSecond), "SLIDE_PLAY_PAUSE", ()))
if isPaused:
if not isRendering:
isRendering=True
self.sendMessageSync('RT_SWITCH_REQUEST', (True,))
self.sendMessageSync( "SAVE_SCREENSHOT_AT_RESOLUTION", (self.myDirectory + '/'+ root +'_'+ str(currentFrame) + ext,int(TheImageWidth),int(TheImageHeight),3,TheAntiAliasing,False,))
self.sendMessageSync('RT_SWITCH_REQUEST', (False,))
self.sendMessage("FRAMERENDER_FINISHED",())
if isRenderFinished:
if isPaused:
currentTime=timeInfo.getTime()
targetTime=currentTime+1.0/float(TheFramesPerSecond)
isPaused=False
self.sendMessage( "SLIDE_PLAY_RESUME", ())
self.sendMessage( "AT_TIME", (targetTime, "SLIDE_PLAY_PAUSE", ()))
def SLIDE_PLAY_STARTED(self, message):
global doRenderSequence
if doRenderSequence:
global isPlaying
isPlaying=True
def SLIDE_PLAY_PAUSED(self, message):
global doRenderSequence
if doRenderSequence:
global isPaused
isPaused=True
def SLIDE_PLAY_RESUMED(self, message):
global doRenderSequence
if doRenderSequence:
global isPaused
global isRenderFinished
isPaused=False
isRenderFinished=False
def SLIDE_PLAY_ENDED(self, message):
global doRenderSequence
if doRenderSequence:
global isFinished
global isPlaying
global isRendering
isFinished=True
doRenderSequence=False
isPlaying=False
isRendering=False
def FRAMERENDER_FINISHED( self, message 😞
global doRenderSequence
if doRenderSequence:
global isRendering
global isRenderFinished
global currentFrame
currentFrame+=1
isRendering=False
isRenderFinished=True