Created
May 8, 2018 09:17
-
-
Save sunilk-n/7e830f98346c0fecaf482078a3413454 to your computer and use it in GitHub Desktop.
Maya Render frames for batch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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