Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Commit

Permalink
Deadline publish plugin override output option
Browse files Browse the repository at this point in the history
  • Loading branch information
jlorrain authored and ClementHector committed Feb 7, 2022
1 parent 6f79251 commit cc3167b
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
2 changes: 2 additions & 0 deletions openpype/hosts/maya/plugins/create/create_render.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ def process(self):
])

cmds.setAttr("{}.machineList".format(self.instance), lock=True)
cmds.setAttr("{}.overrideOutput".format(self.instance), lock=False)
self._rs = renderSetup.instance()
layers = self._rs.getRenderLayers()
if use_selection:
Expand Down Expand Up @@ -265,6 +266,7 @@ def _create_render_settings(self):
self.data["framesPerTask"] = 1
self.data["whitelist"] = False
self.data["machineList"] = ""
self.data["overrideOutput"] = ""
self.data["useMayaBatch"] = False
self.data["tileRendering"] = False
self.data["tilesX"] = 2
Expand Down
5 changes: 5 additions & 0 deletions openpype/hosts/maya/plugins/publish/collect_render.py
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,11 @@ def parse_options(self, render_globals):
key = "Whitelist" if attributes["whitelist"] else "Blacklist"
options["renderGlobals"][key] = machine_list

# Override Output
override_output = attributes["overrideOutput"]
if override_output:
options["overrideOutput"] = override_output

# Suspend publish job
state = "Suspended" if attributes["suspendPublishJob"] else "Active"
options["publishJobState"] = state
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ def _format_tiles(
return out, cfg


def get_renderer_variables(renderlayer, root):
def get_renderer_variables(renderlayer, root, override=False):
"""Retrieve the extension which has been set in the VRay settings.
Will return None if the current renderer is not VRay
Expand All @@ -179,13 +179,21 @@ def get_renderer_variables(renderlayer, root):
padding = cmds.getAttr("{}.{}".format(render_attrs["node"],
render_attrs["padding"]))

if override:
workspace = cmds.workspace(q=True, rootDirectory=True)
cmds.workspace(root, openWorkspace=True)

filename_0 = cmds.renderSettings(
fullPath=True,
gin="#" * int(padding),
lut=True,
layer=renderlayer or lib.get_current_renderlayer())[0]
filename_0 = re.sub('_<RenderPass>', '_beauty',
filename_0, flags=re.IGNORECASE)

if override:
cmds.workspace(workspace, openWorkspace=True)

prefix_attr = "defaultRenderGlobals.imageFilePrefix"
if renderer == "vray":
renderlayer = renderlayer.split("_")[-1]
Expand Down Expand Up @@ -393,6 +401,11 @@ def process(self, instance):

self.log.debug(filepath)

override_output = False
override_output_path = instance.data.get('overrideOutput')
if override_output_path:
override_output = True

# Gather needed data ------------------------------------------------
default_render_file = instance.context.data.get('project_settings')\
.get('maya')\
Expand All @@ -402,12 +415,14 @@ def process(self, instance):
filename = os.path.basename(filepath)
comment = context.data.get("comment", "")
dirname = os.path.join(workspace, default_render_file)
if override_output:
dirname = override_output_path
renderlayer = instance.data['setMembers'] # rs_beauty
deadline_user = context.data.get("user", getpass.getuser())
jobname = "%s - %s" % (filename, instance.name)

# Get the variables depending on the renderer
render_variables = get_renderer_variables(renderlayer, dirname)
render_variables = get_renderer_variables(renderlayer, dirname, override_output)
filename_0 = render_variables["filename_0"]
if self.use_published:
new_scene = os.path.splitext(filename)[0]
Expand Down

0 comments on commit cc3167b

Please sign in to comment.