mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 08:24:53 +01:00
Merge pull request #316 from BigRoy/enhancement/maya_redshiftproxy_from_renderlayer
Maya: Fix RedshiftProxy export from renderlayer
This commit is contained in:
commit
01fa343706
2 changed files with 27 additions and 10 deletions
|
|
@ -19,7 +19,7 @@ from .lib import pairwise
|
||||||
|
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def _allow_export_from_render_setup_layer():
|
def allow_export_from_render_setup_layer():
|
||||||
"""Context manager to override Maya settings to allow RS layer export"""
|
"""Context manager to override Maya settings to allow RS layer export"""
|
||||||
try:
|
try:
|
||||||
|
|
||||||
|
|
@ -102,7 +102,7 @@ def export_in_rs_layer(path, nodes, export=None):
|
||||||
cmds.disconnectAttr(src, dest)
|
cmds.disconnectAttr(src, dest)
|
||||||
|
|
||||||
# Export Selected
|
# Export Selected
|
||||||
with _allow_export_from_render_setup_layer():
|
with allow_export_from_render_setup_layer():
|
||||||
cmds.select(nodes, noExpand=True)
|
cmds.select(nodes, noExpand=True)
|
||||||
if export:
|
if export:
|
||||||
export()
|
export()
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,13 @@ import os
|
||||||
from maya import cmds
|
from maya import cmds
|
||||||
|
|
||||||
from ayon_core.pipeline import publish
|
from ayon_core.pipeline import publish
|
||||||
from ayon_core.hosts.maya.api.lib import maintained_selection
|
from ayon_core.hosts.maya.api.lib import (
|
||||||
|
maintained_selection,
|
||||||
|
renderlayer
|
||||||
|
)
|
||||||
|
from ayon_core.hosts.maya.api.render_setup_tools import (
|
||||||
|
allow_export_from_render_setup_layer
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ExtractRedshiftProxy(publish.Extractor):
|
class ExtractRedshiftProxy(publish.Extractor):
|
||||||
|
|
@ -18,6 +24,9 @@ class ExtractRedshiftProxy(publish.Extractor):
|
||||||
def process(self, instance):
|
def process(self, instance):
|
||||||
"""Extractor entry point."""
|
"""Extractor entry point."""
|
||||||
|
|
||||||
|
# Make sure Redshift is loaded
|
||||||
|
cmds.loadPlugin("redshift4maya", quiet=True)
|
||||||
|
|
||||||
staging_dir = self.staging_dir(instance)
|
staging_dir = self.staging_dir(instance)
|
||||||
file_name = "{}.rs".format(instance.name)
|
file_name = "{}.rs".format(instance.name)
|
||||||
file_path = os.path.join(staging_dir, file_name)
|
file_path = os.path.join(staging_dir, file_name)
|
||||||
|
|
@ -60,14 +69,22 @@ class ExtractRedshiftProxy(publish.Extractor):
|
||||||
|
|
||||||
# Write out rs file
|
# Write out rs file
|
||||||
self.log.debug("Writing: '%s'" % file_path)
|
self.log.debug("Writing: '%s'" % file_path)
|
||||||
|
|
||||||
|
# Allow overriding what renderlayer to export from. By default force
|
||||||
|
# it to the default render layer. (Note that the renderlayer isn't
|
||||||
|
# currently exposed as an attribute to artists)
|
||||||
|
layer = instance.data.get("renderLayer", "defaultRenderLayer")
|
||||||
|
|
||||||
with maintained_selection():
|
with maintained_selection():
|
||||||
cmds.select(instance.data["setMembers"], noExpand=True)
|
with renderlayer(layer):
|
||||||
cmds.file(file_path,
|
with allow_export_from_render_setup_layer():
|
||||||
pr=False,
|
cmds.select(instance.data["setMembers"], noExpand=True)
|
||||||
force=True,
|
cmds.file(file_path,
|
||||||
type="Redshift Proxy",
|
preserveReferences=False,
|
||||||
exportSelected=True,
|
force=True,
|
||||||
options=rs_options)
|
type="Redshift Proxy",
|
||||||
|
exportSelected=True,
|
||||||
|
options=rs_options)
|
||||||
|
|
||||||
if "representations" not in instance.data:
|
if "representations" not in instance.data:
|
||||||
instance.data["representations"] = []
|
instance.data["representations"] = []
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue