refactor the capture function and move it to lib

This commit is contained in:
Kayla Man 2023-12-19 22:44:18 +08:00
parent 008f78e6a0
commit f9603bb0a5
3 changed files with 31 additions and 46 deletions

View file

@ -9,6 +9,8 @@ import re
import json
import logging
import contextlib
import capture
from .exitstack import ExitStack
from collections import OrderedDict, defaultdict
from math import ceil
from six import string_types
@ -183,6 +185,32 @@ def reload_all_udim_tile_previews():
cmds.ogs(regenerateUVTilePreview=texture_file)
def capture_with_preset(preset):
if os.environ.get("OPENPYPE_DEBUG") == "1":
log.debug(
"Using preset: {}".format(
json.dumps(preset, indent=4, sort_keys=True)
)
)
if preset["viewport_options"].get("textures"):
with ExitStack() as stack:
stack.enter_context(material_loading_mode())
if preset["viewport_options"].get("reloadTextures"):
# Regenerate all UDIM tiles previews
reload_all_udim_tile_previews()
# not supported by `capture`
preset["viewport_options"].pop("reloadTextures", None)
path = capture.capture(log=self.log, **preset)
self.log.debug("playblast path {}".format(path))
else:
preset["viewport_options"].pop("reloadTextures", None)
path = capture.capture(log=self.log, **preset)
self.log.debug("playblast path {}".format(path))
return path
@contextlib.contextmanager
def material_loading_mode(mode="immediate"):
"""Set material loading mode during context"""