make sure the material loading mode is parallel

This commit is contained in:
Kayla Man 2023-12-12 00:15:25 +08:00
parent b73146a538
commit 28a62bff59
3 changed files with 27 additions and 11 deletions

View file

@ -180,7 +180,17 @@ def reload_textures():
for texture_file in texture_files:
if cmds.getAttr("{}.uvTilingMode".format(texture_file)) > 0:
cmds.ogs(regenerateUVTilePreview=texture_file)
cmds.ogs(reloadTextures=True)
@contextlib.contextmanager
def material_loading_mode(mode="immediate"):
"""Set material loading mode during context"""
original = cmds.displayPref(query=True, materialLoadingMode=True)
cmds.displayPref(materialLoadingMode=mode)
try:
yield
finally:
cmds.displayPref(materialLoadingMode=original)
def get_namespace(node):

View file

@ -43,15 +43,17 @@ class ExtractPlayblast(publish.Extractor):
json.dumps(preset, indent=4, sort_keys=True)
)
)
if "textures" in preset["viewport_options"]:
if "reloadTextures" in preset["viewport_options"]:
if "textures" in preset["viewport_options"] and (
"reloadTextures" in preset["viewport_options"]
):
with lib.material_loading_mode():
lib.reload_textures()
else:
self.log.debug(
"Reload Textures during playblasting is disabled.")
# not supported by `capture`
preset["viewport_options"].pop("reloadTextures", None)
path = capture.capture(log=self.log, **preset)
# not supported by `capture`
preset["viewport_options"].pop("reloadTextures", None)
path = capture.capture(log=self.log, **preset)
else:
preset["viewport_options"].pop("reloadTextures", None)
path = capture.capture(log=self.log, **preset)
self.log.debug("playblast path {}".format(path))
def process(self, instance):

View file

@ -154,12 +154,16 @@ class ExtractThumbnail(publish.Extractor):
)
if "textures" in preset["viewport_options"]:
if "reloadTextures" in preset["viewport_options"]:
lib.reload_textures()
with lib.material_loading_mode():
lib.reload_textures()
preset["viewport_options"].pop("reloadTextures", None)
path = capture.capture(**preset)
else:
self.log.debug(
"Reload Textures during playblasting is disabled.")
preset["viewport_options"].pop("reloadTextures", None)
path = capture.capture(**preset)
# not supported by `capture`
preset["viewport_options"].pop("reloadTextures", None)
path = capture.capture(**preset)
playblast = self._fix_playblast_output_path(path)