def hudAdd(): section=5 hudPrefix = 'HUD_cbCustom_' resultCb=[] watchList = hud_parseWatchList() hubRem() sel=pm.ls(sl=True) if sel and (pm.channelBox('mainChannelBox',q=True, sma=True) or pm.channelBox('mainChannelBox',q=True, sha=True, soa=True, ssa=True)): for obj in sel: listAttrs = [] if pm.channelBox('mainChannelBox',q=True, sma=True): listAttrs += [pm.PyNode(obj+'.'+attr) for attr in pm.channelBox('mainChannelBox',q=True, sma=True)] if pm.channelBox('mainChannelBox',q=True, sha=True, soa=True, ssa=True): listAttrs += [pm.PyNode(obj+'.'+attr) for attr in pm.channelBox('mainChannelBox',q=True, sha=True, soa=True, ssa=True)] if listAttrs: for listAttr in listAttrs: watchList.append(listAttr) else: return False result = cbChannelsHUD(watchList) if result: #print result.keys() for key in result: hudName = hudPrefix+key pm.headsUpDisplay(hudName, section=section, block=pm.headsUpDisplay(nfb=section), blockSize = 'medium', command = "cbChannelsHUD_parse(\"%s\")"%key, attachToRefresh=True)
def create_file_hud(event=None): if pm.headsUpDisplay('HUDFilename', exists=True): pm.headsUpDisplay('HUDFilename', rem=True) block = 0 while block < 20: try: pm.headsUpDisplay('HUDFilename', section=hud_filename_section, block=block, blockSize='small', label='Filename:', labelFontSize='small', command=hud_file_object, event='NewSceneOpened') except RuntimeError: block = block + 1 continue break global hud_filename_save_callback global hud_filename_open_callback try: om.MSceneMessage.removeCallback(hud_filename_save_callback) om.MSceneMessage.removeCallback(hud_filename_open_callback) except: pass hud_filename_save_callback = om.MSceneMessage.addCallback( om.MSceneMessage.kAfterSave, create_file_hud) hud_filename_open_callback = om.MSceneMessage.addCallback( om.MSceneMessage.kAfterOpen, create_file_hud)
def dateHud(self, state=True): if state: self.activesHuds.append( int(pm.headsUpDisplay("Date", label=self.Date, labelFontSize="small", section=6, block=1)) ) else: pm.headsUpDisplay("Date", rem=True)
def showDate(): global __HUD_DATE__ pc.headsUpDisplay(__HUD_DATE__, section=1, block=0, blockSize='large', dfs='large', command='pc.date(format="DD/MM/YYYY hh:mm")')
def sceneHud(self, state=True): self.queryData() if state: self.activesHuds.append( int(pm.headsUpDisplay("SceneName", label=self.SceneName, labelFontSize="small", section=7, block=1)) ) else: pm.headsUpDisplay("SceneName", rem=True)
def togglePlaybackSpeed(): """Toggle between Real-time and Every Frame playback""" newSpeed = not bool( pm.playbackOptions( playbackSpeed=True, query=True ) ) pm.playbackOptions( playbackSpeed=newSpeed ) pm.headsUpDisplay( 'HUDPlaybackSpeed', edit=True ) print 'Playback Speed: %s' % ( 'Every Frame', 'Real-time' )[newSpeed]
def deleteUselessHudExpression(): try: # try to delete useless expression for hud updating if not pm.headsUpDisplay('frameCounterHUD', query=True, ex=True) and pm.objExists('frameCounterUpdate'): pm.delete('frameCounterUpdate') if not pm.headsUpDisplay('timeCodeHUD', query=True, ex=True) and pm.objExists('timeCodeUpdate'): pm.delete('timeCodeUpdate') except: pass
def createHud(self): self.activesHuds.append( int(pm.headsUpDisplay("AnimatorName", label=self.AnimatorName, labelFontSize="small", section=5, block=1)) ) self.activesHuds.append( int(pm.headsUpDisplay("Date", label=self.Date, labelFontSize="small", section=6, block=1)) ) self.activesHuds.append( int(pm.headsUpDisplay("SceneName", label=self.SceneName, labelFontSize="small", section=7, block=1)) ) self.frameHud()
def writePB(fileNameFull, type): if type == 'mov': # Turn ON HUD pm.headsUpDisplay(rp=(6, 1)) # Delete HUD if exists by position hud = pm.headsUpDisplay('HUD', section=6, block=1, blockSize='medium', label=codeProject.upper(), labelFontSize='large', command=dataFrame, attachToRefresh=True) if pm.ls(type='audio') == []: # make PB without sound pm.playblast(format='qt', compression='Sorenson Video 3', showOrnaments=1, quality=100, percent=100, f=fileNameFull, width=999, height=540, forceOverwrite=1) else: # make PB with sound audio = pm.ls(type='audio')[0] pm.playblast(format='qt', compression='Sorenson Video 3', s=audio, showOrnaments=1, offScreen=1, quality=100, percent=100, f=fileNameFull, width=999, height=540, forceOverwrite=1) print 'PLAYBLAST DONE: ' + str(fileNameFull) elif type == 'jpg': pm.playblast(frame=pm.env.getTime(), format='image', compression='jpg', viewer=0, showOrnaments=0, quality=100, percent=100, completeFilename=fileNameFull, width=999, height=540, forceOverwrite=1) shot = ftrack.getShotFromPath( [codeProject, codePart, codeSequence, 'SHOT_' + str(codeShot)]) thumbnail = shot.createThumbnail(fileNameFull) shot.setThumbnail(thumbnail) print 'SCREENSHOT SET IN FTRACK: ' + str(fileNameFull)
def showNameLabel(): global __HUD_LABEL__ global __HUD_USERNAME__ pc.headsUpDisplay(__HUD_LABEL__, section=2, block=0, blockSize='large', dfs='large', command=label) pc.headsUpDisplay(__HUD_USERNAME__, section=3, block=0, blockSize='large', dfs='large', command=getUsername)
def duplicateTearPanel(self): # Make playblast model panel with an apropriade size #tearCopy = pc.windows.control(pc.windows.getPanel(withFocus=True), q=True, parent=True) #fullPathName=True) tearCopy = pc.windows.getPanel(withFocus=True) if tearCopy not in pc.windows.getPanel(type="modelPanel"): # Print worning and stop procedure show_error_dialog("Select (focus on) a panel that you want to make playblast from.") return() pbmodpanel = pc.windows.modelPanel(l='axplayBlastModelPanel1', tearOffCopy=tearCopy.split("|")[-1]) # Scale panel to fit size pc.windows.control(pbmodpanel, e=True, w=self.resx()+100) pc.windows.control(pbmodpanel, e=True, h=self.resy()+100) # Deselect on option if self.isChecked(self.selectionBox): store_shots = pc.ls(sl=True, type='shot') pc.general.select(deselect=True) pc.general.select(store_shots, add=True) # Create raw folder if not there if not os.path.exists(self.tempfldr): os.mkdir(self.tempfldr) # Set HQ Rendering on the panel (Andy's request) if self.hqrendering: pc.modelEditor( pbmodpanel.split("|")[-1], edit=True, rnm="hwRender_OpenGL_Renderer" ) # NOTE If framecount gets requestes on HUD # if not pc.mel.eval('''optionVar -q frameRateVisibility'''): # pc.runtime.ToggleFrameRate() # if not pc.mel.eval('''optionVar -q cameraNamesVisibility'''): # pc.runtime.ToggleCameraNames() hudobj = 'HUDObjectPosition', if not pc.headsUpDisplay(hudobj, q=True, ex=True): pc.headsUpDisplay( hudobj, section=1, block=0, blockSize='medium', label='v%03d'%self.checkForNextVersions(), labelFontSize='small', ) else: pc.headsUpDisplay( hudobj, e=True, label='v%03d'%self.checkForNextVersions(), ) return([pbmodpanel, tearCopy])
def writePB(fileNameFull, type): if type == 'mov': # Turn ON HUD pm.headsUpDisplay( rp = ( 6 , 1 ) ) # Delete HUD if exists by position hud = pm.headsUpDisplay ( 'HUD', section = 6, block = 1, blockSize = 'medium', label = codeProject.upper(), labelFontSize='large', command = dataFrame, attachToRefresh = True) if pm.ls(type = 'audio') == []: # make PB without sound pm.playblast(format = 'qt', compression = 'Sorenson Video 3',showOrnaments = 1, quality = 100, percent = 100, f = fileNameFull, width = 999, height = 540, forceOverwrite = 1 ) else: # make PB with sound audio = pm.ls(type = 'audio')[0] pm.playblast(format = 'qt', compression = 'Sorenson Video 3', s = audio, showOrnaments = 1, offScreen = 1, quality = 100, percent = 100, f = fileNameFull, width = 999, height = 540, forceOverwrite = 1 ) print 'PLAYBLAST DONE: ' + str(fileNameFull) elif type == 'jpg': pm.playblast(frame = pm.env.getTime(), format = 'image', compression = 'jpg', viewer = 0, showOrnaments = 0, quality = 100, percent = 100, completeFilename = fileNameFull, width = 999, height = 540, forceOverwrite = 1 ) shot = ftrack.getShotFromPath([codeProject, codePart, codeSequence, 'SHOT_' + str(codeShot) ]) thumbnail = shot.createThumbnail(fileNameFull) shot.setThumbnail(thumbnail) print 'SCREENSHOT SET IN FTRACK: ' + str(fileNameFull)
def restorePanes(self, panel, tearoff): # Delete TearOff panel if pc.windows.window(panel.split('|')[-1]+'Window', q=True, exists=True): pc.windows.deleteUI(panel.split('|')[-1]+'Window', window=True) # Update maya UI panels to avoid crashing # NOTE may not be necessary at all pc.mel.eval('switchPanes single 0') # Restore visible elements if self.isChecked(self.smarthud): self.toggleVisiblePanelElements(tearoff.split("|")[-1]) # Convert to output curr_frm = pc.animation.currentTime(q=True) max_plbopt = self.timerange_max() # Set focus to other panel (avoid crashing if called agani straight # after) for i in pc.getPanel(all=True): if i != panel: pc.setFocus() break hudobj = 'HUDObjectPosition', pc.headsUpDisplay(hudobj, rem=True)
def jointCountHUD( toggle=True ): """ Toggle the display of joint count. HUD element that shows the total visible joints in scene. The numbers represent the total number if visible joints, the number of visible selected joints in selection hierarchy, and the number of visible selected joints only. """ opt_vis = 'jointCountHUDVis' if toggle: pm.optionVar[opt_vis] = not pm.optionVar.get( opt_vis, False ) if pm.headsUpDisplay( 'HUDJointCount', exists=True ): pm.headsUpDisplay( 'HUDJointCount', remove=True ) block = pm.headsUpDisplay( nextFreeBlock=0 ) pm.headsUpDisplay( 'HUDJointCount', visible=pm.optionVar.get( opt_vis, False ), section=0, block=block, label='Joints:', dataAlignment='right', labelWidth=50, dataWidth=65, command=countJoints, event='SelectionChanged' )
def currentTimeHUD( toggle=True ): """Toggle the display of current time.""" opt_vis = 'currentTimeHUDVis' if toggle: pm.optionVar[opt_vis] = not pm.optionVar.get( opt_vis, False ) if pm.headsUpDisplay( 'HUDCurrentTime', exists=True ): pm.headsUpDisplay( 'HUDCurrentTime', remove=True ) block = pm.headsUpDisplay( nextFreeBlock=9 ) pm.headsUpDisplay( 'HUDCurrentTime', visible=pm.optionVar.get( opt_vis, False ), section=9, block=block, label='Current Time:', dataAlignment='left', labelWidth=115, dataWidth=75, #label='', #dataWidth=22, #dataAlignment='right', command=_getCurrentTime, attachToRefresh=True, #dataFontSize='large' )
def removeFrameInfo(all=False): if pc.headsUpDisplay(__hud_frame_1__, exists=True): pc.headsUpDisplay(__hud_frame_1__, rem=True) if pc.headsUpDisplay(__hud_frame_2__, exists=True): pc.headsUpDisplay(__hud_frame_2__, rem=True) if all: pc.Mel.eval('setCurrentFrameVisibility(0)') pc.Mel.eval('setFocalLengthVisibility(0)') pc.Mel.eval('setCameraNamesVisibility(0)')
def create(cls): hud_instance = None Logger.info("Building {0}...".format(cls.HUD_NAME)) # Delete old cls.remove() hud_instance = pm.headsUpDisplay(cls.HUD_NAME, section=cls.SECTION, block=cls.BLOCK, blockSize=cls.BLOCK_SIZE, labelFontSize=cls.FONT_SIZE, command=cls.getHudText, event=cls.UPDATE_EVENT) Logger.info("Successfully created HUD: {0}".format(cls.HUD_NAME)) return hud_instance
def cleanPlayblastWindow(ui, renderers): print 'Remove playblasting windows and restore settings...' # display stereo layers if any try: scf.showLayer2() except: print traceback.format_exc() # recover transparent sorting try: pm.modelEditor(ui['editor'], e=True, sortTransparent=True) except: print traceback.format_exc() # delete hud expression if pm.objExists('stereoUpdateHUD'): pm.delete('stereoUpdateHUD') # delete custom hud, restore previous hud try: if pm.headsUpDisplay(ui['hud_stereo'], query=True, ex=True): pm.headsUpDisplay(ui['hud_stereo'], rem=True) for huds in ui['huds_current']: if pm.headsUpDisplay(huds, query=True, ex=True): pm.headsUpDisplay(huds, edit=True, vis=True) except: print traceback.format_exc() # delete safe area try: safeareaShapes = pm.ls(type='spReticleLoc') for safe in safeareaShapes: try: pm.delete(safe.getParent()) except: pass except: print traceback.format_exc() # restore background color if ui['bgColor']: makeBluescreen( ui['bgColor'], renderers ) # delete preview window try: pm.deleteUI(ui['window'].name(), window=True) except: print traceback.format_exc() try: pm.lookThru('persp') except: print traceback.format_exc()
def showDate(): global __HUD_DATE__ if pc.headsUpDisplay(__HUD_DATE__, q=True, exists=True): pc.headsUpDisplay(__HUD_DATE__, remove=True) pc.headsUpDisplay(__HUD_DATE__, section=1, block=pc.headsUpDisplay(nfb=1), blockSize='large', dfs='large', command='import pymel.core as pc;' 'pc.date(format="DD/MM/YYYY hh:mm")')
def showHUD(self, name): self.deleteHUD() self.artilstName = name pm.headsUpDisplay('frameCounterHUD', allowOverlap=1, l=u"■", b=4, s=5, dataFontSize='small', blockSize='small', dataWidth=5, preset="currentFrame") pm.headsUpDisplay('artistNameHUD', l=u"■", allowOverlap=1, b=3, s=5, dataFontSize='small', blockSize='small', command=self.getArtist, event='timeChanged') pm.headsUpDisplay('dateNameHUD', l=u"■", allowOverlap=1, b=2, s=5, dataFontSize='small', blockSize='small', command=self.getData, event='timeChanged') pm.headsUpDisplay('cameraFocalHUD', l=u"■", allowOverlap=1, b=1, s=5, dataFontSize='small', blockSize='small', command=self.getScene, event='timeChanged')
def create(cls): hud_instance = None Logger.info("Building HUD...") cls.SECTION = Config.get(HudVars.section, default=7) cls.BLOCK = Config.get(HudVars.block, default=5) # Delete old cls.remove() try: hud_instance = pm.headsUpDisplay(cls.HUD_NAME, allowOverlap=True, section=cls.SECTION, block=cls.BLOCK, blockSize=cls.BLOCK_SIZE, labelFontSize=cls.FONT_SIZE, command=cls.get_hud_text, event=cls.UPDATE_EVENT) Logger.info("Successfully created HUD: {0}".format(cls.HUD_NAME)) except RuntimeError: Logger.error( "HUD position ({0}:{1}) is occupied by another HUD. Use configer to select other block/section." .format(cls.SECTION, cls.BLOCK)) return hud_instance
'expression -s "headsUpDisplay -r currentFrame; headsUpDisplay -r currentTime; headsUpDisplay -r currentRate;" -n "headsup"; refresh;' ) else: pm.delete('headsup') pm.mel.eval( 'expression -s "headsUpDisplay -r currentFrame; headsUpDisplay -r currentTime; headsUpDisplay -r currentRate;" -n "headsup"; refresh;' ) clear() pm.headsUpDisplay('currentFrame', section=8, block=1, blockSize='small', labelFontSize='large', label='Frame', command=frameNumber, event='timeChanged', dfs='large') pm.headsUpDisplay('currentTime', section=3, block=1, blockSize='medium', labelFontSize='large', command=localTime, event='timeChanged', dfs='large') pm.headsUpDisplay('currentPath', section=2, block=1,
def _do_playblast(self): MODEL_EDITOR_PARAMS = { "activeView": True, "cameras": False, "controlVertices": False, "deformers": False, "dimensions": False, "displayAppearance": "smoothShaded", "displayLights": "default", "displayTextures": True, "dynamicConstraints": False, "fogging": False, "follicles": False, "grid": False, "handles": False, "headsUpDisplay": True, "hulls": False, "ignorePanZoom": False, "ikHandles": False, "imagePlane": True, "joints": False, "lights": False, "locators": False, "manipulators": False, "nurbsCurves": False, "nurbsSurfaces": True, "pivots": False, "planes": False, "selectionHiliteDisplay": False, "shadows": False, "sortTransparent": True, "strokes": True, "textures": True, "useDefaultMaterial": False, "wireframeOnShaded": False, } windowName = "review_blast" try: _current_panel = pm.getPanel(wf=True) if pm.modelEditor(_current_panel, q=True, fogging=True) == True: MODEL_EDITOR_PARAMS["fogging"] = True except: pass try: if pm.windowPref(windowName, exists=True): pm.windowPref(windowName, remove=True) pm.deleteUI(windowName) except: pass _window = pm.window(windowName, titleBar=True, iconify=True, leftEdge=100, topEdge=100, width=800, height=600, sizeable=False) _layout = pm.formLayout() _editor = pm.modelEditor(**MODEL_EDITOR_PARAMS) pm.formLayout(_layout, edit=True, attachForm=((_editor, "left", 0), (_editor, "top", 0), (_editor, "right", 0), (_editor, "bottom", 0))) # Legacy viewport used try: mel.eval("setRendererInModelPanel ogsRenderer {};".format(_editor)) except: cmds.confirmDialog( message= 'You need to change your viewport as the legacy version', dismissString='No') # viewport 2.0 used # mel.eval( "setRendererInModelPanel \"vp2Renderer\" {};".format( _editor)) pm.setFocus(_editor) pm.lookThru(_editor, self._shot_cam) cmds.refresh() _labelColor = cmds.displayColor('headsUpDisplayLabels', q=True, dormant=True) _labelValue = cmds.displayColor('headsUpDisplayValues', q=True, dormant=True) visibleHUDs = [ f for f in pm.headsUpDisplay(listHeadsUpDisplays=True) if pm.headsUpDisplay(f, query=True, visible=True) ] map(lambda f: pm.headsUpDisplay(f, edit=True, visible=False), visibleHUDs) for h in pm.headsUpDisplay(listHeadsUpDisplays=True): if pm.headsUpDisplay(h, q=1, s=1) == 7: if pm.headsUpDisplay(h, q=1, b=1) == 5: try: pm.headsUpDisplay(h, rem=True) except: pass for h in pm.headsUpDisplay(listHeadsUpDisplays=True): if pm.headsUpDisplay(h, q=1, s=1) == 7: if pm.headsUpDisplay(h, q=1, b=1) == 6: try: pm.headsUpDisplay(h, rem=True) except: pass cmds.displayColor('headsUpDisplayValues', 17, dormant=True) cmds.displayColor('headsUpDisplayLabels', 16, dormant=True) def hudShot(): _nameTemp = cmds.file(q=1, ns=1).split(".")[0] return _nameTemp.rsplit("_", 1)[0] def hudName(): return getpass.getuser() pm.headsUpDisplay('HUDCurrentFrame', edit=True, visible=True, labelFontSize="large", dataFontSize="large", section=5, block=1) #cmds.headsUpDisplay('HUDA',s=7,b=6, blockAlignment='center', dataFontSize='large', command=hudShot) #cmds.headsUpDisplay('HUDB',s=7,b=5, blockAlignment='center', dataFontSize='large', label="Artist:", labelFontSize="large", command=hudName) pm.setFocus(_editor) #if pm.headsUpDisplay('HUDCurrentFrame', query=True, visible=False): # print "works 111" # pass #else: _mov_file = os.path.splitext(self._file)[0] # print _mov_file # __audios = pm.ls(type="audio") __audios = pm.ls(type="audio") if len(__audios) > 0: __audio = str(__audios[0]) else: __audio = False # frame catching min, max, current _min_frame = pm.playbackOptions(q=1, min=1) _max_frame = pm.playbackOptions(q=1, max=1) _current_frame = pm.currentTime(q=1) pm.currentTime(_min_frame) ### playblast option ### # play_args = "playblast -format avfoundation -filename \"{}\" -sound \"{}\" -sequenceTime 0 -clearCache 1 -viewer 1 -forceOverwrite -showOrnaments 1 -offScreen -fp 4 -percent 100 -compression \"H.264\" -quality 70 -widthHeight {} {};".format( self._file, __audio, self.resolution_size[0], self.resolution_size[1]) try: _temp_path, _temp_file = os.path.split(self._file) _temp_mov_path = _temp_path + "/.temp" _temp_file_01 = os.path.splitext(_temp_file) _temp_mov_file = _temp_file_01[0] + "_uncomp" + _temp_file_01[1] _full_temp_mov_file = os.path.join(_temp_mov_path, _temp_mov_file) print _full_temp_mov_file try: if not os.path.exists(_temp_mov_path): os.makedirs(_temp_mov_path) if os.path.exists(_full_temp_mov_file): os.remove(_full_temp_mov_file) except: raise ### making playblast play_args = "playblast -format qt -filename \"{}\" -sound \"{}\" -sequenceTime 0 -clearCache 1 -viewer 0 -showOrnaments 1 -compression \"H.264\" -offScreen -fp 4 -percent 100 -quality 100 -widthHeight {} {};".format( _full_temp_mov_file, __audio, self.resolution_size[0], self.resolution_size[1]) mel.eval(play_args) pm.currentTime(_current_frame) sceneName = pm.sceneName() tk = sgtk.sgtk_from_path(sceneName) # get entity information _context = tk.context_from_path(sceneName) _date = datetime.date.today() _task = _context.step["name"] _shot_name = _context.entity["name"] _png_file = os.path.normpath( _temp_mov_path + "/" + _context.user["name"].translate(None, string.whitespace) + ".png") try: if not os.path.exists(_temp_mov_path): os.makedirs(_temp_mov_path) if os.path.exists(_png_file): os.remove(_png_file) except: raise ### write information on png file ### _copylight = "Copyright (C) {} JibJab Studios - All Rights Reserved".format( _date.year) _img = Image.new('RGBA', (1920, 1080), (0, 0, 0, 0)) _slate_image = ImageDraw.Draw(_img) _type_shot_asset = ImageFont.truetype('/Library/Fonts/arial.ttf', 30) _type_copyright = ImageFont.truetype('/Library/Fonts/arial.ttf', 15) _type_task = ImageFont.truetype('/Library/Fonts/arial.ttf', 18) _slate_image.text((820, 1000), _shot_name, font=_type_shot_asset, fill=(255, 255, 255, 128)) _slate_image.text((780, 1060), _copylight, font=_type_copyright, fill=(255, 255, 255, 128)) _slate_image.text((910, 1035), "Task : {}".format(_task), font=_type_task, fill=(255, 255, 255, 128)) # _slate_image.text((1610, 1060), _review_file, font=_type_copyright, fill=(255,255,255,80)) _img.save(_png_file, 'PNG') ### convert uncomppresed file to h.264 #t = os.system("/Volumes/public/StoryBots/production/series/ask_the_storybots/03_shared_assets/01_cg/05_maya_tools/pipeline/module/ffmpeg/ffmpeg -y -i " + _full_temp_mov_file + " -vcodec libx264 -pix_fmt yuv420p -preset slower -crf 0 -vf eq=brightness=0.04 -g 1 -acodec copy " + self._file) t = os.system( "/Volumes/public/StoryBots/production/series/ask_the_storybots/03_shared_assets/01_cg/05_maya_tools/pipeline/module/ffmpeg/ffmpeg -y -i " + _full_temp_mov_file + " -i " + _png_file + " -vcodec libx264 -pix_fmt yuv420p -preset slow -crf 22 -filter_complex \"overlay=x=(main_w-overlay_w)/2:y=(main_h-overlay_h)/2\" -g 0 -acodec copy " + self._file) ###################################### #### This is RV open with mov file ### ###################################### _mov_path_RV, _mov_file_RV = os.path.split(self._file) os.chdir(_mov_path_RV) subprocess.Popen(self._RV_path + _mov_file_RV, shell=True) if os.path.exists(_full_temp_mov_file): os.remove(_full_temp_mov_file) if os.path.exists(_png_file): os.remove(_png_file) except: pm.confirmDialog( title="Playblast Error", message= "Close your RV or deselect the file.\nYour file is being used from other application", defaultButton="Yes") raise # playblast -format avfoundation -sound "ATS_301_sq020_020" -sequenceTime 0 -clearCache 1 -viewer 1 -showOrnaments 0 -offScreen -fp 4 -percent 80 -compression "H.264" -quality 70 -widthHeight 1920 1080; #pm.showWindow( _window ) pm.headsUpDisplay('HUDCurrentFrame', edit=True, visible=False, section=5, block=1) # cmds.headsUpDisplay( 'HUDA', rem=True ) # cmds.headsUpDisplay( 'HUDB', rem=True ) # delete playblast window pm.deleteUI(_window) # revive HOD modes cmds.displayColor('headsUpDisplayValues', _labelColor, dormant=True) cmds.displayColor('headsUpDisplayLabels', _labelValue, dormant=True) map(lambda f: pm.headsUpDisplay(f, edit=True, visible=True), visibleHUDs)
def clear(): for i in range(0, 10): for h in range(0, 10): pm.headsUpDisplay(rp=(i, h))
"""CUSTOM HUD FOR MAYA BY DANIEL SANCHEZ QUIROS""" import pymel.core as pm def custom_hud(names): """TESTING""" pm.headsUpDisplay("Current_Camera", section = 1, block = 2, label= "position", labelFontSize = "small") """MORE TESTING""" cameraHUD = custom_hud("names") pm.headsUpDisplay("Current_Camera", rem = True)
def showNameLabel(): global __HUD_LABEL__ global __HUD_USERNAME__ if pc.headsUpDisplay(__HUD_LABEL__, q=True, exists=True): pc.headsUpDisplay(__HUD_LABEL__, remove=True) pc.headsUpDisplay(__HUD_LABEL__, section=2, block=pc.headsUpDisplay(nfb=2), blockSize='large', dfs='large', command=label) if pc.headsUpDisplay(__HUD_USERNAME__, q=True, exists=True): pc.headsUpDisplay(__HUD_USERNAME__, remove=True) pc.headsUpDisplay(__HUD_USERNAME__, section=3, block=pc.headsUpDisplay(nfb=3), blockSize='large', dfs='large', command=getUsername) pc.headsUpDisplay(__HUD_USERNAME__, e=True, dfs='large')
def setup_huds(self): data = dict( objectDetailsVisibility='ToggleObjectDetails;', polyCountVisibility='TogglePolyCount;', subdDetailsVisibility='ToggleSubdDetails;', animationDetailsVisibility='ToggleAnimationDetails;', frameRateVisibility='ToggleFrameRate;', viewAxisVisibility='ToggleViewAxis;', toolMessageVisible='ToggleToolMessage;', currentContainerVisibility='ToggleCurrentContainerHud', currentFrameVisibility='ToggleCurrentFrame', focalLengthVisibility='ToggleFocalLength', hikDetailsVisibility='ToggleHikDetails', materialLoadingDetailsVisibility= 'ToggleMaterialLoadingDetailsVisibility', particleCountVisibility='ToggleParticleCount', sceneTimecodeVisibility='ToggleSceneTimecode', # 'cameraNamesVisibility': 'ToggleCameraNames;', selectDetailsVisibility='ToggleSelectDetails', symmetryVisibility='ToggleSymmetryDisplay') for tgl in data: try: if cmds.optionVar(q=tgl): mel.eval(data[tgl]) except: pass try: if cmds.toggleAxis(q=True, o=True): mel.eval('ToggleOriginAxis;') except: pass if not pm.optionVar(q='cameraNamesVisibility'): mel.eval('ToggleCameraNames;') dfs = 'large' labelFontSize = 'large' blockSize = 'small' # for i in range(10): # for b in range(4): # cmds.headsUpDisplay(rp=[i, b]) HUD_names = [ 'HUD_partNum', 'HUD_sceneNum', 'HUD_user', 'HUD_version', 'HUD_frame' ] for h in HUD_names: try: pm.headsUpDisplay(h, rem=True) except: pass pm.headsUpDisplay('HUD_partNum', section=6, block=4, blockSize=blockSize, label='Part:', dfs=dfs, labelFontSize=labelFontSize, command=lambda: self.part) pm.headsUpDisplay('HUD_sceneNum', section=6, block=3, blockSize=blockSize, label='Scene:', dfs=dfs, labelFontSize=labelFontSize, command=lambda: self.scene) pm.headsUpDisplay('HUD_user', section=5, block=3, blockSize=blockSize, label='User:'******'HUD_version', section=5, block=4, blockSize=blockSize, label='ver:', dfs=dfs, labelFontSize=labelFontSize, command=lambda: self.version, atr=True) pm.headsUpDisplay('HUD_frame', section=8, block=3, blockSize=blockSize, label='frame:', dfs=dfs, labelFontSize=labelFontSize, command=lambda: pm.currentTime(q=1), atr=True)
def set_huds(self, action='set', v_huds=[]): """Depending on the requested action, either creates and sets new HUDs for playblast display, or returns all HUDs to their orignal settings pre-playblast. Args: action (str, optional): Set or unset the HUDs. Defaults to 'set'. v_huds (list, optional): Empty if action is 'set'; a list of originally-visible HUDs if action is 'unset'. Defaults to []. Returns: list: If action is 'set', returns a list of the originally-visible HUDs. """ huds = pm.headsUpDisplay(listHeadsUpDisplays=True) if action == 'set': v_huds = [ f for f in huds if pm.headsUpDisplay(f, query=True, vis=True) ] # hide all visible HUDs map(lambda f: pm.headsUpDisplay(f, edit=True, vis=False), v_huds) # add required HUD # user name edit_existing_hud = 'HUDUserName' in huds user_data = sgtk.util.get_current_user(self.__app.sgtk) user_name = user_data['login'] self.logger.info('>> user_name > {}'.format(user_name)) pm.headsUpDisplay('HUDUserName', edit=edit_existing_hud, visible=True, label='User: {}'.format(user_name), section=8, block=1, blockSize='small', padding=0) # scene name edit_existing_hud = 'HUDSceneName' in huds sh_name = cmds.file(q=True, loc=True, shn=True).rsplit('.', 1)[0] pm.headsUpDisplay('HUDSceneName', edit=edit_existing_hud, visible=True, label='Shot: {}'.format(sh_name), section=6, block=1, blockSize='small', padding=0) # focal length pm.headsUpDisplay('HUDFocalLength', edit=True, visible=True, section=3, block=1, blockSize='small', padding=0) # current frame pm.headsUpDisplay('HUDCurrentFrame', edit=True, visible=True, dataFontSize='large', section=8, block=0, blockSize='small', padding=0) # date & time # get the time at the point of playblast edit_existing_hud = 'HUDTime' in huds current_time = datetime.now().strftime(TIME_STR_FMT) pm.headsUpDisplay('HUDTime', edit=edit_existing_hud, visible=True, label=current_time, section=6, block=0, blockSize='small', padding=0) return v_huds if action == 'unset': # hide the playblast-specific HUDs map(lambda f: pm.headsUpDisplay(f, edit=True, visible=False), huds) # show the originally visible HUDs again map(lambda f: pm.headsUpDisplay(f, edit=True, visible=True), v_huds)
def custom_hud(names): """TESTING""" pm.headsUpDisplay("Current_Camera", section = 1, block = 2, label= "position", labelFontSize = "small")
def refresh(cls): try: pm.headsUpDisplay(cls.HUD_NAME, r=1) except BaseException: Logger.warning("Failed to refresh {0}".format(cls.HUD_NAME))
def removeAll(self): for i in self.activesHuds: pm.headsUpDisplay(rid=i) self.activesHuds = []
import pymel.core as pm # Define a function that returns material's count def matsCounter(*args): matsCount = [] allMats = pm.ls(materials=True) # list all materials matsCount.append((len(allMats)-1)) # minus particle cloud material try: geo = pm.ls(selection=True)[0].getShape() # get selected shape mats = geo.outputs(type='shadingEngine') # get selected shape's material matsCount.append(len(set(mats))) except: matsCount.append("unknown") return matsCount # create HUD objects pm.headsUpDisplay( 'allMaterials', labelWidth=50, dataAlignment="right", dataWidth=70, section=0, block=11, label='materials:', command=matsCounter, event='SelectionChanged', nodeChanges='attributeChange')
def toggle_file_hud(): if pm.headsUpDisplay('HUDFilename', exists=True): pm.headsUpDisplay('HUDFilename', rem=True) else: create_file_hud()
def showFrameInfo(pl_item): global __camera_name__ fps = getFrameRate() inOut = str(pl_item.inFrame) + ' - ' + str(pl_item.outFrame) def getFps(): return fps def getInOut(): return inOut removeFrameInfo() pc.headsUpDisplay( __hud_frame_1__, lfs='large', label='FPS:', section=6, block=pc.headsUpDisplay(nfb=6), blockSize='medium', dfs='large', command=getFps) pc.headsUpDisplay( __hud_frame_2__, lfs='large', label='IN OUT:', section=6, block=pc.headsUpDisplay(nfb=6), blockSize='medium', dfs='large', command=getInOut) __camera_name__ = pc.optionVar(q='cameraNamesVisibility') pc.Mel.eval('setCurrentFrameVisibility(1)') pc.headsUpDisplay( 'HUDCurrentFrame', e=True, lfs='large', dfs='large', bs='medium') pc.Mel.eval('setFocalLengthVisibility(1)') pc.headsUpDisplay( 'HUDFocalLength', e=True, lfs='large', dfs='large', bs='medium') pc.Mel.eval('setCameraNamesVisibility(1)') pc.headsUpDisplay( 'HUDCameraNames', e=True, lfs='large', dfs='large', bs='medium')
def deleteHUD(self): if pm.headsUpDisplay('frameCounterHUD', exists=True): pm.headsUpDisplay('frameCounterHUD', rem=True) if pm.headsUpDisplay('artistNameHUD', exists=True): pm.headsUpDisplay('artistNameHUD', rem=True) if pm.headsUpDisplay('dateNameHUD', exists=True): pm.headsUpDisplay('dateNameHUD', rem=True) if pm.headsUpDisplay('cameraFocalHUD', exists=True): pm.headsUpDisplay('cameraFocalHUD', rem=True)
def hud_parseWatchList(): result=[] for hud in pm.headsUpDisplay(q=True,lh=True): if "HUD_cbCustom_" in hud: result.append( pm.PyNode( hud.split('_')[2] ) ) return result
def setHUD(name, info, version): name = name info = info version = version pm.displayColor('headsUpDisplayLabels', 17, dormant = True) pm.headsUpDisplay("cycles", section = 5, block = 6, blockSize='small', label = 'Cycle:', command = partial(getCycleName,name), dfs = 'large', lfs = 'large') print 1 pm.headsUpDisplay("info", section = 5, block = 5, blockSize='small', label = 'Info:', command = partial(getCycleInfo,info), dfs = 'large', lfs = 'large') print 2 pm.headsUpDisplay("version", section = 5, block = 4, blockSize='small', label = 'Version:', command = partial(getCycleVersion,version), dfs = 'large', lfs = 'large') print 3 pm.headsUpDisplay("animator", section = 5, block = 2, blockSize='small', label = 'Animator:', command = partial(getAnimator), dfs = 'large', lfs = 'large') print 4 pm.headsUpDisplay("frames", section = 5, block = 1, blockSize='small', label = 'Frame:', preset = 'currentFrame', dfs = 'large', lfs = 'large') print 5 pm.headsUpDisplay("date", section = 5, block = 3, blockSize='small', label = 'Date:', command = partial(getDate), dfs = 'large', lfs = 'large') print 6 pm.headsUpDisplay("cycles", edit=True, visible = True); pm.headsUpDisplay("info", edit=True, visible = True); pm.headsUpDisplay("version", edit=True, visible = True); pm.headsUpDisplay("frames", edit=True, visible = True); pm.headsUpDisplay("animator", edit=True, visible = True); pm.headsUpDisplay("date", edit=True, visible = True); print 7
def execute(self, action='', data=[], **kwargs): """ Main hook entry point :action: String hud_set -> set required HUDs hud_unset -> removed added HUDs, restoring back to original setup playblast_params -> read playblast parameters create_window -> return function to create playblast window """ if action == 'hud_set': visibleHUDs = [ f for f in pm.headsUpDisplay(listHeadsUpDisplays=True) if pm.headsUpDisplay(f, query=True, visible=True) ] # hide all visible HUDs map(lambda f: pm.headsUpDisplay(f, edit=True, visible=False), visibleHUDs) # Add required HUD # User name editExistingHUD = 'HUDUserName' in pm.headsUpDisplay( listHeadsUpDisplays=True) pm.headsUpDisplay( 'HUDUserName', edit=editExistingHUD, command=lambda: os.getenv("USERNAME", "unknown.user"), event='playblasting', section=1, block=1) pm.headsUpDisplay('HUDUserName', edit=True, visible=True, label="User:"******".", 1)[0], event='playblasting', section=6, block=1) pm.headsUpDisplay('HUDSceneName', edit=True, visible=True, label="Shot:") # Focal length pm.headsUpDisplay('HUDFocalLength', edit=True, visible=True, section=3, block=1) pm.headsUpDisplay('HUDCurrentFrame', edit=True, visible=True, dataFontSize="large", section=8, block=1) return visibleHUDs elif action == 'hud_unset': # restore HUD state map(lambda f: pm.headsUpDisplay(f, edit=True, visible=False), pm.headsUpDisplay(listHeadsUpDisplays=True)) map(lambda f: pm.headsUpDisplay(f, edit=True, visible=True), data) return None elif action == "playblast_params": PLAYBLAST_PARAMS["filename"] = data # include audio if available audioList = pm.ls(type="audio") if audioList: PLAYBLAST_PARAMS["sound"] = audioList[0] return PLAYBLAST_PARAMS elif action == "create_window": # setting up context window for playblast @contextmanager def createWindow(): """ try to get data from shotgun project fields need to get context's project context's shotgun instance """ app = self.parent project = app.context.project sg = app.context.tank.shotgun # set filters and search fields for entity type "Project" filters = [ ["id", "is", project['id']], ] fields = ["sg_width", "sg_height"] result = sg.find_one("Project", filters, fields) # with result, set parameters accordingly or use default otherwise if result: videoWidth = result.get("sg_width", DEFAULT_WIDTH) videoHeight = result.get("sg_height", DEFAULT_HEIGHT) # Find first camera matching pattern and set as active camera # if not use default current active camera camera_name_pattern = app.get_setting("camera_name_pattern", "persp") cameraList = [ c.name() for c in pm.ls(type="camera", r=True) if re.search(camera_name_pattern, c.name()) ] #print cameraList if not "cam" in MODEL_EDITOR_PARAMS.keys() and cameraList: MODEL_EDITOR_PARAMS["cam"] = cameraList[0] #print MODEL_EDITOR_PARAMS # Give Viewport 2.0 renderer only for Maya 2015++ # mayaVersionString = cmds.about(version=True) # mayaVersion = int(mayaVersionString[:4]) if len(mayaVersionString) >= 4 else 0 # if mayaVersion >= 2015: # params[ "rendererName" ] = "vp2Renderer" # Create window if pm.windowPref(PLAYBLAST_WINDOW, exists=True): pm.windowPref(PLAYBLAST_WINDOW, remove=True) window = pm.window(PLAYBLAST_WINDOW, titleBar=True, iconify=True, leftEdge=100, topEdge=100, width=videoWidth, height=videoHeight, sizeable=False) # Create editor area layout = pm.formLayout() editor = pm.modelEditor(**MODEL_EDITOR_PARAMS) pm.setFocus(editor) pm.formLayout(layout, edit=True, attachForm=((editor, "left", 0), (editor, "top", 0), (editor, "right", 0), (editor, "bottom", 0))) # Show window pm.setFocus(editor) pm.showWindow(window) pm.refresh() try: yield True except: traceback.print_exc() finally: pm.deleteUI(window) return createWindow else: self._app.log_info("nothing to work on")
def execute(self, action='', data=[], **kwargs): """ Main hook entry point :action: String hud_set -> set required HUDs hud_unset -> removed added HUDs, restoring back to original setup playblast_params -> read playblast parameters create_window -> return function to create playblast window """ if action == 'hud_set': visibleHUDs = [f for f in pm.headsUpDisplay(listHeadsUpDisplays=True) if pm.headsUpDisplay(f, query=True, visible=True)] # hide all visible HUDs map(lambda f: pm.headsUpDisplay(f, edit=True, visible=False), visibleHUDs) # Add required HUD # User name editExistingHUD = 'HUDUserName' in pm.headsUpDisplay( listHeadsUpDisplays=True ) pm.headsUpDisplay( 'HUDUserName', edit=editExistingHUD, command=lambda: os.getenv("USERNAME", "unknown.user"), event='playblasting', section=1, block=1 ) pm.headsUpDisplay( 'HUDUserName', edit=True, visible=True, label="User:"******".", 1)[0], event='playblasting', section=6, block=1 ) pm.headsUpDisplay( 'HUDSceneName', edit=True, visible=True, label="Shot:" ) # Focal length pm.headsUpDisplay( 'HUDFocalLength', edit=True, visible=True, section=3, block=1 ) pm.headsUpDisplay( 'HUDCurrentFrame', edit=True, visible=True, dataFontSize="large", section=8, block=1 ) return visibleHUDs elif action == 'hud_unset': # restore HUD state map(lambda f: pm.headsUpDisplay(f, edit=True, visible=False), pm.headsUpDisplay(listHeadsUpDisplays=True)) map(lambda f: pm.headsUpDisplay(f, edit=True, visible=True), data) return None elif action == "playblast_params": PLAYBLAST_PARAMS["filename"] = data # include audio if available audioList = pm.ls(type="audio") if audioList: PLAYBLAST_PARAMS["sound"] = audioList[0] return PLAYBLAST_PARAMS elif action == "create_window": # setting up context window for playblast @contextmanager def createWindow(): """ try to get data from shotgun project fields need to get context's project context's shotgun instance """ app = self.parent project = app.context.project sg = app.context.tank.shotgun # set filters and search fields for entity type "Project" filters=[["id", "is", project['id']],] fields=["sg_width", "sg_height"] result=sg.find_one("Project", filters, fields) # with result, set parameters accordingly or use default otherwise if result: videoWidth = result.get("sg_width", DEFAULT_WIDTH) videoHeight = result.get("sg_height", DEFAULT_HEIGHT) # Find first camera matching pattern and set as active camera # if not use default current active camera camera_name_pattern = app.get_setting( "camera_name_pattern", "persp" ) cameraList = [c.name() for c in pm.ls(type="camera", r=True) if re.search( camera_name_pattern, c.name() )] if not "cam" in MODEL_EDITOR_PARAMS.keys() and cameraList: MODEL_EDITOR_PARAMS["cam"] = cameraList[0] # Give Viewport 2.0 renderer only for Maya 2015++ # mayaVersionString = cmds.about(version=True) # mayaVersion = int(mayaVersionString[:4]) if len(mayaVersionString) >= 4 else 0 # if mayaVersion >= 2015: # params[ "rendererName" ] = "vp2Renderer" # Create window if pm.windowPref( PLAYBLAST_WINDOW, exists=True ): pm.windowPref( PLAYBLAST_WINDOW, remove=True ) window = pm.window( PLAYBLAST_WINDOW, titleBar=True, iconify=True, leftEdge = 100, topEdge = 100, width = videoWidth, height = videoHeight, sizeable = False) # Create editor area layout = pm.formLayout() editor = pm.modelEditor( **MODEL_EDITOR_PARAMS ) pm.setFocus( editor ) pm.formLayout( layout, edit=True, attachForm = ( ( editor, "left", 0 ), ( editor, "top", 0 ), ( editor, "right", 0 ), ( editor, "bottom", 0 ) ) ) # Show window pm.setFocus( editor ) pm.showWindow( window ) pm.refresh() try: yield True except: traceback.print_exc() finally: pm.deleteUI(window) return createWindow else: self._app.log_info("nothing to work on")
def removeNameLabel(): if pc.headsUpDisplay(__HUD_LABEL__, exists=True): pc.headsUpDisplay(__HUD_LABEL__, rem=True) if pc.headsUpDisplay(__HUD_USERNAME__, exists=True): pc.headsUpDisplay(__HUD_USERNAME__, rem=True)
def buildPlayblastWindow(cameras, layer, layer_number, add_float_window, renderers, is_rear_layer=True, \ ratio=2.387, display_elements={}): print 'Start to build playblasting window...' p_window = None p_editor = None center = cameras['center'] try: p_window = pm.window(title='stereo_pb_window', w=512, h=215) form = pm.formLayout() p_editor = pm.modelEditor(displayAppearance='smoothShaded', displayTextures=True, displayLights='default') #print 'set basic display mode' # use viewport engine pm.modelEditor(p_editor, e=True, rnm=renderers) if display_elements['displayLights']: pm.modelEditor(p_editor, e=True, displayLights='all') #print 'set displayLights' # display elements for k,v in display_elements.iteritems(): cmd = 'modelEditor -e -'+k+(' on ' if v else ' off ')+'"'+p_editor.name()+'"' try: pm.mel.eval(cmd) #print 'set '+k except: pass # turn off sortTransparent pm.modelEditor(p_editor, e=True, sortTransparent=False) #print 'turn off sortTransparent' # turn off color management for view port 2.0 #if renderers=='vp2Renderer': # try: # pm.modelEditor(p_editor, e=True, cmEnabled=False) # print 'disable color management for viewport2.0' # except: # pass column = pm.columnLayout('true') pm.formLayout( form, edit=True, attachForm=[(column, 'top', 0), (column, 'left', 0), (p_editor, 'top', 0), (p_editor, 'bottom', 0), (p_editor, 'right', 0)], attachNone=[(column, 'bottom'), (column, 'right')], attachControl=(p_editor, 'left', 0, column)) pm.showWindow( p_window ) except: print traceback.format_exc() # hud display, we disable all available hud, only show the custom value at the top right, and restore the previous hud after playblasting huds_current = [] hud_stereo = 'HudStereo' try: for huds in pm.headsUpDisplay(query=True, lh=True): if pm.headsUpDisplay(huds, query=True, ex=True) and pm.headsUpDisplay(huds, query=True, vis=True): huds_current.append(huds) pm.headsUpDisplay(huds, edit=True, vis=False) if pm.headsUpDisplay(hud_stereo, query=True, ex=True): pm.headsUpDisplay(hud_stereo, rem=True) block = pm.headsUpDisplay(nfb=4) if layer=='near': block = block + 1 elif layer=='far': if layer_number==2: block = block + 1 elif layer_number==3: block = block + 2 try: pm.headsUpDisplay( hud_stereo, ao=True, section=4, block=block, padding=15, blockSize='small', blockAlignment='right', dataAlignment='right', label='', dataFontSize='large', command=pm.Callback(getCustomHUD, str(center), layer), event='timeChanged' ) pm.headsUpDisplay( hud_stereo, refresh=True ) except: print traceback.format_exc() try: pm.toggleAxis(origin=False) pm.viewManip(visible=False) except: print traceback.format_exc() except: for huds in huds_current: if pm.headsUpDisplay(huds, query=True, ex=True): pm.headsUpDisplay(huds, edit=True, vis=True) pm.modelEditor(p_editor, edit=True, hud=False) # create floating window if any safearea = None if add_float_window: try: safearea_inst = sa.SafeArea() safearea_inst.enable() safearea = safearea_inst.safearea try: safearea.attr('useSpReticle').set(0) except: pass safearea.attr('panScanDisplayMode').set(2) safearea.attr('panScanLineTrans').set(1) safearea.attr('panScanMaskTrans').set(0) safearea.attr('panScanRatio').set(ratio) safearea.attr('panScanAspectRatio').set(ratio) except: print traceback.format_exc() # change background color bgColor = None if not is_rear_layer: bgColor = makeBluescreen({}, renderers) # hide stereo layer try: scf.showLayer2(layer) except: print traceback.format_exc() # set up expression for updating hud if pm.headsUpDisplay(hud_stereo, query=True, ex=True) and not pm.objExists('stereoUpdateHUD'): pm.expression(n='stereoUpdateHUD', ae=True, s='headsUpDisplay -r '+hud_stereo) global stereo_pb_window stereo_pb_window = { 'window':p_window, 'editor':p_editor, 'safearea':safearea, 'hud_stereo':hud_stereo, \ 'huds_current':huds_current, 'bgColor':bgColor, 'ratio':ratio} return stereo_pb_window
def remove(cls): if pm.headsUpDisplay(cls.HUD_NAME, ex=1): pm.headsUpDisplay(cls.HUD_NAME, rem=1)
def removeDate(): if pc.headsUpDisplay(__HUD_DATE__, exists=True): pc.headsUpDisplay(__HUD_DATE__, rem=True)
def removeHUD(): pm.headsUpDisplay("cycles", rem=True) pm.headsUpDisplay("info", rem=True) pm.headsUpDisplay("version", rem=True) pm.headsUpDisplay("frames", rem=True) pm.headsUpDisplay("animator", rem=True) pm.headsUpDisplay("date", rem=True)
def addHUDs(self): conf = self._conf for hud in conf.get('HUDs', {}): if pc.headsUpDisplay(hud, q=True, exists=True): pc.headsUpDisplay(hud, remove=True) pc.headsUpDisplay(hud, **conf['HUDS'][hud])
def removeHUDs(self): conf = self._conf for hud in conf.get('HUDs', []): if pc.headsUpDisplay(hud, q=True, exists=True): pc.headsUpDisplay(hud, remove=True)
def hubRem(): for hud in pm.headsUpDisplay(q=True,lh=True): if "HUD_cbCustom_" in hud: pm.headsUpDisplay(hud, rem=True)