Skip to content

Commit

Permalink
Merge pull request #516 from ynput/chore/AY-4916_Move-Houdini-client-…
Browse files Browse the repository at this point in the history
…code

Move houdini client code
  • Loading branch information
antirotor committed Jun 3, 2024
2 parents e08e398 + ade51cb commit 750ad82
Show file tree
Hide file tree
Showing 139 changed files with 502 additions and 433 deletions.
1 change: 1 addition & 0 deletions client/ayon_core/addon/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
"nuke": VersionInfo(0, 2, 0),
"resolve": VersionInfo(0, 2, 0),
"substancepainter": VersionInfo(0, 2, 0),
"houdini": VersionInfo(0, 3, 0),
}


Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@


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)
"""

Expand Down Expand Up @@ -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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@
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,
emit_event,
)


log = logging.getLogger("ayon_core.hosts.houdini")
log = logging.getLogger("ayon_houdini")

AVALON_CONTAINERS = "/obj/AVALON_CONTAINERS"
CONTEXT_CONTAINER = "/obj/OpenPypeContext"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,25 @@
import six
import hou

import pyblish.api
from ayon_core.pipeline import (
CreatorError,
LegacyCreator,
Creator as NewCreator,
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
Expand Down Expand Up @@ -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 = []
Expand Down Expand Up @@ -347,3 +356,39 @@ def apply_settings(self, project_settings):

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
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

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():
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -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):
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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


Expand Down
Original file line number Diff line number Diff line change
@@ -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


Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
Original file line number Diff line number Diff line change
@@ -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


Expand Down
Original file line number Diff line number Diff line change
@@ -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


Expand Down
Original file line number Diff line number Diff line change
@@ -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


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -105,7 +105,7 @@ def get_obj_output(self, obj_node):
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,
Expand Down
Original file line number Diff line number Diff line change
@@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -103,7 +103,7 @@ def create(self, product_name, instance_data, pre_create_data):
# 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,
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -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):
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -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
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down Expand Up @@ -42,7 +42,7 @@ def load(self, context, name, namespace, data):
hou.playbar.setPlaybackRange(start, end)


class SetFrameRangeWithHandlesLoader(load.LoaderPlugin):
class SetFrameRangeWithHandlesLoader(plugin.HoudiniLoader):
"""Set frame range including pre- and post-handles"""

product_types = {
Expand Down
Original file line number Diff line number Diff line change
@@ -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"}
Expand Down
Loading

0 comments on commit 750ad82

Please sign in to comment.