Exemple #1
0
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)
Exemple #3
0
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)
Exemple #4
0
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)
Exemple #7
0
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)
Exemple #8
0
    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
Exemple #9
0
 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
Exemple #10
0
    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('')
Exemple #11
0
    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
Exemple #12
0
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)
Exemple #15
0
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])
Exemple #17
0
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')
Exemple #18
0
    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]
Exemple #22
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)
Exemple #23
0
 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])
Exemple #25
0
 def apply(self):
     cmds.colorManagementPrefs(edit=True,
                               outputTransformName=self.name,
                               outputTarget='playblast')
Exemple #26
0
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)
Exemple #28
0
def init_color_management():
    if cmds.about(batch=True):
        return

    cmds.colorManagementPrefs(edit=True, cmEnabled=True)
Exemple #29
0
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---------------------------------'
    )
Exemple #30
0
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()