def setShowViewport(cam_panel, isAO=True, isViewport2=True, isLight=True): lightOn = 'all' if isLight else 'default' renderer_mode = 'vp2Renderer' if isViewport2 else 'base_OpenGL_Renderer' if 'CROWD/CWD_' in cmds.file(q=True, sn=True): renderer_mode = 'base_OpenGL_Renderer' cmds.colorManagementPrefs(e=True, cmEnabled=True) cmds.modelEditor(cam_panel, edit = True, allObjects = False) cmds.modelEditor(cam_panel, edit = True, displayAppearance = 'smoothShaded', displayTextures = True, displayLights = lightOn, nurbsSurfaces = True, polymeshes = True, dynamics = True, fluids = True, rendererName = renderer_mode, twoSidedLighting = True ) if cmds.pluginInfo('gpuCache.mll',q=True,l=True): cmds.modelEditor(cam_panel, edit=True, pluginObjects = ('gpuCacheDisplayFilter', True)) cmds.setAttr('hardwareRenderingGlobals.ssaoEnable',True) cmds.setAttr('hardwareRenderingGlobals.multiSampleEnable',True) if not isAO: cmds.setAttr('hardwareRenderingGlobals.ssaoEnable',False) cmds.setAttr('hardwareRenderingGlobals.multiSampleEnable',False) cmds.setAttr('hardwareRenderingGlobals.ssaoRadius',16) cmds.setAttr('hardwareRenderingGlobals.ssaoFilterRadius',16) cmds.setAttr('hardwareRenderingGlobals.ssaoSamples',16)
def __init__(self, rebuild=False): super(ViewportRendererUI, self).__init__("Viewport Renderer", dock=False, rebuild=rebuild, brand=mnpr_info.brand, tooltip="UI to render from the viewport") cmds.colorManagementPrefs(e=True, outputTransformEnabled=True)
def get_ocio_config_filepath(): ''' Return the OCIO config filepath from maya settings. Only return the filepath if color managment is enabled and OCIO config is enabled. ''' if (cmds.colorManagementPrefs(q=True, cmEnabled=True) and cmds.colorManagementPrefs(q=True, cmConfigFileEnabled=True)): return cmds.colorManagementPrefs(q=True, configFilePath=True)
def snapshot(outputPath, width=400, height=None, hud=False, grid=False): if height is None: height = width outputExt = os.path.splitext(outputPath)[1].lower().lstrip('.') formatNum = KNOWN_FORMATS.get(outputExt) if formatNum is None: raise ValueError( "input image had unrecognized extension: {}".format(outputExt)) # if given relative path, make it relative to current dir (the test # temp base), rather than the workspace dir outputPath = os.path.abspath(outputPath) # save the old output image format oldFormat = cmds.getAttr("defaultRenderGlobals.imageFormat") # save the hud setting oldHud = cmds.headsUpDisplay(q=1, layoutVisibility=1) # save the grid setting oldGrid = cmds.grid(q=1, toggle=1) # save the old view transform oldViewTransform = cmds.colorManagementPrefs(q=1, viewTransformName=1) # do these in a separate try/finally from color management, because # color management seems a bit more finicky cmds.setAttr("defaultRenderGlobals.imageFormat", 32) cmds.headsUpDisplay(layoutVisibility=hud) cmds.grid(toggle=grid) try: # Doing this would be more direct: # cmds.colorManagementPrefs(e=1, outputTarget="playblast", # outputTransformName="Raw") # ... but it causes maya-2018.3 to crash. It seems to be fixed in 2019.0. cmds.colorManagementPrefs(e=1, viewTransformName="Raw") try: cmds.playblast(cf=outputPath, viewer=False, format="image", frame=cmds.currentTime(q=1), offScreen=1, widthHeight=(width, height), percent=100) finally: cmds.colorManagementPrefs(e=1, viewTransformName=oldViewTransform) finally: cmds.setAttr("defaultRenderGlobals.imageFormat", oldFormat) cmds.headsUpDisplay(layoutVisibility=oldHud) cmds.grid(toggle=oldGrid)
def _get_colorspace(self, task_settings, item): """ Get the colorspace for the specified maya session :returns: The string representing the colorspace for the maya session """ return cmds.colorManagementPrefs(q=True, renderingSpaceName=True)
def on_custom_color_change(self): btn = None for button in self.custom_buttons: if button.isChecked(): btn = button break if not btn: om.MGlobal.displayWarning("No swatch selected. Please select one.") # Turn off color management temporarily before opening colorEditor else: cmds.colorManagementPrefs(e=True, cme=False) color_pick = cmds.colorEditor() values = cmds.colorEditor(query=True, rgb=True) btn.color = values all_buttons = self.update_color_buttons() cmds.colorManagementPrefs(e=True, cme=True)
def toggleCM(editor, buttonPath, cmdName): enabled = cmds.symbolCheckBox(buttonPath, q=True, value=True) globalCmEnabled = cmds.colorManagementPrefs(q=True, cmEnabled=True) parameterContent = '("{theEditor}", e=True, cmEnabled={cmEnabled})'.format( theEditor=editor, cmEnabled=enabled) __runCommand(cmdName, parameterContent) cmds.symbolCheckBox(buttonPath, e=True, enable=globalCmEnabled)
def get_nonACESTextureNodes(self): """ Go over entire scene and look for fileTexture nodes. Get the colorspace and check if it doesn't contain the check-word. If yes, return it. Checks for "ACES" if OCIO-Config isn't enabled and "Utility" if it is. Returns: [MSelectionList]: All found nodes or empty if none can be found. """ config = cmds.colorManagementPrefs(q=True, cmConfigFileEnabled=True) check = "Utility" if config else "ACES" nodes = MIO.get_selectionIter() sel = api2.MSelectionList() for n in nodes: node = baseClasses.BaseNode(n.getDependNode()) if self._fileTexture_check(mobj=node.mobject): space = MIO.get_colorSpace(node.mobject, node.nodeMfn) if check not in space: sel.add(node.mobject) return sel
def _shadersField(self): shader_index = _PRESERVE['shaderSpaceShaderIntOptVar'] # Component self.shader_cbb = QtGui.QComboBox() self.shader_cbb.addItems(kShadersList) self.shader_cbb.setCurrentIndex(shader_index) self.shader_cbb.currentIndexChanged.connect( lambda idx: self.sender.emit( 'shaderSpaceShaderIntOptVar', 0, str(idx))) self.preset_cbb = QtGui.QComboBox() self._resetPresets(kShadersList[shader_index]) # Layout self.shader_gb = QtGui.QGroupBox('Shaders') self.shader_gb.setAlignment(QtCore.Qt.AlignCenter) self.shader_fl = QtGui.QFormLayout() self.shader_fl.addRow('Shader Selections', self.shader_cbb) self.shader_fl.addRow('Shader Presets', self.preset_cbb) self.shader_gb.setLayout(self.shader_fl) # Color Management components for up to Maya 2015, 2016 if kMayaVersion in ('2015', '2016'): name_buff = _PRESERVE['shaderSpaceColorProfileNameStrOptVars'] sRgbColorSpaceName = name_buff[0] linearColorSpaceName = name_buff[1] self.sRgbColorSpace_cbb = QtGui.QComboBox() self.linearColorSpace_cbb = QtGui.QComboBox() cmPrefs = mc.colorManagementPrefs(q=True, inputSpaceNames=True) self.sRgbColorSpace_cbb.addItems(cmPrefs) self.linearColorSpace_cbb.addItems(cmPrefs) sRgb_idx = self.sRgbColorSpace_cbb.findText( sRgbColorSpaceName, QtCore.Qt.MatchFixedString) if sRgb_idx >= 0: self.sRgbColorSpace_cbb.setCurrentIndex(sRgb_idx) linear_idx = self.linearColorSpace_cbb.findText( linearColorSpaceName, QtCore.Qt.MatchFixedString) if linear_idx >= 0: self.linearColorSpace_cbb.setCurrentIndex(linear_idx) # connect self.sRgbColorSpace_cbb.activated[str].connect( lambda name: self.sender.emit( 'shaderSpaceColorProfileNameStrOptVars', 0, str(name))) self.linearColorSpace_cbb.activated[str].connect( lambda name: self.sender.emit( 'shaderSpaceColorProfileNameStrOptVars', 0, str(name))) self.shader_fl.addRow('sRGB', self.sRgbColorSpace_cbb) self.shader_fl.addRow('Linear', self.linearColorSpace_cbb) # for idx in range(self.shader_fl.count()): widget = self.shader_fl.itemAt(idx).widget() if isinstance(widget, QtGui.QComboBox): widget.setMinimumHeight(24) widget.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) # Connect self.shader_cbb.activated[str].connect( lambda shaderType: self._resetPresets(shaderType)) self.preset_cbb.activated[str].connect( lambda preset: self._updatePreset(preset)) return self.shader_gb
def update_color_management_ui(self): #Dont update ui if Color management command not exist try: cmds.colorManagementPrefs(q=True, cmEnabled=True) except: return for label, ui_item, default_value in self.color_management_ui_items: if label.text()=='Enable': value = cmds.colorManagementPrefs(q=True, cmEnabled=True) elif label.text()=='Rendering Space': value = cmds.colorManagementPrefs(q=True, renderingSpaceName=True) elif label.text()=='View Transform': value = cmds.colorManagementPrefs(q=True, viewTransformName=True) elif label.text()=='Input Color Space': value = cmds.colorManagementPrefs(q=True, defaultInputSpaceName=True) elif label.text()=='Enable Color Pots': value = cmds.colorManagementPrefs(q=True, colorManagePots=True) if isinstance(ui_item, QLineEdit): ui_item.setText(str(value)) ui_item.setReadOnly(True) elif isinstance(ui_item, QCheckBox): if value: ui_item.setCheckState(Qt.Checked) else: ui_item.setCheckState(Qt.Unchecked) ui_item.setEnabled(False) if value!=default_value: label.setStyleSheet("QLabel { color : #FF6600;font: Bold }") else: label.setStyleSheet('')
def _initial_scene_operations(self): """ Initial scene configurations, including frame range, frame rate, and resolution """ # Set file naming format to fileName.frameNumber.ext cmds.setAttr("defaultRenderGlobals.animation", True) cmds.setAttr("defaultRenderGlobals.putFrameBeforeExt", True) # Set color management default setting to ACEScg try: cmds.colorManagementFileRules("Default", edit=True, colorSpace="ACES - ACEScg") except: cmds.colorManagementFileRules("Default", edit=True, colorSpace="ACEScg") #Set view transform default setting to Rec.709 try: cmds.colorManagementPrefs(edit=True, viewTransformName="Rec.709 (ACES)") except: cmds.colorManagementPrefs(edit=True, viewTransformName="sRGB (ACES)") # Determine current render engine curr_renderer = cmds.getAttr('defaultRenderGlobals.currentRenderer') if curr_renderer == "arnold": # Creates instance of Arnold's defaultSettings node, which is essential # for executing Arnold-specific functions without opening the menu from mtoa.core import createOptions createOptions() # # set file naming convention # cmds.setAttr("defaultRenderGlobals.imageFilePrefix", "<Scene>_<RenderLayer>/<Scene>_<RenderLayer>", type = "string") # set MergeAOVs to True cmds.setAttr('defaultArnoldDriver.mergeAOVs', 1) elif curr_renderer == "vray": cmds.setAttr("vraySettings.animType", 1) cmds.setAttr("vraySettings.imageFormatStr", 5) else: pass
def create_window(self): winID = 'aurWindow' if cmds.window(winID, exists=True): cmds.deleteUI(winID) cmds.window(winID, title='Control Panel') cmds.columnLayout(adjustableColumn=True, rowSpacing=5, width=200) cmds.frameLayout(label='Scene/Layout', labelAlign='top') cmds.button(label='Scene Setup', ann='Set up scene groups with Outliner colours', command=scene_setup()) cmds.button(label='Reload as Reference', ann='', command=reload_as_reference()) cmds.frameLayout(label='Rigging', labelAlign='top') cmds.button(label='Original Blendshape', ann='Get the original shape without blendshapes or joint deformation', command=get_undeformed_mesh()) cmds.button(label='Joint Controllers _BROKEN_', ann='Make a controller for each selected joint', command=create_joint_controllers(), bgc=[.5, .5, .6]) cmds.button(label='End Joint Orient', ann='Orient the end joint of each chain correctly', command=end_joint_orient()) cmds.frameLayout(label='Controls', labelAlign='top') cmds.button(label='Nurbs Circle', ann='Makes a NURBS circle', command=CreateNurbsShapes.create_nurbs_circle()) cmds.button(label='Nurbs Cube', ann='Makes a NURBS cube', command=CreateNurbsShapes.create_nurbs_cube()) cmds.button(label='Nurbs Pyramid', ann='Makes a NURBS cube', command=CreateNurbsShapes.create_nurbs_pyramid()) cmds.rowColumnLayout("NurbsColours", numberOfColumns=3, h=20) cmds.button(label='Red', ann='Set NURBS curve to Red', command=SetNurbsColorRed, bgc=[.8,0.3,0.3]) cmds.button(label='Yellow', ann='Set NURBS curve to Yellow', command=SetNurbsColorYellow, bgc=[.8,.8,.3]) cmds.button(label='Blue', ann='Set NURBS curve to Blue', command=SetNurbsColorBlue, bgc=[.3,.6,.8]) cmds.setParent('..') cmds.frameLayout(label='Rendering', labelAlign='top') cmds.button('OCIO_Toggle', label='OCIO Toggle', h=hv, w=wv, ann='Toggle OCIO colour management', command=ocio_toggle()) cmds.button(label='Set Frame End same as Timeline', ann='Set the End Frame for rendering to the End Frame of the timeline', command=AurTDEndFrameRange) cmds.frameLayout(label='Modelling', labelAlign='top') cmds.button(label='Delete non-deformer history', ann='Delete non-deformer history', command=AurTDSafeDelHistory) cmds.frameLayout(label='Cameras', labelAlign='top') cmds.button(label='Overscan to 1.05', ann="Set current camera's Overscan to 1.05", command=AurTDOverscan) cmds.button(label='Playblast single frame', ann="Playblasts a single frame as a jpg at the render resolution", command=SingleFramePlayblast.single_frame_playblast()) cmds.rowColumnLayout("uiMenuRow", adjustableColumn=True) # OCIO Toggle color and name set on open if cmds.colorManagementPrefs(q=True, cfe=True): cmds.button('OCIO_Toggle', e=True, label='OCIO Off', bgc=[.8, .5, .5]) else: cmds.button('OCIO_Toggle', e=True, label='OCIO On', bgc=[.5, .7, .5]) cmds.showWindow()
def populate_colorspaces(self): """ Populates the option menus with all of the available colorspaces """ colorspaces = cmds.colorManagementPrefs(q=1, iss=1) option_menus = [self.to_om, self.avail_om] for colorspace in colorspaces: for option_menu in option_menus: cmds.menuItem(l=colorspace, p=option_menu)
def get_missing_colorspaces(): """ Returns a list of all missing colorspaces """ missing_cs_nodes = cmds.colorManagementPrefs(q=1, missingColorSpaceNodes=1) missing_cs = set() for node in missing_cs_nodes: missing_cs.add(cmds.getAttr(node + '.colorSpace')) return list(missing_cs)
def color_managed_convert(rgbf): """Convert the given color to the current workspace""" cm_enabled = cmds.colorManagementPrefs(query=True, cmEnabled=True) if not cm_enabled: return rgbf # Note: maybe one day autodesk will provide us with the builtin libraries # currently this requires third party libraries cm_ocio_enabled = cmds.colorManagementPrefs(query=True, cmConfigFileEnabled=True) if cm_ocio_enabled: cmds.warning( "OCIO config enabled. 2.2 Gamma is being used for color conversion" ) srgb_to_linear = lambda x: x / 12.92 if x < 0.04045 else ( (x + 0.055) / 1.055)**2.4 return [srgb_to_linear(i) for i in rgbf]
def ocio_toggle(self): if cmds.colorManagementPrefs(q=True, cfe=True): cmds.colorManagementPrefs(e=True, cfe=False) cmds.button('OCIO_Toggle', e=True, label='OCIO Off', bgc=[.8, .5, .5]) elif not cmds.colorManagementPrefs(q=True, cfe=True): cmds.colorManagementPrefs(e=True, cfe=True) cmds.button('OCIO_Toggle', e=True, label='OCIO On', bgc=[.5, .7, .5])
def reapply(): # Get the list of color managed nodes. cmNodes = cmds.colorManagementPrefs(query=True, colorManagedNodes=True) # Avoid warning if mental ray plugin isn't loaded. if cmds.pluginInfo('Mayatomr', query=True, loaded=True): cmNodes = cmNodes + cmds.ls(type='mentalrayIblShape') # Avoid warning if mtoa plugin isn't loaded. if cmds.pluginInfo('mtoa', query=True, loaded=True): cmNodes = cmNodes + cmds.ls(type='aiImage') # Loop over nodes: get each node's file path, evaluate rules, set # the color space. for nodeName in cmNodes: # If ignore file rules is set for that node, don't reapply on it. ignoreColorSpaceFileRules = cmds.getAttr(nodeName + '.ignoreColorSpaceFileRules') if ignoreColorSpaceFileRules: continue TODO('HACK', 'Should not depend on per node type knowledge', None) # We should not need to know the list of file name attribute names # for all types of color managed nodes, as more color managed node # types can be added in the future. # # As of 5-Nov-2014, we know that the colorManagedNodes query # will return two types of nodes: image plane nodes, which have an # image file attribute, and file texture nodes, which have a file # name attribute. # # Additionally, we are relying on identical attribute naming for # the color space across all node types, which is very weak. attrList = cmds.listAttr(nodeName) fileAttrName = 'imageName' if 'imageName' in attrList: fileAttrName = 'imageName' elif 'fileTextureName' in attrList: fileAttrName = 'fileTextureName' elif 'filename' in attrList: # aiImage fileAttrName = 'filename' else: fileAttrName = 'texture' fileName = cmds.getAttr(nodeName + '.' + fileAttrName) colorSpace = cmds.colorManagementFileRules(evaluate=fileName) cmds.setAttr(nodeName + '.colorSpace', colorSpace, type='string')
def set_color_management_attr(self): #Dont update ui if Color management command not exist try: cmds.colorManagementPrefs except: return for item in self.otherAttrList: #['Color Management Preferences', 'Enable', '', True], attr_label = item[1] value = item[3] if attr_label=='Enable': cmds.colorManagementPrefs(e=True, cmEnabled=value) elif attr_label=='Rendering Space': cmds.colorManagementPrefs(e=True, renderingSpaceName=value) elif attr_label=='View Transform': cmds.colorManagementPrefs(e=True, viewTransformName=value) elif attr_label=='Input Color Space': cmds.colorManagementPrefs(e=True, defaultInputSpaceName=value) elif attr_label=='Enable Color Pots': cmds.colorManagementPrefs(e=True, colorManagePots=value) self.update_color_management_ui()
def __init__(self, name=''): super(ChainRule, self).__init__(name=name) # Initialize our list of rules with a default rule. This will # always be the last rule. The rule list is always appended to, # and is placed in the scroll list in back to front (reverse # iteration) order. self._rulesChain = [] self._rulesChain.append(DefaultRule()) # Fill in UI with existing rules. rules = cmds.colorManagementFileRules(listRules=True) # Default rule already added, skip it. rules.pop(0) self._ocioRulesEnabled = cmds.colorManagementPrefs(query=True, cmConfigFileEnabled=True) \ and cmds.colorManagementPrefs(query=True, ocioRulesEnabled=True) if self._ocioRulesEnabled: self._rulesChain.append(OpaqueRule(rules.pop(0))) else: for rule in rules: self._rulesChain.append(FilePathRule(rule)) self._selectedPos = 0
def createColorSpaceMenu(self): self._colorSpaceLayout = cmds.rowLayout(numberOfColumns=2) self._colorSpaceMenu = cmds.optionMenuGrp( columnWidth=[1, 130], ad2=2, label=maya. stringTable['y_inputSpaceRulesUI.kInputColorSpaceMenuLabel'], changeCommand=self.onInputColorSpaceChange) # Fill in the input color spaces, and set the menu selection. inputSpaces = cmds.colorManagementPrefs(query=True, inputSpaceNames=True) for inputSpace in inputSpaces: cmds.menuItem(label=inputSpace) validColorSpace = self.colorSpace in inputSpaces if not validColorSpace: cmds.menuItem(label=self.colorSpace) addTransformLabel = mel.eval( 'uiRes("m_colorManagementUtilities.kAddCustomTransform")') cmds.menuItem(enable=nativeMode(), label=addTransformLabel) cmds.optionMenuGrp(self._colorSpaceMenu, edit=True, value=self.colorSpace) self.setMenuValidColorSpace(validColorSpace) transformSettings = cmds.symbolButton( enable=nativeMode(), image='colorTransformSettings.png') cmds.popupMenu(button=1, parent=transformSettings) removeTransformLabel = mel.eval( 'uiRes("m_createPrefWndUI.kColorManagementRemoveTransform")') cmds.menuItem(label=removeTransformLabel, command=self.onRemoveColorSpace) cmds.setParent('..', menu=True) # End of row layout. cmds.setParent('..')
def onRemoveColorSpace(self, *args): # If color space is already invalid (doesn't exist), don't try to # remove it. if not self.validateColorSpace(self.colorSpace): return # Because color space removal can only be done on the selected # color space, it must be our own color space, so we must choose an # alternate one. removed = mel.eval('colorMgtRemoveTransform "' + self.colorSpace + '" input') if removed != '': # Need a mode-specific interface to retrieve a default input # color space. For now, arbitrarily pick the first one. inputSpaces = cmds.colorManagementPrefs(query=True, inputSpaceNames=True) self.colorSpace = inputSpaces[0]
def convertOCIOColorSpaces(): cs_translations = { "Utility - sRGB - Texture": "sRGB", "Utility - Raw": "Raw", "Utility - Linear - sRGB": "scene-linear Rec.709-sRGB", "ACES - ACES2065-1": "Raw" # TO-DO: add more conversions as needed } available_color_spaces = cmd.colorManagementPrefs(query=True, inputSpaceNames=True) filetextures = cmd.ls(type="file") for f in filetextures: cs = cmd.getAttr(f + ".colorSpace") if cs not in available_color_spaces: if cs in cs_translations: #print("There is a translation for this cs %s"%cs) cmd.setAttr(f + ".colorSpace", cs_translations[cs], type="string") else: print("Color space %s unknown (no translation)"%cs)
def apply(self): cmds.colorManagementPrefs(edit=True, outputTransformName=self.name, outputTarget='renderer')
#Turn OCIO Off import maya.cmds as cmds cmds.colorManagementPrefs(e=True, cfe=False) #TODO reload all textures #Turn OCIO On import maya.cmds as cmds cmds.colorManagementPrefs(e=True, cfe=True) def ocio_toggle(self): if cmds.colorManagementPrefs(q=True, cfe=True): cmds.colorManagementPrefs(e=True, cfe=False) cmds.button('OCIO_Toggle', e=True, label='OCIO Off', bgc=[.8, .5, .5]) elif not cmds.colorManagementPrefs(q=True, cfe=True): cmds.colorManagementPrefs(e=True, cfe=True) cmds.button('OCIO_Toggle', e=True, label='OCIO On', bgc=[.5, .7, .5])
def apply(self): cmds.colorManagementPrefs(edit=True, outputTransformName=self.name, outputTarget='playblast')
SCRIPT ClearColorManagement AUTHOR: Thiago Silva/[email protected] DATE: Wednesday 17 March 2021 07:54 SCRIPT FOR ZOMBIE STUDIO """ import sgtk from maya import cmds try: app = sgtk.platform.current_engine() pipe = app.context.tank.pipeline_configuration.get_name() if pipe == 'zombieProd' or pipe == 'zombieDev': if not cmds.colorManagementPrefs(q=True, cmEnabled=True): cmds.colorManagementPrefs(e=True, cmEnabled=True) cmds.colorManagementPrefs(e=True, configFilePath="R:/Zombie Dropbox/INHOUSE/OCIO/aces_1.0.3/config.ocio") cmds.colorManagementPrefs(e=True, policyFileName="R:/Zombie Dropbox/INHOUSE/OCIO/maya/ACES.xml") cmds.colorManagementPrefs(e=True, ocioRulesEnabled=True) cmds.colorManagementPrefs(e=True, cmConfigFileEnabled=True) cmds.colorManagementPrefs(e=True, refresh=True) else: if cmds.colorManagementPrefs(q=True, cmEnabled=True): cmds.colorManagementPrefs(e=True, ocioRulesEnabled=False) cmds.colorManagementPrefs(e=True, cmConfigFileEnabled=False) cmds.colorManagementPrefs(e=True, cmEnabled=False) cmds.colorManagementPrefs(e=True, configFilePath="") cmds.colorManagementPrefs(e=True, policyFileName="") cmds.colorManagementPrefs(e=True, refresh=False)
def initVars(self): self.destroy = 0 self.ocio = cmds.colorManagementPrefs(q=True, cfe=True)
def init_color_management(): if cmds.about(batch=True): return cmds.colorManagementPrefs(edit=True, cmEnabled=True)
def onNewScene(userdata): # set units cmds.optionVar(sv=("workingUnitTimeDefault", "pal")) # 25 fps cmds.optionVar(sv=("workingUnitAngularDefault", "deg")) # degree cmds.optionVar(sv=("workingUnitLinearDefault", "cm")) # cm cmds.keyTangent(e=True, g=True, weightedTangents=True) # weighted tangents cmds.optionVar(iv=("playbackMinDefault", 1001)) # playback start cmds.optionVar(iv=("playbackMaxDefault", 1125)) # playback end cmds.optionVar(iv=("playbackMinRangeDefault", 1001)) # playback range start cmds.optionVar(iv=("playbackMaxRangeDefault", 1250)) # playback range end maya.cmds.currentUnit(linear='cm', angle='deg', time='pal') cmds.playbackOptions(ast=1001, min=1001, max=1125, aet=1250) # set color management mayaVersion = cmds.about(version=True) if mayaVersion == "2022": cmds.colorManagementPrefs(e=True, configFilePath=ts_config) cmds.colorManagementPrefs(e=True, renderingSpaceName=ts_renderingSpace) cmds.colorManagementPrefs(e=True, displayName=ts_display) cmds.colorManagementPrefs(e=True, viewName=ts_view) else: cmds.colorManagementPrefs(e=True, renderingSpaceName=ts_renderingSpace) cmds.colorManagementPrefs(e=True, viewTransformName=ts_viewTransform) print( '\n---------------------------------\nTom Sporer defaults set\n---------------------------------' )
def checkForRenderingSpaceMismatch(): mayaVersion = cmds.about(version=True) # sceneRenderingSpace = cmds.colorManagementPrefs(q=True, loadedRenderingSpaceName=True) sceneRenderingSpace = cmds.colorManagementPrefs(q=True, renderingSpaceName=True) if sceneRenderingSpace != ts_renderingSpace: if cmds.ls("defaultRenderGlobals.rememberRenderingSpace"): rememberRenderingSpace = cmds.getAttr( "defaultRenderGlobals.rememberRenderingSpace") else: rememberRenderingSpace = False if sceneRenderingSpace != rememberRenderingSpace: warningDialog = renderingSpaceWarning(sceneRenderingSpace) if warningDialog == "Yes": if mayaVersion == 2022: # cmds.colorManagementPrefs(e=True, configFilePath=ts_config) cmds.colorManagementPrefs( e=True, renderingSpaceName=ts_renderingSpace) cmds.colorManagementPrefs(e=True, displayName=ts_display) cmds.colorManagementPrefs(e=True, viewName=ts_view) else: cmds.colorManagementPrefs( e=True, renderingSpaceName=ts_renderingSpace) cmds.colorManagementPrefs( e=True, viewTransformName=ts_viewTransform) # cmds.evalDeferred("cmds.file(save=True)") elif warningDialog == "No, don't ask again": cmds.addAttr("defaultRenderGlobals", ln="rememberRenderingSpace", dt="string") cmds.setAttr("defaultRenderGlobals.rememberRenderingSpace", sceneRenderingSpace, type="string")
def __init__(self): # Initialise some global variables self.renderer = mc.getAttr("defaultRenderGlobals.currentRenderer") self.default_beauty_aov_name = "beauty" self.frame = mc.currentTime(query=True) # Load OpenEXR plugin mc.loadPlugin("OpenEXRLoader") # Check for Color Management feature (introduced in Maya 2016) try: self.colorManagementEnabled = mc.colorManagementPrefs(query=True, cme=True) except: self.colorManagementEnabled = 0 # Set up common render settings pass # ==================================================================== # Set up renderer-specific render settings # -------------------------------------------------------------------- # Arnold... if self.renderer == "arnold": # Set output file type to exr # (can't figure out how to do this) pass # Set file name prefix options imageFilePrefix = mc.getAttr( "defaultRenderGlobals.imageFilePrefix") # Arnold doesn't like the '%x' style of tokens, so replace them if imageFilePrefix: imageFilePrefix = imageFilePrefix.replace(r"%s", "<Scene>") imageFilePrefix = imageFilePrefix.replace( r"%l", "<RenderLayer>") else: imageFilePrefix = "<Scene>" # Append RenderPass token # (but only if Merge AOVs option is turned off) if not mc.getAttr("defaultArnoldDriver.mergeAOVs"): if "<RenderPass>" not in imageFilePrefix: imageFilePrefix += "_<RenderPass>" # Store the updated prefix string mc.setAttr("defaultRenderGlobals.imageFilePrefix", imageFilePrefix, type="string") # Set correct output gamma # (disable for Maya 2016 and later with Color Management enabled) if not self.colorManagementEnabled: mc.setAttr("defaultArnoldRenderOptions.display_gamma", 1) # Add pre- and post-render commands mc.setAttr( "defaultRenderGlobals.preMel", 'python("gpsRenderViewSelectAOV.SelectAOV().pre_render()")', type="string") mc.setAttr( "defaultRenderGlobals.postMel", 'python("gpsRenderViewSelectAOV.SelectAOV().post_render()")', type="string") # -------------------------------------------------------------------- # Redshift... elif self.renderer == "redshift": # Set output file type to exr mc.setAttr("redshiftOptions.imageFormat", 1) mc.setAttr("redshiftOptions.noSaveImage", 0) try: mc.setAttr("redshiftOptions.exrForceMultilayer", 0) except: print( "Force multichannel EXR setting not supported by this version of Redshift." ) # Set file name prefix options imageFilePrefix = mc.getAttr( "defaultRenderGlobals.imageFilePrefix") if not imageFilePrefix: imageFilePrefix = "<Scene>" # Append RenderPass token pass # Store the updated prefix string mc.setAttr("defaultRenderGlobals.imageFilePrefix", imageFilePrefix, type="string") # Set correct output gamma # (disable for Maya 2016 and later with Color Management enabled) if not self.colorManagementEnabled: mc.setAttr("redshiftOptions.displayGammaValue", 2.2) # Add pre- and post-render commands mc.setAttr( "redshiftOptions.preRenderMel", 'python("gpsRenderViewSelectAOV.SelectAOV().pre_render()")', type="string") mc.setAttr( "redshiftOptions.postRenderMel", 'python("gpsRenderViewSelectAOV.SelectAOV().post_render()")', type="string") # -------------------------------------------------------------------- # MentalRay... elif self.renderer == "mentalRay": # Set output file type to exr # (can't figure out how to do this) pass # Set file name prefix options imageFilePrefix = mc.getAttr( "defaultRenderGlobals.imageFilePrefix") if not imageFilePrefix: imageFilePrefix = "<Scene>" # Append RenderPass token if "<RenderPass>" not in imageFilePrefix: imageFilePrefix += "_<RenderPass>" # Store the updated prefix string mc.setAttr("defaultRenderGlobals.imageFilePrefix", imageFilePrefix, type="string") # Set correct output gamma pass # Add pre- and post-render commands mc.setAttr( "defaultRenderGlobals.preMel", 'python("gpsRenderViewSelectAOV.SelectAOV().pre_render()")', type="string") mc.setAttr( "defaultRenderGlobals.postMel", 'python("gpsRenderViewSelectAOV.SelectAOV().post_render()")', type="string") # No supported renderer... else: mc.error("The renderer '%s' is not supported" % self.renderer) # ==================================================================== # Set up Maya Render View for 32-bit float / linear colour space # (disable for Maya 2016 and later with Color Management enabled) if not self.colorManagementEnabled: mc.setAttr("defaultViewColorManager.imageColorProfile", 2) mc.setAttr("defaultViewColorManager.displayColorProfile", 3) # TODO - Check whether 32-bit mode is enabled self.create_ui()