Skip to content

Instantly share code, notes, and snippets.

@sunilk-n
Created May 8, 2018 09:17
Show Gist options
  • Save sunilk-n/7e830f98346c0fecaf482078a3413454 to your computer and use it in GitHub Desktop.
Save sunilk-n/7e830f98346c0fecaf482078a3413454 to your computer and use it in GitHub Desktop.
Maya Render frames for batch
import maya.cmds as mc
wName = "RenderFrames"
#Starting Class here
class renFrames(object):
finLst = []
cam = []
finCam = ""
def __init__(self):
#print "testing"
self.cam = mc.ls(cameras = True)
self.finCam = self.defCam()
def rngFrm(self,stFrm,enFrm):
self.finLst = []
if stFrm>enFrm:
mc.confirmDialog(t="Invalid Range",m="Please enter the correct range (start frame must not be greater that end frame)", button="OK")
else:
for i in range(int(stFrm),int(enFrm)+1):
self.finLst.append(i)
#print self.finLst
def changeView(self,item):
if mc.optionMenu(opMenu,q=True,v=True) == "Render range of Frames":
mc.formLayout(rrFrames,e=True,vis=True)
mc.formLayout(rMFrames,e=True,vis=False)
mc.text(rMlDesc,e=True,vis=False)
mc.text(rML,e=True,vis=False)
self.finLst = []
else:
mc.formLayout(rrFrames,e=True,vis=False)
mc.formLayout(rMFrames,e=True,vis=True)
mc.text(rMlDesc,e=True,vis=False)
mc.text(rML,e=True,vis=False)
self.finLst = []
def defCam(self):
for sCam in self.cam:
if mc.getAttr(sCam+".renderable") == True:
camDef = sCam
#print sCam
return camDef
def chngRadio(self,cam):
if mc.radioButtonGrp(selCam,q=True,sl=1) == 1:
mc.optionMenu(lstCam,e=True,en=False)
self.finCam = cam
elif mc.radioButtonGrp(selCam,q=True,sl=2) == 2:
mc.optionMenu(lstCam,e=True,en=True)
self.finCam = mc.optionMenu(lstCam,q=True,v=True)
def renScene(self):
#print "Rendering Scene"
if mc.optionMenu(opMenu,q=True,v=True) == "Render range of Frames":
self.rngFrm(mc.intField(rStFr,q=True,v=True),mc.intField(rEnFr,q=True,v=True))
if self.finCam == "Select Camera" or self.finCam =="":
mc.confirmDialog(t="Select a Camera",m="Please select a camera before rendering the scene", button="OK")
elif self.finLst == []:
mc.confirmDialog(t="No Frames to Render",m="Please insert the frames before rendering the Scene", button="OK")
else:
print "Camera :",self.finCam
print "Rendering Frames :",self.finLst
mc.progressWindow(max=len(self.finLst),ii=True,st="",t="Render Frames")
for i in range(0,len(self.finLst)):
stat = "Rendering Frame ",str(i+1)," of ",str(len(self.finLst))
#print stat
if mc.progressWindow(q=True,ic=True) == True:
mc.progressWindow(e=True,ep=True)
break
if mc.progressWindow(q=True,progress = True)>mc.playbackOptions(q=True,max=True):
mc.progressWindow(e=True,ep=True)
break
mc.progressWindow(e=True,progress=i,st=stat)
self.renderMe(self.finCam,self.finLst[i])
mc.progressWindow(e=True,ep=True)
def renderMe(self,cam,frame):
print "Rendering frame ",frame," through ",cam
mc.currentTime(frame)
mc.render(cam)
def genFrames(self,frame):
self.finLst = []
if frame == 0:
mc.confirmDialog(t="Invalid Frames",m="Please enter Valid frames to insert the frames", button="OK")
else:
i=0
while i<frame:
res = mc.promptDialog(t="Insert Frame",m="Insert frame :"+str(i+1)+" of "+str(frame), button=["Insert","Cancel"], cb="Cancel",db="Insert",ds="Cancel")
for j in range(0,len(self.finLst)):
if self.finLst[j] == int(mc.promptDialog(q=True,tx=True)):
i -=1
mc.confirmDialog(t="Frame exists",m="This frame already exist try another frame", button="OK")
self.finLst.remove(int(mc.promptDialog(q=True,tx=True)))
break
if res != "Insert":
break
else:
self.finLst.append(int(mc.promptDialog(q=True,tx=True)))
mc.text(rMlDesc,e=True,vis=True)
mc.text(rML,e=True,vis=True)
i+=1
mc.text(rML,e=True,l=str(self.finLst))
#Ending Calss Here
if mc.window('tester', exists=True):
mc.deleteUI('tester')
ac = renFrames()
test = mc.window('tester',title=wName+"_v1.0", iconName=wName, widthHeight=(350,200), s=False)
#Main Context1
selForm = mc.formLayout()
selDesc = mc.text(l="Select what to do :", p=selForm)
opMenu = mc.optionMenu(changeCommand=ac.changeView)
mc.menuItem(label="Render range of Frames")
mc.menuItem(label="Render Missed Frames")
#Main Context1
#Main Context2
rrFrames = mc.formLayout(p=selForm)
rFDesc = mc.text(l="Enter Values for start and End frame range:", p=rrFrames)
rStFr = mc.intField(width=50,value=int(mc.getAttr("defaultRenderGlobals.startFrame")),cc = "ac.rngFrm(mc.intField(rStFr,q=True,v=True),mc.intField(rEnFr,q=True,v=True))", p=rrFrames)
rEnFr = mc.intField(width=50,value=int(mc.getAttr("defaultRenderGlobals.endFrame")),cc = "ac.rngFrm(mc.intField(rStFr,q=True,v=True),mc.intField(rEnFr,q=True,v=True))", p=rrFrames)
mc.formLayout(rrFrames, edit=True, vis=True,
attachForm=[(rFDesc,'left',5),(rFDesc,'top',5),(rStFr,'left',5)],
attachControl = [(rStFr,'top',5,rFDesc),(rEnFr,'left',3,rStFr),(rEnFr,'top',5,rFDesc)]
)
#ac.rngFrm(mc.textField(rStFr,q=True,tx=True),mc.textField(rEnFr,q=True,tx=True))
#Main Context2
#Main Context3
rMFrames = mc.formLayout(p=selForm)
rMDesc = mc.text(l="How many Frames to Render: ", p=rMFrames)
rMFr = mc.intField(width = 50, p=rMFrames)
rMBt = mc.button(l = "Enter Frames", p=rMFrames,c="ac.genFrames(mc.intField(rMFr,q=True,v=True))")
rMlDesc = mc.text(l="Frames Generated are:", p=rMFrames,vis=False)
rML = mc.text(l="",p=rMFrames,vis=False)
mc.formLayout(rMFrames, edit=True, vis=False,
attachForm = [(rMDesc,'left',5),(rMDesc,'top',5),(rMFr,'top',3),(rMBt,'top',2),(rMlDesc,'left',5),(rML,'left',5)],
attachControl = [(rMFr,'left',5,rMDesc),(rMBt,'left',5,rMFr),(rMlDesc,'top',10,rMDesc),(rML,'top',5,rMlDesc)]
)
#Main Context3
#Main Context1
frCamDesc = mc.text(l="Select Camera:", p = selForm)
selCam = mc.radioButtonGrp(p=selForm,numberOfRadioButtons = 2, label1 = ac.defCam(), label2="", select=1,cc = "ac.chngRadio(ac.defCam())")
lstCam = mc.optionMenu(p=selForm,en=False,cc=ac.chngRadio)
mc.menuItem(label="Select Camera")
mc.menuItem(label="")
for selC in ac.cam:
mc.menuItem(label=selC)
rend = mc.button(l="Render", p=selForm, width=100, command = "ac.renScene()")
clo = mc.button(l="Close", p=selForm, width=100, command = ('mc.toggleWindowVisibility(test )') )
#Main Context1
mc.formLayout(selForm, edit=True,
attachForm=[(selDesc,'left',10),(selDesc,'top',10),(opMenu,'top',7),(rend,'bottom',10),(clo,'bottom',10),(rrFrames,'left',10),(rMFrames,'left',10),(frCamDesc,'left',10)],
attachControl=[(opMenu,'left',5,selDesc),(clo,'left',2,rend),(rrFrames,'top',10,opMenu),(rMFrames,'top',10,opMenu),(frCamDesc,'bottom',15,rend),(selCam,'left',5,frCamDesc),(selCam,'bottom',11,rend),(lstCam,'left',0,selCam),(lstCam,'bottom',12,rend)],
attachPosition=[rend,'right',0,50])
mc.showWindow(test)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment