From f4e5da1785b8a0628e3a484cf883c70663c04225 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 11 Sep 2024 11:55:13 +0200 Subject: [PATCH 1/6] Remove deprecated color management settings (especially now we don't support older than Maya 2022 anyway because those are Py2) --- client/ayon_maya/api/lib.py | 88 ++++++++++--------------------------- server/settings/imageio.py | 48 +------------------- 2 files changed, 23 insertions(+), 113 deletions(-) diff --git a/client/ayon_maya/api/lib.py b/client/ayon_maya/api/lib.py index e0518620..35e4d231 100644 --- a/client/ayon_maya/api/lib.py +++ b/client/ayon_maya/api/lib.py @@ -3338,48 +3338,15 @@ def set_colorspace(): imageio = get_project_settings(project_name)["maya"]["imageio"] # ocio compatibility variables - ocio_v2_maya_version = 2022 - maya_version = int(cmds.about(version=True)) - ocio_v2_support = use_ocio_v2 = maya_version >= ocio_v2_maya_version is_ocio_set = bool(os.environ.get("OCIO")) - use_workfile_settings = imageio.get("workfile", {}).get("enabled") - if use_workfile_settings: - root_dict = imageio["workfile"] - else: - # TODO: deprecated code from 3.15.5 - remove - # Maya 2022+ introduces new OCIO v2 color management settings that - # can override the old color management preferences. AYON has - # separate settings for both so we fall back when necessary. - use_ocio_v2 = imageio["colorManagementPreference_v2"]["enabled"] - if use_ocio_v2 and not ocio_v2_support: - # Fallback to legacy behavior with a warning - log.warning( - "Color Management Preference v2 is enabled but not " - "supported by current Maya version: {} (< {}). Falling " - "back to legacy settings.".format( - maya_version, ocio_v2_maya_version) - ) - - if use_ocio_v2: - root_dict = imageio["colorManagementPreference_v2"] - else: - root_dict = imageio["colorManagementPreference"] - - if not isinstance(root_dict, dict): - msg = "set_colorspace(): argument should be dictionary" - log.error(msg) - return - - # backward compatibility - # TODO: deprecated code from 3.15.5 - remove with deprecated code above - view_name = root_dict.get("viewTransform") - if view_name is None: - view_name = root_dict.get("viewName") - - log.debug(">> root_dict: {}".format(pformat(root_dict))) - if not root_dict: - return + if not imageio["workfile"]["enabled"]: + log.error( + "The AYON settings for Maya Color Management were last configured " + "using deprecated settings. Make sure to update the workfile " + "colorspace values for 'ayon+settings://maya/imageio/workfile' " + "and enable the checkbox to avoid this error." + ) # set color spaces for rendering space and view transforms def _colormanage(**kwargs): @@ -3400,32 +3367,21 @@ def _colormanage(**kwargs): cmds.colorManagementPrefs(edit=True, cmEnabled=True) cmds.colorManagementPrefs(edit=True, ocioRulesEnabled=True) - if use_ocio_v2: - log.info("Using Maya OCIO v2") - if not is_ocio_set: - # Set the Maya 2022+ default OCIO v2 config file path - log.info("Setting default Maya OCIO v2 config") - # Note: Setting "" as value also sets this default however - # introduces a bug where launching a file on startup will prompt - # to save the empty scene before it, so we set using the path. - # This value has been the same for 2022, 2023 and 2024 - path = "/OCIO-configs/Maya2022-default/config.ocio" - cmds.colorManagementPrefs(edit=True, configFilePath=path) - - # set rendering space and view transform - _colormanage(renderingSpaceName=root_dict["renderSpace"]) - _colormanage(viewName=view_name) - _colormanage(displayName=root_dict["displayName"]) - else: - log.info("Using Maya OCIO v1 (legacy)") - if not is_ocio_set: - # Set the Maya default config file path - log.info("Setting default Maya OCIO v1 legacy config") - cmds.colorManagementPrefs(edit=True, configFilePath="legacy") - - # set rendering space and view transform - _colormanage(renderingSpaceName=root_dict["renderSpace"]) - _colormanage(viewTransformName=view_name) + log.info("Using Maya OCIO v2") + if not is_ocio_set: + # Set the Maya 2022+ default OCIO v2 config file path + log.info("Setting default Maya OCIO v2 config") + # Note: Setting "" as value also sets this default however + # introduces a bug where launching a file on startup will prompt + # to save the empty scene before it, so we set using the path. + # This value has been the same for 2022, 2023 and 2024. + path = "/OCIO-configs/Maya2022-default/config.ocio" + cmds.colorManagementPrefs(edit=True, configFilePath=path) + + # set rendering space and view transform + _colormanage(renderingSpaceName=imageio["workfile"]["renderSpace"]) + _colormanage(viewName=imageio["workfile"]["viewName"]) + _colormanage(displayName=imageio["workfile"]["displayName"]) @contextlib.contextmanager diff --git a/server/settings/imageio.py b/server/settings/imageio.py index 45fd0743..939d20ac 100644 --- a/server/settings/imageio.py +++ b/server/settings/imageio.py @@ -31,28 +31,6 @@ def validate_unique_outputs(cls, value): return value -class ColorManagementPreferenceV2Model(BaseSettingsModel): - """Color Management Preference v2 (Maya 2022+). - - Please migrate all to 'imageio/workfile' and enable it. - """ - - enabled: bool = SettingsField( - True, title="Use Color Management Preference v2" - ) - - renderSpace: str = SettingsField(title="Rendering Space") - displayName: str = SettingsField(title="Display") - viewName: str = SettingsField(title="View") - - -class ColorManagementPreferenceModel(BaseSettingsModel): - """Color Management Preference (legacy).""" - - renderSpace: str = SettingsField(title="Rendering Space") - viewTransform: str = SettingsField(title="Viewer Transform ") - - class WorkfileImageIOModel(BaseSettingsModel): enabled: bool = SettingsField(True, title="Enabled") renderSpace: str = SettingsField(title="Rendering Space") @@ -61,10 +39,7 @@ class WorkfileImageIOModel(BaseSettingsModel): class ImageIOSettings(BaseSettingsModel): - """Maya color management project settings. - - Todo: What to do with color management preferences version? - """ + """Maya color management project settings.""" _isGroup: bool = True activate_host_color_management: bool = SettingsField( @@ -78,17 +53,6 @@ class ImageIOSettings(BaseSettingsModel): default_factory=WorkfileImageIOModel, title="Workfile" ) - # Deprecated - colorManagementPreference_v2: ColorManagementPreferenceV2Model = ( - SettingsField( - default_factory=ColorManagementPreferenceV2Model, - title="DEPRECATED: Color Management Preference v2 (Maya 2022+)" - ) - ) - colorManagementPreference: ColorManagementPreferenceModel = SettingsField( - default_factory=ColorManagementPreferenceModel, - title="DEPRECATED: Color Management Preference (legacy)" - ) DEFAULT_IMAGEIO_SETTINGS = { @@ -102,15 +66,5 @@ class ImageIOSettings(BaseSettingsModel): "renderSpace": "ACES - ACEScg", "displayName": "ACES", "viewName": "sRGB" - }, - "colorManagementPreference_v2": { - "enabled": True, - "renderSpace": "ACEScg", - "displayName": "sRGB", - "viewName": "ACES 1.0 SDR-video" - }, - "colorManagementPreference": { - "renderSpace": "scene-linear Rec 709/sRGB", - "viewTransform": "sRGB gamma" } } From dd40ccb6f9c685b155b03e0058991955ddf0908e Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 11 Sep 2024 11:56:53 +0200 Subject: [PATCH 2/6] Update the default value for enabled --- server/settings/imageio.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/settings/imageio.py b/server/settings/imageio.py index 939d20ac..cfdad8dd 100644 --- a/server/settings/imageio.py +++ b/server/settings/imageio.py @@ -62,7 +62,7 @@ class ImageIOSettings(BaseSettingsModel): "rules": [] }, "workfile": { - "enabled": False, + "enabled": True, "renderSpace": "ACES - ACEScg", "displayName": "ACES", "viewName": "sRGB" From 058312a952d514714b7a55322876a18586608c98 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 11 Sep 2024 11:59:14 +0200 Subject: [PATCH 3/6] Tweak log message since it's valid to have it disabled --- client/ayon_maya/api/lib.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/client/ayon_maya/api/lib.py b/client/ayon_maya/api/lib.py index 35e4d231..15333ac9 100644 --- a/client/ayon_maya/api/lib.py +++ b/client/ayon_maya/api/lib.py @@ -3341,12 +3341,10 @@ def set_colorspace(): is_ocio_set = bool(os.environ.get("OCIO")) if not imageio["workfile"]["enabled"]: - log.error( - "The AYON settings for Maya Color Management were last configured " - "using deprecated settings. Make sure to update the workfile " - "colorspace values for 'ayon+settings://maya/imageio/workfile' " - "and enable the checkbox to avoid this error." + log.info( + "AYON Maya Color Management settings for workfile are disabled." ) + return # set color spaces for rendering space and view transforms def _colormanage(**kwargs): From 696dd36caa3d56d7ec4ec12f49a7542172a727b2 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 11 Sep 2024 12:00:46 +0200 Subject: [PATCH 4/6] Cleanup --- client/ayon_maya/api/lib.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/client/ayon_maya/api/lib.py b/client/ayon_maya/api/lib.py index 15333ac9..a4678a93 100644 --- a/client/ayon_maya/api/lib.py +++ b/client/ayon_maya/api/lib.py @@ -3337,9 +3337,6 @@ def set_colorspace(): project_name = get_current_project_name() imageio = get_project_settings(project_name)["maya"]["imageio"] - # ocio compatibility variables - is_ocio_set = bool(os.environ.get("OCIO")) - if not imageio["workfile"]["enabled"]: log.info( "AYON Maya Color Management settings for workfile are disabled." @@ -3361,11 +3358,13 @@ def _colormanage(**kwargs): except RuntimeError as exc: log.error(exc) + log.info(f"Setting Maya colorspace..") + # enable color management cmds.colorManagementPrefs(edit=True, cmEnabled=True) cmds.colorManagementPrefs(edit=True, ocioRulesEnabled=True) - log.info("Using Maya OCIO v2") + is_ocio_set = bool(os.environ.get("OCIO")) if not is_ocio_set: # Set the Maya 2022+ default OCIO v2 config file path log.info("Setting default Maya OCIO v2 config") From 2575f8cf1df1ab10bab071a5973a28b02ddc9255 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Mon, 16 Sep 2024 22:46:25 +0200 Subject: [PATCH 5/6] Update client/ayon_maya/api/lib.py --- client/ayon_maya/api/lib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_maya/api/lib.py b/client/ayon_maya/api/lib.py index d4e08b67..5f97ec9b 100644 --- a/client/ayon_maya/api/lib.py +++ b/client/ayon_maya/api/lib.py @@ -3379,7 +3379,7 @@ def _colormanage(**kwargs): except RuntimeError as exc: log.error(exc) - log.info(f"Setting Maya colorspace..") + log.info("Setting Maya colorspace..") # enable color management cmds.colorManagementPrefs(edit=True, cmEnabled=True) From 7cd148df7f74c6e2588e5eb9361abdc28766d440 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Mon, 16 Sep 2024 22:54:59 +0200 Subject: [PATCH 6/6] Remove unused import --- client/ayon_maya/api/lib.py | 1 - 1 file changed, 1 deletion(-) diff --git a/client/ayon_maya/api/lib.py b/client/ayon_maya/api/lib.py index 5f97ec9b..37641f8b 100644 --- a/client/ayon_maya/api/lib.py +++ b/client/ayon_maya/api/lib.py @@ -2,7 +2,6 @@ import os import copy -from pprint import pformat import sys import uuid import re