import maya.cmds as cmds class JD_Window(object): #constructor def __init__(self): self.window = "JD_Window" self.title = "The Cam Cam" self.size = (400, 400) #close old window is open if cmds.window(self.window,exists = True): cmds.deleteUI(self.window, window=True) #Create new window self.window =cmds.window(self.window, title=self.title, widthHeight=self.size) #Create layout cmds.columnLayout (adjustableColumn = True, backgroundColor=[0.5, 0.2, 0.3]) #Title text cmds.text(self.title,backgroundColor=[0.0, 0.0, 0.0],height=40 ) # drop down menu of cameras self.cameraMenu = cmds.optionMenuGrp(label='Camera select:',height=45, backgroundColor=[0.5, 0.1, 0.15], changeCommand=self.camChange) # populate camera list self.cameraList = cmds.listCameras(p=True) for cam in self.cameraList: cam_name = str(cmds.camera(cam, query=True, name=True)) cmds.menuItem(cam_name) # syn menu to current camera self.camChange() #Button to delete camera self.deleteCamBtn = cmds.button( label='Delete Camera', height=18, backgroundColor=[0.5, 0.1, 0.2], command=self.deleteCam ) #Button to enable motion blur self.motionBlurBtn = cmds.button( label='Enable motion blur:', height=25, backgroundColor=[0.5, 0.1, 0.2], command=self.motionBlur) # float slider for shutter angle self.shutterSlider = cmds.floatSliderGrp(label='Shutter Angle:', field=True, minValue=1, precision=0, maxValue=180, value=180,dragCommand=self.shutter) #Button to disable motion blur self.noMotionBlurBtn = cmds.button( label='Disable motion blur:', backgroundColor=[0.5, 0.1, 0.2], height=25, command=self.noMotionBlur) #Slider to change focal length self.focalLenghtSlider = cmds.floatSliderGrp(label='Focal Length:', field=True, minValue=8, precision=0, maxValue=200, value=35, fieldMinValue=3, fieldMaxValue=1000, dragCommand=self.focalLength) #Slider to edit focus self.focusSlider = cmds.floatSliderGrp(label='Focus:', field=True, minValue=1, precision=2, maxValue=1000, value=100, fieldMinValue=1, fieldMaxValue=10000, dragCommand=self.focus) #Slider to edit f stop self.fStopSlider = cmds.floatSliderGrp(label='F Stop:', field=True, minValue=1 , precision=0, maxValue=64, value=64,dragCommand=self.fStop) # keyframe button self.keyframe = cmds.button(label='Key frame:', align="center", backgroundColor=[0.5, 0.1, 0.2], height=25, command=self.keyframeBtn) # delete keyframe button self.deleteKeyframe = cmds.button(label='Delete key frames:', align="center", backgroundColor=[0.5, 0.1, 0.2], height=25, command=self.deleteKeyframeBtn) # reset button self.btnReset = cmds.button(label='Reset:', align="center", backgroundColor=[0.5, 0.1, 0.2], height=40, command=self.resetBtnCmd) #Slider to Roll self.rollSlider = cmds.floatSliderGrp(label='Roll', field=True, minValue=1 , precision=0, maxValue=360, value=1,dragCommand=self.roll) #Button for anamorphic self.anamorphicBtn = cmds.button( label='Anamorphic effect', backgroundColor=[0.5, 0.1, 0.2], height=25, command=self.anamorphic ) #Button for anamorphic reset self.anamorphicResetBtn = cmds.button( label='Reset anamorphic effect', backgroundColor=[0.5, 0.1, 0.2], height=25, command=self.anamorphicReset ) #space self.space = cmds.button( label=' ', backgroundColor=[0.5, 0.1, 0.2], height=20 ) #Button for camera 1 shake self.cam1ShakeBtn = cmds.button( label='Add camera 1 shake', backgroundColor=[0.5, 0.1, 0.2], height=25, command=self.cam1ShakeBtn ) #Button for restting camera 1 shake self.cam1ShakeResetBtn = cmds.button( label='Reset camera 1 shake', backgroundColor=[0.5, 0.1, 0.2], height=25, command=self.cam1ShakeResetBtn ) #space self.space = cmds.button( label=' ', backgroundColor=[0.5, 0.1, 0.2], height=20 ) #Button for camera 2 shake self.cam2ShakeBtn = cmds.button( label='Add camera 2 shake', backgroundColor=[0.5, 0.1, 0.2], height=25, command=self.cam2ShakeBtn ) #Button for restting camera 2 shake self.cam2ShakeResetBtn = cmds.button( label='Reset camera 2 shake', backgroundColor=[0.5, 0.1, 0.2], height=25, command=self.cam2ShakeResetBtn ) #space self.space = cmds.button( label=' ', backgroundColor=[0.5, 0.1, 0.2], height=20 ) #Button for camera 3 shake self.cam3ShakeBtn = cmds.button( label='Add camera 3 shake', backgroundColor=[0.5, 0.1, 0.2], height=25, command=self.cam3ShakeBtn ) #Button for restting camera 3 shake self.cam3ShakeResetBtn = cmds.button( label='Reset camera 3 shake', backgroundColor=[0.5, 0.1, 0.2], height=25, command=self.cam3ShakeResetBtn ) #Display new JD_Window cmds.showWindow() #code for delete camera button def deleteCam(self, *args): cmds.delete(self.selectedCam) #code for keyframe button def keyframeBtn(self, *args): cmds.select (self.selectedCam) cmds.setKeyframe (self.selectedCam) #code for keyframe button def deleteKeyframeBtn(self, *args): cmds.cutKey (self.selectedCam) #code for reset button def resetBtnCmd(self, *args): cmds.camera(self.selectedCam, edit=True, focalLength=35) cmds.camera(self.selectedCam, edit=True, focusDistance=100) cmds.camera(self.selectedCam, edit=True, depthOfField=True, fStop=64) self.syncParamsSliders() #code for motion blur button def motionBlur(self, *args): cmds.setAttr ('hardwareRenderingGlobals.motionBlurEnable', 1) #Code for shutter def shutter(self, *args): Val = cmds.floatSliderGrp(self.shutterSlider, q=True, value=True) cmds.camera (self.selectedCam, edit=True, shutterAngle=Val) #code for disabling motion blur button def noMotionBlur(self, *args): cmds.setAttr ('hardwareRenderingGlobals.motionBlurEnable', 0) #code for focal length slider def focalLength(self, *args): lVal = cmds.floatSliderGrp(self.focalLenghtSlider, q=True, value=True) cmds.camera(self.selectedCam, edit=True, focalLength=lVal) #code for focus slider def focus(self, *args): lVal = cmds.floatSliderGrp(self.focusSlider, q=True, value=True) cmds.camera(self.selectedCam, edit=True, depthOfField=True, focusDistance=lVal) #code for f stop slider def fStop(self, *args): lVal = cmds.floatSliderGrp(self.fStopSlider, q=True, value=True) cmds.camera(self.selectedCam, edit=True, depthOfField=True, fStop=lVal) #code for cam change def camChange(self, *args): lIndex = cmds.optionMenuGrp(self.cameraMenu, q=True, select=True) self.selectedCam = self.cameraList[lIndex - 1] cmds.camera(self.selectedCam, edit=True) #Code for cam 1 shake def cam1ShakeBtn(self, *args): cmds.select (self.selectedCam) cmds.setAttr ('.shakeEnabled', 1) cmds.expression (self.selectedCam, alwaysEvaluate= True, name ='self.selectedCam', string = ("cameraShape1.horizontalShake = noise(frame*0.05)*0.05")) cmds.expression (self.selectedCam, alwaysEvaluate= True, name ='self.selectedCam', string = ("cameraShape1.verticalShake = noise(frame*-0.05)*-0.05")) #Code for cam 1 shake reset def cam1ShakeResetBtn(self, *args): cmds.select (self.selectedCam) cmds.setAttr ('.shakeEnabled', 0) #Code for cam 2 shake def cam2ShakeBtn(self, *args): cmds.select (self.selectedCam) cmds.setAttr ('.shakeEnabled', 1) cmds.expression (self.selectedCam, alwaysEvaluate= True, name ='self.selectedCam', string = ("cameraShape2.horizontalShake = noise(frame*0.05)*0.05")) cmds.expression (self.selectedCam, alwaysEvaluate= True, name ='self.selectedCam', string = ("cameraShape2.verticalShake = noise(frame*-0.05)*-0.05")) #Code for cam 2 shake reset def cam2ShakeResetBtn(self, *args): cmds.select (self.selectedCam) cmds.setAttr ('.shakeEnabled', 0) #Code for cam 3 shake def cam3ShakeBtn(self, *args): cmds.select (self.selectedCam) cmds.setAttr ('.shakeEnabled', 1) cmds.expression (self.selectedCam, alwaysEvaluate= True, name ='self.selectedCam', string = ("cameraShape3.horizontalShake = noise(frame*0.05)*0.05")) cmds.expression (self.selectedCam, alwaysEvaluate= True, name ='self.selectedCam', string = ("cameraShape3.verticalShake = noise(frame*-0.05)*-0.05")) #Code for cam 3 shake reset def cam3ShakeResetBtn(self, *args): cmds.select (self.selectedCam) cmds.setAttr ('.shakeEnabled', 0) #code for roll def roll(self, *args): lVal = cmds.floatSliderGrp(self.rollSlider, q=True, value=True) cmds.camera(self.selectedCam, edit=True, filmRollValue=lVal) #code for anamorphic def anamorphic(self, *args): cmds.select (self.selectedCam) cmds.setAttr ('.lensSqueezeRatio', 2) cmds.setAttr (".horizontalFilmAperture", 0.864) cmds.setAttr ("cameraShape1.verticalFilmAperture", 0.732) #code for reset anamorphic def anamorphicReset(self, *args): cmds.select (self.selectedCam) cmds.setAttr ('.lensSqueezeRatio', 1) cmds.setAttr (".horizontalFilmAperture", 0.493) cmds.setAttr ("cameraShape1.verticalFilmAperture", 0.292) def syncParamsSliders(self): lval = cmds.camera(self.selectedCam, q=True, focalLength=True) cmds.floatSliderGrp(self.focalLenghtSlider, edit=True, value=lval) lval = cmds.camera(self.selectedCam, q=True, focusDistance=True) cmds.floatSliderGrp(self.focusSlider, edit=True, value=lval) lvaln = cmds.camera(self.selectedCam, q=True, fStop=True) cmds.floatSliderGrp(self.fStopSlider, edit=True, value=lval) myWindow = JD_Window()