mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Merge branch 'develop' into bugfix/maya-arnold-global-aov-mode
This commit is contained in:
commit
7e53b9d4fa
74 changed files with 331 additions and 216 deletions
|
|
@ -811,6 +811,43 @@ def get_current_context_template_data_with_folder_attrs():
|
|||
return template_data
|
||||
|
||||
|
||||
def set_review_color_space(opengl_node, review_color_space="", log=None):
|
||||
"""Set ociocolorspace parameter for the given OpenGL node.
|
||||
|
||||
Set `ociocolorspace` parameter of the given OpenGl node
|
||||
to to the given review_color_space value.
|
||||
If review_color_space is empty, a default colorspace corresponding to
|
||||
the display & view of the current Houdini session will be used.
|
||||
|
||||
Args:
|
||||
opengl_node (hou.Node): ROP node to set its ociocolorspace parm.
|
||||
review_color_space (str): Colorspace value for ociocolorspace parm.
|
||||
log (logging.Logger): Logger to log to.
|
||||
"""
|
||||
|
||||
if log is None:
|
||||
log = self.log
|
||||
|
||||
# Set Color Correction parameter to OpenColorIO
|
||||
colorcorrect_parm = opengl_node.parm("colorcorrect")
|
||||
if colorcorrect_parm.eval() != 2:
|
||||
colorcorrect_parm.set(2)
|
||||
log.debug(
|
||||
"'Color Correction' parm on '{}' has been set to"
|
||||
" 'OpenColorIO'".format(opengl_node.path())
|
||||
)
|
||||
|
||||
opengl_node.setParms(
|
||||
{"ociocolorspace": review_color_space}
|
||||
)
|
||||
|
||||
log.debug(
|
||||
"'OCIO Colorspace' parm on '{}' has been set to "
|
||||
"the view color space '{}'"
|
||||
.format(opengl_node, review_color_space)
|
||||
)
|
||||
|
||||
|
||||
def get_context_var_changes():
|
||||
"""get context var changes."""
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,58 @@
|
|||
from ayon_applications import PreLaunchHook, LaunchTypes
|
||||
|
||||
|
||||
class SetDefaultDisplayView(PreLaunchHook):
|
||||
"""Set default view and default display for houdini via OpenColorIO.
|
||||
|
||||
Houdini's defaultDisplay and defaultView are set by
|
||||
setting 'OCIO_ACTIVE_DISPLAYS' and 'OCIO_ACTIVE_VIEWS'
|
||||
environment variables respectively.
|
||||
|
||||
More info: https://www.sidefx.com/docs/houdini/io/ocio.html#set-up
|
||||
"""
|
||||
|
||||
app_groups = {"houdini"}
|
||||
launch_types = {LaunchTypes.local}
|
||||
|
||||
def execute(self):
|
||||
|
||||
OCIO = self.launch_context.env.get("OCIO")
|
||||
|
||||
# This is a cheap way to skip this hook if either global color
|
||||
# management or houdini color management was disabled because the
|
||||
# OCIO var would be set by the global OCIOEnvHook
|
||||
if not OCIO:
|
||||
return
|
||||
|
||||
houdini_color_settings = \
|
||||
self.data["project_settings"]["houdini"]["imageio"]["workfile"]
|
||||
|
||||
if not houdini_color_settings["enabled"]:
|
||||
self.log.info(
|
||||
"Houdini workfile color management is disabled."
|
||||
)
|
||||
return
|
||||
|
||||
# 'OCIO_ACTIVE_DISPLAYS', 'OCIO_ACTIVE_VIEWS' are checked
|
||||
# as Admins can add them in Ayon env vars or Ayon tools.
|
||||
|
||||
default_display = houdini_color_settings["default_display"]
|
||||
if default_display:
|
||||
# get 'OCIO_ACTIVE_DISPLAYS' value if exists.
|
||||
self._set_context_env("OCIO_ACTIVE_DISPLAYS", default_display)
|
||||
|
||||
default_view = houdini_color_settings["default_view"]
|
||||
if default_view:
|
||||
# get 'OCIO_ACTIVE_VIEWS' value if exists.
|
||||
self._set_context_env("OCIO_ACTIVE_VIEWS", default_view)
|
||||
|
||||
def _set_context_env(self, env_var, default_value):
|
||||
env_value = self.launch_context.env.get(env_var, "")
|
||||
new_value = ":".join(
|
||||
key for key in [default_value, env_value] if key
|
||||
)
|
||||
self.log.info(
|
||||
"Setting {} environment to: {}"
|
||||
.format(env_var, new_value)
|
||||
)
|
||||
self.launch_context.env[env_var] = new_value
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin for creating openGL reviews."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_core.hosts.houdini.api import lib, plugin
|
||||
from ayon_core.lib import EnumDef, BoolDef, NumberDef
|
||||
|
||||
import os
|
||||
|
|
@ -14,6 +14,13 @@ class CreateReview(plugin.HoudiniCreator):
|
|||
label = "Review"
|
||||
product_type = "review"
|
||||
icon = "video-camera"
|
||||
review_color_space = ""
|
||||
|
||||
def apply_settings(self, project_settings):
|
||||
super(CreateReview, self).apply_settings(project_settings)
|
||||
color_settings = project_settings["houdini"]["imageio"]["workfile"]
|
||||
if color_settings["enabled"]:
|
||||
self.review_color_space = color_settings.get("review_color_space")
|
||||
|
||||
def create(self, product_name, instance_data, pre_create_data):
|
||||
|
||||
|
|
@ -85,10 +92,20 @@ class CreateReview(plugin.HoudiniCreator):
|
|||
|
||||
instance_node.setParms(parms)
|
||||
|
||||
# Set OCIO Colorspace to the default output colorspace
|
||||
# Set OCIO Colorspace to the default colorspace
|
||||
# if there's OCIO
|
||||
if os.getenv("OCIO"):
|
||||
self.set_colorcorrect_to_default_view_space(instance_node)
|
||||
# Fall to the default value if cls.review_color_space is empty.
|
||||
if not self.review_color_space:
|
||||
# cls.review_color_space is an empty string
|
||||
# when the imageio/workfile setting is disabled or
|
||||
# when the Review colorspace setting is empty.
|
||||
from ayon_core.hosts.houdini.api.colorspace import get_default_display_view_colorspace # noqa
|
||||
self.review_color_space = get_default_display_view_colorspace()
|
||||
|
||||
lib.set_review_color_space(instance_node,
|
||||
self.review_color_space,
|
||||
self.log)
|
||||
|
||||
to_lock = ["id", "productType"]
|
||||
|
||||
|
|
@ -131,23 +148,3 @@ class CreateReview(plugin.HoudiniCreator):
|
|||
minimum=0.0001,
|
||||
decimals=3)
|
||||
]
|
||||
|
||||
def set_colorcorrect_to_default_view_space(self,
|
||||
instance_node):
|
||||
"""Set ociocolorspace to the default output space."""
|
||||
from ayon_core.hosts.houdini.api.colorspace import get_default_display_view_colorspace # noqa
|
||||
|
||||
# set Color Correction parameter to OpenColorIO
|
||||
instance_node.setParms({"colorcorrect": 2})
|
||||
|
||||
# Get default view space for ociocolorspace parm.
|
||||
default_view_space = get_default_display_view_colorspace()
|
||||
instance_node.setParms(
|
||||
{"ociocolorspace": default_view_space}
|
||||
)
|
||||
|
||||
self.log.debug(
|
||||
"'OCIO Colorspace' parm on '{}' has been set to "
|
||||
"the default view color space '{}'"
|
||||
.format(instance_node, default_view_space)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@ from ayon_core.hosts.houdini.api.lib import render_rop, splitext
|
|||
import hou
|
||||
|
||||
|
||||
class ExtractComposite(publish.Extractor):
|
||||
class ExtractComposite(publish.Extractor,
|
||||
publish.ColormanagedPyblishPluginMixin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder
|
||||
label = "Extract Composite (Image Sequence)"
|
||||
|
|
@ -45,8 +46,14 @@ class ExtractComposite(publish.Extractor):
|
|||
"frameEnd": instance.data["frameEndHandle"],
|
||||
}
|
||||
|
||||
from pprint import pformat
|
||||
|
||||
self.log.info(pformat(representation))
|
||||
if ext.lower() == "exr":
|
||||
# Inject colorspace with 'scene_linear' as that's the
|
||||
# default Houdini working colorspace and all extracted
|
||||
# OpenEXR images should be in that colorspace.
|
||||
# https://www.sidefx.com/docs/houdini/render/linear.html#image-formats
|
||||
self.set_representation_colorspace(
|
||||
representation, instance.context,
|
||||
colorspace="scene_linear"
|
||||
)
|
||||
|
||||
instance.data["representations"].append(representation)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,8 @@ from ayon_core.hosts.houdini.api.lib import render_rop
|
|||
import hou
|
||||
|
||||
|
||||
class ExtractOpenGL(publish.Extractor):
|
||||
class ExtractOpenGL(publish.Extractor,
|
||||
publish.ColormanagedPyblishPluginMixin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder - 0.01
|
||||
label = "Extract OpenGL"
|
||||
|
|
@ -46,6 +47,14 @@ class ExtractOpenGL(publish.Extractor):
|
|||
"camera_name": instance.data.get("review_camera")
|
||||
}
|
||||
|
||||
if ropnode.evalParm("colorcorrect") == 2: # OpenColorIO enabled
|
||||
colorspace = ropnode.evalParm("ociocolorspace")
|
||||
# inject colorspace data
|
||||
self.set_representation_colorspace(
|
||||
representation, instance.context,
|
||||
colorspace=colorspace
|
||||
)
|
||||
|
||||
if "representations" not in instance.data:
|
||||
instance.data["representations"] = []
|
||||
instance.data["representations"].append(representation)
|
||||
|
|
|
|||
|
|
@ -4,15 +4,19 @@ from ayon_core.pipeline import (
|
|||
PublishValidationError,
|
||||
OptionalPyblishPluginMixin
|
||||
)
|
||||
from ayon_core.pipeline.publish import RepairAction
|
||||
from ayon_core.pipeline.publish import (
|
||||
RepairAction,
|
||||
get_plugin_settings,
|
||||
apply_plugin_settings_automatically
|
||||
)
|
||||
from ayon_core.hosts.houdini.api.action import SelectROPAction
|
||||
|
||||
import os
|
||||
import hou
|
||||
|
||||
|
||||
class SetDefaultViewSpaceAction(RepairAction):
|
||||
label = "Set default view colorspace"
|
||||
class ResetViewSpaceAction(RepairAction):
|
||||
label = "Reset OCIO colorspace parm"
|
||||
icon = "mdi.monitor"
|
||||
|
||||
|
||||
|
|
@ -27,9 +31,25 @@ class ValidateReviewColorspace(pyblish.api.InstancePlugin,
|
|||
families = ["review"]
|
||||
hosts = ["houdini"]
|
||||
label = "Validate Review Colorspace"
|
||||
actions = [SetDefaultViewSpaceAction, SelectROPAction]
|
||||
actions = [ResetViewSpaceAction, SelectROPAction]
|
||||
|
||||
optional = True
|
||||
review_color_space = ""
|
||||
|
||||
@classmethod
|
||||
def apply_settings(cls, project_settings):
|
||||
# Preserve automatic settings applying logic
|
||||
settings = get_plugin_settings(plugin=cls,
|
||||
project_settings=project_settings,
|
||||
log=cls.log,
|
||||
category="houdini")
|
||||
apply_plugin_settings_automatically(cls, settings, logger=cls.log)
|
||||
|
||||
# Add review color settings
|
||||
color_settings = project_settings["houdini"]["imageio"]["workfile"]
|
||||
if color_settings["enabled"]:
|
||||
cls.review_color_space = color_settings.get("review_color_space")
|
||||
|
||||
|
||||
def process(self, instance):
|
||||
|
||||
|
|
@ -52,39 +72,54 @@ class ValidateReviewColorspace(pyblish.api.InstancePlugin,
|
|||
" 'OpenColorIO'".format(rop_node.path())
|
||||
)
|
||||
|
||||
if rop_node.evalParm("ociocolorspace") not in \
|
||||
hou.Color.ocio_spaces():
|
||||
|
||||
current_color_space = rop_node.evalParm("ociocolorspace")
|
||||
if current_color_space not in hou.Color.ocio_spaces():
|
||||
raise PublishValidationError(
|
||||
"Invalid value: Colorspace name doesn't exist.\n"
|
||||
"Check 'OCIO Colorspace' parameter on '{}' ROP"
|
||||
.format(rop_node.path())
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def repair(cls, instance):
|
||||
"""Set Default View Space Action.
|
||||
# if houdini/imageio/workfile is enabled and
|
||||
# Review colorspace setting is empty then this check should
|
||||
# actually check if the current_color_space setting equals
|
||||
# the default colorspace value.
|
||||
# However, it will make the black cmd screen show up more often
|
||||
# which is very annoying.
|
||||
if self.review_color_space and \
|
||||
self.review_color_space != current_color_space:
|
||||
|
||||
It is a helper action more than a repair action,
|
||||
used to set colorspace on opengl node to the default view.
|
||||
"""
|
||||
from ayon_core.hosts.houdini.api.colorspace import get_default_display_view_colorspace # noqa
|
||||
|
||||
rop_node = hou.node(instance.data["instance_node"])
|
||||
|
||||
if rop_node.evalParm("colorcorrect") != 2:
|
||||
rop_node.setParms({"colorcorrect": 2})
|
||||
cls.log.debug(
|
||||
"'Color Correction' parm on '{}' has been set to"
|
||||
" 'OpenColorIO'".format(rop_node.path())
|
||||
raise PublishValidationError(
|
||||
"Invalid value: Colorspace name doesn't match"
|
||||
"the Colorspace specified in settings."
|
||||
)
|
||||
|
||||
# Get default view colorspace name
|
||||
default_view_space = get_default_display_view_colorspace()
|
||||
@classmethod
|
||||
def repair(cls, instance):
|
||||
"""Reset view colorspace.
|
||||
|
||||
rop_node.setParms({"ociocolorspace": default_view_space})
|
||||
cls.log.info(
|
||||
"'OCIO Colorspace' parm on '{}' has been set to "
|
||||
"the default view color space '{}'"
|
||||
.format(rop_node, default_view_space)
|
||||
)
|
||||
It is used to set colorspace on opengl node.
|
||||
|
||||
It uses the colorspace value specified in the Houdini addon settings.
|
||||
If the value in the Houdini addon settings is empty,
|
||||
it will fall to the default colorspace.
|
||||
|
||||
Note:
|
||||
This repair action assumes that OCIO is enabled.
|
||||
As if OCIO is disabled the whole validation is skipped
|
||||
and this repair action won't show up.
|
||||
"""
|
||||
from ayon_core.hosts.houdini.api.lib import set_review_color_space
|
||||
|
||||
# Fall to the default value if cls.review_color_space is empty.
|
||||
if not cls.review_color_space:
|
||||
# cls.review_color_space is an empty string
|
||||
# when the imageio/workfile setting is disabled or
|
||||
# when the Review colorspace setting is empty.
|
||||
from ayon_core.hosts.houdini.api.colorspace import get_default_display_view_colorspace # noqa
|
||||
cls.review_color_space = get_default_display_view_colorspace()
|
||||
|
||||
rop_node = hou.node(instance.data["instance_node"])
|
||||
set_review_color_space(rop_node,
|
||||
cls.review_color_space,
|
||||
cls.log)
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ class ExtractAlembic(publish.Extractor,
|
|||
hosts = ["max"]
|
||||
families = ["pointcache"]
|
||||
optional = True
|
||||
active = True
|
||||
|
||||
def process(self, instance):
|
||||
if not self.is_active(instance.data):
|
||||
|
|
@ -102,24 +103,27 @@ class ExtractAlembic(publish.Extractor,
|
|||
|
||||
@classmethod
|
||||
def get_attribute_defs(cls):
|
||||
return [
|
||||
defs = super(ExtractAlembic, cls).get_attribute_defs()
|
||||
defs.extend([
|
||||
BoolDef("custom_attrs",
|
||||
label="Custom Attributes",
|
||||
default=False),
|
||||
]
|
||||
])
|
||||
return defs
|
||||
|
||||
|
||||
class ExtractCameraAlembic(ExtractAlembic):
|
||||
"""Extract Camera with AlembicExport."""
|
||||
|
||||
label = "Extract Alembic Camera"
|
||||
families = ["camera"]
|
||||
optional = True
|
||||
|
||||
|
||||
class ExtractModel(ExtractAlembic):
|
||||
class ExtractModelAlembic(ExtractAlembic):
|
||||
"""Extract Geometry in Alembic Format"""
|
||||
label = "Extract Geometry (Alembic)"
|
||||
families = ["model"]
|
||||
optional = True
|
||||
|
||||
def _set_abc_attributes(self, instance):
|
||||
attr_values = self.get_attr_values_from_data(instance.data)
|
||||
|
|
|
|||
3
server_addon/aftereffects/package.py
Normal file
3
server_addon/aftereffects/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "aftereffects"
|
||||
title = "AfterEffects"
|
||||
version = "0.1.3"
|
||||
|
|
@ -1,14 +1,9 @@
|
|||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .settings import AfterEffectsSettings, DEFAULT_AFTEREFFECTS_SETTING
|
||||
from .version import __version__
|
||||
|
||||
|
||||
class AfterEffects(BaseServerAddon):
|
||||
name = "aftereffects"
|
||||
title = "AfterEffects"
|
||||
version = __version__
|
||||
|
||||
settings_model = AfterEffectsSettings
|
||||
|
||||
async def get_default_settings(self):
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Package declaring addon version."""
|
||||
__version__ = "0.1.3"
|
||||
3
server_addon/blender/package.py
Normal file
3
server_addon/blender/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "blender"
|
||||
title = "Blender"
|
||||
version = "0.1.8"
|
||||
|
|
@ -2,17 +2,11 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import BlenderSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class BlenderAddon(BaseServerAddon):
|
||||
name = "blender"
|
||||
title = "Blender"
|
||||
version = __version__
|
||||
settings_model: Type[BlenderSettings] = BlenderSettings
|
||||
frontend_scopes = {}
|
||||
services = {}
|
||||
|
||||
async def get_default_settings(self):
|
||||
settings_model_cls = self.get_settings_model()
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.8"
|
||||
3
server_addon/celaction/package.py
Normal file
3
server_addon/celaction/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "celaction"
|
||||
title = "CelAction"
|
||||
version = "0.1.0"
|
||||
|
|
@ -2,17 +2,11 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import CelActionSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class CelActionAddon(BaseServerAddon):
|
||||
name = "celaction"
|
||||
title = "CelAction"
|
||||
version = __version__
|
||||
settings_model: Type[CelActionSettings] = CelActionSettings
|
||||
frontend_scopes = {}
|
||||
services = {}
|
||||
|
||||
async def get_default_settings(self):
|
||||
settings_model_cls = self.get_settings_model()
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.0"
|
||||
3
server_addon/clockify/package.py
Normal file
3
server_addon/clockify/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "clockify"
|
||||
title = "Clockify"
|
||||
version = "0.1.1"
|
||||
|
|
@ -2,14 +2,8 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import ClockifySettings
|
||||
|
||||
|
||||
class ClockifyAddon(BaseServerAddon):
|
||||
name = "clockify"
|
||||
title = "Clockify"
|
||||
version = __version__
|
||||
settings_model: Type[ClockifySettings] = ClockifySettings
|
||||
frontend_scopes = {}
|
||||
services = {}
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.1"
|
||||
|
|
@ -245,12 +245,8 @@ def create_addon_package(
|
|||
keep_source: bool,
|
||||
):
|
||||
src_package_py = addon_dir / "package.py"
|
||||
package = None
|
||||
if src_package_py.exists():
|
||||
package = import_filepath(src_package_py)
|
||||
addon_version = package.version
|
||||
else:
|
||||
addon_version = get_addon_version(addon_dir)
|
||||
package = import_filepath(src_package_py)
|
||||
addon_version = package.version
|
||||
|
||||
addon_output_dir = output_dir / addon_dir.name / addon_version
|
||||
if addon_output_dir.exists():
|
||||
|
|
@ -259,18 +255,7 @@ def create_addon_package(
|
|||
|
||||
# Copy server content
|
||||
dst_package_py = addon_output_dir / "package.py"
|
||||
if package is not None:
|
||||
shutil.copy(src_package_py, dst_package_py)
|
||||
else:
|
||||
addon_name = addon_dir.name
|
||||
if addon_name == "royal_render":
|
||||
addon_name = "royalrender"
|
||||
package_py_content = PACKAGE_PY_TEMPLATE.format(
|
||||
addon_name=addon_name, addon_version=addon_version
|
||||
)
|
||||
|
||||
with open(dst_package_py, "w+") as pkg_py:
|
||||
pkg_py.write(package_py_content)
|
||||
shutil.copy(src_package_py, dst_package_py)
|
||||
|
||||
server_dir = addon_dir / "server"
|
||||
shutil.copytree(
|
||||
|
|
|
|||
3
server_addon/deadline/package.py
Normal file
3
server_addon/deadline/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "deadline"
|
||||
title = "Deadline"
|
||||
version = "0.1.10"
|
||||
|
|
@ -2,14 +2,10 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import DeadlineSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class Deadline(BaseServerAddon):
|
||||
name = "deadline"
|
||||
title = "Deadline"
|
||||
version = __version__
|
||||
settings_model: Type[DeadlineSettings] = DeadlineSettings
|
||||
|
||||
async def get_default_settings(self):
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.10"
|
||||
3
server_addon/flame/package.py
Normal file
3
server_addon/flame/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "flame"
|
||||
title = "Flame"
|
||||
version = "0.1.0"
|
||||
|
|
@ -2,17 +2,11 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import FlameSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class FlameAddon(BaseServerAddon):
|
||||
name = "flame"
|
||||
title = "Flame"
|
||||
version = __version__
|
||||
settings_model: Type[FlameSettings] = FlameSettings
|
||||
frontend_scopes = {}
|
||||
services = {}
|
||||
|
||||
async def get_default_settings(self):
|
||||
settings_model_cls = self.get_settings_model()
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.0"
|
||||
3
server_addon/fusion/package.py
Normal file
3
server_addon/fusion/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "fusion"
|
||||
title = "Fusion"
|
||||
version = "0.1.5"
|
||||
|
|
@ -2,17 +2,11 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import FusionSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class FusionAddon(BaseServerAddon):
|
||||
name = "fusion"
|
||||
title = "Fusion"
|
||||
version = __version__
|
||||
settings_model: Type[FusionSettings] = FusionSettings
|
||||
frontend_scopes = {}
|
||||
services = {}
|
||||
|
||||
async def get_default_settings(self):
|
||||
settings_model_cls = self.get_settings_model()
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.5"
|
||||
3
server_addon/harmony/package.py
Normal file
3
server_addon/harmony/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "harmony"
|
||||
title = "Harmony"
|
||||
version = "0.1.2"
|
||||
|
|
@ -1,14 +1,9 @@
|
|||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .settings import HarmonySettings, DEFAULT_HARMONY_SETTING
|
||||
from .version import __version__
|
||||
|
||||
|
||||
class Harmony(BaseServerAddon):
|
||||
name = "harmony"
|
||||
title = "Harmony"
|
||||
version = __version__
|
||||
|
||||
settings_model = HarmonySettings
|
||||
|
||||
async def get_default_settings(self):
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Package declaring addon version."""
|
||||
__version__ = "0.1.2"
|
||||
3
server_addon/hiero/package.py
Normal file
3
server_addon/hiero/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "hiero"
|
||||
title = "Hiero"
|
||||
version = "0.1.2"
|
||||
|
|
@ -2,17 +2,11 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import HieroSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class HieroAddon(BaseServerAddon):
|
||||
name = "hiero"
|
||||
title = "Hiero"
|
||||
version = __version__
|
||||
settings_model: Type[HieroSettings] = HieroSettings
|
||||
frontend_scopes = {}
|
||||
services = {}
|
||||
|
||||
async def get_default_settings(self):
|
||||
settings_model_cls = self.get_settings_model()
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.2"
|
||||
3
server_addon/houdini/package.py
Normal file
3
server_addon/houdini/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "houdini"
|
||||
title = "Houdini"
|
||||
version = "0.2.13"
|
||||
|
|
@ -2,14 +2,10 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import HoudiniSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class Houdini(BaseServerAddon):
|
||||
name = "houdini"
|
||||
title = "Houdini"
|
||||
version = __version__
|
||||
settings_model: Type[HoudiniSettings] = HoudiniSettings
|
||||
|
||||
async def get_default_settings(self):
|
||||
|
|
|
|||
|
|
@ -34,6 +34,34 @@ class ImageIOFileRulesModel(BaseSettingsModel):
|
|||
return value
|
||||
|
||||
|
||||
class WorkfileImageIOModel(BaseSettingsModel):
|
||||
"""Workfile settings help.
|
||||
|
||||
Empty values will be skipped, allowing any existing env vars to
|
||||
pass through as defined.
|
||||
|
||||
Note: The render space in Houdini is
|
||||
always set to the 'scene_linear' role."""
|
||||
|
||||
enabled: bool = SettingsField(False, title="Enabled")
|
||||
default_display: str = SettingsField(
|
||||
title="Default active displays",
|
||||
description="It behaves like the 'OCIO_ACTIVE_DISPLAYS' env var,"
|
||||
" Colon-separated list of displays, e.g ACES:P3"
|
||||
)
|
||||
default_view: str = SettingsField(
|
||||
title="Default active views",
|
||||
description="It behaves like the 'OCIO_ACTIVE_VIEWS' env var,"
|
||||
" Colon-separated list of views, e.g sRGB:DCDM"
|
||||
)
|
||||
review_color_space: str = SettingsField(
|
||||
title="Review colorspace",
|
||||
description="It exposes OCIO Colorspace parameter in opengl nodes."
|
||||
"if left empty, Ayon will figure out the default "
|
||||
"colorspace using your default display and default view."
|
||||
)
|
||||
|
||||
|
||||
class HoudiniImageIOModel(BaseSettingsModel):
|
||||
activate_host_color_management: bool = SettingsField(
|
||||
True, title="Enable Color Management"
|
||||
|
|
@ -46,3 +74,26 @@ class HoudiniImageIOModel(BaseSettingsModel):
|
|||
default_factory=ImageIOFileRulesModel,
|
||||
title="File Rules"
|
||||
)
|
||||
workfile: WorkfileImageIOModel = SettingsField(
|
||||
default_factory=WorkfileImageIOModel,
|
||||
title="Workfile"
|
||||
)
|
||||
|
||||
|
||||
DEFAULT_IMAGEIO_SETTINGS = {
|
||||
"activate_host_color_management": False,
|
||||
"ocio_config": {
|
||||
"override_global_config": False,
|
||||
"filepath": []
|
||||
},
|
||||
"file_rules": {
|
||||
"activate_host_rules": False,
|
||||
"rules": []
|
||||
},
|
||||
"workfile": {
|
||||
"enabled": False,
|
||||
"default_display": "ACES",
|
||||
"default_view": "sRGB",
|
||||
"review_color_space": ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,10 @@ from .general import (
|
|||
GeneralSettingsModel,
|
||||
DEFAULT_GENERAL_SETTINGS
|
||||
)
|
||||
from .imageio import HoudiniImageIOModel
|
||||
from .imageio import (
|
||||
HoudiniImageIOModel,
|
||||
DEFAULT_IMAGEIO_SETTINGS
|
||||
)
|
||||
from .shelves import ShelvesModel
|
||||
from .create import (
|
||||
CreatePluginsModel,
|
||||
|
|
@ -40,6 +43,7 @@ class HoudiniSettings(BaseSettingsModel):
|
|||
|
||||
DEFAULT_VALUES = {
|
||||
"general": DEFAULT_GENERAL_SETTINGS,
|
||||
"imageio": DEFAULT_IMAGEIO_SETTINGS,
|
||||
"shelves": [],
|
||||
"create": DEFAULT_HOUDINI_CREATE_SETTINGS,
|
||||
"publish": DEFAULT_HOUDINI_PUBLISH_SETTINGS
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.2.12"
|
||||
3
server_addon/max/package.py
Normal file
3
server_addon/max/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "max"
|
||||
title = "Max"
|
||||
version = "0.1.7"
|
||||
|
|
@ -2,14 +2,10 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import MaxSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class MaxAddon(BaseServerAddon):
|
||||
name = "max"
|
||||
title = "Max"
|
||||
version = __version__
|
||||
settings_model: Type[MaxSettings] = MaxSettings
|
||||
|
||||
async def get_default_settings(self):
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.7"
|
||||
3
server_addon/maya/package.py
Normal file
3
server_addon/maya/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "maya"
|
||||
title = "Maya"
|
||||
version = "0.1.16"
|
||||
|
|
@ -2,13 +2,9 @@
|
|||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .settings.main import MayaSettings, DEFAULT_MAYA_SETTING
|
||||
from .version import __version__
|
||||
|
||||
|
||||
class MayaAddon(BaseServerAddon):
|
||||
name = "maya"
|
||||
title = "Maya"
|
||||
version = __version__
|
||||
settings_model = MayaSettings
|
||||
|
||||
async def get_default_settings(self):
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Package declaring addon version."""
|
||||
__version__ = "0.1.16"
|
||||
3
server_addon/nuke/package.py
Normal file
3
server_addon/nuke/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "nuke"
|
||||
title = "Nuke"
|
||||
version = "0.1.10"
|
||||
|
|
@ -2,14 +2,10 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import NukeSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class NukeAddon(BaseServerAddon):
|
||||
name = "nuke"
|
||||
title = "Nuke"
|
||||
version = __version__
|
||||
settings_model: Type[NukeSettings] = NukeSettings
|
||||
|
||||
async def get_default_settings(self):
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.10"
|
||||
3
server_addon/photoshop/package.py
Normal file
3
server_addon/photoshop/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "photoshop"
|
||||
title = "Photoshop"
|
||||
version = "0.1.2"
|
||||
|
|
@ -1,14 +1,9 @@
|
|||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .settings import PhotoshopSettings, DEFAULT_PHOTOSHOP_SETTING
|
||||
from .version import __version__
|
||||
|
||||
|
||||
class Photoshop(BaseServerAddon):
|
||||
name = "photoshop"
|
||||
title = "Photoshop"
|
||||
version = __version__
|
||||
|
||||
settings_model = PhotoshopSettings
|
||||
|
||||
async def get_default_settings(self):
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Package declaring addon version."""
|
||||
__version__ = "0.1.2"
|
||||
3
server_addon/resolve/package.py
Normal file
3
server_addon/resolve/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "resolve"
|
||||
title = "DaVinci Resolve"
|
||||
version = "0.1.0"
|
||||
|
|
@ -2,17 +2,11 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import ResolveSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class ResolveAddon(BaseServerAddon):
|
||||
name = "resolve"
|
||||
title = "DaVinci Resolve"
|
||||
version = __version__
|
||||
settings_model: Type[ResolveSettings] = ResolveSettings
|
||||
frontend_scopes = {}
|
||||
services = {}
|
||||
|
||||
async def get_default_settings(self):
|
||||
settings_model_cls = self.get_settings_model()
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.0"
|
||||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.1"
|
||||
3
server_addon/royalrender/package.py
Normal file
3
server_addon/royalrender/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "royalrender"
|
||||
title = "Royal Render"
|
||||
version = "0.1.1"
|
||||
|
|
@ -2,14 +2,10 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import RoyalRenderSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class RoyalRenderAddon(BaseServerAddon):
|
||||
name = "royalrender"
|
||||
version = __version__
|
||||
title = "Royal Render"
|
||||
settings_model: Type[RoyalRenderSettings] = RoyalRenderSettings
|
||||
|
||||
async def get_default_settings(self):
|
||||
3
server_addon/substancepainter/package.py
Normal file
3
server_addon/substancepainter/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "substancepainter"
|
||||
title = "Substance Painter"
|
||||
version = "0.1.1"
|
||||
|
|
@ -2,14 +2,10 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import SubstancePainterSettings, DEFAULT_SPAINTER_SETTINGS
|
||||
|
||||
|
||||
class SubstancePainterAddon(BaseServerAddon):
|
||||
name = "substancepainter"
|
||||
title = "Substance Painter"
|
||||
version = __version__
|
||||
settings_model: Type[SubstancePainterSettings] = SubstancePainterSettings
|
||||
|
||||
async def get_default_settings(self):
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.1"
|
||||
3
server_addon/timers_manager/package.py
Normal file
3
server_addon/timers_manager/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "timers_manager"
|
||||
title = "Timers Manager"
|
||||
version = "0.1.1"
|
||||
|
|
@ -2,12 +2,8 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import TimersManagerSettings
|
||||
|
||||
|
||||
class TimersManagerAddon(BaseServerAddon):
|
||||
name = "timers_manager"
|
||||
version = __version__
|
||||
title = "Timers Manager"
|
||||
settings_model: Type[TimersManagerSettings] = TimersManagerSettings
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.1"
|
||||
3
server_addon/traypublisher/package.py
Normal file
3
server_addon/traypublisher/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "traypublisher"
|
||||
title = "TrayPublisher"
|
||||
version = "0.1.4"
|
||||
|
|
@ -1,14 +1,9 @@
|
|||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import TraypublisherSettings, DEFAULT_TRAYPUBLISHER_SETTING
|
||||
|
||||
|
||||
class Traypublisher(BaseServerAddon):
|
||||
name = "traypublisher"
|
||||
title = "TrayPublisher"
|
||||
version = __version__
|
||||
|
||||
settings_model = TraypublisherSettings
|
||||
|
||||
async def get_default_settings(self):
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Package declaring addon version."""
|
||||
__version__ = "0.1.4"
|
||||
3
server_addon/tvpaint/package.py
Normal file
3
server_addon/tvpaint/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "tvpaint"
|
||||
title = "TVPaint"
|
||||
version = "0.1.2"
|
||||
|
|
@ -2,14 +2,10 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import TvpaintSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class TvpaintAddon(BaseServerAddon):
|
||||
name = "tvpaint"
|
||||
title = "TVPaint"
|
||||
version = __version__
|
||||
settings_model: Type[TvpaintSettings] = TvpaintSettings
|
||||
|
||||
async def get_default_settings(self):
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.2"
|
||||
3
server_addon/unreal/package.py
Normal file
3
server_addon/unreal/package.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
name = "unreal"
|
||||
title = "Unreal"
|
||||
version = "0.1.0"
|
||||
|
|
@ -2,17 +2,11 @@ from typing import Type
|
|||
|
||||
from ayon_server.addons import BaseServerAddon
|
||||
|
||||
from .version import __version__
|
||||
from .settings import UnrealSettings, DEFAULT_VALUES
|
||||
|
||||
|
||||
class UnrealAddon(BaseServerAddon):
|
||||
name = "unreal"
|
||||
title = "Unreal"
|
||||
version = __version__
|
||||
settings_model: Type[UnrealSettings] = UnrealSettings
|
||||
frontend_scopes = {}
|
||||
services = {}
|
||||
|
||||
async def get_default_settings(self):
|
||||
settings_model_cls = self.get_settings_model()
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.0"
|
||||
Loading…
Add table
Add a link
Reference in a new issue