I have 4 scenes, each of which needs to be rendered at a different frame. If I go through each scene and set the proper frame in each scene right before rendering it will render the proper frames. However, after doing this Blender seems to forget the specific frames for each scene and sets them all to the same frame as the scene I rendered from. So I have to go through this process of manually setting each scene's frame every time I render, which is a royal pain. Is there a way I can get each scene to render at a different frame and have Blender remember the frames for each scene?
Here's a small script that will run your render and reset the current frame number in each scene.
If you want to avoid the double render of the second 2 scenes, you could set up a fourth Scene for holding the compositing only and then only trigger the rendering of the other 3 scenes.
import bpy #set the first scene and render it - this will trigger rendering of other scenes as well bpy.context.screen.scene = bpy.data.scenes['Scene'] bpy.data.scenes['Scene'].frame_current=1 bpy.ops.render.render(write_still=True) #switch context to second scene and re-render frame 20 bpy.context.screen.scene = bpy.data.scenes['Scene.001'] bpy.data.scenes['Scene.001'].frame_current=20 bpy.ops.render.render(write_still=True) #switch context to second scene and re-render frame bpy.context.screen.scene = bpy.data.scenes['Scene.002'] bpy.data.scenes['Scene.002'].frame_current=40 bpy.ops.render.render(write_still=True) #now when we switch context back to first scene the compositor will show Frame 1 from Scene, Frame 20 from Scene.001 and Frame 40 from Scene.002 bpy.context.screen.scene = bpy.data.scenes['Scene']
Using this to run your render will allow you to keep your original frame range set to 1-250 and then just render the frames you want.
Each scene has a start frame and an end frame in the Scene > Render > Dimensions. If you set those both to the frame you want, then rendering the animation will render that single frame.
This setting is per-scene.