One Class Issue
Posted in: Nuke Plugins & ScriptsI wanted to create a panel to batch making snapshot.
The idea is to render the first frame of each quicktime file.
I created a function to do the batch render thing. Then I created the panel.
Here’s the function:
# create a function to make snapshots
def makeSnap(qtPath, snapPath, snapFrame):
qts = os.listdir(qtPath)
qts.sort()
for i in qts:
if i[0] != '.' and i[-4:] == '.mov':
# create a Read node with the qt file
setFile = 'file '
setFile += '"' + qtPath + i
setFile += '"'
qt = nuke.createNode('Read', setFile, inpanel=False)
# create a Write node with jpg output
splitextArray = os.path.splitext(i)
qtName = splitextArray[0]
snapName = qtName + '.jpg'
write = nuke.nodes.Write()
write.setName('Write1')
write['file_type'].setValue('jpeg')
write['_jpeg_quality'].setValue(1)
write['file'].setValue(snapPath + snapName)
write.setInput(0, qt)
#nuke.connectViewer(0,write)
# start render
nuke.render('root.%s' % write.name(), snapFrame, snapFrame)
# after rendering, delete nodes
for n in [qt, write]:
nuke.delete(n)
I worked pretty well. But when I wanted to wrap the script into a Class, the problem came out.
It seems like that when the function wraps into the Class, this line, write[‘file_type’].setValue(‘jpeg’), doesn’t work out.
When this line runs just as a part of the function, it works well. But when this line runs as a part of the Class, it’s only changing the file_type property of the write node, but the relative ‘_jpey_quality’ doesn’t come out. So I got a problem when the line write[‘_jpeg_quality’].setValue(1) runs.
Is there something I need to pay attention to when building Class?
Post a Comment