mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Merge branch 'develop' into enhancement/addon-version
This commit is contained in:
commit
bf81dd166a
139 changed files with 512 additions and 443 deletions
|
|
@ -62,6 +62,7 @@ MOVED_ADDON_MILESTONE_VERSIONS = {
|
|||
"nuke": VersionInfo(0, 2, 0),
|
||||
"resolve": VersionInfo(0, 2, 0),
|
||||
"substancepainter": VersionInfo(0, 2, 0),
|
||||
"houdini": VersionInfo(0, 3, 0),
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import attr
|
||||
import hou
|
||||
from ayon_core.hosts.houdini.api.lib import get_color_management_preferences
|
||||
from ayon_houdini.api.lib import get_color_management_preferences
|
||||
from ayon_core.pipeline.colorspace import get_display_view_colorspace_name
|
||||
|
||||
@attr.s
|
||||
|
|
@ -35,7 +35,7 @@ CATEGORY_GENERIC_TOOL = {
|
|||
|
||||
|
||||
CREATE_SCRIPT = """
|
||||
from ayon_core.hosts.houdini.api.creator_node_shelves import create_interactive
|
||||
from ayon_houdini.api.creator_node_shelves import create_interactive
|
||||
create_interactive("{identifier}", **kwargs)
|
||||
"""
|
||||
|
||||
|
|
@ -153,7 +153,7 @@ def install():
|
|||
This function is re-entrant and can be called again to reinstall and
|
||||
update the node definitions. For example during development it can be
|
||||
useful to call it manually:
|
||||
>>> from ayon_core.hosts.houdini.api.creator_node_shelves import install
|
||||
>>> from ayon_houdini.api.creator_node_shelves import install
|
||||
>>> install()
|
||||
|
||||
Returns:
|
||||
|
|
@ -1027,7 +1027,7 @@ def add_self_publish_button(node):
|
|||
button_parm = hou.ButtonParmTemplate(
|
||||
"ayon_self_publish",
|
||||
"{} Publish".format(label),
|
||||
script_callback="from ayon_core.hosts.houdini.api.lib import "
|
||||
script_callback="from ayon_houdini.api.lib import "
|
||||
"self_publish; self_publish()",
|
||||
script_callback_language=hou.scriptLanguage.Python,
|
||||
join_with_next=True
|
||||
|
|
@ -1070,7 +1070,7 @@ def sceneview_snapshot(
|
|||
Example:
|
||||
This is how the function can be used::
|
||||
|
||||
from ayon_core.hosts.houdini.api import lib
|
||||
from ayon_houdini.api import lib
|
||||
sceneview = hou.ui.paneTabOfType(hou.paneTabType.SceneViewer)
|
||||
lib.sceneview_snapshot(sceneview)
|
||||
|
||||
|
|
@ -17,8 +17,8 @@ from ayon_core.pipeline import (
|
|||
AYON_CONTAINER_ID,
|
||||
)
|
||||
from ayon_core.pipeline.load import any_outdated_containers
|
||||
from ayon_core.hosts.houdini import HOUDINI_HOST_DIR
|
||||
from ayon_core.hosts.houdini.api import lib, shelves, creator_node_shelves
|
||||
from ayon_houdini import HOUDINI_HOST_DIR
|
||||
from ayon_houdini.api import lib, shelves, creator_node_shelves
|
||||
|
||||
from ayon_core.lib import (
|
||||
register_event_callback,
|
||||
|
|
@ -26,7 +26,7 @@ from ayon_core.lib import (
|
|||
)
|
||||
|
||||
|
||||
log = logging.getLogger("ayon_core.hosts.houdini")
|
||||
log = logging.getLogger("ayon_houdini")
|
||||
|
||||
AVALON_CONTAINERS = "/obj/AVALON_CONTAINERS"
|
||||
CONTEXT_CONTAINER = "/obj/OpenPypeContext"
|
||||
|
|
@ -7,6 +7,7 @@ from abc import (
|
|||
import six
|
||||
import hou
|
||||
|
||||
import pyblish.api
|
||||
from ayon_core.pipeline import (
|
||||
CreatorError,
|
||||
LegacyCreator,
|
||||
|
|
@ -14,11 +15,17 @@ from ayon_core.pipeline import (
|
|||
CreatedInstance,
|
||||
AYON_INSTANCE_ID,
|
||||
AVALON_INSTANCE_ID,
|
||||
load,
|
||||
publish
|
||||
)
|
||||
from ayon_core.lib import BoolDef
|
||||
|
||||
from .lib import imprint, read, lsattr, add_self_publish_button
|
||||
|
||||
|
||||
SETTINGS_CATEGORY = "houdini"
|
||||
|
||||
|
||||
class Creator(LegacyCreator):
|
||||
"""Creator plugin to create instances in Houdini
|
||||
|
||||
|
|
@ -169,6 +176,8 @@ class HoudiniCreator(NewCreator, HoudiniCreatorBase):
|
|||
settings_name = None
|
||||
add_publish_button = False
|
||||
|
||||
settings_category = SETTINGS_CATEGORY
|
||||
|
||||
def create(self, product_name, instance_data, pre_create_data):
|
||||
try:
|
||||
self.selected_nodes = []
|
||||
|
|
@ -347,3 +356,39 @@ class HoudiniCreator(NewCreator, HoudiniCreatorBase):
|
|||
|
||||
for key, value in settings.items():
|
||||
setattr(self, key, value)
|
||||
|
||||
|
||||
class HoudiniLoader(load.LoaderPlugin):
|
||||
"""Base class for Houdini load plugins."""
|
||||
|
||||
hosts = ["houdini"]
|
||||
settings_category = SETTINGS_CATEGORY
|
||||
|
||||
|
||||
class HoudiniInstancePlugin(pyblish.api.InstancePlugin):
|
||||
"""Base class for Houdini instance publish plugins."""
|
||||
|
||||
hosts = ["houdini"]
|
||||
settings_category = SETTINGS_CATEGORY
|
||||
|
||||
|
||||
class HoudiniContextPlugin(pyblish.api.ContextPlugin):
|
||||
"""Base class for Houdini context publish plugins."""
|
||||
|
||||
hosts = ["houdini"]
|
||||
settings_category = SETTINGS_CATEGORY
|
||||
|
||||
|
||||
class HoudiniExtractorPlugin(publish.Extractor):
|
||||
"""Base class for Houdini extract plugins.
|
||||
|
||||
Note:
|
||||
The `HoudiniExtractorPlugin` is a subclass of `publish.Extractor`,
|
||||
which in turn is a subclass of `pyblish.api.InstancePlugin`.
|
||||
Should there be a requirement to create an extractor that operates
|
||||
as a context plugin, it would be beneficial to incorporate
|
||||
the functionalities present in `publish.Extractor`.
|
||||
"""
|
||||
|
||||
hosts = ["houdini"]
|
||||
settings_category = SETTINGS_CATEGORY
|
||||
|
|
@ -12,7 +12,7 @@ import hou
|
|||
|
||||
from .lib import get_current_context_template_data_with_folder_attrs
|
||||
|
||||
log = logging.getLogger("ayon_core.hosts.houdini.shelves")
|
||||
log = logging.getLogger("ayon_houdini.shelves")
|
||||
|
||||
|
||||
def generate_shelves():
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Converter for legacy Houdini products."""
|
||||
from ayon_core.pipeline.create.creator_plugins import ProductConvertorPlugin
|
||||
from ayon_core.hosts.houdini.api.lib import imprint
|
||||
from ayon_houdini.api.lib import imprint
|
||||
|
||||
|
||||
class HoudiniLegacyConvertor(ProductConvertorPlugin):
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin for creating alembic camera products."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.pipeline import CreatorError
|
||||
|
||||
import hou
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin for creating Arnold ASS files."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.lib import BoolDef
|
||||
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.lib import EnumDef, BoolDef
|
||||
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin for creating pointcache bgeo files."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.pipeline import CreatorError
|
||||
import hou
|
||||
from ayon_core.lib import EnumDef, BoolDef
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin for creating composite sequences."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.pipeline import CreatorError
|
||||
|
||||
import hou
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
import ayon_api
|
||||
|
||||
from ayon_core.pipeline import CreatorError
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
import hou
|
||||
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin to create Karma ROP."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.lib import BoolDef, EnumDef, NumberDef
|
||||
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin for creating pointcache alembics."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.lib import BoolDef
|
||||
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin to create Mantra ROP."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.lib import EnumDef, BoolDef
|
||||
|
||||
|
||||
|
|
@ -11,7 +11,7 @@ Note:
|
|||
It's considered to support multiple representations in the future.
|
||||
"""
|
||||
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.lib import BoolDef
|
||||
|
||||
import hou
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin for creating pointcache alembics."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.lib import BoolDef
|
||||
|
||||
import hou
|
||||
|
|
@ -105,7 +105,7 @@ class CreatePointCache(plugin.HoudiniCreator):
|
|||
elif len(outputs) == 1:
|
||||
return outputs[0]
|
||||
|
||||
# if there are more than one, then it have multiple ouput nodes
|
||||
# if there are more than one, then it have multiple output nodes
|
||||
# return the one with the minimum 'outputidx'
|
||||
else:
|
||||
return min(outputs,
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin for creating Redshift proxies."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
import hou
|
||||
from ayon_core.lib import BoolDef
|
||||
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
import hou # noqa
|
||||
|
||||
from ayon_core.pipeline import CreatorError
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.lib import EnumDef, BoolDef
|
||||
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin for creating openGL reviews."""
|
||||
from ayon_core.hosts.houdini.api import lib, plugin
|
||||
from ayon_houdini.api import lib, plugin
|
||||
from ayon_core.lib import EnumDef, BoolDef, NumberDef
|
||||
|
||||
import os
|
||||
|
|
@ -103,7 +103,7 @@ class CreateReview(plugin.HoudiniCreator):
|
|||
# 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
|
||||
from ayon_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,
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator for Unreal Static Meshes."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.lib import BoolDef, EnumDef
|
||||
|
||||
import hou
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin for creating USDs."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
import hou
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin for creating USD renders."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class CreateUSDRender(plugin.HoudiniCreator):
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Creator plugin for creating VDB Caches."""
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.lib import BoolDef
|
||||
|
||||
import hou
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
"""Creator plugin to create VRay ROP."""
|
||||
import hou
|
||||
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_core.pipeline import CreatorError
|
||||
from ayon_core.lib import EnumDef, BoolDef
|
||||
|
||||
|
|
@ -2,9 +2,9 @@
|
|||
"""Creator plugin for creating workfiles."""
|
||||
import ayon_api
|
||||
|
||||
from ayon_core.hosts.houdini.api import plugin
|
||||
from ayon_core.hosts.houdini.api.lib import read, imprint
|
||||
from ayon_core.hosts.houdini.api.pipeline import CONTEXT_CONTAINER
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_houdini.api.lib import read, imprint
|
||||
from ayon_houdini.api.pipeline import CONTEXT_CONTAINER
|
||||
from ayon_core.pipeline import CreatedInstance, AutoCreator
|
||||
import hou
|
||||
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
from ayon_core.pipeline import InventoryAction
|
||||
from ayon_core.hosts.houdini.api.lib import (
|
||||
from ayon_houdini.api.lib import (
|
||||
get_camera_from_container,
|
||||
set_camera_resolution
|
||||
)
|
||||
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
"""
|
||||
|
||||
from ayon_core.pipeline import load
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class SetFrameRangeLoader(load.LoaderPlugin):
|
||||
class SetFrameRangeLoader(plugin.HoudiniLoader):
|
||||
"""Set frame range excluding pre- and post-handles"""
|
||||
|
||||
product_types = {
|
||||
|
|
@ -42,7 +42,7 @@ class SetFrameRangeLoader(load.LoaderPlugin):
|
|||
hou.playbar.setPlaybackRange(start, end)
|
||||
|
||||
|
||||
class SetFrameRangeWithHandlesLoader(load.LoaderPlugin):
|
||||
class SetFrameRangeWithHandlesLoader(plugin.HoudiniLoader):
|
||||
"""Set frame range including pre- and post-handles"""
|
||||
|
||||
product_types = {
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
import os
|
||||
from ayon_core.pipeline import (
|
||||
load,
|
||||
get_representation_path,
|
||||
from ayon_core.pipeline import get_representation_path
|
||||
from ayon_houdini.api import (
|
||||
pipeline,
|
||||
plugin
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import pipeline
|
||||
|
||||
|
||||
class AbcLoader(load.LoaderPlugin):
|
||||
class AbcLoader(plugin.HoudiniLoader):
|
||||
"""Load Alembic"""
|
||||
|
||||
product_types = {"model", "animation", "pointcache", "gpuCache"}
|
||||
|
|
@ -1,12 +1,13 @@
|
|||
|
||||
import os
|
||||
from ayon_core.pipeline import (
|
||||
load,
|
||||
get_representation_path,
|
||||
from ayon_core.pipeline import get_representation_path
|
||||
from ayon_houdini.api import (
|
||||
pipeline,
|
||||
plugin
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import pipeline
|
||||
|
||||
|
||||
class AbcArchiveLoader(load.LoaderPlugin):
|
||||
class AbcArchiveLoader(plugin.HoudiniLoader):
|
||||
"""Load Alembic as full geometry network hierarchy """
|
||||
|
||||
product_types = {"model", "animation", "pointcache", "gpuCache"}
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
import os
|
||||
import re
|
||||
|
||||
from ayon_core.pipeline import (
|
||||
load,
|
||||
get_representation_path,
|
||||
from ayon_core.pipeline import get_representation_path
|
||||
from ayon_houdini.api import (
|
||||
pipeline,
|
||||
plugin
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import pipeline
|
||||
|
||||
|
||||
class AssLoader(load.LoaderPlugin):
|
||||
class AssLoader(plugin.HoudiniLoader):
|
||||
"""Load .ass with Arnold Procedural"""
|
||||
|
||||
product_types = {"ass"}
|
||||
|
|
@ -2,14 +2,14 @@
|
|||
import os
|
||||
import re
|
||||
|
||||
from ayon_core.pipeline import (
|
||||
load,
|
||||
get_representation_path,
|
||||
from ayon_core.pipeline import get_representation_path
|
||||
from ayon_houdini.api import (
|
||||
pipeline,
|
||||
plugin
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import pipeline
|
||||
|
||||
|
||||
class BgeoLoader(load.LoaderPlugin):
|
||||
class BgeoLoader(plugin.HoudiniLoader):
|
||||
"""Load bgeo files to Houdini."""
|
||||
|
||||
label = "Load bgeo"
|
||||
|
|
@ -1,16 +1,15 @@
|
|||
from ayon_core.pipeline import (
|
||||
load,
|
||||
get_representation_path,
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import pipeline
|
||||
import hou
|
||||
from ayon_core.pipeline import get_representation_path
|
||||
|
||||
from ayon_core.hosts.houdini.api.lib import (
|
||||
from ayon_houdini.api import (
|
||||
pipeline,
|
||||
plugin
|
||||
)
|
||||
from ayon_houdini.api.lib import (
|
||||
set_camera_resolution,
|
||||
get_camera_from_container
|
||||
)
|
||||
|
||||
import hou
|
||||
|
||||
|
||||
ARCHIVE_EXPRESSION = ('__import__("_alembic_hom_extensions")'
|
||||
'.alembicGetCameraDict')
|
||||
|
|
@ -84,7 +83,7 @@ def transfer_non_default_values(src, dest, ignore=None):
|
|||
dest_parm.setFromParm(parm)
|
||||
|
||||
|
||||
class CameraLoader(load.LoaderPlugin):
|
||||
class CameraLoader(plugin.HoudiniLoader):
|
||||
"""Load camera from an Alembic file"""
|
||||
|
||||
product_types = {"camera"}
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Fbx Loader for houdini. """
|
||||
from ayon_core.pipeline import (
|
||||
load,
|
||||
get_representation_path,
|
||||
from ayon_core.pipeline import get_representation_path
|
||||
from ayon_houdini.api import (
|
||||
pipeline,
|
||||
plugin
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import pipeline
|
||||
|
||||
|
||||
class FbxLoader(load.LoaderPlugin):
|
||||
class FbxLoader(plugin.HoudiniLoader):
|
||||
"""Load fbx files. """
|
||||
|
||||
label = "Load FBX"
|
||||
|
|
@ -1,13 +1,14 @@
|
|||
import os
|
||||
import re
|
||||
|
||||
from ayon_core.pipeline import load
|
||||
from ayon_core.hosts.houdini.api import pipeline
|
||||
|
||||
import hou
|
||||
|
||||
from ayon_houdini.api import (
|
||||
pipeline,
|
||||
plugin
|
||||
)
|
||||
|
||||
class FilePathLoader(load.LoaderPlugin):
|
||||
|
||||
class FilePathLoader(plugin.HoudiniLoader):
|
||||
"""Load a managed filepath to a null node.
|
||||
|
||||
This is useful if for a particular workflow there is no existing loader
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
from ayon_core.pipeline import (
|
||||
load,
|
||||
get_representation_path,
|
||||
from ayon_core.pipeline import get_representation_path
|
||||
from ayon_houdini.api import (
|
||||
pipeline,
|
||||
plugin
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import pipeline
|
||||
|
||||
|
||||
class HdaLoader(load.LoaderPlugin):
|
||||
class HdaLoader(plugin.HoudiniLoader):
|
||||
"""Load Houdini Digital Asset file."""
|
||||
|
||||
product_types = {"hda"}
|
||||
|
|
@ -1,14 +1,16 @@
|
|||
import os
|
||||
import re
|
||||
import hou
|
||||
|
||||
from ayon_core.pipeline import (
|
||||
load,
|
||||
get_representation_path,
|
||||
AVALON_CONTAINER_ID,
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import lib, pipeline
|
||||
|
||||
import hou
|
||||
from ayon_houdini.api import (
|
||||
pipeline,
|
||||
plugin,
|
||||
lib
|
||||
)
|
||||
|
||||
|
||||
def get_image_avalon_container():
|
||||
|
|
@ -42,7 +44,7 @@ def get_image_avalon_container():
|
|||
return image_container
|
||||
|
||||
|
||||
class ImageLoader(load.LoaderPlugin):
|
||||
class ImageLoader(plugin.HoudiniLoader):
|
||||
"""Load images into COP2"""
|
||||
|
||||
product_types = {
|
||||
|
|
@ -1,16 +1,17 @@
|
|||
import os
|
||||
import re
|
||||
from ayon_core.pipeline import (
|
||||
load,
|
||||
get_representation_path,
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import pipeline
|
||||
from ayon_core.pipeline.load import LoadError
|
||||
|
||||
import hou
|
||||
|
||||
from ayon_core.pipeline import get_representation_path
|
||||
from ayon_core.pipeline.load import LoadError
|
||||
|
||||
class RedshiftProxyLoader(load.LoaderPlugin):
|
||||
from ayon_houdini.api import (
|
||||
pipeline,
|
||||
plugin
|
||||
)
|
||||
|
||||
|
||||
class RedshiftProxyLoader(plugin.HoudiniLoader):
|
||||
"""Load Redshift Proxy"""
|
||||
|
||||
product_types = {"redshiftproxy"}
|
||||
|
|
@ -1,12 +1,14 @@
|
|||
from ayon_core.pipeline import (
|
||||
load,
|
||||
get_representation_path,
|
||||
AVALON_CONTAINER_ID,
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import lib
|
||||
from ayon_houdini.api import (
|
||||
plugin,
|
||||
lib
|
||||
)
|
||||
|
||||
|
||||
class USDSublayerLoader(load.LoaderPlugin):
|
||||
class USDSublayerLoader(plugin.HoudiniLoader):
|
||||
"""Sublayer USD file in Solaris"""
|
||||
|
||||
product_types = {
|
||||
|
|
@ -1,12 +1,14 @@
|
|||
from ayon_core.pipeline import (
|
||||
load,
|
||||
get_representation_path,
|
||||
AVALON_CONTAINER_ID,
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import lib
|
||||
from ayon_houdini.api import (
|
||||
plugin,
|
||||
lib
|
||||
)
|
||||
|
||||
|
||||
class USDReferenceLoader(load.LoaderPlugin):
|
||||
class USDReferenceLoader(plugin.HoudiniLoader):
|
||||
"""Reference USD file in Solaris"""
|
||||
|
||||
product_types = {
|
||||
|
|
@ -1,10 +1,12 @@
|
|||
import os
|
||||
|
||||
from ayon_core.pipeline import load
|
||||
from ayon_core.hosts.houdini.api import pipeline
|
||||
from ayon_houdini.api import (
|
||||
pipeline,
|
||||
plugin
|
||||
)
|
||||
|
||||
|
||||
class SopUsdImportLoader(load.LoaderPlugin):
|
||||
class SopUsdImportLoader(plugin.HoudiniLoader):
|
||||
"""Load USD to SOPs via `usdimport`"""
|
||||
|
||||
label = "Load USD to SOPs"
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
import os
|
||||
import re
|
||||
|
||||
from ayon_core.pipeline import (
|
||||
load,
|
||||
get_representation_path,
|
||||
from ayon_core.pipeline import get_representation_path
|
||||
from ayon_houdini.api import (
|
||||
pipeline,
|
||||
plugin
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import pipeline
|
||||
|
||||
|
||||
class VdbLoader(load.LoaderPlugin):
|
||||
class VdbLoader(plugin.HoudiniLoader):
|
||||
"""Load VDB"""
|
||||
|
||||
product_types = {"vdbcache"}
|
||||
|
|
@ -3,10 +3,10 @@ import platform
|
|||
import subprocess
|
||||
|
||||
from ayon_core.lib.vendor_bin_utils import find_executable
|
||||
from ayon_core.pipeline import load
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class ShowInUsdview(load.LoaderPlugin):
|
||||
class ShowInUsdview(plugin.HoudiniLoader):
|
||||
"""Open USD file in usdview"""
|
||||
|
||||
label = "Show in usdview"
|
||||
|
|
@ -1,8 +1,10 @@
|
|||
import pyblish.api
|
||||
import hou
|
||||
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
class CollectInstanceActiveState(pyblish.api.InstancePlugin):
|
||||
|
||||
class CollectInstanceActiveState(plugin.HoudiniInstancePlugin):
|
||||
"""Collect default active state for instance from its node bypass state.
|
||||
|
||||
This is done at the very end of the CollectorOrder so that any required
|
||||
|
|
@ -14,7 +16,6 @@ class CollectInstanceActiveState(pyblish.api.InstancePlugin):
|
|||
|
||||
order = pyblish.api.CollectorOrder + 0.299
|
||||
families = ["*"]
|
||||
hosts = ["houdini"]
|
||||
label = "Instance Active State"
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -4,12 +4,14 @@ import re
|
|||
import hou
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.hosts.houdini.api import colorspace
|
||||
from ayon_core.hosts.houdini.api.lib import (
|
||||
evalParmNoFrame, get_color_management_preferences)
|
||||
from ayon_houdini.api import colorspace, plugin
|
||||
from ayon_houdini.api.lib import (
|
||||
get_color_management_preferences,
|
||||
evalParmNoFrame
|
||||
)
|
||||
|
||||
|
||||
class CollectArnoldROPRenderProducts(pyblish.api.InstancePlugin):
|
||||
class CollectArnoldROPRenderProducts(plugin.HoudiniInstancePlugin):
|
||||
"""Collect Arnold ROP Render Products
|
||||
|
||||
Collects the instance.data["files"] for the render products.
|
||||
|
|
@ -23,7 +25,6 @@ class CollectArnoldROPRenderProducts(pyblish.api.InstancePlugin):
|
|||
# This specific order value is used so that
|
||||
# this plugin runs after CollectFrames
|
||||
order = pyblish.api.CollectorOrder + 0.11
|
||||
hosts = ["houdini"]
|
||||
families = ["arnold_rop"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Collector plugin for frames data on ROP instances."""
|
||||
import hou # noqa
|
||||
import pyblish.api
|
||||
from ayon_core.lib import BoolDef
|
||||
from ayon_core.pipeline import AYONPyblishPluginMixin
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class CollectAssetHandles(pyblish.api.InstancePlugin,
|
||||
class CollectAssetHandles(plugin.HoudiniInstancePlugin,
|
||||
AYONPyblishPluginMixin):
|
||||
"""Apply folder handles.
|
||||
|
||||
|
|
@ -23,8 +23,6 @@ class CollectAssetHandles(pyblish.api.InstancePlugin,
|
|||
the exclusive frame range and actual handle ranges.
|
||||
"""
|
||||
|
||||
hosts = ["houdini"]
|
||||
|
||||
# This specific order value is used so that
|
||||
# this plugin runs after CollectAnatomyInstanceData
|
||||
order = pyblish.api.CollectorOrder + 0.499
|
||||
|
|
@ -1,10 +1,13 @@
|
|||
import os
|
||||
import pyblish.api
|
||||
import hou
|
||||
from ayon_core.hosts.houdini.api import lib
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import (
|
||||
lib,
|
||||
plugin
|
||||
)
|
||||
|
||||
|
||||
class CollectDataforCache(pyblish.api.InstancePlugin):
|
||||
class CollectDataforCache(plugin.HoudiniInstancePlugin):
|
||||
"""Collect data for caching to Deadline."""
|
||||
|
||||
# Run after Collect Frames
|
||||
|
|
@ -12,7 +15,6 @@ class CollectDataforCache(pyblish.api.InstancePlugin):
|
|||
families = ["ass", "pointcache",
|
||||
"mantraifd", "redshiftproxy",
|
||||
"vdbcache", "model"]
|
||||
hosts = ["houdini"]
|
||||
targets = ["local", "remote"]
|
||||
label = "Collect Data for Cache"
|
||||
|
||||
|
|
@ -1,9 +1,10 @@
|
|||
import pyblish.api
|
||||
from ayon_core.lib import NumberDef
|
||||
from ayon_core.pipeline import AYONPyblishPluginMixin
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class CollectChunkSize(pyblish.api.InstancePlugin,
|
||||
class CollectChunkSize(plugin.HoudiniInstancePlugin,
|
||||
AYONPyblishPluginMixin):
|
||||
"""Collect chunk size for cache submission to Deadline."""
|
||||
|
||||
|
|
@ -11,7 +12,6 @@ class CollectChunkSize(pyblish.api.InstancePlugin,
|
|||
families = ["ass", "pointcache",
|
||||
"vdbcache", "mantraifd",
|
||||
"redshiftproxy", "model"]
|
||||
hosts = ["houdini"]
|
||||
targets = ["local", "remote"]
|
||||
label = "Collect Chunk Size"
|
||||
chunk_size = 999999
|
||||
|
|
@ -2,14 +2,14 @@ import os
|
|||
import hou
|
||||
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class CollectHoudiniCurrentFile(pyblish.api.ContextPlugin):
|
||||
class CollectHoudiniCurrentFile(plugin.HoudiniContextPlugin):
|
||||
"""Inject the current working file into context"""
|
||||
|
||||
order = pyblish.api.CollectorOrder - 0.1
|
||||
label = "Houdini Current File"
|
||||
hosts = ["houdini"]
|
||||
|
||||
def process(self, context):
|
||||
"""Inject the current working file"""
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class CollectFarmInstances(pyblish.api.InstancePlugin):
|
||||
class CollectFarmInstances(plugin.HoudiniInstancePlugin):
|
||||
"""Collect instances for farm render."""
|
||||
|
||||
order = pyblish.api.CollectorOrder
|
||||
|
|
@ -11,7 +12,6 @@ class CollectFarmInstances(pyblish.api.InstancePlugin):
|
|||
"arnold_rop",
|
||||
"vray_rop"]
|
||||
|
||||
hosts = ["houdini"]
|
||||
targets = ["local", "remote"]
|
||||
label = "Collect farm instances"
|
||||
|
||||
|
|
@ -5,10 +5,10 @@ import re
|
|||
|
||||
import hou # noqa
|
||||
import pyblish.api
|
||||
from ayon_core.hosts.houdini.api import lib
|
||||
from ayon_houdini.api import lib, plugin
|
||||
|
||||
|
||||
class CollectFrames(pyblish.api.InstancePlugin):
|
||||
class CollectFrames(plugin.HoudiniInstancePlugin):
|
||||
"""Collect all frames which would be saved from the ROP nodes"""
|
||||
|
||||
# This specific order value is used so that
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
from collections import deque
|
||||
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline import registered_host
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
def get_container_members(container):
|
||||
|
|
@ -80,7 +80,7 @@ def iter_upstream(node):
|
|||
collected.update(ancestors)
|
||||
|
||||
|
||||
class CollectUpstreamInputs(pyblish.api.InstancePlugin):
|
||||
class CollectUpstreamInputs(plugin.HoudiniInstancePlugin):
|
||||
"""Collect source input containers used for this publish.
|
||||
|
||||
This will include `inputs` data of which loaded publishes were used in the
|
||||
|
|
@ -91,7 +91,6 @@ class CollectUpstreamInputs(pyblish.api.InstancePlugin):
|
|||
|
||||
label = "Collect Inputs"
|
||||
order = pyblish.api.CollectorOrder + 0.4
|
||||
hosts = ["houdini"]
|
||||
|
||||
def process(self, instance):
|
||||
# We can't get the "inputAncestors" directly from the ROP
|
||||
|
|
@ -10,7 +10,6 @@ class CollectPointcacheType(pyblish.api.InstancePlugin):
|
|||
"""Collect data type for different instances."""
|
||||
|
||||
order = pyblish.api.CollectorOrder
|
||||
hosts = ["houdini"]
|
||||
families = ["pointcache", "model"]
|
||||
label = "Collect instances types"
|
||||
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
import hou
|
||||
import pyblish.api
|
||||
from ayon_core.hosts.houdini.api import lib
|
||||
import ayon_core.hosts.houdini.api.usd as hou_usdlib
|
||||
from ayon_core.pipeline import usdlib
|
||||
from ayon_houdini.api import lib, plugin
|
||||
import ayon_houdini.api.usd as hou_usdlib
|
||||
|
||||
|
||||
class CollectInstancesUsdLayered(pyblish.api.ContextPlugin):
|
||||
class CollectInstancesUsdLayered(plugin.HoudiniContextPlugin):
|
||||
"""Collect Instances from a ROP Network and its configured layer paths.
|
||||
|
||||
The output nodes of the ROP node will only be published when *any* of the
|
||||
|
|
@ -32,7 +32,6 @@ class CollectInstancesUsdLayered(pyblish.api.ContextPlugin):
|
|||
|
||||
order = pyblish.api.CollectorOrder - 0.01
|
||||
label = "Collect Instances (USD Configured Layers)"
|
||||
hosts = ["houdini"]
|
||||
|
||||
def process(self, context):
|
||||
|
||||
|
|
@ -4,16 +4,17 @@ import os
|
|||
import hou
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.hosts.houdini.api.lib import (
|
||||
from ayon_houdini.api.lib import (
|
||||
evalParmNoFrame,
|
||||
get_color_management_preferences
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import (
|
||||
colorspace
|
||||
from ayon_houdini.api import (
|
||||
colorspace,
|
||||
plugin
|
||||
)
|
||||
|
||||
|
||||
class CollectKarmaROPRenderProducts(pyblish.api.InstancePlugin):
|
||||
class CollectKarmaROPRenderProducts(plugin.HoudiniInstancePlugin):
|
||||
"""Collect Karma Render Products
|
||||
|
||||
Collects the instance.data["files"] for the multipart render product.
|
||||
|
|
@ -27,7 +28,6 @@ class CollectKarmaROPRenderProducts(pyblish.api.InstancePlugin):
|
|||
# This specific order value is used so that
|
||||
# this plugin runs after CollectFrames
|
||||
order = pyblish.api.CollectorOrder + 0.11
|
||||
hosts = ["houdini"]
|
||||
families = ["karma_rop"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -6,9 +6,10 @@ from ayon_core.pipeline.publish import (
|
|||
get_plugin_settings,
|
||||
apply_plugin_settings_automatically
|
||||
)
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class CollectLocalRenderInstances(pyblish.api.InstancePlugin):
|
||||
class CollectLocalRenderInstances(plugin.HoudiniInstancePlugin):
|
||||
"""Collect instances for local render.
|
||||
|
||||
Agnostic Local Render Collector.
|
||||
|
|
@ -22,7 +23,6 @@ class CollectLocalRenderInstances(pyblish.api.InstancePlugin):
|
|||
"arnold_rop",
|
||||
"vray_rop"]
|
||||
|
||||
hosts = ["houdini"]
|
||||
label = "Collect local render instances"
|
||||
|
||||
use_deadline_aov_filter = False
|
||||
|
|
@ -4,16 +4,17 @@ import os
|
|||
import hou
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.hosts.houdini.api.lib import (
|
||||
from ayon_houdini.api.lib import (
|
||||
evalParmNoFrame,
|
||||
get_color_management_preferences
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import (
|
||||
colorspace
|
||||
from ayon_houdini.api import (
|
||||
colorspace,
|
||||
plugin
|
||||
)
|
||||
|
||||
|
||||
class CollectMantraROPRenderProducts(pyblish.api.InstancePlugin):
|
||||
class CollectMantraROPRenderProducts(plugin.HoudiniInstancePlugin):
|
||||
"""Collect Mantra Render Products
|
||||
|
||||
Collects the instance.data["files"] for the render products.
|
||||
|
|
@ -27,7 +28,6 @@ class CollectMantraROPRenderProducts(pyblish.api.InstancePlugin):
|
|||
# This specific order value is used so that
|
||||
# this plugin runs after CollectFrames
|
||||
order = pyblish.api.CollectorOrder + 0.11
|
||||
hosts = ["houdini"]
|
||||
families = ["mantra_rop"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline.publish import KnownPublishError
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class CollectOutputSOPPath(pyblish.api.InstancePlugin):
|
||||
class CollectOutputSOPPath(plugin.HoudiniInstancePlugin):
|
||||
"""Collect the out node's SOP/COP Path value."""
|
||||
|
||||
order = pyblish.api.CollectorOrder
|
||||
|
|
@ -19,7 +19,6 @@ class CollectOutputSOPPath(pyblish.api.InstancePlugin):
|
|||
"model"
|
||||
]
|
||||
|
||||
hosts = ["houdini"]
|
||||
label = "Collect Output Node Path"
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -4,16 +4,17 @@ import os
|
|||
import hou
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.hosts.houdini.api.lib import (
|
||||
from ayon_houdini.api.lib import (
|
||||
evalParmNoFrame,
|
||||
get_color_management_preferences
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import (
|
||||
colorspace
|
||||
from ayon_houdini.api import (
|
||||
colorspace,
|
||||
plugin
|
||||
)
|
||||
|
||||
|
||||
class CollectRedshiftROPRenderProducts(pyblish.api.InstancePlugin):
|
||||
class CollectRedshiftROPRenderProducts(plugin.HoudiniInstancePlugin):
|
||||
"""Collect USD Render Products
|
||||
|
||||
Collects the instance.data["files"] for the render products.
|
||||
|
|
@ -27,7 +28,6 @@ class CollectRedshiftROPRenderProducts(pyblish.api.InstancePlugin):
|
|||
# This specific order value is used so that
|
||||
# this plugin runs after CollectFrames
|
||||
order = pyblish.api.CollectorOrder + 0.11
|
||||
hosts = ["houdini"]
|
||||
families = ["redshift_rop"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,16 +1,15 @@
|
|||
import hou
|
||||
import pyblish.api
|
||||
|
||||
import hou
|
||||
from ayon_core.pipeline.publish import RepairAction
|
||||
from ayon_core.hosts.houdini.api import lib
|
||||
from ayon_houdini.api import lib, plugin
|
||||
|
||||
|
||||
class CollectRemotePublishSettings(pyblish.api.ContextPlugin):
|
||||
class CollectRemotePublishSettings(plugin.HoudiniContextPlugin):
|
||||
"""Collect custom settings of the Remote Publish node."""
|
||||
|
||||
order = pyblish.api.CollectorOrder
|
||||
families = ["*"]
|
||||
hosts = ["houdini"]
|
||||
targets = ["deadline"]
|
||||
label = "Remote Publish Submission Settings"
|
||||
actions = [RepairAction]
|
||||
|
|
@ -5,6 +5,7 @@ import hou
|
|||
import pxr.UsdRender
|
||||
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
def get_var_changed(variable=None):
|
||||
|
|
@ -41,12 +42,11 @@ def get_var_changed(variable=None):
|
|||
return changed
|
||||
|
||||
|
||||
class CollectRenderProducts(pyblish.api.InstancePlugin):
|
||||
class CollectRenderProducts(plugin.HoudiniInstancePlugin):
|
||||
"""Collect USD Render Products."""
|
||||
|
||||
label = "Collect Render Products"
|
||||
order = pyblish.api.CollectorOrder + 0.4
|
||||
hosts = ["houdini"]
|
||||
families = ["usdrender"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
import hou
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class CollectHoudiniReviewData(pyblish.api.InstancePlugin):
|
||||
class CollectHoudiniReviewData(plugin.HoudiniInstancePlugin):
|
||||
"""Collect Review Data."""
|
||||
|
||||
label = "Collect Review Data"
|
||||
|
|
@ -10,7 +11,6 @@ class CollectHoudiniReviewData(pyblish.api.InstancePlugin):
|
|||
# this plugin runs after CollectRopFrameRange
|
||||
# Also after CollectLocalRenderInstances
|
||||
order = pyblish.api.CollectorOrder + 0.13
|
||||
hosts = ["houdini"]
|
||||
families = ["review"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class CollectReviewableInstances(pyblish.api.InstancePlugin):
|
||||
class CollectReviewableInstances(plugin.HoudiniInstancePlugin):
|
||||
"""Collect Reviewable Instances.
|
||||
|
||||
Basically, all instances of the specified families
|
||||
|
|
@ -2,13 +2,12 @@
|
|||
"""Collector plugin for frames data on ROP instances."""
|
||||
import hou # noqa
|
||||
import pyblish.api
|
||||
from ayon_core.hosts.houdini.api import lib
|
||||
from ayon_houdini.api import lib, plugin
|
||||
|
||||
|
||||
class CollectRopFrameRange(pyblish.api.InstancePlugin):
|
||||
class CollectRopFrameRange(plugin.HoudiniInstancePlugin):
|
||||
"""Collect all frames which would be saved from the ROP nodes"""
|
||||
|
||||
hosts = ["houdini"]
|
||||
order = pyblish.api.CollectorOrder
|
||||
label = "Collect RopNode Frame Range"
|
||||
|
||||
|
|
@ -2,12 +2,12 @@
|
|||
"""Collector for staticMesh types. """
|
||||
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class CollectStaticMeshType(pyblish.api.InstancePlugin):
|
||||
class CollectStaticMeshType(plugin.HoudiniInstancePlugin):
|
||||
"""Collect data type for fbx instance."""
|
||||
|
||||
hosts = ["houdini"]
|
||||
families = ["staticMesh"]
|
||||
label = "Collect type of staticMesh"
|
||||
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
import pyblish.api
|
||||
import ayon_api
|
||||
|
||||
from ayon_core.pipeline import usdlib, KnownPublishError
|
||||
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
class CollectUsdBootstrap(pyblish.api.InstancePlugin):
|
||||
class CollectUsdBootstrap(plugin.HoudiniInstancePlugin):
|
||||
"""Collect special Asset/Shot bootstrap instances if those are needed.
|
||||
|
||||
Some specific products are intended to be part of the default structure
|
||||
|
|
@ -21,7 +21,6 @@ class CollectUsdBootstrap(pyblish.api.InstancePlugin):
|
|||
|
||||
order = pyblish.api.CollectorOrder + 0.35
|
||||
label = "Collect USD Bootstrap"
|
||||
hosts = ["houdini"]
|
||||
families = ["usd", "usd.layered"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,17 +1,15 @@
|
|||
import os
|
||||
|
||||
import pyblish.api
|
||||
import ayon_core.hosts.houdini.api.usd as usdlib
|
||||
|
||||
import hou
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
import ayon_houdini.api.usd as usdlib
|
||||
|
||||
|
||||
class CollectUsdLayers(pyblish.api.InstancePlugin):
|
||||
class CollectUsdLayers(plugin.HoudiniInstancePlugin):
|
||||
"""Collect the USD Layers that have configured save paths."""
|
||||
|
||||
order = pyblish.api.CollectorOrder + 0.35
|
||||
label = "Collect USD Layers"
|
||||
hosts = ["houdini"]
|
||||
families = ["usd"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -4,16 +4,17 @@ import os
|
|||
import hou
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.hosts.houdini.api.lib import (
|
||||
from ayon_houdini.api.lib import (
|
||||
evalParmNoFrame,
|
||||
get_color_management_preferences
|
||||
)
|
||||
from ayon_core.hosts.houdini.api import (
|
||||
colorspace
|
||||
from ayon_houdini.api import (
|
||||
colorspace,
|
||||
plugin
|
||||
)
|
||||
|
||||
|
||||
class CollectVrayROPRenderProducts(pyblish.api.InstancePlugin):
|
||||
class CollectVrayROPRenderProducts(plugin.HoudiniInstancePlugin):
|
||||
"""Collect Vray Render Products
|
||||
|
||||
Collects the instance.data["files"] for the render products.
|
||||
|
|
@ -27,7 +28,6 @@ class CollectVrayROPRenderProducts(pyblish.api.InstancePlugin):
|
|||
# This specific order value is used so that
|
||||
# this plugin runs after CollectFrames
|
||||
order = pyblish.api.CollectorOrder + 0.11
|
||||
hosts = ["houdini"]
|
||||
families = ["vray_rop"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,14 +1,13 @@
|
|||
import os
|
||||
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class CollectWorkfile(pyblish.api.InstancePlugin):
|
||||
class CollectWorkfile(plugin.HoudiniInstancePlugin):
|
||||
"""Inject workfile representation into instance"""
|
||||
|
||||
order = pyblish.api.CollectorOrder - 0.01
|
||||
label = "Houdini Workfile Data"
|
||||
hosts = ["houdini"]
|
||||
families = ["workfile"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
import pyblish.api
|
||||
import hou
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class CollectWorksceneFPS(pyblish.api.ContextPlugin):
|
||||
class CollectWorksceneFPS(plugin.HoudiniContextPlugin):
|
||||
"""Get the FPS of the work scene."""
|
||||
|
||||
label = "Workscene FPS"
|
||||
order = pyblish.api.CollectorOrder
|
||||
hosts = ["houdini"]
|
||||
|
||||
def process(self, context):
|
||||
fps = hou.fps()
|
||||
|
|
@ -1,11 +1,10 @@
|
|||
import pyblish.api
|
||||
import tempfile
|
||||
from ayon_core.pipeline import publish
|
||||
from ayon_core.hosts.houdini.api import lib
|
||||
from ayon_core.hosts.houdini.api.pipeline import IS_HEADLESS
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import lib, plugin
|
||||
from ayon_houdini.api.pipeline import IS_HEADLESS
|
||||
|
||||
|
||||
class ExtractActiveViewThumbnail(publish.Extractor):
|
||||
class ExtractActiveViewThumbnail(plugin.HoudiniExtractorPlugin):
|
||||
"""Set instance thumbnail to a screengrab of current active viewport.
|
||||
|
||||
This makes it so that if an instance does not have a thumbnail set yet that
|
||||
|
|
@ -16,7 +15,6 @@ class ExtractActiveViewThumbnail(publish.Extractor):
|
|||
order = pyblish.api.ExtractorOrder + 0.49
|
||||
label = "Extract Active View Thumbnail"
|
||||
families = ["workfile"]
|
||||
hosts = ["houdini"]
|
||||
|
||||
def process(self, instance):
|
||||
if IS_HEADLESS:
|
||||
|
|
@ -1,18 +1,16 @@
|
|||
import os
|
||||
import hou
|
||||
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline import publish
|
||||
from ayon_core.hosts.houdini.api.lib import render_rop
|
||||
|
||||
import hou
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_houdini.api.lib import render_rop
|
||||
|
||||
|
||||
class ExtractAlembic(publish.Extractor):
|
||||
class ExtractAlembic(plugin.HoudiniExtractorPlugin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder
|
||||
label = "Extract Alembic"
|
||||
hosts = ["houdini"]
|
||||
families = ["abc", "camera"]
|
||||
targets = ["local", "remote"]
|
||||
|
||||
|
|
@ -1,19 +1,17 @@
|
|||
import os
|
||||
import hou
|
||||
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline import publish
|
||||
from ayon_core.hosts.houdini.api.lib import render_rop
|
||||
|
||||
import hou
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_houdini.api.lib import render_rop
|
||||
|
||||
|
||||
class ExtractAss(publish.Extractor):
|
||||
class ExtractAss(plugin.HoudiniExtractorPlugin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder + 0.1
|
||||
label = "Extract Ass"
|
||||
families = ["ass"]
|
||||
hosts = ["houdini"]
|
||||
targets = ["local", "remote"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,19 +1,15 @@
|
|||
import os
|
||||
import hou
|
||||
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline import publish
|
||||
from ayon_core.hosts.houdini.api.lib import render_rop
|
||||
from ayon_core.hosts.houdini.api import lib
|
||||
|
||||
import hou
|
||||
from ayon_houdini.api import lib, plugin
|
||||
|
||||
|
||||
class ExtractBGEO(publish.Extractor):
|
||||
class ExtractBGEO(plugin.HoudiniExtractorPlugin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder
|
||||
label = "Extract BGEO"
|
||||
hosts = ["houdini"]
|
||||
families = ["bgeo"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -32,7 +28,7 @@ class ExtractBGEO(publish.Extractor):
|
|||
file_name, staging_dir))
|
||||
|
||||
# write files
|
||||
render_rop(ropnode)
|
||||
lib.render_rop(ropnode)
|
||||
|
||||
output = instance.data["frames"]
|
||||
|
||||
|
|
@ -1,18 +1,17 @@
|
|||
import os
|
||||
import hou
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline import publish
|
||||
from ayon_core.hosts.houdini.api.lib import render_rop, splitext
|
||||
|
||||
import hou
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_houdini.api.lib import render_rop, splitext
|
||||
|
||||
|
||||
class ExtractComposite(publish.Extractor,
|
||||
class ExtractComposite(plugin.HoudiniExtractorPlugin,
|
||||
publish.ColormanagedPyblishPluginMixin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder
|
||||
label = "Extract Composite (Image Sequence)"
|
||||
hosts = ["houdini"]
|
||||
families = ["imagesequence"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -2,18 +2,16 @@
|
|||
"""Fbx Extractor for houdini. """
|
||||
|
||||
import os
|
||||
import pyblish.api
|
||||
from ayon_core.pipeline import publish
|
||||
from ayon_core.hosts.houdini.api.lib import render_rop
|
||||
|
||||
import hou
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_houdini.api.lib import render_rop
|
||||
|
||||
|
||||
class ExtractFBX(publish.Extractor):
|
||||
class ExtractFBX(plugin.HoudiniExtractorPlugin):
|
||||
|
||||
label = "Extract FBX"
|
||||
families = ["fbx"]
|
||||
hosts = ["houdini"]
|
||||
|
||||
order = pyblish.api.ExtractorOrder + 0.1
|
||||
|
||||
|
|
@ -1,16 +1,15 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
from pprint import pformat
|
||||
import pyblish.api
|
||||
from ayon_core.pipeline import publish
|
||||
import hou
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class ExtractHDA(publish.Extractor):
|
||||
class ExtractHDA(plugin.HoudiniExtractorPlugin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder
|
||||
label = "Extract HDA"
|
||||
hosts = ["houdini"]
|
||||
families = ["hda"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,17 +1,15 @@
|
|||
import os
|
||||
import hou
|
||||
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline import publish
|
||||
|
||||
import hou
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class ExtractMantraIFD(publish.Extractor):
|
||||
class ExtractMantraIFD(plugin.HoudiniExtractorPlugin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder
|
||||
label = "Extract Mantra ifd"
|
||||
hosts = ["houdini"]
|
||||
families = ["mantraifd"]
|
||||
targets = ["local", "remote"]
|
||||
|
||||
|
|
@ -1,20 +1,19 @@
|
|||
import os
|
||||
import hou
|
||||
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline import publish
|
||||
from ayon_core.hosts.houdini.api.lib import render_rop
|
||||
|
||||
import hou
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_houdini.api.lib import render_rop
|
||||
|
||||
|
||||
class ExtractOpenGL(publish.Extractor,
|
||||
class ExtractOpenGL(plugin.HoudiniExtractorPlugin,
|
||||
publish.ColormanagedPyblishPluginMixin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder - 0.01
|
||||
label = "Extract OpenGL"
|
||||
families = ["review"]
|
||||
hosts = ["houdini"]
|
||||
|
||||
def process(self, instance):
|
||||
ropnode = hou.node(instance.data.get("instance_node"))
|
||||
|
|
@ -1,19 +1,17 @@
|
|||
import os
|
||||
import hou
|
||||
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline import publish
|
||||
from ayon_core.hosts.houdini.api.lib import render_rop
|
||||
|
||||
import hou
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_houdini.api.lib import render_rop
|
||||
|
||||
|
||||
class ExtractRedshiftProxy(publish.Extractor):
|
||||
class ExtractRedshiftProxy(plugin.HoudiniExtractorPlugin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder + 0.1
|
||||
label = "Extract Redshift Proxy"
|
||||
families = ["redshiftproxy"]
|
||||
hosts = ["houdini"]
|
||||
targets = ["local", "remote"]
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,16 +1,16 @@
|
|||
import os
|
||||
import hou
|
||||
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline import publish
|
||||
from ayon_core.hosts.houdini.api.lib import render_rop
|
||||
import hou
|
||||
import os
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_houdini.api.lib import render_rop
|
||||
|
||||
|
||||
class ExtractRender(publish.Extractor):
|
||||
class ExtractRender(plugin.HoudiniExtractorPlugin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder
|
||||
label = "Extract Render"
|
||||
hosts = ["houdini"]
|
||||
families = ["mantra_rop",
|
||||
"karma_rop",
|
||||
"redshift_rop",
|
||||
|
|
@ -1,17 +1,16 @@
|
|||
import os
|
||||
import hou
|
||||
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline import publish
|
||||
from ayon_core.hosts.houdini.api.lib import render_rop
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_houdini.api.lib import render_rop
|
||||
|
||||
import hou
|
||||
|
||||
class ExtractUSD(publish.Extractor):
|
||||
class ExtractUSD(plugin.HoudiniExtractorPlugin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder
|
||||
label = "Extract USD"
|
||||
hosts = ["houdini"]
|
||||
families = ["usd",
|
||||
"usdModel",
|
||||
"usdSetDress"]
|
||||
|
|
@ -7,12 +7,10 @@ import hou
|
|||
import ayon_api
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline import (
|
||||
get_representation_path,
|
||||
publish,
|
||||
)
|
||||
import ayon_core.hosts.houdini.api.usd as hou_usdlib
|
||||
from ayon_core.hosts.houdini.api.lib import render_rop
|
||||
from ayon_core.pipeline import get_representation_path
|
||||
from ayon_houdini.api import plugin
|
||||
import ayon_houdini.api.usd as hou_usdlib
|
||||
from ayon_houdini.api.lib import render_rop
|
||||
|
||||
|
||||
class ExitStack(object):
|
||||
|
|
@ -154,11 +152,10 @@ def parm_values(overrides):
|
|||
parm.set(value)
|
||||
|
||||
|
||||
class ExtractUSDLayered(publish.Extractor):
|
||||
class ExtractUSDLayered(plugin.HoudiniExtractorPlugin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder
|
||||
label = "Extract Layered USD"
|
||||
hosts = ["houdini"]
|
||||
families = ["usdLayered", "usdShade"]
|
||||
|
||||
# Force Output Processors so it will always save any file
|
||||
|
|
@ -312,3 +309,14 @@ class ExtractUSDLayered(publish.Extractor):
|
|||
return False
|
||||
|
||||
return filecmp.cmp(old_file, new_file)
|
||||
|
||||
def staging_dir(self, instance):
|
||||
"""Provide a temporary directory in which to store extracted files
|
||||
|
||||
Upon calling this method the staging directory is stored inside
|
||||
the instance.data['stagingDir']
|
||||
"""
|
||||
|
||||
from ayon_core.pipeline.publish import get_instance_staging_dir
|
||||
|
||||
return get_instance_staging_dir(instance)
|
||||
|
|
@ -1,19 +1,17 @@
|
|||
import os
|
||||
import hou
|
||||
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline import publish
|
||||
from ayon_core.hosts.houdini.api.lib import render_rop
|
||||
|
||||
import hou
|
||||
from ayon_houdini.api import plugin
|
||||
from ayon_houdini.api.lib import render_rop
|
||||
|
||||
|
||||
class ExtractVDBCache(publish.Extractor):
|
||||
class ExtractVDBCache(plugin.HoudiniExtractorPlugin):
|
||||
|
||||
order = pyblish.api.ExtractorOrder + 0.1
|
||||
label = "Extract VDB Cache"
|
||||
families = ["vdbcache"]
|
||||
hosts = ["houdini"]
|
||||
|
||||
def process(self, instance):
|
||||
if instance.data.get("farm"):
|
||||
|
|
@ -25,4 +25,4 @@ ROP node `{rop_path}` is set to export SOP path `{sop_path}`.
|
|||
|
||||
</detail>
|
||||
</error>
|
||||
</root>
|
||||
</root>
|
||||
|
|
@ -2,11 +2,15 @@ import pyblish.api
|
|||
|
||||
from ayon_core.lib import version_up
|
||||
from ayon_core.pipeline import registered_host
|
||||
from ayon_core.pipeline.publish import get_errored_plugins_from_context
|
||||
from ayon_core.pipeline.publish import KnownPublishError
|
||||
from ayon_core.pipeline.publish import (
|
||||
get_errored_plugins_from_context,
|
||||
KnownPublishError
|
||||
)
|
||||
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class IncrementCurrentFile(pyblish.api.ContextPlugin):
|
||||
class IncrementCurrentFile(plugin.HoudiniContextPlugin):
|
||||
"""Increment the current file.
|
||||
|
||||
Saves the current scene with an increased version number.
|
||||
|
|
@ -15,7 +19,6 @@ class IncrementCurrentFile(pyblish.api.ContextPlugin):
|
|||
|
||||
label = "Increment current file"
|
||||
order = pyblish.api.IntegratorOrder + 9.0
|
||||
hosts = ["houdini"]
|
||||
families = ["workfile",
|
||||
"usdrender",
|
||||
"mantra_rop",
|
||||
|
|
@ -2,13 +2,14 @@ import pyblish.api
|
|||
|
||||
from ayon_core.pipeline import registered_host
|
||||
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
class SaveCurrentScene(pyblish.api.ContextPlugin):
|
||||
|
||||
class SaveCurrentScene(plugin.HoudiniContextPlugin):
|
||||
"""Save current scene"""
|
||||
|
||||
label = "Save current file"
|
||||
order = pyblish.api.ExtractorOrder - 0.49
|
||||
hosts = ["houdini"]
|
||||
|
||||
def process(self, context):
|
||||
|
||||
|
|
@ -1,11 +1,13 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import pyblish.api
|
||||
|
||||
from collections import defaultdict
|
||||
|
||||
import pyblish.api
|
||||
from ayon_core.pipeline import PublishValidationError
|
||||
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
class ValidateAbcPrimitiveToDetail(pyblish.api.InstancePlugin):
|
||||
|
||||
class ValidateAbcPrimitiveToDetail(plugin.HoudiniInstancePlugin):
|
||||
"""Validate Alembic ROP Primitive to Detail attribute is consistent.
|
||||
|
||||
The Alembic ROP crashes Houdini whenever an attribute in the "Primitive to
|
||||
|
|
@ -18,7 +20,6 @@ class ValidateAbcPrimitiveToDetail(pyblish.api.InstancePlugin):
|
|||
|
||||
order = pyblish.api.ValidatorOrder + 0.1
|
||||
families = ["abc"]
|
||||
hosts = ["houdini"]
|
||||
label = "Validate Primitive to Detail (Abc)"
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,8 +1,10 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import pyblish.api
|
||||
import hou
|
||||
import pyblish.api
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
class ValidateAlembicROPFaceSets(pyblish.api.InstancePlugin):
|
||||
|
||||
class ValidateAlembicROPFaceSets(plugin.HoudiniInstancePlugin):
|
||||
"""Validate Face Sets are disabled for extraction to pointcache.
|
||||
|
||||
When groups are saved as Face Sets with the Alembic these show up
|
||||
|
|
@ -19,7 +21,6 @@ class ValidateAlembicROPFaceSets(pyblish.api.InstancePlugin):
|
|||
|
||||
order = pyblish.api.ValidatorOrder + 0.1
|
||||
families = ["abc"]
|
||||
hosts = ["houdini"]
|
||||
label = "Validate Alembic ROP Face Sets"
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,10 +1,12 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import hou
|
||||
import pyblish.api
|
||||
from ayon_core.pipeline import PublishValidationError
|
||||
import hou
|
||||
|
||||
from ayon_houdini.api import plugin
|
||||
|
||||
|
||||
class ValidateAlembicInputNode(pyblish.api.InstancePlugin):
|
||||
class ValidateAlembicInputNode(plugin.HoudiniInstancePlugin):
|
||||
"""Validate that the node connected to the output is correct.
|
||||
|
||||
The connected node cannot be of the following types for Alembic:
|
||||
|
|
@ -15,7 +17,6 @@ class ValidateAlembicInputNode(pyblish.api.InstancePlugin):
|
|||
|
||||
order = pyblish.api.ValidatorOrder + 0.1
|
||||
families = ["abc"]
|
||||
hosts = ["houdini"]
|
||||
label = "Validate Input Node (Abc)"
|
||||
|
||||
def process(self, instance):
|
||||
|
|
@ -1,11 +1,12 @@
|
|||
import pyblish.api
|
||||
|
||||
from ayon_core.pipeline.publish import PublishValidationError
|
||||
from ayon_core.hosts.houdini.api import lib
|
||||
import hou
|
||||
|
||||
import pyblish.api
|
||||
from ayon_core.pipeline.publish import PublishValidationError
|
||||
|
||||
class ValidateAnimationSettings(pyblish.api.InstancePlugin):
|
||||
from ayon_houdini.api import lib, plugin
|
||||
|
||||
|
||||
class ValidateAnimationSettings(plugin.HoudiniInstancePlugin):
|
||||
"""Validate if the unexpanded string contains the frame ('$F') token
|
||||
|
||||
This validator will only check the output parameter of the node if
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue