mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 05:14:40 +01:00
cleanup write publishing and loading
This commit is contained in:
parent
e521eaacce
commit
11cf14e282
6 changed files with 51 additions and 51 deletions
|
|
@ -20,29 +20,31 @@ class ValidateWriteFamilies(pyblish.api.InstancePlugin):
|
|||
""" Validates write families. """
|
||||
|
||||
order = pyblish.api.ValidatorOrder
|
||||
label = "Check correct writes families"
|
||||
label = "Valitade writes families"
|
||||
hosts = ["nuke"]
|
||||
families = ["write"]
|
||||
actions = [pype.nuke.actions.SelectInvalidAction, pype.api.RepairAction]
|
||||
|
||||
@staticmethod
|
||||
def get_invalid(instance):
|
||||
if not [f for f in instance.data["families"]
|
||||
if ".frames" in f]:
|
||||
return
|
||||
|
||||
if not instance.data["files"]:
|
||||
return (instance)
|
||||
# @staticmethod
|
||||
# def get_invalid(instance):
|
||||
# for f in instance.data["families"]:
|
||||
# if ".frames" in f:
|
||||
# return
|
||||
#
|
||||
# if not instance.data["files"]:
|
||||
# return (instance)
|
||||
|
||||
def process(self, instance):
|
||||
self.log.debug('instance.data["files"]: {}'.format(instance.data['files']))
|
||||
invalid = self.get_invalid(instance)
|
||||
|
||||
if invalid:
|
||||
raise ValueError(str("`{}`: Switch `Render` on! "
|
||||
"> {}".format(__name__, invalid)))
|
||||
|
||||
self.log.info("Checked correct writes families")
|
||||
# if any(".frames" in f for f in instance.data["families"]):
|
||||
# if not instance.data["files"]:
|
||||
# raise ValueError("instance {} is set to publish frames\
|
||||
# but no files were collected, render the frames first or\
|
||||
# check 'render' checkbox onthe no to 'ON'".format(instance)))
|
||||
#
|
||||
#
|
||||
# self.log.info("Checked correct writes families")
|
||||
|
||||
@classmethod
|
||||
def repair(cls, instance):
|
||||
|
|
@ -36,13 +36,13 @@ def preserve_trim(node):
|
|||
if start_at_frame:
|
||||
node['frame_mode'].setValue("start at")
|
||||
node['frame'].setValue(str(script_start))
|
||||
log.info("start frame of reader was set to"
|
||||
log.info("start frame of Read was set to"
|
||||
"{}".format(script_start))
|
||||
|
||||
if offset_frame:
|
||||
node['frame_mode'].setValue("offset")
|
||||
node['frame'].setValue(str((script_start + offset_frame)))
|
||||
log.info("start frame of reader was set to"
|
||||
log.info("start frame of Read was set to"
|
||||
"{}".format(script_start))
|
||||
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ def loader_shift(node, frame, relative=True):
|
|||
|
||||
if relative:
|
||||
node['frame_mode'].setValue("start at")
|
||||
node['frame'].setValue(str(script_start))
|
||||
node['frame'].setValue(str(frame))
|
||||
|
||||
return int(script_start)
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ def loader_shift(node, frame, relative=True):
|
|||
class LoadSequence(api.Loader):
|
||||
"""Load image sequence into Nuke"""
|
||||
|
||||
families = ["write"]
|
||||
families = ["write", "source"]
|
||||
representations = ["*"]
|
||||
|
||||
label = "Load sequence"
|
||||
|
|
@ -142,8 +142,9 @@ class LoadSequence(api.Loader):
|
|||
data_imprint = {}
|
||||
for k in add_keys:
|
||||
data_imprint.update({k: context["version"]['data'][k]})
|
||||
data_imprint.update({"objectName": read_name})
|
||||
|
||||
containerise(r,
|
||||
return containerise(r,
|
||||
name=name,
|
||||
namespace=namespace,
|
||||
context=context,
|
||||
|
|
@ -168,9 +169,9 @@ class LoadSequence(api.Loader):
|
|||
update_container
|
||||
)
|
||||
log.info("this i can see")
|
||||
node = container["_tool"]
|
||||
# TODO: prepare also for other readers img/geo/camera
|
||||
assert node.Class() == "Reader", "Must be Reader"
|
||||
node = nuke.toNode(container['objectName'])
|
||||
# TODO: prepare also for other Read img/geo/camera
|
||||
assert node.Class() == "Read", "Must be Read"
|
||||
|
||||
root = api.get_representation_path(representation)
|
||||
file = ls_img_sequence(os.path.dirname(root), one=True)
|
||||
|
|
@ -189,7 +190,7 @@ class LoadSequence(api.Loader):
|
|||
|
||||
# Update the loader's path whilst preserving some values
|
||||
with preserve_trim(node):
|
||||
node["file"] = file["path"]
|
||||
node["file"].setValue(file["path"])
|
||||
|
||||
# Set the global in to the start frame of the sequence
|
||||
global_in_changed = loader_shift(node, start, relative=False)
|
||||
|
|
@ -208,8 +209,8 @@ class LoadSequence(api.Loader):
|
|||
|
||||
from avalon.nuke import viewer_update_and_undo_stop
|
||||
|
||||
node = container["_tool"]
|
||||
assert node.Class() == "Reader", "Must be Reader"
|
||||
node = nuke.toNode(container['objectName'])
|
||||
assert node.Class() == "Read", "Must be Read"
|
||||
|
||||
with viewer_update_and_undo_stop():
|
||||
nuke.delete(node)
|
||||
|
|
|
|||
|
|
@ -15,31 +15,28 @@ class CollectInstanceFamilies(pyblish.api.ContextPlugin):
|
|||
if "write" in instance.data["family"]:
|
||||
node = instance[0]
|
||||
|
||||
# set for ftrack to accept
|
||||
instance.data["families"] = ["ftrack"]
|
||||
families = []
|
||||
if instance.data.get('families'):
|
||||
families.append(instance.data['families'])
|
||||
|
||||
if not node["render"].value():
|
||||
families = ["{}.frames".format(
|
||||
instance.data["avalonKnob"]["families"])]
|
||||
# to ignore staging dir op in integrate
|
||||
instance.data['transfer'] = False
|
||||
else:
|
||||
# set for ftrack to accept
|
||||
# instance.data["families"] = ["ftrack"]
|
||||
|
||||
if node["render"].value():
|
||||
# dealing with local/farm rendering
|
||||
if node["render_farm"].value():
|
||||
families = ["{}.farm".format(
|
||||
instance.data["avalonKnob"]["families"])]
|
||||
families.append("render.farm")
|
||||
else:
|
||||
families = ["{}.local".format(
|
||||
instance.data["avalonKnob"]["families"])]
|
||||
families.append("render.local")
|
||||
else:
|
||||
families.append("render.frames")
|
||||
# to ignore staging dir op in integrate
|
||||
instance.data['transfer'] = False
|
||||
|
||||
instance.data["families"].extend(families)
|
||||
|
||||
elif "source" in instance.data["family"]:
|
||||
families = []
|
||||
families.append(instance.data["avalonKnob"]["families"])
|
||||
|
||||
instance.data["families"] = families
|
||||
|
||||
|
||||
# Sort/grouped by family (preserving local index)
|
||||
context[:] = sorted(context, key=self.sort_by_family)
|
||||
|
||||
|
|
|
|||
|
|
@ -56,8 +56,8 @@ class CollectNukeInstances(pyblish.api.ContextPlugin):
|
|||
"fps": int(nuke.root()['fps'].value())
|
||||
|
||||
})
|
||||
if node.Class() == "Write":
|
||||
instance.data["families"] = [avalon_knob_data["families"]]
|
||||
# if node.Class() == "Write":
|
||||
# instance.data["families"] = [avalon_knob_data["families"]]
|
||||
self.log.info("collected instance: {}".format(instance.data))
|
||||
instances.append(instance)
|
||||
|
||||
|
|
|
|||
|
|
@ -64,14 +64,13 @@ class CollectNukeWrites(pyblish.api.ContextPlugin):
|
|||
# collect families in next file
|
||||
if "files" not in instance.data:
|
||||
instance.data["files"] = list()
|
||||
|
||||
try:
|
||||
collected_frames = os.listdir(output_dir)
|
||||
self.log.debug("collected_frames: {}".format(label))
|
||||
instance.data["files"].append(collected_frames)
|
||||
|
||||
except Exception:
|
||||
pass
|
||||
self.log.debug("couldn't collect frames: {}".format(label))
|
||||
|
||||
instance.data.update({
|
||||
"path": path,
|
||||
|
|
|
|||
|
|
@ -20,20 +20,19 @@ class RepairCollectionAction(pyblish.api.Action):
|
|||
self.log.info("Rendering toggled ON")
|
||||
|
||||
|
||||
class ValidateCollection(pyblish.api.InstancePlugin):
|
||||
class ValidatePrerenderedFrames(pyblish.api.InstancePlugin):
|
||||
""" Validates file output. """
|
||||
|
||||
order = pyblish.api.ValidatorOrder + 0.1
|
||||
families = ["render.frames", "still.frames", "prerender.frames"]
|
||||
|
||||
label = "Check prerendered frames"
|
||||
label = "Validate prerendered frame"
|
||||
hosts = ["nuke"]
|
||||
actions = [RepairCollectionAction]
|
||||
|
||||
def process(self, instance):
|
||||
self.log.debug('instance.data["files"]: {}'.format(instance.data['files']))
|
||||
if not instance.data["files"]:
|
||||
return
|
||||
assert instance.data["files"], "No frames have been collected"
|
||||
|
||||
collections, remainder = clique.assemble(*instance.data['files'])
|
||||
self.log.info('collections: {}'.format(str(collections)))
|
||||
|
|
@ -57,3 +56,5 @@ class ValidateCollection(pyblish.api.InstancePlugin):
|
|||
collection.indexes
|
||||
) is frame_length, "{} missing frames. Use "
|
||||
"repair to render all frames".format(__name__)
|
||||
|
||||
instance.data['collection'] = collection
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue