Skip to content

Commit

Permalink
Merge pull request #64 from ynput/bugfix/usdrender-Wait_for_render_to…
Browse files Browse the repository at this point in the history
…_complete

Add `ValidateWaitForRender`
  • Loading branch information
moonyuet authored Aug 8, 2024
2 parents dbeb041 + 4623aa9 commit c239540
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions client/ayon_houdini/plugins/publish/validate_wait_for_render.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-
import hou

import pyblish.api
from ayon_core.pipeline import PublishValidationError
from ayon_core.pipeline.publish import RepairAction

from ayon_houdini.api import plugin


class ValidateWaitForRender(plugin.HoudiniInstancePlugin):
"""Validate `WaitForRendertoComplete` is enabled.
Disabling `WaitForRendertoComplete` cause the local render to fail
as the publish execution continues while the render may not be finished yet.
"""

order = pyblish.api.ValidatorOrder
families = ["usdrender"]
label = "Validate Wait For Render to Complete"
actions = [RepairAction]

def process(self, instance):

if not instance.data.get("instance_node"):
# Ignore instances without an instance node
# e.g. in memory bootstrap instances
self.log.debug(
f"Skipping instance without instance node: {instance}"
)
return

if instance.data["creator_attributes"].get("render_target") != "local":
# This validator should work only with local render target.
self.log.debug(
"Skipping Validator, Render target is not 'Local machine rendering'"
)
return

invalid = self.get_invalid(instance)
if invalid:
rop = invalid[0]
raise PublishValidationError(
("ROP node '{}' has 'Wait For Render to Complete' parm disabled."
"Please, enable it.".format(rop.path())),
title=self.label
)

@classmethod
def get_invalid(cls, instance):

rop = hou.node(instance.data["instance_node"])
if not rop.evalParm("soho_foreground"):
return [rop]

@classmethod
def repair(cls, instance):
"""Enable WaitForRendertoComplete. """

rop = hou.node(instance.data["instance_node"])
rop.parm("soho_foreground").set(True)

0 comments on commit c239540

Please sign in to comment.