For a python script to be able to specify only specific frames to render.
ie; instead of 1-500, tell it to render 3, 17, 98, 176, etc…
I would rather not use a render farm for just this one project, but I don’t want to do it manually either.
it’s actually not very hard… you can set the frame in context, then render!
Updated the script:
- You can include ranges using “:” or “-”
- Basic error checking
- Deleted bunch of useless code >.<
#!BPY
""" Registration info for Blender menus: <- these words are ignored
Name: 'Render selected frames'
Blender: 242a
Group: 'Object'
Tip: 'Render (comma separated) individual frames or (":"/"-" separated) ranges only'
"""
__author__ = "René Yanagida aka Daredemo"
__version__ = "1.0a 2006/11"
__bpydoc__ = """\
"Render selected frames" renders frames in a comma separated list
Usage:
Give a list of comma separated frame number of the frames you wish to be rendered. Use the script from the "Object->Scripts" menu of the 3d View.
"""
import Blender
from Blender import *
from Blender.Scene import Render
scn = Scene.GetCurrent()
context = scn.getRenderingContext()
text = Blender.Draw.Create("1,4-6,9")
block = []
block.append(("Frames:", text, 0, 30, "Enter comma separated list of frames or \":\"/\"-\" separated range to render"))
retval = Blender.Draw.PupBlock("Render selected frames", block)
if retval:
txt = str(text)
iks = txt.split(",")
ixx = len(iks)
for i in range(ixx):
rng = iks[i].replace("'", "")
if not rng == "":
if not rng.count("-") == 0:
frange = rng.split("-")
st = int(frange[0])
ed = int(frange[1])
if st > ed:
start = ed
end = st
else:
start = st
end = ed
elif not rng.count(":") == 0:
frange = rng.split(":")
st = int(frange[0])
ed = int(frange[1])
if st > ed:
start = ed
end = st
else:
start = st
end = ed
else:
start = int(rng)
end = start
context.startFrame(start)
context.endFrame(end)
context.renderAnim()
Render.CloseRenderWindow()