mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 05:14:40 +01:00
[Automated] Merged develop into main
This commit is contained in:
commit
b7bf7453e8
33 changed files with 595 additions and 234 deletions
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
|
|
@ -35,6 +35,7 @@ body:
|
|||
label: Version
|
||||
description: What version are you running? Look to OpenPype Tray
|
||||
options:
|
||||
- 3.16.3-nightly.5
|
||||
- 3.16.3-nightly.4
|
||||
- 3.16.3-nightly.3
|
||||
- 3.16.3-nightly.2
|
||||
|
|
@ -134,7 +135,6 @@ body:
|
|||
- 3.14.7-nightly.6
|
||||
- 3.14.7-nightly.5
|
||||
- 3.14.7-nightly.4
|
||||
- 3.14.7-nightly.3
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
|
|
|
|||
|
|
@ -6,6 +6,9 @@ from .mongo import (
|
|||
OpenPypeMongoConnection,
|
||||
get_project_database,
|
||||
get_project_connection,
|
||||
load_json_file,
|
||||
replace_project_documents,
|
||||
store_project_documents,
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -17,4 +20,7 @@ __all__ = (
|
|||
"OpenPypeMongoConnection",
|
||||
"get_project_database",
|
||||
"get_project_connection",
|
||||
"load_json_file",
|
||||
"replace_project_documents",
|
||||
"store_project_documents",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -2076,9 +2076,16 @@ class WorkfileSettings(object):
|
|||
str(workfile_settings["OCIO_config"]))
|
||||
|
||||
else:
|
||||
# set values to root
|
||||
# OCIO config path is defined from prelaunch hook
|
||||
self._root_node["colorManagement"].setValue("OCIO")
|
||||
|
||||
# print previous settings in case some were found in workfile
|
||||
residual_path = self._root_node["customOCIOConfigPath"].value()
|
||||
if residual_path:
|
||||
log.info("Residual OCIO config path found: `{}`".format(
|
||||
residual_path
|
||||
))
|
||||
|
||||
# we dont need the key anymore
|
||||
workfile_settings.pop("customOCIOConfigPath", None)
|
||||
workfile_settings.pop("colorManagement", None)
|
||||
|
|
@ -2100,9 +2107,35 @@ class WorkfileSettings(object):
|
|||
|
||||
# set ocio config path
|
||||
if config_data:
|
||||
current_ocio_path = os.getenv("OCIO")
|
||||
if current_ocio_path != config_data["path"]:
|
||||
message = """
|
||||
log.info("OCIO config path found: `{}`".format(
|
||||
config_data["path"]))
|
||||
|
||||
# check if there's a mismatch between environment and settings
|
||||
correct_settings = self._is_settings_matching_environment(
|
||||
config_data)
|
||||
|
||||
# if there's no mismatch between environment and settings
|
||||
if correct_settings:
|
||||
self._set_ocio_config_path_to_workfile(config_data)
|
||||
|
||||
def _is_settings_matching_environment(self, config_data):
|
||||
""" Check if OCIO config path is different from environment
|
||||
|
||||
Args:
|
||||
config_data (dict): OCIO config data from settings
|
||||
|
||||
Returns:
|
||||
bool: True if settings are matching environment, False otherwise
|
||||
"""
|
||||
current_ocio_path = os.environ["OCIO"]
|
||||
settings_ocio_path = config_data["path"]
|
||||
|
||||
# normalize all paths to forward slashes
|
||||
current_ocio_path = current_ocio_path.replace("\\", "/")
|
||||
settings_ocio_path = settings_ocio_path.replace("\\", "/")
|
||||
|
||||
if current_ocio_path != settings_ocio_path:
|
||||
message = """
|
||||
It seems like there's a mismatch between the OCIO config path set in your Nuke
|
||||
settings and the actual path set in your OCIO environment.
|
||||
|
||||
|
|
@ -2120,12 +2153,118 @@ Please note the paths for your reference:
|
|||
|
||||
Reopening Nuke should synchronize these paths and resolve any discrepancies.
|
||||
"""
|
||||
nuke.message(
|
||||
message.format(
|
||||
env_path=current_ocio_path,
|
||||
settings_path=config_data["path"]
|
||||
)
|
||||
nuke.message(
|
||||
message.format(
|
||||
env_path=current_ocio_path,
|
||||
settings_path=settings_ocio_path
|
||||
)
|
||||
)
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def _set_ocio_config_path_to_workfile(self, config_data):
|
||||
""" Set OCIO config path to workfile
|
||||
|
||||
Path set into nuke workfile. It is trying to replace path with
|
||||
environment variable if possible. If not, it will set it as it is.
|
||||
It also saves the script to apply the change, but only if it's not
|
||||
empty Untitled script.
|
||||
|
||||
Args:
|
||||
config_data (dict): OCIO config data from settings
|
||||
|
||||
"""
|
||||
# replace path with env var if possible
|
||||
ocio_path = self._replace_ocio_path_with_env_var(config_data)
|
||||
|
||||
log.info("Setting OCIO config path to: `{}`".format(
|
||||
ocio_path))
|
||||
|
||||
self._root_node["customOCIOConfigPath"].setValue(
|
||||
ocio_path
|
||||
)
|
||||
self._root_node["OCIO_config"].setValue("custom")
|
||||
|
||||
# only save script if it's not empty
|
||||
if self._root_node["name"].value() != "":
|
||||
log.info("Saving script to apply OCIO config path change.")
|
||||
nuke.scriptSave()
|
||||
|
||||
def _get_included_vars(self, config_template):
|
||||
""" Get all environment variables included in template
|
||||
|
||||
Args:
|
||||
config_template (str): OCIO config template from settings
|
||||
|
||||
Returns:
|
||||
list: list of environment variables included in template
|
||||
"""
|
||||
# resolve all environments for whitelist variables
|
||||
included_vars = [
|
||||
"BUILTIN_OCIO_ROOT",
|
||||
]
|
||||
|
||||
# include all project root related env vars
|
||||
for env_var in os.environ:
|
||||
if env_var.startswith("OPENPYPE_PROJECT_ROOT_"):
|
||||
included_vars.append(env_var)
|
||||
|
||||
# use regex to find env var in template with format {ENV_VAR}
|
||||
# this way we make sure only template used env vars are included
|
||||
env_var_regex = r"\{([A-Z0-9_]+)\}"
|
||||
env_var = re.findall(env_var_regex, config_template)
|
||||
if env_var:
|
||||
included_vars.append(env_var[0])
|
||||
|
||||
return included_vars
|
||||
|
||||
def _replace_ocio_path_with_env_var(self, config_data):
|
||||
""" Replace OCIO config path with environment variable
|
||||
|
||||
Environment variable is added as TCL expression to path. TCL expression
|
||||
is also replacing backward slashes found in path for windows
|
||||
formatted values.
|
||||
|
||||
Args:
|
||||
config_data (str): OCIO config dict from settings
|
||||
|
||||
Returns:
|
||||
str: OCIO config path with environment variable TCL expression
|
||||
"""
|
||||
config_path = config_data["path"]
|
||||
config_template = config_data["template"]
|
||||
|
||||
included_vars = self._get_included_vars(config_template)
|
||||
|
||||
# make sure we return original path if no env var is included
|
||||
new_path = config_path
|
||||
|
||||
for env_var in included_vars:
|
||||
env_path = os.getenv(env_var)
|
||||
if not env_path:
|
||||
continue
|
||||
|
||||
# it has to be directory current process can see
|
||||
if not os.path.isdir(env_path):
|
||||
continue
|
||||
|
||||
# make sure paths are in same format
|
||||
env_path = env_path.replace("\\", "/")
|
||||
path = config_path.replace("\\", "/")
|
||||
|
||||
# check if env_path is in path and replace to first found positive
|
||||
if env_path in path:
|
||||
# with regsub we make sure path format of slashes is correct
|
||||
resub_expr = (
|
||||
"[regsub -all {{\\\\}} [getenv {}] \"/\"]").format(env_var)
|
||||
|
||||
new_path = path.replace(
|
||||
env_path, resub_expr
|
||||
)
|
||||
break
|
||||
|
||||
return new_path
|
||||
|
||||
def set_writes_colorspace(self):
|
||||
''' Adds correct colorspace to write node dict
|
||||
|
|
@ -2239,7 +2378,7 @@ Reopening Nuke should synchronize these paths and resolve any discrepancies.
|
|||
knobs["to"]))
|
||||
|
||||
def set_colorspace(self):
|
||||
''' Setting colorpace following presets
|
||||
''' Setting colorspace following presets
|
||||
'''
|
||||
# get imageio
|
||||
nuke_colorspace = get_nuke_imageio_settings()
|
||||
|
|
@ -2247,17 +2386,16 @@ Reopening Nuke should synchronize these paths and resolve any discrepancies.
|
|||
log.info("Setting colorspace to workfile...")
|
||||
try:
|
||||
self.set_root_colorspace(nuke_colorspace)
|
||||
except AttributeError:
|
||||
msg = "set_colorspace(): missing `workfile` settings in template"
|
||||
except AttributeError as _error:
|
||||
msg = "Set Colorspace to workfile error: {}".format(_error)
|
||||
nuke.message(msg)
|
||||
|
||||
log.info("Setting colorspace to viewers...")
|
||||
try:
|
||||
self.set_viewers_colorspace(nuke_colorspace["viewer"])
|
||||
except AttributeError:
|
||||
msg = "set_colorspace(): missing `viewer` settings in template"
|
||||
except AttributeError as _error:
|
||||
msg = "Set Colorspace to viewer error: {}".format(_error)
|
||||
nuke.message(msg)
|
||||
log.error(msg)
|
||||
|
||||
log.info("Setting colorspace to write nodes...")
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -114,6 +114,11 @@ class NukePlaceholderPlugin(PlaceholderPlugin):
|
|||
placeholder_data[key] = value
|
||||
return placeholder_data
|
||||
|
||||
def delete_placeholder(self, placeholder):
|
||||
"""Remove placeholder if building was successful"""
|
||||
placeholder_node = nuke.toNode(placeholder.scene_identifier)
|
||||
nuke.delete(placeholder_node)
|
||||
|
||||
|
||||
class NukePlaceholderLoadPlugin(NukePlaceholderPlugin, PlaceholderLoadMixin):
|
||||
identifier = "nuke.load"
|
||||
|
|
@ -276,14 +281,6 @@ class NukePlaceholderLoadPlugin(NukePlaceholderPlugin, PlaceholderLoadMixin):
|
|||
placeholder.data["nb_children"] += 1
|
||||
reset_selection()
|
||||
|
||||
# remove placeholders marked as delete
|
||||
if (
|
||||
placeholder.data.get("delete")
|
||||
and not placeholder.data.get("keep_placeholder")
|
||||
):
|
||||
self.log.debug("Deleting node: {}".format(placeholder_node.name()))
|
||||
nuke.delete(placeholder_node)
|
||||
|
||||
# go back to root group
|
||||
nuke.root().begin()
|
||||
|
||||
|
|
@ -690,14 +687,6 @@ class NukePlaceholderCreatePlugin(
|
|||
placeholder.data["nb_children"] += 1
|
||||
reset_selection()
|
||||
|
||||
# remove placeholders marked as delete
|
||||
if (
|
||||
placeholder.data.get("delete")
|
||||
and not placeholder.data.get("keep_placeholder")
|
||||
):
|
||||
self.log.debug("Deleting node: {}".format(placeholder_node.name()))
|
||||
nuke.delete(placeholder_node)
|
||||
|
||||
# go back to root group
|
||||
nuke.root().begin()
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ Provides:
|
|||
import pyblish.api
|
||||
|
||||
from openpype.client import get_last_version_by_subset_name
|
||||
from openpype.pipeline.version_start import get_versioning_start
|
||||
|
||||
|
||||
class CollectPublishedVersion(pyblish.api.ContextPlugin):
|
||||
|
|
@ -47,9 +48,17 @@ class CollectPublishedVersion(pyblish.api.ContextPlugin):
|
|||
version_doc = get_last_version_by_subset_name(project_name,
|
||||
workfile_subset_name,
|
||||
asset_id)
|
||||
version_int = 1
|
||||
|
||||
if version_doc:
|
||||
version_int += int(version_doc["name"])
|
||||
version_int = int(version_doc["name"]) + 1
|
||||
else:
|
||||
version_int = get_versioning_start(
|
||||
project_name,
|
||||
"photoshop",
|
||||
task_name=context.data["task"],
|
||||
task_type=context.data["taskType"],
|
||||
project_settings=context.data["project_settings"]
|
||||
)
|
||||
|
||||
self.log.debug(f"Setting {version_int} to context.")
|
||||
context.data["version"] = version_int
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ from openpype.hosts.tvpaint.api.lib import (
|
|||
from openpype.hosts.tvpaint.api.pipeline import (
|
||||
get_current_workfile_context,
|
||||
)
|
||||
from openpype.pipeline.version_start import get_versioning_start
|
||||
|
||||
|
||||
class LoadWorkfile(plugin.Loader):
|
||||
|
|
@ -95,7 +96,13 @@ class LoadWorkfile(plugin.Loader):
|
|||
)[1]
|
||||
|
||||
if version is None:
|
||||
version = 1
|
||||
version = get_versioning_start(
|
||||
project_name,
|
||||
"tvpaint",
|
||||
task_name=task_name,
|
||||
task_type=data["task"]["type"],
|
||||
family="workfile"
|
||||
)
|
||||
else:
|
||||
version += 1
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ from openpype.lib import (
|
|||
)
|
||||
from openpype.pipeline.create import get_subset_name
|
||||
from openpype_modules.webpublisher.lib import parse_json
|
||||
from openpype.pipeline.version_start import get_versioning_start
|
||||
|
||||
|
||||
class CollectPublishedFiles(pyblish.api.ContextPlugin):
|
||||
|
|
@ -103,7 +104,13 @@ class CollectPublishedFiles(pyblish.api.ContextPlugin):
|
|||
project_settings=context.data["project_settings"]
|
||||
)
|
||||
version = self._get_next_version(
|
||||
project_name, asset_doc, subset_name
|
||||
project_name,
|
||||
asset_doc,
|
||||
task_name,
|
||||
task_type,
|
||||
family,
|
||||
subset_name,
|
||||
context
|
||||
)
|
||||
next_versions.append(version)
|
||||
|
||||
|
|
@ -141,8 +148,9 @@ class CollectPublishedFiles(pyblish.api.ContextPlugin):
|
|||
try:
|
||||
no_of_frames = self._get_number_of_frames(file_url)
|
||||
if no_of_frames:
|
||||
frame_end = int(frame_start) + \
|
||||
math.ceil(no_of_frames)
|
||||
frame_end = (
|
||||
int(frame_start) + math.ceil(no_of_frames)
|
||||
)
|
||||
frame_end = math.ceil(frame_end) - 1
|
||||
instance.data["frameEnd"] = frame_end
|
||||
self.log.debug("frameEnd:: {}".format(
|
||||
|
|
@ -270,7 +278,16 @@ class CollectPublishedFiles(pyblish.api.ContextPlugin):
|
|||
config["families"],
|
||||
config["tags"])
|
||||
|
||||
def _get_next_version(self, project_name, asset_doc, subset_name):
|
||||
def _get_next_version(
|
||||
self,
|
||||
project_name,
|
||||
asset_doc,
|
||||
task_name,
|
||||
task_type,
|
||||
family,
|
||||
subset_name,
|
||||
context
|
||||
):
|
||||
"""Returns version number or 1 for 'asset' and 'subset'"""
|
||||
|
||||
version_doc = get_last_version_by_subset_name(
|
||||
|
|
@ -279,9 +296,19 @@ class CollectPublishedFiles(pyblish.api.ContextPlugin):
|
|||
asset_doc["_id"],
|
||||
fields=["name"]
|
||||
)
|
||||
version = 1
|
||||
if version_doc:
|
||||
version += int(version_doc["name"])
|
||||
version = int(version_doc["name"]) + 1
|
||||
else:
|
||||
version = get_versioning_start(
|
||||
project_name,
|
||||
"webpublisher",
|
||||
task_name=task_name,
|
||||
task_type=task_type,
|
||||
family=family,
|
||||
subset=subset_name,
|
||||
project_settings=context.data["project_settings"]
|
||||
)
|
||||
|
||||
return version
|
||||
|
||||
def _get_number_of_frames(self, file_url):
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ class HoudiniSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline):
|
|||
job_info.EnvironmentKeyValue[key] = value
|
||||
|
||||
# to recognize render jobs
|
||||
job_info.add_render_job_env_var(job_info)
|
||||
job_info.add_render_job_env_var()
|
||||
|
||||
for i, filepath in enumerate(instance.data["files"]):
|
||||
dirname = os.path.dirname(filepath)
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ class MaxSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline,
|
|||
job_info.EnvironmentKeyValue[key] = value
|
||||
|
||||
# to recognize render jobs
|
||||
job_info.add_render_job_env_var(job_info)
|
||||
job_info.add_render_job_env_var()
|
||||
job_info.EnvironmentKeyValue["OPENPYPE_LOG_NO_COLORS"] = "1"
|
||||
|
||||
# Add list of expected files to job
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
import os
|
||||
import json
|
||||
import re
|
||||
from copy import copy, deepcopy
|
||||
from copy import deepcopy
|
||||
import requests
|
||||
import clique
|
||||
|
||||
|
|
@ -16,6 +16,7 @@ from openpype.client import (
|
|||
from openpype.pipeline import publish, legacy_io
|
||||
from openpype.lib import EnumDef, is_running_from_build
|
||||
from openpype.tests.lib import is_in_tests
|
||||
from openpype.pipeline.version_start import get_versioning_start
|
||||
|
||||
from openpype.pipeline.farm.pyblish_functions import (
|
||||
create_skeleton_instance,
|
||||
|
|
@ -566,7 +567,15 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin,
|
|||
if version:
|
||||
version = int(version["name"]) + 1
|
||||
else:
|
||||
version = 1
|
||||
version = get_versioning_start(
|
||||
project_name,
|
||||
template_data["app"],
|
||||
task_name=template_data["task"]["name"],
|
||||
task_type=template_data["task"]["type"],
|
||||
family="render",
|
||||
subset=subset,
|
||||
project_settings=context.data["project_settings"]
|
||||
)
|
||||
|
||||
host_name = context.data["hostName"]
|
||||
task_info = template_data.get("task") or {}
|
||||
|
|
|
|||
|
|
@ -11,10 +11,8 @@ Provides:
|
|||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import collections
|
||||
|
||||
import six
|
||||
import pyblish.api
|
||||
import clique
|
||||
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ from .context_tools import (
|
|||
get_current_host_name,
|
||||
get_current_project_name,
|
||||
get_current_asset_name,
|
||||
get_current_task_name,
|
||||
get_current_task_name
|
||||
)
|
||||
install = install_host
|
||||
uninstall = uninstall_host
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ from . import (
|
|||
register_inventory_action_path,
|
||||
register_creator_plugin_path,
|
||||
deregister_loader_plugin_path,
|
||||
deregister_inventory_action_path,
|
||||
deregister_inventory_action_path
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
37
openpype/pipeline/version_start.py
Normal file
37
openpype/pipeline/version_start.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
from openpype.lib.profiles_filtering import filter_profiles
|
||||
from openpype.settings import get_project_settings
|
||||
|
||||
|
||||
def get_versioning_start(
|
||||
project_name,
|
||||
host_name,
|
||||
task_name=None,
|
||||
task_type=None,
|
||||
family=None,
|
||||
subset=None,
|
||||
project_settings=None,
|
||||
):
|
||||
"""Get anatomy versioning start"""
|
||||
if not project_settings:
|
||||
project_settings = get_project_settings(project_name)
|
||||
|
||||
version_start = 1
|
||||
settings = project_settings["global"]
|
||||
profiles = settings.get("version_start_category", {}).get("profiles", [])
|
||||
|
||||
if not profiles:
|
||||
return version_start
|
||||
|
||||
filtering_criteria = {
|
||||
"host_names": host_name,
|
||||
"families": family,
|
||||
"task_names": task_name,
|
||||
"task_types": task_type,
|
||||
"subsets": subset
|
||||
}
|
||||
profile = filter_profiles(profiles, filtering_criteria)
|
||||
|
||||
if profile is None:
|
||||
return version_start
|
||||
|
||||
return profile["version_start"]
|
||||
|
|
@ -10,7 +10,7 @@ from openpype.lib import (
|
|||
Logger,
|
||||
StringTemplate,
|
||||
)
|
||||
from openpype.pipeline import Anatomy
|
||||
from openpype.pipeline import version_start, Anatomy
|
||||
from openpype.pipeline.template_data import get_template_data
|
||||
|
||||
|
||||
|
|
@ -316,7 +316,13 @@ def get_last_workfile(
|
|||
)
|
||||
if filename is None:
|
||||
data = copy.deepcopy(fill_data)
|
||||
data["version"] = 1
|
||||
data["version"] = version_start.get_versioning_start(
|
||||
data["project"]["name"],
|
||||
data["app"],
|
||||
task_name=data["task"]["name"],
|
||||
task_type=data["task"]["type"],
|
||||
family="workfile"
|
||||
)
|
||||
data.pop("comment", None)
|
||||
if not data.get("ext"):
|
||||
data["ext"] = extensions[0]
|
||||
|
|
|
|||
|
|
@ -1612,7 +1612,7 @@ class PlaceholderLoadMixin(object):
|
|||
|
||||
pass
|
||||
|
||||
def delete_placeholder(self, placeholder, failed):
|
||||
def delete_placeholder(self, placeholder):
|
||||
"""Called when all item population is done."""
|
||||
self.log.debug("Clean up of placeholder is not implemented.")
|
||||
|
||||
|
|
@ -1781,6 +1781,17 @@ class PlaceholderCreateMixin(object):
|
|||
|
||||
self.post_placeholder_process(placeholder, failed)
|
||||
|
||||
if failed:
|
||||
self.log.debug(
|
||||
"Placeholder cleanup skipped due to failed placeholder "
|
||||
"population."
|
||||
)
|
||||
return
|
||||
|
||||
if not placeholder.data.get("keep_placeholder", True):
|
||||
self.delete_placeholder(placeholder)
|
||||
|
||||
|
||||
def create_failed(self, placeholder, creator_data):
|
||||
if hasattr(placeholder, "create_failed"):
|
||||
placeholder.create_failed(creator_data)
|
||||
|
|
@ -1800,9 +1811,12 @@ class PlaceholderCreateMixin(object):
|
|||
representation.
|
||||
failed (bool): Loading of representation failed.
|
||||
"""
|
||||
|
||||
pass
|
||||
|
||||
def delete_placeholder(self, placeholder):
|
||||
"""Called when all item population is done."""
|
||||
self.log.debug("Clean up of placeholder is not implemented.")
|
||||
|
||||
def _before_instance_create(self, placeholder):
|
||||
"""Can be overriden. Is called before instance is created."""
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ from openpype.client import (
|
|||
get_subsets,
|
||||
get_last_versions
|
||||
)
|
||||
from openpype.pipeline.version_start import get_versioning_start
|
||||
|
||||
|
||||
class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
|
||||
|
|
@ -187,25 +188,13 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
|
|||
project_task_types = project_doc["config"]["tasks"]
|
||||
|
||||
for instance in context:
|
||||
if self.follow_workfile_version:
|
||||
version_number = context.data('version')
|
||||
else:
|
||||
version_number = instance.data.get("version")
|
||||
# If version is not specified for instance or context
|
||||
if version_number is None:
|
||||
# TODO we should be able to change default version by studio
|
||||
# preferences (like start with version number `0`)
|
||||
version_number = 1
|
||||
# use latest version (+1) if already any exist
|
||||
latest_version = instance.data["latestVersion"]
|
||||
if latest_version is not None:
|
||||
version_number += int(latest_version)
|
||||
|
||||
anatomy_updates = {
|
||||
"asset": instance.data["asset"],
|
||||
"folder": {
|
||||
"name": instance.data["asset"],
|
||||
},
|
||||
"family": instance.data["family"],
|
||||
"subset": instance.data["subset"],
|
||||
"version": version_number
|
||||
}
|
||||
|
||||
# Hierarchy
|
||||
|
|
@ -225,6 +214,7 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
|
|||
anatomy_updates["parent"] = parent_name
|
||||
|
||||
# Task
|
||||
task_type = None
|
||||
task_name = instance.data.get("task")
|
||||
if task_name:
|
||||
asset_tasks = asset_doc["data"]["tasks"]
|
||||
|
|
@ -240,6 +230,30 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
|
|||
"short": task_code
|
||||
}
|
||||
|
||||
# Define version
|
||||
if self.follow_workfile_version:
|
||||
version_number = context.data('version')
|
||||
else:
|
||||
version_number = instance.data.get("version")
|
||||
|
||||
# use latest version (+1) if already any exist
|
||||
if version_number is None:
|
||||
latest_version = instance.data["latestVersion"]
|
||||
if latest_version is not None:
|
||||
version_number = int(latest_version) + 1
|
||||
|
||||
# If version is not specified for instance or context
|
||||
if version_number is None:
|
||||
version_number = get_versioning_start(
|
||||
context.data["projectName"],
|
||||
instance.context.data["hostName"],
|
||||
task_name=task_name,
|
||||
task_type=task_type,
|
||||
family=instance.data["family"],
|
||||
subset=instance.data["subset"]
|
||||
)
|
||||
anatomy_updates["version"] = version_number
|
||||
|
||||
# Additional data
|
||||
resolution_width = instance.data.get("resolutionWidth")
|
||||
if resolution_width:
|
||||
|
|
|
|||
|
|
@ -142,6 +142,12 @@ class IntegrateHeroVersion(pyblish.api.InstancePlugin):
|
|||
))
|
||||
return
|
||||
|
||||
if AYON_SERVER_ENABLED and src_version_entity["name"] == 0:
|
||||
self.log.debug(
|
||||
"Version 0 cannot have hero version. Skipping."
|
||||
)
|
||||
return
|
||||
|
||||
all_copied_files = []
|
||||
transfers = instance.data.get("transfers", list())
|
||||
for _src, dst in transfers:
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ from openpype.pipeline import (
|
|||
)
|
||||
|
||||
from openpype.pipeline.context_tools import get_workdir_from_session
|
||||
from openpype.pipeline.version_start import get_versioning_start
|
||||
|
||||
log = logging.getLogger("Update Slap Comp")
|
||||
|
||||
|
|
@ -26,9 +27,6 @@ log = logging.getLogger("Update Slap Comp")
|
|||
def _format_version_folder(folder):
|
||||
"""Format a version folder based on the filepath
|
||||
|
||||
Assumption here is made that, if the path does not exists the folder
|
||||
will be "v001"
|
||||
|
||||
Args:
|
||||
folder: file path to a folder
|
||||
|
||||
|
|
@ -36,9 +34,13 @@ def _format_version_folder(folder):
|
|||
str: new version folder name
|
||||
"""
|
||||
|
||||
new_version = 1
|
||||
new_version = get_versioning_start(
|
||||
get_current_project_name(),
|
||||
"fusion",
|
||||
family="workfile"
|
||||
)
|
||||
if os.path.isdir(folder):
|
||||
re_version = re.compile("v\d+$")
|
||||
re_version = re.compile(r"v\d+$")
|
||||
versions = [i for i in os.listdir(folder) if os.path.isdir(i)
|
||||
and re_version.match(i)]
|
||||
if versions:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
"version_start_category": {
|
||||
"profiles": []
|
||||
},
|
||||
"imageio": {
|
||||
"activate_global_color_management": false,
|
||||
"ocio_config": {
|
||||
|
|
|
|||
|
|
@ -14,48 +14,70 @@
|
|||
"create": {
|
||||
"CreateArnoldAss": {
|
||||
"enabled": true,
|
||||
"default_variants": [],
|
||||
"default_variants": [
|
||||
"Main"
|
||||
],
|
||||
"ext": ".ass"
|
||||
},
|
||||
"CreateAlembicCamera": {
|
||||
"enabled": true,
|
||||
"defaults": []
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateCompositeSequence": {
|
||||
"enabled": true,
|
||||
"defaults": []
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreatePointCache": {
|
||||
"enabled": true,
|
||||
"defaults": []
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateRedshiftROP": {
|
||||
"enabled": true,
|
||||
"defaults": []
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateRemotePublish": {
|
||||
"enabled": true,
|
||||
"defaults": []
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateVDBCache": {
|
||||
"enabled": true,
|
||||
"defaults": []
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateUSD": {
|
||||
"enabled": false,
|
||||
"defaults": []
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateUSDModel": {
|
||||
"enabled": false,
|
||||
"defaults": []
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"USDCreateShadingWorkspace": {
|
||||
"enabled": false,
|
||||
"defaults": []
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateUSDRender": {
|
||||
"enabled": false,
|
||||
"defaults": []
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
}
|
||||
},
|
||||
"publish": {
|
||||
|
|
|
|||
|
|
@ -527,7 +527,7 @@
|
|||
},
|
||||
"CreateRender": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
|
|
@ -627,55 +627,55 @@
|
|||
},
|
||||
"CreateMultiverseUsd": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateMultiverseUsdComp": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateMultiverseUsdOver": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateAssembly": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateCamera": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateLayout": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateMayaScene": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateRenderSetup": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateRig": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main",
|
||||
"Sim",
|
||||
"Cloth"
|
||||
|
|
@ -683,20 +683,20 @@
|
|||
},
|
||||
"CreateSetDress": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main",
|
||||
"Anim"
|
||||
]
|
||||
},
|
||||
"CreateVRayScene": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateYetiRig": {
|
||||
"enabled": true,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,61 @@
|
|||
"label": "Global",
|
||||
"is_file": true,
|
||||
"children": [
|
||||
{
|
||||
"type": "dict",
|
||||
"key": "version_start_category",
|
||||
"label": "Version Start",
|
||||
"collapsible": true,
|
||||
"collapsible_key": true,
|
||||
"children": [
|
||||
{
|
||||
"type": "list",
|
||||
"collapsible": true,
|
||||
"key": "profiles",
|
||||
"label": "Profiles",
|
||||
"object_type": {
|
||||
"type": "dict",
|
||||
"children": [
|
||||
{
|
||||
"key": "host_names",
|
||||
"label": "Host names",
|
||||
"type": "hosts-enum",
|
||||
"multiselection": true
|
||||
},
|
||||
{
|
||||
"key": "task_types",
|
||||
"label": "Task types",
|
||||
"type": "task-types-enum"
|
||||
},
|
||||
{
|
||||
"key": "task_names",
|
||||
"label": "Task names",
|
||||
"type": "list",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
"key": "families",
|
||||
"label": "Families",
|
||||
"type": "list",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
"key": "subsets",
|
||||
"label": "Subset names",
|
||||
"type": "list",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
"key": "version_start",
|
||||
"label": "Version Start",
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "imageio",
|
||||
"type": "dict",
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
{
|
||||
"type": "list",
|
||||
"key": "default_variants",
|
||||
"label": "Default Subsets",
|
||||
"label": "Default Variants",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
|
|
@ -39,51 +39,51 @@
|
|||
]
|
||||
|
||||
},
|
||||
{
|
||||
"type": "schema_template",
|
||||
"name": "template_create_plugin",
|
||||
"template_data": [
|
||||
{
|
||||
"key": "CreateAlembicCamera",
|
||||
"label": "Create Alembic Camera"
|
||||
},
|
||||
{
|
||||
"key": "CreateCompositeSequence",
|
||||
"label": "Create Composite (Image Sequence)"
|
||||
},
|
||||
{
|
||||
"key": "CreatePointCache",
|
||||
"label": "Create Point Cache"
|
||||
},
|
||||
{
|
||||
"key": "CreateRedshiftROP",
|
||||
"label": "Create Redshift ROP"
|
||||
},
|
||||
{
|
||||
"key": "CreateRemotePublish",
|
||||
"label": "Create Remote Publish"
|
||||
},
|
||||
{
|
||||
"key": "CreateVDBCache",
|
||||
"label": "Create VDB Cache"
|
||||
},
|
||||
{
|
||||
"key": "CreateUSD",
|
||||
"label": "Create USD"
|
||||
},
|
||||
{
|
||||
"key": "CreateUSDModel",
|
||||
"label": "Create USD Model"
|
||||
},
|
||||
{
|
||||
"key": "USDCreateShadingWorkspace",
|
||||
"label": "Create USD Shading Workspace"
|
||||
},
|
||||
{
|
||||
"key": "CreateUSDRender",
|
||||
"label": "Create USD Render"
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"type": "schema_template",
|
||||
"name": "template_create_plugin",
|
||||
"template_data": [
|
||||
{
|
||||
"key": "CreateAlembicCamera",
|
||||
"label": "Create Alembic Camera"
|
||||
},
|
||||
{
|
||||
"key": "CreateCompositeSequence",
|
||||
"label": "Create Composite (Image Sequence)"
|
||||
},
|
||||
{
|
||||
"key": "CreatePointCache",
|
||||
"label": "Create Point Cache"
|
||||
},
|
||||
{
|
||||
"key": "CreateRedshiftROP",
|
||||
"label": "Create Redshift ROP"
|
||||
},
|
||||
{
|
||||
"key": "CreateRemotePublish",
|
||||
"label": "Create Remote Publish"
|
||||
},
|
||||
{
|
||||
"key": "CreateVDBCache",
|
||||
"label": "Create VDB Cache"
|
||||
},
|
||||
{
|
||||
"key": "CreateUSD",
|
||||
"label": "Create USD"
|
||||
},
|
||||
{
|
||||
"key": "CreateUSDModel",
|
||||
"label": "Create USD Model"
|
||||
},
|
||||
{
|
||||
"key": "USDCreateShadingWorkspace",
|
||||
"label": "Create USD Shading Workspace"
|
||||
},
|
||||
{
|
||||
"key": "CreateUSDRender",
|
||||
"label": "Create USD Render"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,14 +29,20 @@
|
|||
{
|
||||
"type": "list",
|
||||
"key": "default_variants",
|
||||
"label": "Default Subsets",
|
||||
"label": "Default Variants",
|
||||
"object_type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "schema",
|
||||
"name": "schema_maya_create_render"
|
||||
{
|
||||
"type": "schema_template",
|
||||
"name": "template_create_plugin",
|
||||
"template_data": [
|
||||
{
|
||||
"key": "CreateRender",
|
||||
"label": "Create Render"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "dict",
|
||||
|
|
@ -53,7 +59,7 @@
|
|||
{
|
||||
"type": "list",
|
||||
"key": "default_variants",
|
||||
"label": "Default Subsets",
|
||||
"label": "Default Variants",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
|
|
@ -85,7 +91,7 @@
|
|||
{
|
||||
"type": "list",
|
||||
"key": "default_variants",
|
||||
"label": "Default Subsets",
|
||||
"label": "Default Variants",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
|
|
@ -148,7 +154,7 @@
|
|||
{
|
||||
"type": "list",
|
||||
"key": "default_variants",
|
||||
"label": "Default Subsets",
|
||||
"label": "Default Variants",
|
||||
"object_type": "text"
|
||||
}
|
||||
]
|
||||
|
|
@ -178,7 +184,7 @@
|
|||
{
|
||||
"type": "list",
|
||||
"key": "default_variants",
|
||||
"label": "Default Subsets",
|
||||
"label": "Default Variants",
|
||||
"object_type": "text"
|
||||
}
|
||||
]
|
||||
|
|
@ -213,7 +219,7 @@
|
|||
{
|
||||
"type": "list",
|
||||
"key": "default_variants",
|
||||
"label": "Default Subsets",
|
||||
"label": "Default Variants",
|
||||
"object_type": "text"
|
||||
}
|
||||
]
|
||||
|
|
@ -243,7 +249,7 @@
|
|||
{
|
||||
"type": "list",
|
||||
"key": "default_variants",
|
||||
"label": "Default Subsets",
|
||||
"label": "Default Variants",
|
||||
"object_type": "text"
|
||||
}
|
||||
]
|
||||
|
|
@ -263,7 +269,7 @@
|
|||
{
|
||||
"type": "list",
|
||||
"key": "default_variants",
|
||||
"label": "Default Subsets",
|
||||
"label": "Default Variants",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
|
|
@ -288,7 +294,7 @@
|
|||
{
|
||||
"type": "list",
|
||||
"key": "default_variants",
|
||||
"label": "Default Subsets",
|
||||
"label": "Default Variants",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
|
|
@ -390,7 +396,7 @@
|
|||
{
|
||||
"type": "list",
|
||||
"key": "default_variants",
|
||||
"label": "Default Subsets",
|
||||
"label": "Default Variants",
|
||||
"object_type": "text"
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
{
|
||||
"type": "dict",
|
||||
"collapsible": true,
|
||||
"key": "CreateRender",
|
||||
"label": "Create Render",
|
||||
"checkbox_key": "enabled",
|
||||
"children": [
|
||||
{
|
||||
"type": "boolean",
|
||||
"key": "enabled",
|
||||
"label": "Enabled"
|
||||
},
|
||||
{
|
||||
"type": "list",
|
||||
"key": "defaults",
|
||||
"label": "Default Subsets",
|
||||
"object_type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,8 +13,8 @@
|
|||
},
|
||||
{
|
||||
"type": "list",
|
||||
"key": "defaults",
|
||||
"label": "Default Subsets",
|
||||
"key": "default_variants",
|
||||
"label": "Default Variants",
|
||||
"object_type": "text"
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ from openpype.lib import (
|
|||
from openpype.lib.file_transaction import FileTransaction
|
||||
from openpype.settings import get_project_settings
|
||||
from openpype.pipeline import Anatomy
|
||||
from openpype.pipeline.version_start import get_versioning_start
|
||||
from openpype.pipeline.template_data import get_template_data
|
||||
from openpype.pipeline.publish import get_publish_template_name
|
||||
from openpype.pipeline.create import get_subset_name
|
||||
|
|
@ -940,9 +941,17 @@ class ProjectPushItemProcess:
|
|||
last_version_doc = get_last_version_by_subset_id(
|
||||
project_name, subset_id
|
||||
)
|
||||
version = 1
|
||||
if last_version_doc:
|
||||
version += int(last_version_doc["name"])
|
||||
version = int(last_version_doc["name"]) + 1
|
||||
else:
|
||||
version = get_versioning_start(
|
||||
project_name,
|
||||
self.host_name,
|
||||
task_name=self.task_info["name"],
|
||||
task_type=self.task_info["type"],
|
||||
family=families[0],
|
||||
subset=subset_doc["name"]
|
||||
)
|
||||
|
||||
existing_version_doc = get_version_by_name(
|
||||
project_name, version, subset_id
|
||||
|
|
@ -966,14 +975,6 @@ class ProjectPushItemProcess:
|
|||
|
||||
return
|
||||
|
||||
if version is None:
|
||||
last_version_doc = get_last_version_by_subset_id(
|
||||
project_name, subset_id
|
||||
)
|
||||
version = 1
|
||||
if last_version_doc:
|
||||
version += int(last_version_doc["name"])
|
||||
|
||||
version_doc = new_version_doc(
|
||||
version, subset_id, version_data
|
||||
)
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ class SceneInventoryView(QtWidgets.QTreeView):
|
|||
|
||||
manager = ModulesManager()
|
||||
sync_server = manager.modules_by_name.get("sync_server")
|
||||
sync_enabled = sync_server is not None and self.sync_server.enabled
|
||||
sync_enabled = sync_server is not None and sync_server.enabled
|
||||
|
||||
self.sync_server = sync_server
|
||||
self.sync_enabled = sync_enabled
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ from openpype.client import (
|
|||
)
|
||||
from openpype.settings import get_project_settings
|
||||
from openpype.pipeline import LegacyCreator
|
||||
from openpype.pipeline.version_start import get_versioning_start
|
||||
from openpype.pipeline.create import (
|
||||
SUBSET_NAME_ALLOWED_SYMBOLS,
|
||||
TaskNotSetError,
|
||||
|
|
@ -299,7 +300,15 @@ class FamilyWidget(QtWidgets.QWidget):
|
|||
project_name = self.dbcon.active_project()
|
||||
asset_name = self.asset_name
|
||||
subset_name = self.input_result.text()
|
||||
version = 1
|
||||
plugin = self.list_families.currentItem().data(PluginRole)
|
||||
family = plugin.family.rsplit(".", 1)[-1]
|
||||
version = get_versioning_start(
|
||||
project_name,
|
||||
"standalonepublisher",
|
||||
task_name=self.dbcon.Session["AVALON_TASK"],
|
||||
family=family,
|
||||
subset=subset_name
|
||||
)
|
||||
|
||||
asset_doc = None
|
||||
subset_doc = None
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ from openpype.pipeline import (
|
|||
from openpype.pipeline.workfile import get_last_workfile_with_version
|
||||
from openpype.pipeline.template_data import get_template_data_with_names
|
||||
from openpype.tools.utils import PlaceholderLineEdit
|
||||
from openpype.pipeline import version_start, get_current_host_name
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -218,7 +219,15 @@ class SaveAsDialog(QtWidgets.QDialog):
|
|||
|
||||
# Version number input
|
||||
version_input = QtWidgets.QSpinBox(version_widget)
|
||||
version_input.setMinimum(1)
|
||||
version_input.setMinimum(
|
||||
version_start.get_versioning_start(
|
||||
self.data["project"]["name"],
|
||||
get_current_host_name(),
|
||||
task_name=self.data["task"]["name"],
|
||||
task_type=self.data["task"]["type"],
|
||||
family="workfile"
|
||||
)
|
||||
)
|
||||
version_input.setMaximum(9999)
|
||||
|
||||
# Last version checkbox
|
||||
|
|
@ -420,7 +429,13 @@ class SaveAsDialog(QtWidgets.QDialog):
|
|||
)[1]
|
||||
|
||||
if version is None:
|
||||
version = 1
|
||||
version = version_start.get_versioning_start(
|
||||
data["project"]["name"],
|
||||
get_current_host_name(),
|
||||
task_name=self.data["task"]["name"],
|
||||
task_type=self.data["task"]["type"],
|
||||
family="workfile"
|
||||
)
|
||||
else:
|
||||
version += 1
|
||||
|
||||
|
|
|
|||
|
|
@ -6,12 +6,18 @@ from ayon_server.settings import BaseSettingsModel
|
|||
# Creator Plugins
|
||||
class CreatorModel(BaseSettingsModel):
|
||||
enabled: bool = Field(title="Enabled")
|
||||
defaults: list[str] = Field(title="Default Products")
|
||||
default_variants: list[str] = Field(
|
||||
title="Default Products",
|
||||
default_factory=list,
|
||||
)
|
||||
|
||||
|
||||
class CreateArnoldAssModel(BaseSettingsModel):
|
||||
enabled: bool = Field(title="Enabled")
|
||||
defaults: list[str] = Field(title="Default Products")
|
||||
default_variants: list[str] = Field(
|
||||
title="Default Products",
|
||||
default_factory=list,
|
||||
)
|
||||
ext: str = Field(Title="Extension")
|
||||
|
||||
|
||||
|
|
@ -54,49 +60,49 @@ class CreatePluginsModel(BaseSettingsModel):
|
|||
DEFAULT_HOUDINI_CREATE_SETTINGS = {
|
||||
"CreateArnoldAss": {
|
||||
"enabled": True,
|
||||
"default_variants": [],
|
||||
"default_variants": ["Main"],
|
||||
"ext": ".ass"
|
||||
},
|
||||
"CreateAlembicCamera": {
|
||||
"enabled": True,
|
||||
"defaults": []
|
||||
"default_variants": ["Main"]
|
||||
},
|
||||
"CreateCompositeSequence": {
|
||||
"enabled": True,
|
||||
"defaults": []
|
||||
"default_variants": ["Main"]
|
||||
},
|
||||
"CreatePointCache": {
|
||||
"enabled": True,
|
||||
"defaults": []
|
||||
"default_variants": ["Main"]
|
||||
},
|
||||
"CreateRedshiftROP": {
|
||||
"enabled": True,
|
||||
"defaults": []
|
||||
"default_variants": ["Main"]
|
||||
},
|
||||
"CreateRemotePublish": {
|
||||
"enabled": True,
|
||||
"defaults": []
|
||||
"default_variants": ["Main"]
|
||||
},
|
||||
"CreateVDBCache": {
|
||||
"enabled": True,
|
||||
"defaults": []
|
||||
"default_variants": ["Main"]
|
||||
},
|
||||
"CreateUSD": {
|
||||
"enabled": False,
|
||||
"defaults": []
|
||||
"default_variants": ["Main"]
|
||||
},
|
||||
"CreateUSDModel": {
|
||||
"enabled": False,
|
||||
"defaults": []
|
||||
"default_variants": ["Main"]
|
||||
},
|
||||
"USDCreateShadingWorkspace": {
|
||||
"enabled": False,
|
||||
"defaults": []
|
||||
"default_variants": ["Main"]
|
||||
},
|
||||
"CreateUSDRender": {
|
||||
"enabled": False,
|
||||
"defaults": []
|
||||
}
|
||||
"default_variants": ["Main"]
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7,14 +7,14 @@ class CreateLookModel(BaseSettingsModel):
|
|||
enabled: bool = Field(title="Enabled")
|
||||
make_tx: bool = Field(title="Make tx files")
|
||||
rs_tex: bool = Field(title="Make Redshift texture files")
|
||||
defaults: list[str] = Field(
|
||||
default_factory=["Main"], title="Default Products"
|
||||
default_variants: list[str] = Field(
|
||||
default_factory=list, title="Default Products"
|
||||
)
|
||||
|
||||
|
||||
class BasicCreatorModel(BaseSettingsModel):
|
||||
enabled: bool = Field(title="Enabled")
|
||||
defaults: list[str] = Field(
|
||||
default_variants: list[str] = Field(
|
||||
default_factory=list,
|
||||
title="Default Products"
|
||||
)
|
||||
|
|
@ -22,20 +22,21 @@ class BasicCreatorModel(BaseSettingsModel):
|
|||
|
||||
class CreateUnrealStaticMeshModel(BaseSettingsModel):
|
||||
enabled: bool = Field(title="Enabled")
|
||||
defaults: list[str] = Field(
|
||||
default_factory=["", "_Main"],
|
||||
default_variants: list[str] = Field(
|
||||
default_factory=list,
|
||||
title="Default Products"
|
||||
)
|
||||
static_mesh_prefixes: str = Field("S", title="Static Mesh Prefix")
|
||||
collision_prefixes: list[str] = Field(
|
||||
default_factory=["UBX", "UCP", "USP", "UCX"],
|
||||
default_factory=list,
|
||||
title="Collision Prefixes"
|
||||
)
|
||||
|
||||
|
||||
class CreateUnrealSkeletalMeshModel(BaseSettingsModel):
|
||||
enabled: bool = Field(title="Enabled")
|
||||
defaults: list[str] = Field(default_factory=[], title="Default Products")
|
||||
default_variants: list[str] = Field(
|
||||
default_factory=list, title="Default Products")
|
||||
joint_hints: str = Field("jnt_org", title="Joint root hint")
|
||||
|
||||
|
||||
|
|
@ -48,7 +49,7 @@ class BasicExportMeshModel(BaseSettingsModel):
|
|||
enabled: bool = Field(title="Enabled")
|
||||
write_color_sets: bool = Field(title="Write Color Sets")
|
||||
write_face_sets: bool = Field(title="Write Face Sets")
|
||||
defaults: list[str] = Field(
|
||||
default_variants: list[str] = Field(
|
||||
default_factory=list,
|
||||
title="Default Products"
|
||||
)
|
||||
|
|
@ -61,7 +62,7 @@ class CreateAnimationModel(BaseSettingsModel):
|
|||
title="Include Parent Hierarchy")
|
||||
include_user_defined_attributes: bool = Field(
|
||||
title="Include User Defined Attributes")
|
||||
defaults: list[str] = Field(
|
||||
default_variants: list[str] = Field(
|
||||
default_factory=list,
|
||||
title="Default Products"
|
||||
)
|
||||
|
|
@ -74,8 +75,8 @@ class CreatePointCacheModel(BaseSettingsModel):
|
|||
include_user_defined_attributes: bool = Field(
|
||||
title="Include User Defined Attributes"
|
||||
)
|
||||
defaults: list[str] = Field(
|
||||
default_factory=["Main"],
|
||||
default_variants: list[str] = Field(
|
||||
default_factory=list,
|
||||
title="Default Products"
|
||||
)
|
||||
|
||||
|
|
@ -84,8 +85,8 @@ class CreateProxyAlembicModel(BaseSettingsModel):
|
|||
enabled: bool = Field(title="Enabled")
|
||||
write_color_sets: bool = Field(title="Write Color Sets")
|
||||
write_face_sets: bool = Field(title="Write Face Sets")
|
||||
defaults: list[str] = Field(
|
||||
default_factory=["Main"],
|
||||
default_variants: list[str] = Field(
|
||||
default_factory=list,
|
||||
title="Default Products"
|
||||
)
|
||||
|
||||
|
|
@ -115,7 +116,8 @@ class CreateVrayProxyModel(BaseSettingsModel):
|
|||
enabled: bool = Field(True)
|
||||
vrmesh: bool = Field(title="VrMesh")
|
||||
alembic: bool = Field(title="Alembic")
|
||||
defaults: list[str] = Field(default_factory=list, title="Default Products")
|
||||
default_variants: list[str] = Field(
|
||||
default_factory=list, title="Default Products")
|
||||
|
||||
|
||||
class CreatorsModel(BaseSettingsModel):
|
||||
|
|
@ -230,7 +232,7 @@ DEFAULT_CREATORS_SETTINGS = {
|
|||
},
|
||||
"CreateRender": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
|
|
@ -295,19 +297,19 @@ DEFAULT_CREATORS_SETTINGS = {
|
|||
},
|
||||
"CreateMultiverseUsd": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateMultiverseUsdComp": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateMultiverseUsdOver": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
|
|
@ -333,31 +335,31 @@ DEFAULT_CREATORS_SETTINGS = {
|
|||
},
|
||||
"CreateAssembly": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateCamera": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateLayout": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateMayaScene": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateRenderSetup": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
|
|
@ -370,7 +372,7 @@ DEFAULT_CREATORS_SETTINGS = {
|
|||
},
|
||||
"CreateRig": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main",
|
||||
"Sim",
|
||||
"Cloth"
|
||||
|
|
@ -378,7 +380,7 @@ DEFAULT_CREATORS_SETTINGS = {
|
|||
},
|
||||
"CreateSetDress": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main",
|
||||
"Anim"
|
||||
]
|
||||
|
|
@ -393,13 +395,13 @@ DEFAULT_CREATORS_SETTINGS = {
|
|||
},
|
||||
"CreateVRayScene": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
},
|
||||
"CreateYetiRig": {
|
||||
"enabled": True,
|
||||
"defaults": [
|
||||
"default_variants": [
|
||||
"Main"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue