Merge branch 'develop' into bugfix/maya-vrscene-loader-fixes

This commit is contained in:
Ondrej Samohel 2022-02-18 12:38:45 +01:00
commit 4a0597bdb2
No known key found for this signature in database
GPG key ID: 02376E18990A97C6
525 changed files with 27053 additions and 389709 deletions

View file

@ -5,6 +5,8 @@ from .constants import (
PROJECT_ANATOMY_KEY,
LOCAL_SETTING_KEY,
LEGACY_SETTINGS_VERSION,
SCHEMA_KEY_SYSTEM_SETTINGS,
SCHEMA_KEY_PROJECT_SETTINGS,
@ -37,6 +39,8 @@ __all__ = (
"PROJECT_ANATOMY_KEY",
"LOCAL_SETTING_KEY",
"LEGACY_SETTINGS_VERSION",
"SCHEMA_KEY_SYSTEM_SETTINGS",
"SCHEMA_KEY_PROJECT_SETTINGS",

View file

@ -21,6 +21,8 @@ PROJECT_SETTINGS_KEY = "project_settings"
PROJECT_ANATOMY_KEY = "project_anatomy"
LOCAL_SETTING_KEY = "local_settings"
LEGACY_SETTINGS_VERSION = "legacy"
# Schema hub names
SCHEMA_KEY_SYSTEM_SETTINGS = "system_schema"
SCHEMA_KEY_PROJECT_SETTINGS = "projects_schema"

View file

@ -186,5 +186,24 @@
"renderSpace": "scene-linear Rec 709/sRGB",
"viewTransform": "sRGB gamma"
}
},
"flame": {
"project": {
"colourPolicy": "ACES 1.1",
"frameDepth": "16-bit fp",
"fieldDominance": "PROGRESSIVE"
},
"profilesMapping": {
"inputs": [
{
"flameName": "ACEScg",
"ocioName": "ACES - ACEScg"
},
{
"flameName": "Rec.709 video",
"ocioName": "Output - Rec.709"
}
]
}
}
}

View file

@ -1,6 +1,9 @@
{
"deadline_servers": [],
"publish": {
"CollectDefaultDeadlineServer": {
"pass_mongo_url": false
},
"ValidateExpectedFiles": {
"enabled": true,
"active": true,
@ -33,6 +36,9 @@
],
"celaction": [
".*"
],
"harmony": [
".*"
]
}
},

View file

@ -24,12 +24,38 @@
"export_presets_mapping": {
"exr16fpdwaa": {
"ext": "exr",
"xml_preset_dir": "",
"xml_preset_file": "OpenEXR (16-bit fp DWAA).xml",
"xml_preset_dir": "",
"colorspace_out": "ACES - ACEScg",
"representation_add_range": true,
"representation_tags": []
}
}
}
},
"load": {
"LoadClip": {
"enabled": true,
"families": [
"render2d",
"source",
"plate",
"render",
"review"
],
"representations": [
"exr",
"dpx",
"jpg",
"jpeg",
"png",
"h264",
"mov",
"mp4"
],
"reel_group_name": "OpenPype_Reels",
"reel_name": "Loaded",
"clip_name_template": "{asset}_{subset}_{representation}"
}
}
}

View file

@ -292,7 +292,8 @@
],
"families": [
"write",
"render"
"render",
"prerender"
],
"task_types": [],
"tasks": [],
@ -353,6 +354,7 @@
"setdress": "setdress",
"pointcache": "cache",
"render": "render",
"prerender": "render",
"render2d": "render",
"nukescript": "comp",
"write": "render",

View file

@ -18,8 +18,7 @@
"resolve",
"tvpaint"
],
"skip_hosts_headless_publish": [
]
"skip_hosts_headless_publish": []
},
"ValidateEditorialAssetName": {
"enabled": true,
@ -208,6 +207,9 @@
"CleanUp": {
"paterns": [],
"remove_temp_renders": false
},
"CleanUpFarm": {
"enabled": false
}
},
"tools": {
@ -326,8 +328,8 @@
"family_filter_profiles": [
{
"hosts": [],
"is_include": true,
"task_types": [],
"is_include": true,
"filter_families": []
}
]

View file

@ -5,6 +5,11 @@
".*"
]
},
"ValidateAudio": {
"enabled": true,
"optional": true,
"active": true
},
"ValidateContainers": {
"enabled": true,
"optional": true,
@ -17,13 +22,6 @@
"frame_check_filter": [],
"skip_resolution_check": [],
"skip_timelines_check": []
},
"HarmonySubmitDeadline": {
"use_published": false,
"priority": 50,
"primary_pool": "",
"secondary_pool": "",
"chunk_size": 1000000
}
}
}

View file

@ -1,5 +1,10 @@
{
"create": {
"CreateArnoldAss": {
"enabled": true,
"defaults": [],
"ext": ".ass"
},
"CreateAlembicCamera": {
"enabled": true,
"defaults": []

View file

@ -170,6 +170,11 @@
"optional": true,
"active": true
},
"ValidateFrameRange": {
"enabled": true,
"optional": true,
"active": true
},
"ValidateShaderName": {
"enabled": false,
"regex": "(?P<asset>.*)_(.*)_SHD"
@ -188,6 +193,20 @@
"whitelist_native_plugins": false,
"authorized_plugins": []
},
"ValidateMayaUnits": {
"enabled": true,
"optional": false,
"validate_linear_units": true,
"linear_units": "cm",
"validate_angular_units": true,
"angular_units": "deg",
"validate_fps": true
},
"ValidateUnrealStaticMeshName": {
"enabled": true,
"validate_mesh": false,
"validate_collision": true
},
"ValidateCycleError": {
"enabled": true,
"optional": false,
@ -195,11 +214,6 @@
"rig"
]
},
"ValidateUnrealStaticMeshName": {
"enabled": true,
"validate_mesh": false,
"validate_collision": true
},
"ValidateRenderSettings": {
"arnold_render_attributes": [],
"vray_render_attributes": [],

View file

@ -32,7 +32,8 @@
"Fg01",
"Branch01",
"Part01"
]
],
"reviewable": false
}
},
"publish": {

View file

@ -7,15 +7,10 @@
}
},
"publish": {
"CollectRemoteInstances": {
"color_code_mapping": [
{
"color_code": [],
"layer_name_regex": [],
"family": "image",
"subset_template_name": ""
}
]
"CollectColorCodedInstances": {
"create_flatten_image": false,
"flatten_subset_template": "",
"color_code_mapping": []
},
"ValidateContainers": {
"enabled": true,

View file

@ -2,17 +2,17 @@
"publish": {
"CollectPublishedFiles": {
"task_type_to_family": {
"Animation": {
"workfile": {
"Animation": [
{
"is_sequence": false,
"extensions": [
"tvp"
],
"families": [],
"tags": [],
"subset_template_name": ""
"result_family": "workfile"
},
"render": {
{
"is_sequence": true,
"extensions": [
"png",
@ -26,20 +26,20 @@
"tags": [
"review"
],
"subset_template_name": ""
"result_family": "render"
}
},
"Compositing": {
"workfile": {
],
"Compositing": [
{
"is_sequence": false,
"extensions": [
"aep"
],
"families": [],
"tags": [],
"subset_template_name": ""
"result_family": "workfile"
},
"render": {
{
"is_sequence": true,
"extensions": [
"png",
@ -53,20 +53,20 @@
"tags": [
"review"
],
"subset_template_name": ""
"result_family": "render"
}
},
"Layout": {
"workfile": {
],
"Layout": [
{
"is_sequence": false,
"extensions": [
"psd"
],
"families": [],
"tags": [],
"subset_template_name": ""
"result_family": "workfile"
},
"image": {
{
"is_sequence": false,
"extensions": [
"png",
@ -81,20 +81,21 @@
"tags": [
"review"
],
"subset_template_name": ""
"result_family": "image"
}
},
"default_task_type": {
"workfile": {
],
"default_task_type": [
{
"is_sequence": false,
"extensions": [
"tvp"
"tvp",
"psd"
],
"families": [],
"tags": [],
"subset_template_name": "{family}{Variant}"
"result_family": "workfile"
},
"render": {
{
"is_sequence": true,
"extensions": [
"png",
@ -108,9 +109,9 @@
"tags": [
"review"
],
"subset_template_name": "{family}{Variant}"
"result_family": "render"
}
},
],
"__dynamic_keys_labels__": {
"default_task_type": "Default task type"
}

View file

@ -121,7 +121,7 @@
"/opt/Autodesk/flame_2021/bin/flame.app/Contents/MacOS/startApp"
],
"linux": [
"/opt/Autodesk/flame_2021/bin/flame"
"/opt/Autodesk/flame_2021/bin/startApplication"
]
},
"arguments": {
@ -135,8 +135,31 @@
"OPENPYPE_WIRETAP_TOOLS": "/opt/Autodesk/wiretap/tools/2021"
}
},
"2021.1": {
"use_python_2": true,
"executables": {
"windows": [],
"darwin": [
"/opt/Autodesk/flame_2021.1/bin/flame.app/Contents/MacOS/startApp"
],
"linux": [
"/opt/Autodesk/flame_2021.1/bin/startApplication"
]
},
"arguments": {
"windows": [],
"darwin": [],
"linux": []
},
"environment": {
"OPENPYPE_FLAME_PYTHON_EXEC": "/opt/Autodesk/python/2021.1/bin/python2.7",
"OPENPYPE_FLAME_PYTHONPATH": "/opt/Autodesk/flame_2021.1/python",
"OPENPYPE_WIRETAP_TOOLS": "/opt/Autodesk/wiretap/tools/2021.1"
}
},
"__dynamic_keys_labels__": {
"2021": "2021 (Testing Only)"
"2021": "2021",
"2021.1": "2021.1"
}
}
},
@ -690,15 +713,29 @@
"OPENPYPE_LOG_NO_COLORS": "Yes"
},
"variants": {
"16": {
"enabled": true,
"variant_label": "16",
"use_python_2": false,
"17": {
"executables": {
"windows": [
"C:\\Program Files\\Blackmagic Design\\Fusion 17\\Fusion.exe"
],
"darwin": [],
"linux": []
},
"arguments": {
"windows": [],
"darwin": [],
"linux": []
},
"environment": {}
},
"16": {
"executables": {
"windows": [
"C:\\Program Files\\Blackmagic Design\\Fusion 16\\Fusion.exe"
],
"darwin": [],
"linux": []
},
"arguments": {
"windows": [],
"darwin": [],
@ -707,9 +744,6 @@
"environment": {}
},
"9": {
"enabled": true,
"variant_label": "9",
"use_python_2": false,
"executables": {
"windows": [
"C:\\Program Files\\Blackmagic Design\\Fusion 9\\Fusion.exe"
@ -934,12 +968,35 @@
"AVALON_HARMONY_WORKFILES_ON_LAUNCH": "1"
},
"variants": {
"21": {
"enabled": true,
"variant_label": "21",
"executables": {
"windows": [
"c:\\Program Files (x86)\\Toon Boom Animation\\Toon Boom Harmony 21 Premium\\win64\\bin\\HarmonyPremium.exe"
],
"darwin": [
"/Applications/Toon Boom Harmony 21 Premium/Harmony Premium.app/Contents/MacOS/Harmony Premium"
],
"linux": []
},
"arguments": {
"windows": [],
"darwin": [],
"linux": []
},
"environment": {}
},
"20": {
"enabled": true,
"variant_label": "20",
"executables": {
"windows": [],
"darwin": [],
"windows": [
"c:\\Program Files (x86)\\Toon Boom Animation\\Toon Boom Harmony 20 Premium\\win64\\bin\\HarmonyPremium.exe"
],
"darwin": [
"/Applications/Toon Boom Harmony 20 Premium/Harmony Premium.app/Contents/MacOS/Harmony Premium"
],
"linux": []
},
"arguments": {
@ -953,7 +1010,9 @@
"enabled": true,
"variant_label": "17",
"executables": {
"windows": [],
"windows": [
"c:\\Program Files (x86)\\Toon Boom Animation\\Toon Boom Harmony 17 Premium\\win64\\bin\\HarmonyPremium.exe"
],
"darwin": [
"/Applications/Toon Boom Harmony 17 Premium/Harmony Premium.app/Contents/MacOS/Harmony Premium"
],
@ -1171,58 +1230,6 @@
}
}
},
"shell": {
"enabled": true,
"environment": {},
"variants": {
"python_3-7": {
"use_python_2": true,
"executables": {
"windows": [],
"darwin": [],
"linux": []
},
"arguments": {
"windows": [],
"darwin": [],
"linux": []
},
"environment": {}
},
"python_2-7": {
"use_python_2": true,
"executables": {
"windows": [],
"darwin": [],
"linux": []
},
"arguments": {
"windows": [],
"darwin": [],
"linux": []
},
"environment": {}
},
"terminal": {
"use_python_2": true,
"executables": {
"windows": [],
"darwin": [],
"linux": []
},
"arguments": {
"windows": [],
"darwin": [],
"linux": []
},
"environment": {}
},
"__dynamic_keys_labels__": {
"python_3-7": "Python 3.7",
"python_2-7": "Python 2.7"
}
}
},
"djvview": {
"enabled": true,
"label": "DJV View",
@ -1248,5 +1255,6 @@
"1-1": "1.1"
}
}
}
},
"additional_apps": {}
}

View file

@ -13,7 +13,7 @@
}
},
"ftrack": {
"enabled": true,
"enabled": false,
"ftrack_server": "",
"ftrack_actions_path": {
"windows": [],

View file

@ -263,6 +263,7 @@ class HostsEnumEntity(BaseEnumEntity):
class AppsEnumEntity(BaseEnumEntity):
"""Enum of applications for project anatomy attributes."""
schema_types = ["apps-enum"]
def _item_initialization(self):
@ -279,16 +280,30 @@ class AppsEnumEntity(BaseEnumEntity):
valid_keys = set()
enum_items_list = []
applications_entity = system_settings_entity["applications"]
app_entities = {}
additional_app_names = set()
additional_apps_entity = None
for group_name, app_group in applications_entity.items():
if group_name != "additional_apps":
app_entities[group_name] = app_group
continue
additional_apps_entity = app_group
for _group_name, _group in app_group.items():
additional_app_names.add(_group_name)
app_entities[_group_name] = _group
for group_name, app_group in app_entities.items():
enabled_entity = app_group.get("enabled")
if enabled_entity and not enabled_entity.value:
continue
host_name_entity = app_group.get("host_name")
if not host_name_entity or not host_name_entity.value:
continue
group_label = app_group["label"].value
if group_name in additional_app_names:
group_label = additional_apps_entity.get_key_label(group_name)
if not group_label:
group_label = group_name
else:
group_label = app_group["label"].value
variants_entity = app_group["variants"]
for variant_name, variant_entity in variants_entity.items():
enabled_entity = variant_entity.get("enabled")

View file

@ -34,15 +34,24 @@ from openpype.settings.lib import (
reset_default_settings,
get_studio_system_settings_overrides,
get_studio_system_settings_overrides_for_version,
save_studio_settings,
get_available_studio_system_settings_overrides_versions,
get_studio_project_settings_overrides,
get_studio_project_settings_overrides_for_version,
get_studio_project_anatomy_overrides,
get_studio_project_anatomy_overrides_for_version,
get_project_settings_overrides,
get_project_settings_overrides_for_version,
get_project_anatomy_overrides,
save_project_settings,
save_project_anatomy,
get_available_project_settings_overrides_versions,
get_available_studio_project_settings_overrides_versions,
get_available_studio_project_anatomy_overrides_versions,
find_environments,
apply_overrides
)
@ -495,17 +504,27 @@ class SystemSettings(RootEntity):
root_key = SYSTEM_SETTINGS_KEY
def __init__(
self, set_studio_state=True, reset=True, schema_hub=None
self,
set_studio_state=True,
reset=True,
schema_hub=None,
source_version=None
):
if schema_hub is None:
# Load system schemas
schema_hub = SchemasHub(SCHEMA_KEY_SYSTEM_SETTINGS)
self._source_version = source_version
super(SystemSettings, self).__init__(schema_hub, reset)
if set_studio_state:
self.set_studio_state()
@property
def source_version(self):
return self._source_version
def get_entity_from_path(self, path):
"""Return system settings entity."""
path_parts = path.split("/")
@ -524,12 +543,24 @@ class SystemSettings(RootEntity):
value = default_value.get(key, NOT_SET)
child_obj.update_default_value(value)
studio_overrides = get_studio_system_settings_overrides()
if self._source_version is None:
studio_overrides, version = get_studio_system_settings_overrides(
return_version=True
)
self._source_version = version
else:
studio_overrides = (
get_studio_system_settings_overrides_for_version(
self._source_version
)
)
for key, child_obj in self.non_gui_children.items():
value = studio_overrides.get(key, NOT_SET)
child_obj.update_studio_value(value)
def reset(self, new_state=None):
def reset(self, new_state=None, source_version=None):
"""Discard changes and reset entit's values.
Reload default values and studio override values and update entities.
@ -547,9 +578,22 @@ class SystemSettings(RootEntity):
if new_state is OverrideState.PROJECT:
raise ValueError("System settings can't store poject overrides.")
if source_version is not None:
self._source_version = source_version
self._reset_values()
self.set_override_state(new_state)
def get_available_source_versions(self, sorted=None):
if self.is_in_studio_state():
return self.get_available_studio_versions(sorted=sorted)
return []
def get_available_studio_versions(self, sorted=None):
return get_available_studio_system_settings_overrides_versions(
sorted=sorted
)
def defaults_dir(self):
"""Path to defaults directory.
@ -566,6 +610,8 @@ class SystemSettings(RootEntity):
json.dumps(settings_value, indent=4)
))
save_studio_settings(settings_value)
# Reset source version after restart
self._source_version = None
def _validate_defaults_to_save(self, value):
"""Valiations of default values before save."""
@ -622,11 +668,15 @@ class ProjectSettings(RootEntity):
project_name=None,
change_state=True,
reset=True,
schema_hub=None
schema_hub=None,
source_version=None,
anatomy_source_version=None
):
self._project_name = project_name
self._system_settings_entity = None
self._source_version = source_version
self._anatomy_source_version = anatomy_source_version
if schema_hub is None:
# Load system schemas
@ -640,6 +690,14 @@ class ProjectSettings(RootEntity):
else:
self.set_project_state()
@property
def source_version(self):
return self._source_version
@property
def anatomy_source_version(self):
return self._anatomy_source_version
@property
def project_name(self):
return self._project_name
@ -682,23 +740,20 @@ class ProjectSettings(RootEntity):
output = output[path_part]
return output
def change_project(self, project_name):
def change_project(self, project_name, source_version=None):
if project_name == self._project_name:
return
if (
source_version is None
or source_version == self._source_version
):
if not self.is_in_project_state():
self.set_project_state()
return
self._project_name = project_name
if project_name is None:
self.set_studio_state()
return
project_override_value = {
PROJECT_SETTINGS_KEY: get_project_settings_overrides(project_name),
PROJECT_ANATOMY_KEY: get_project_anatomy_overrides(project_name)
}
for key, child_obj in self.non_gui_children.items():
value = project_override_value.get(key, NOT_SET)
child_obj.update_project_value(value)
self._source_version = source_version
self._anatomy_source_version = None
self._set_values_for_project(project_name)
self.set_project_state()
def _reset_values(self):
@ -710,27 +765,97 @@ class ProjectSettings(RootEntity):
value = default_values.get(key, NOT_SET)
child_obj.update_default_value(value)
self._set_values_for_project(self.project_name)
def _set_values_for_project(self, project_name):
self._project_name = project_name
if project_name:
project_settings_overrides = (
get_studio_project_settings_overrides()
)
project_anatomy_overrides = (
get_studio_project_anatomy_overrides()
)
else:
if self._source_version is None:
project_settings_overrides, version = (
get_studio_project_settings_overrides(return_version=True)
)
self._source_version = version
else:
project_settings_overrides = (
get_studio_project_settings_overrides_for_version(
self._source_version
)
)
if self._anatomy_source_version is None:
project_anatomy_overrides, anatomy_version = (
get_studio_project_anatomy_overrides(return_version=True)
)
self._anatomy_source_version = anatomy_version
else:
project_anatomy_overrides = (
get_studio_project_anatomy_overrides_for_version(
self._anatomy_source_version
)
)
studio_overrides = {
PROJECT_SETTINGS_KEY: get_studio_project_settings_overrides(),
PROJECT_ANATOMY_KEY: get_studio_project_anatomy_overrides()
PROJECT_SETTINGS_KEY: project_settings_overrides,
PROJECT_ANATOMY_KEY: project_anatomy_overrides
}
for key, child_obj in self.non_gui_children.items():
value = studio_overrides.get(key, NOT_SET)
child_obj.update_studio_value(value)
if not self.project_name:
if not project_name:
return
project_name = self.project_name
if self._source_version is None:
project_settings_overrides, version = (
get_project_settings_overrides(
project_name, return_version=True
)
)
self._source_version = version
else:
project_settings_overrides = (
get_project_settings_overrides_for_version(
project_name, self._source_version
)
)
project_override_value = {
PROJECT_SETTINGS_KEY: get_project_settings_overrides(project_name),
PROJECT_SETTINGS_KEY: project_settings_overrides,
PROJECT_ANATOMY_KEY: get_project_anatomy_overrides(project_name)
}
for key, child_obj in self.non_gui_children.items():
value = project_override_value.get(key, NOT_SET)
child_obj.update_project_value(value)
def get_available_source_versions(self, sorted=None):
if self.is_in_studio_state():
return self.get_available_studio_versions(sorted=sorted)
elif self.is_in_project_state():
return get_available_project_settings_overrides_versions(
self.project_name, sorted=sorted
)
return []
def get_available_studio_versions(self, sorted=None):
return get_available_studio_project_settings_overrides_versions(
sorted=sorted
)
def get_available_anatomy_source_versions(self, sorted=None):
if self.is_in_studio_state():
return get_available_studio_project_anatomy_overrides_versions(
sorted=sorted
)
return []
def reset(self, new_state=None):
"""Discard changes and reset entit's values.
@ -763,6 +888,9 @@ class ProjectSettings(RootEntity):
self._validate_values_to_save(settings_value)
self._source_version = None
self._anatomy_source_version = None
self.log.debug("Saving project settings: {}".format(
json.dumps(settings_value, indent=4)
))

View file

@ -17,6 +17,19 @@
"key": "publish",
"label": "Publish plugins",
"children": [
{
"type": "dict",
"collapsible": true,
"key": "CollectDefaultDeadlineServer",
"label": "Default Deadline Webservice",
"children": [
{
"type": "boolean",
"key": "pass_mongo_url",
"label": "Pass Mongo url to job"
}
]
},
{
"type": "dict",
"collapsible": true,
@ -58,106 +71,11 @@
}
]
},
{
"type": "dict",
"collapsible": true,
"key": "ProcessSubmittedJobOnFarm",
"label": "ProcessSubmittedJobOnFarm",
"checkbox_key": "enabled",
"is_group": true,
"children": [
{
"type": "boolean",
"key": "enabled",
"label": "Enabled"
},
{
"type": "text",
"key": "deadline_department",
"label": "Deadline department"
},
{
"type": "text",
"key": "deadline_pool",
"label": "Deadline Pool"
},
{
"type": "text",
"key": "deadline_group",
"label": "Deadline Group"
},
{
"type": "number",
"key": "deadline_chunk_size",
"label": "Deadline Chunk Size"
},
{
"type": "number",
"key": "deadline_priority",
"label": "Deadline Priotity"
},
{
"type": "splitter"
},
{
"type": "text",
"key": "publishing_script",
"label": "Publishing script path"
},
{
"type": "list",
"key": "skip_integration_repre_list",
"label": "Skip integration of representation with ext",
"object_type": {
"type": "text"
}
},
{
"type": "dict",
"key": "aov_filter",
"label": "Reviewable subsets filter",
"children": [
{
"type": "list",
"key": "maya",
"label": "Maya",
"object_type": {
"type": "text"
}
},
{
"type": "list",
"key": "nuke",
"label": "Nuke",
"object_type": {
"type": "text"
}
},
{
"type": "list",
"key": "aftereffects",
"label": "After Effects",
"object_type": {
"type": "text"
}
},
{
"type": "list",
"key": "celaction",
"label": "Celaction",
"object_type": {
"type": "text"
}
}
]
}
]
},
{
"type": "dict",
"collapsible": true,
"key": "MayaSubmitDeadline",
"label": "Submit Maya job to Deadline",
"label": "Maya Submit to Deadline",
"checkbox_key": "enabled",
"children": [
{
@ -451,6 +369,72 @@
"label": "Department"
}
]
},
{
"type": "dict",
"collapsible": true,
"key": "ProcessSubmittedJobOnFarm",
"label": "ProcessSubmittedJobOnFarm",
"checkbox_key": "enabled",
"is_group": true,
"children": [
{
"type": "boolean",
"key": "enabled",
"label": "Enabled"
},
{
"type": "text",
"key": "deadline_department",
"label": "Deadline department"
},
{
"type": "text",
"key": "deadline_pool",
"label": "Deadline Pool"
},
{
"type": "text",
"key": "deadline_group",
"label": "Deadline Group"
},
{
"type": "number",
"key": "deadline_chunk_size",
"label": "Deadline Chunk Size"
},
{
"type": "number",
"key": "deadline_priority",
"label": "Deadline Priotity"
},
{
"type": "splitter"
},
{
"type": "text",
"key": "publishing_script",
"label": "Publishing script path"
},
{
"type": "list",
"key": "skip_integration_repre_list",
"label": "Skip integration of representation with ext",
"object_type": {
"type": "text"
}
},
{
"type": "dict-modifiable",
"docstring": "Regular expression to filter for which subset review should be created in publish job.",
"key": "aov_filter",
"label": "Reviewable subsets filter",
"object_type": {
"type": "list",
"object_type": "text"
}
}
]
}
]
}

View file

@ -166,6 +166,11 @@
"label": "XML preset folder (optional)",
"type": "text"
},
{
"key": "colorspace_out",
"label": "Output color (imageio)",
"type": "text"
},
{
"type": "separator"
},
@ -189,6 +194,61 @@
]
}
]
},
{
"type": "dict",
"collapsible": true,
"key": "load",
"label": "Loader plugins",
"children": [
{
"type": "dict",
"collapsible": true,
"key": "LoadClip",
"label": "Load Clip",
"checkbox_key": "enabled",
"children": [
{
"type": "boolean",
"key": "enabled",
"label": "Enabled"
},
{
"type": "list",
"key": "families",
"label": "Families",
"object_type": "text"
},
{
"type": "list",
"key": "representations",
"label": "Representations",
"object_type": "text"
},
{
"type": "separator"
},
{
"type": "text",
"key": "reel_group_name",
"label": "Reel group name"
},
{
"type": "text",
"key": "reel_name",
"label": "Reel name"
},
{
"type": "separator"
},
{
"type": "text",
"key": "clip_name_template",
"label": "Clip name template"
}
]
}
]
}
]
}

View file

@ -17,6 +17,10 @@
"key": "CollectPalettes",
"label": "Collect Palettes",
"children": [
{
"type": "label",
"label": "Set regular expressions to filter triggering on specific task names. '.*' means on all."
},
{
"type": "list",
"key": "allowed_tasks",
@ -30,6 +34,18 @@
"name": "template_publish_plugin",
"template_data": [
{
"docstring": "Check if scene contains audio track.",
"key": "ValidateAudio",
"label": "ValidateAudio"
}
]
},
{
"type": "schema_template",
"name": "template_publish_plugin",
"template_data": [
{
"docstring": "Check if loaded container is scene are latest versions.",
"key": "ValidateContainers",
"label": "ValidateContainers"
}
@ -59,7 +75,7 @@
},
{
"type": "label",
"label": "Validate if FrameStart, FrameEnd and Resolution match shot data"
"label": "Validate if FrameStart, FrameEnd and Resolution match shot data in DB.\n Use regular expressions to limit validations only on particular asset or task names."
},
{
"type": "list",
@ -77,40 +93,7 @@
"type": "list",
"key": "skip_timelines_check",
"object_type": "text",
"label": "Skip Timeline Check for Tasks"
}
]
},
{
"type": "dict",
"collapsible": true,
"key": "HarmonySubmitDeadline",
"label": "Harmony Submit to Deadline",
"children": [
{
"type": "boolean",
"key": "use_published",
"label": "Use Published scene"
},
{
"type": "number",
"key": "priority",
"label": "Priority"
},
{
"type": "text",
"key": "primary_pool",
"label": "Primary Pool"
},
{
"type": "text",
"key": "secondary_pool",
"label": "Secondary Pool"
},
{
"type": "number",
"key": "chunk_size",
"label": "Frames Per Task"
"label": "Skip Timeline Check for Tasks"
}
]
}

View file

@ -131,6 +131,11 @@
"object_type": {
"type": "text"
}
},
{
"type": "boolean",
"key": "reviewable",
"label": "Add reviewable toggle"
}
]
}

View file

@ -37,12 +37,22 @@
"type": "dict",
"collapsible": true,
"is_group": true,
"key": "CollectRemoteInstances",
"label": "Collect Instances for Webpublish",
"key": "CollectColorCodedInstances",
"label": "Collect Color Coded Instances",
"children": [
{
"type": "label",
"label": "Set color for publishable layers, set publishable families."
"label": "Set color for publishable layers, set its resulting family and template for subset name. Can create flatten image from published instances"
},
{
"type": "boolean",
"key": "create_flatten_image",
"label": "Create flatten image"
},
{
"type": "text",
"key": "flatten_subset_template",
"label": "Subset template for flatten image"
},
{
"type": "list",

View file

@ -24,10 +24,10 @@
"label": "Task type to family mapping",
"collapsible_key": true,
"object_type": {
"type": "dict-modifiable",
"collapsible": false,
"type": "list",
"collapsible": true,
"key": "task_type",
"collapsible_key": false,
"collapsible_key": true,
"object_type": {
"type": "dict",
"children": [
@ -52,10 +52,13 @@
"type": "schema",
"name": "schema_representation_tags"
},
{
"type": "separator"
},
{
"type": "text",
"key": "subset_template_name",
"label": "Subset template name"
"key": "result_family",
"label": "Resulting family"
}
]
}

View file

@ -403,6 +403,68 @@
]
}
]
},
{
"key": "flame",
"type": "dict",
"label": "Flame/Flair",
"children": [
{
"key": "project",
"type": "dict",
"label": "Project",
"collapsible": false,
"children": [
{
"type": "form",
"children": [
{
"type": "text",
"key": "colourPolicy",
"label": "Colour Policy"
},
{
"type": "text",
"key": "frameDepth",
"label": "Image Depth"
},
{
"type": "text",
"key": "fieldDominance",
"label": "Field Dominance"
}
]
}
]
},
{
"key": "profilesMapping",
"type": "dict",
"label": "Profile names mapping",
"collapsible": true,
"children": [
{
"type": "list",
"key": "inputs",
"object_type": {
"type": "dict",
"children": [
{
"type": "text",
"key": "flameName",
"label": "Flame name"
},
{
"type": "text",
"key": "ocioName",
"label": "OCIO name"
}
]
}
}
]
}
]
}
]
}

View file

@ -677,8 +677,22 @@
"label": "Remove Temp renders",
"default": false
}
]
},
{
"type": "dict",
"collapsible": false,
"key": "CleanUpFarm",
"label": "Clean Up Farm",
"is_group": true,
"checkbox_key": "enabled",
"children": [
{
"type": "boolean",
"key": "enabled",
"label": "Enabled"
}
]
}
]
}

View file

@ -4,6 +4,41 @@
"key": "create",
"label": "Creator plugins",
"children": [
{
"type": "dict",
"collapsible": true,
"key": "CreateArnoldAss",
"label": "Create Arnold Ass",
"checkbox_key": "enabled",
"children": [
{
"type": "boolean",
"key": "enabled",
"label": "Enabled"
},
{
"type": "list",
"key": "defaults",
"label": "Default Subsets",
"object_type": "text"
},
{
"type": "enum",
"key": "ext",
"label": "Default Output Format (extension)",
"multiselection": false,
"enum_items": [
{
".ass": ".ass"
},
{
".ass.gz": ".ass.gz (gzipped)"
}
]
}
]
},
{
"type": "schema_template",
"name": "template_create_plugin",

View file

@ -48,6 +48,16 @@
}
]
},
{
"type": "schema_template",
"name": "template_publish_plugin",
"template_data": [
{
"key": "ValidateFrameRange",
"label": "Validate Frame Range"
}
]
},
{
"type": "dict",
"collapsible": true,
@ -71,7 +81,6 @@
}
]
},
{
"type": "schema_template",
"name": "template_publish_plugin",
@ -82,7 +91,6 @@
}
]
},
{
"type": "dict",
"collapsible": true,
@ -102,7 +110,6 @@
}
]
},
{
"type": "dict",
"collapsible": true,
@ -128,7 +135,68 @@
}
]
},
{
"type": "dict",
"collapsible": true,
"key": "ValidateMayaUnits",
"label": "Validate Maya Units",
"checkbox_key": "enabled",
"children": [
{
"type": "boolean",
"key": "enabled",
"label": "Enabled"
},
{
"type": "boolean",
"key": "optional",
"label": "Optional"
},
{
"type": "boolean",
"key": "validate_linear_units",
"label": "Validate linear units"
},
{
"key": "linear_units",
"label": "Linear units",
"type": "enum",
"multiselection": false,
"defaults": "cm",
"enum_items": [
{"mm": "millimeter"},
{"cm": "centimeter"},
{"m": "meter"},
{"km": "kilometer"},
{"in": "inch"},
{"ft": "foot"},
{"yd": "yard"},
{"mi": "mile"}
]
},
{
"type": "boolean",
"key": "validate_angular_units",
"label": "Validate angular units"
},
{
"key": "angular_units",
"label": "Angular units",
"type": "enum",
"multiselection": false,
"defaults": "cm",
"enum_items": [
{"deg": "degree"},
{"rad": "radian"}
]
},
{
"type": "boolean",
"key": "validate_fps",
"label": "Validate fps"
}
]
},
{
"type": "dict",
"collapsible": true,
@ -153,7 +221,6 @@
}
]
},
{
"type": "dict",
"collapsible": true,
@ -180,7 +247,6 @@
}
]
},
{
"type": "dict",
"collapsible": true,
@ -284,7 +350,7 @@
"label": "Validate Model Content",
"checkbox_key": "enabled",
"children": [
{
{
"type": "boolean",
"key": "enabled",
"label": "Enabled"

View file

@ -20,24 +20,21 @@
"type": "raw-json"
},
{
"type": "dict",
"type": "dict-modifiable",
"key": "variants",
"children": [
{
"type": "schema_template",
"name": "template_host_variant",
"template_data": [
{
"app_variant_label": "16",
"app_variant": "16"
},
{
"app_variant_label": "9",
"app_variant": "9"
}
]
}
]
"collapsible_key": true,
"use_label_wrap": false,
"object_type": {
"type": "dict",
"collapsible": true,
"children": [
{
"type": "schema_template",
"name": "template_host_variant_items",
"skip_paths": ["use_python_2"]
}
]
}
}
]
}

View file

@ -27,6 +27,11 @@
"type": "schema_template",
"name": "template_host_variant",
"template_data": [
{
"app_variant_label": "21",
"app_variant": "21",
"variant_skip_paths": ["use_python_2"]
},
{
"app_variant_label": "20",
"app_variant": "20",

View file

@ -1,35 +0,0 @@
{
"type": "dict",
"key": "shell",
"label": "Shell",
"collapsible": true,
"checkbox_key": "enabled",
"children": [
{
"type": "boolean",
"key": "enabled",
"label": "Enabled"
},
{
"key": "environment",
"label": "Environment",
"type": "raw-json"
},
{
"type": "dict-modifiable",
"key": "variants",
"collapsible_key": true,
"use_label_wrap": false,
"object_type": {
"type": "dict",
"collapsible": true,
"children": [
{
"type": "schema_template",
"name": "template_host_variant_items"
}
]
}
}
]
}

View file

@ -87,11 +87,50 @@
},
{
"type": "schema",
"name": "schema_shell"
"name": "schema_djv"
},
{
"type": "schema",
"name": "schema_djv"
"type": "dict-modifiable",
"key": "additional_apps",
"label": "Additional",
"collapsible": true,
"collapsible_key": true,
"object_type": {
"type": "dict",
"children": [
{
"type": "boolean",
"key": "enabled",
"label": "Enabled"
},
{
"type": "schema_template",
"name": "template_host_unchangables",
"skip_paths": ["host_name", "label"]
},
{
"key": "environment",
"label": "Environment",
"type": "raw-json"
},
{
"type": "dict-modifiable",
"key": "variants",
"collapsible_key": true,
"use_label_wrap": false,
"object_type": {
"type": "dict",
"collapsible": true,
"children": [
{
"type": "schema_template",
"name": "template_host_variant_items"
}
]
}
}
]
}
}
]
}

File diff suppressed because it is too large Load diff

View file

@ -266,23 +266,31 @@ def save_project_anatomy(project_name, anatomy_data):
@require_handler
def get_studio_system_settings_overrides():
return _SETTINGS_HANDLER.get_studio_system_settings_overrides()
def get_studio_system_settings_overrides(return_version=False):
return _SETTINGS_HANDLER.get_studio_system_settings_overrides(
return_version
)
@require_handler
def get_studio_project_settings_overrides():
return _SETTINGS_HANDLER.get_studio_project_settings_overrides()
def get_studio_project_settings_overrides(return_version=False):
return _SETTINGS_HANDLER.get_studio_project_settings_overrides(
return_version
)
@require_handler
def get_studio_project_anatomy_overrides():
return _SETTINGS_HANDLER.get_studio_project_anatomy_overrides()
def get_studio_project_anatomy_overrides(return_version=False):
return _SETTINGS_HANDLER.get_studio_project_anatomy_overrides(
return_version
)
@require_handler
def get_project_settings_overrides(project_name):
return _SETTINGS_HANDLER.get_project_settings_overrides(project_name)
def get_project_settings_overrides(project_name, return_version=False):
return _SETTINGS_HANDLER.get_project_settings_overrides(
project_name, return_version
)
@require_handler
@ -290,6 +298,123 @@ def get_project_anatomy_overrides(project_name):
return _SETTINGS_HANDLER.get_project_anatomy_overrides(project_name)
@require_handler
def get_studio_system_settings_overrides_for_version(version):
return (
_SETTINGS_HANDLER
.get_studio_system_settings_overrides_for_version(version)
)
@require_handler
def get_studio_project_anatomy_overrides_for_version(version):
return (
_SETTINGS_HANDLER
.get_studio_project_anatomy_overrides_for_version(version)
)
@require_handler
def get_studio_project_settings_overrides_for_version(version):
return (
_SETTINGS_HANDLER
.get_studio_project_settings_overrides_for_version(version)
)
@require_handler
def get_project_settings_overrides_for_version(
project_name, version
):
return (
_SETTINGS_HANDLER
.get_project_settings_overrides_for_version(project_name, version)
)
@require_handler
def get_available_studio_system_settings_overrides_versions(sorted=None):
return (
_SETTINGS_HANDLER
.get_available_studio_system_settings_overrides_versions(
sorted=sorted
)
)
@require_handler
def get_available_studio_project_anatomy_overrides_versions(sorted=None):
return (
_SETTINGS_HANDLER
.get_available_studio_project_anatomy_overrides_versions(
sorted=sorted
)
)
@require_handler
def get_available_studio_project_settings_overrides_versions(sorted=None):
return (
_SETTINGS_HANDLER
.get_available_studio_project_settings_overrides_versions(
sorted=sorted
)
)
@require_handler
def get_available_project_settings_overrides_versions(
project_name, sorted=None
):
return (
_SETTINGS_HANDLER
.get_available_project_settings_overrides_versions(
project_name, sorted=sorted
)
)
@require_handler
def find_closest_version_for_projects(project_names):
return (
_SETTINGS_HANDLER
.find_closest_version_for_projects(project_names)
)
@require_handler
def clear_studio_system_settings_overrides_for_version(version):
return (
_SETTINGS_HANDLER
.clear_studio_system_settings_overrides_for_version(version)
)
@require_handler
def clear_studio_project_settings_overrides_for_version(version):
return (
_SETTINGS_HANDLER
.clear_studio_project_settings_overrides_for_version(version)
)
@require_handler
def clear_studio_project_anatomy_overrides_for_version(version):
return (
_SETTINGS_HANDLER
.clear_studio_project_anatomy_overrides_for_version(version)
)
@require_handler
def clear_project_settings_overrides_for_version(
version, project_name
):
return _SETTINGS_HANDLER.clear_project_settings_overrides_for_version(
version, project_name
)
@require_local_handler
def save_local_settings(data):
return _LOCAL_SETTINGS_HANDLER.save_local_settings(data)
@ -580,11 +705,26 @@ def apply_local_settings_on_system_settings(system_settings, local_settings):
return
current_platform = platform.system().lower()
apps_settings = system_settings["applications"]
additional_apps = apps_settings["additional_apps"]
for app_group_name, value in local_settings["applications"].items():
if not value or app_group_name not in system_settings["applications"]:
if not value:
continue
variants = system_settings["applications"][app_group_name]["variants"]
if (
app_group_name not in apps_settings
and app_group_name not in additional_apps
):
continue
if app_group_name in apps_settings:
variants = apps_settings[app_group_name]["variants"]
else:
variants = (
apps_settings["additional_apps"][app_group_name]["variants"]
)
for app_name, app_value in value.items():
if (
not app_value