Long story short:
I’ve created a script that allows for me to OpenGL render multiple scenes ( in a single blender file ) at a specified frame.
Although I update the “current_frame” of the scene that is about to get rendered. It always renders my previously rendered frame in scenes that are NOT my active scene.
I render frame 0 for scene A and B
result 1: I receive files A0 and B0
NEXT I render frame 1 for scene A and B
result 2: I receive files A1 and B0
NEXT I render frame 20 for scene A and B
result 3: I receive files A20 and B1
Every scene that is rendered is rendered using the exact same code:
def Render(self, frame , directory): print("Rendering %s at frame %s" %(self.SceneName , frame)) # swap screen to other scene ( for context sensitive stuff ) previousSceneName = bpy.context.screen.scene.name bpy.context.screen.scene = bpy.data.scenes[self.SceneName] # set the scene' frame to the correct frame bpy.data.scenes[self.SceneName].frame_current = frame # get save file path batchFilePath = self.GetFilePath( frame, directory ) self.FilePath = batchFilePath # render scene in openGL bpy.ops.render.opengl() # savce render bpy.data.images['Render Result'].save_render( batchFilePath ) print("-- Saved files to %s" %(batchFilePath)) # back to old scene bpy.context.screen.scene = bpy.data.scenes[previousSceneName]
What am i forgetting?
PS: I tried adding a sleep tick before the render to allow for blender to catch up with the script once. But to no avail.