Merge pull request #1506 from pypeclub/feature/harmony_setting_cleanup_documentation

This commit is contained in:
Milan Kolar 2021-05-17 12:26:41 +02:00 committed by GitHub
commit 75841e4389
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 141 additions and 60 deletions

View file

@ -3,6 +3,7 @@
import os
from pathlib import Path
import logging
import re
from openpype import lib
from openpype.api import (get_current_project_settings)
@ -63,26 +64,9 @@ def get_asset_settings():
"handleStart": handle_start,
"handleEnd": handle_end,
"resolutionWidth": resolution_width,
"resolutionHeight": resolution_height
"resolutionHeight": resolution_height,
"entityType": entity_type
}
settings = get_current_project_settings()
try:
skip_resolution_check = \
settings["harmony"]["general"]["skip_resolution_check"]
skip_timelines_check = \
settings["harmony"]["general"]["skip_timelines_check"]
except KeyError:
skip_resolution_check = []
skip_timelines_check = []
if os.getenv('AVALON_TASK') in skip_resolution_check:
scene_data.pop("resolutionWidth")
scene_data.pop("resolutionHeight")
if entity_type in skip_timelines_check:
scene_data.pop('frameStart', None)
scene_data.pop('frameEnd', None)
return scene_data

View file

@ -2,6 +2,7 @@
"""Validate scene settings."""
import os
import json
import re
import pyblish.api
@ -41,22 +42,42 @@ class ValidateSceneSettings(pyblish.api.InstancePlugin):
families = ["workfile"]
hosts = ["harmony"]
actions = [ValidateSceneSettingsRepair]
optional = True
frame_check_filter = ["_ch_", "_pr_", "_intd_", "_extd_"]
# used for skipping resolution validation for render tasks
render_check_filter = ["render", "Render"]
# skip frameEnd check if asset contains any of:
frame_check_filter = ["_ch_", "_pr_", "_intd_", "_extd_"] # regex
# skip resolution check if Task name matches any of regex patterns
skip_resolution_check = ["render", "Render"] # regex
# skip frameStart, frameEnd check if Task name matches any of regex patt.
skip_timelines_check = [] # regex
def process(self, instance):
"""Plugin entry point."""
expected_settings = openpype.hosts.harmony.api.get_asset_settings()
self.log.info(expected_settings)
self.log.info("scene settings from DB:".format(expected_settings))
expected_settings = _update_frames(dict.copy(expected_settings))
expected_settings["frameEndHandle"] = expected_settings["frameEnd"] +\
expected_settings["handleEnd"]
if any(string in instance.context.data['anatomyData']['asset']
for string in self.frame_check_filter):
if (any(re.search(pattern, os.getenv('AVALON_TASK'))
for pattern in self.skip_resolution_check)):
expected_settings.pop("resolutionWidth")
expected_settings.pop("resolutionHeight")
entity_type = expected_settings.get("entityType")
if (any(re.search(pattern, entity_type)
for pattern in self.skip_timelines_check)):
expected_settings.pop('frameStart', None)
expected_settings.pop('frameEnd', None)
expected_settings.pop("entityType") # not useful after the check
asset_name = instance.context.data['anatomyData']['asset']
if any(re.search(pattern, asset_name)
for pattern in self.frame_check_filter):
expected_settings.pop("frameEnd")
# handle case where ftrack uses only two decimal places
@ -66,13 +87,7 @@ class ValidateSceneSettings(pyblish.api.InstancePlugin):
fps = float(
"{:.2f}".format(instance.context.data.get("frameRate")))
if any(string in instance.context.data['anatomyData']['task']
for string in self.render_check_filter):
self.log.debug("Render task detected, resolution check skipped")
expected_settings.pop("resolutionWidth")
expected_settings.pop("resolutionHeight")
self.log.debug(expected_settings)
self.log.debug("filtered settings: {}".format(expected_settings))
current_settings = {
"fps": fps,
@ -84,7 +99,7 @@ class ValidateSceneSettings(pyblish.api.InstancePlugin):
"resolutionWidth": instance.context.data.get("resolutionWidth"),
"resolutionHeight": instance.context.data.get("resolutionHeight"),
}
self.log.debug("curr:: {}".format(current_settings))
self.log.debug("current scene settings {}".format(current_settings))
invalid_settings = []
for key, value in expected_settings.items():

View file

@ -1,14 +1,18 @@
{
"general": {
"skip_resolution_check": [],
"skip_timelines_check": []
},
"publish": {
"CollectPalettes": {
"allowed_tasks": [
"."
".*"
]
},
"ValidateSceneSettings": {
"enabled": true,
"optional": true,
"active": true,
"frame_check_filter": [],
"skip_resolution_check": [],
"skip_timelines_check": []
},
"HarmonySubmitDeadline": {
"use_published": false,
"priority": 50,

View file

@ -5,26 +5,6 @@
"label": "Harmony",
"is_file": true,
"children": [
{
"type": "dict",
"collapsible": true,
"key": "general",
"label": "General",
"children": [
{
"type": "list",
"key": "skip_resolution_check",
"object_type": "text",
"label": "Skip Resolution Check for Tasks"
},
{
"type": "list",
"key": "skip_timelines_check",
"object_type": "text",
"label": "Skip Timeliene Check for Tasks"
}
]
},
{
"type": "dict",
"collapsible": true,
@ -45,6 +25,52 @@
}
]
},
{
"type": "dict",
"collapsible": true,
"key": "ValidateSceneSettings",
"label": "Validate Scene Settings",
"checkbox_key": "enabled",
"children": [
{
"type": "boolean",
"key": "enabled",
"label": "Enabled"
},
{
"type": "boolean",
"key": "optional",
"label": "Optional"
},
{
"type": "boolean",
"key": "active",
"label": "Active"
},
{
"type": "label",
"label": "Validate if FrameStart, FrameEnd and Resolution match shot data"
},
{
"type": "list",
"key": "frame_check_filter",
"label": "Skip Frame check for Assets with",
"object_type": "text"
},
{
"type": "list",
"key": "skip_resolution_check",
"object_type": "text",
"label": "Skip Resolution Check for Tasks"
},
{
"type": "list",
"key": "skip_timelines_check",
"object_type": "text",
"label": "Skip Timeline Check for Tasks"
}
]
},
{
"type": "dict",
"collapsible": true,
@ -59,7 +85,7 @@
{
"type": "number",
"key": "priority",
"label": "priority"
"label": "Priority"
},
{
"type": "text",
@ -74,7 +100,7 @@
{
"type": "number",
"key": "chunk_size",
"label": "Chunk Size"
"label": "Frames Per Task"
}
]
}

View file

@ -0,0 +1,51 @@
---
id: admin_hosts_harmony
title: ToonBoom Harmony Settings
sidebar_label: ToonBoom Harmony
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
## ToonBoom Harmony settings
There is a couple of settings that could configure publishing process for **ToonBoom Harmony**.
All of them are Project based, eg. each project could have different configuration.
Location: Settings > Project > Harmony
![Harmony Project Settings](assets/admin_hosts_harmony_settings.png)
## Publish plugins
### Collect Palettes
#### Allowed tasks
Set regex pattern(s) only for task names when publishing of Palettes should occur.
Use ".*" to publish Palettes for ALL tasks.
### Validate Scene Settings
#### Skip Frame check for Assets with
Set regex pattern(s) for filtering Asset name that should skip validation of `frameEnd` value from DB.
#### Skip Resolution Check for Tasks
Set regex pattern(s) for filtering Asset name that should skip validation or `Resolution` value from DB.
#### Skip Timeline Check for Tasks
Set regex pattern(s) for filtering Task name that should skip validation `frameStart`, `frameEnd` check against values from DB.
### Harmony Submit to Deadline
* `Use Published scene` - Set to True (green) when Deadline should take published scene as a source instead of uploaded local one.
* `Priority` - priority of job on farm
* `Primary Pool` - here is list of pool fetched from server you can select from.
* `Secondary Pool`
* `Frames Per Task` - number of sequence division between individual tasks (chunks)
making one job on farm.

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View file

@ -85,6 +85,7 @@ module.exports = {
items: [
"admin_hosts_blender",
"admin_hosts_resolve",
"admin_hosts_harmony",
"admin_hosts_aftereffects"
],
},