mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Merge branch 'master' into release/2.6.0
This commit is contained in:
commit
3b65b01d5e
5 changed files with 78 additions and 36 deletions
|
|
@ -26,11 +26,7 @@ class SyncToAvalonEvent(BaseEvent):
|
|||
|
||||
dbcon = DbConnector()
|
||||
|
||||
ignore_entTypes = [
|
||||
"socialfeed", "socialnotification", "note",
|
||||
"assetversion", "job", "user", "reviewsessionobject", "timer",
|
||||
"timelog", "auth_userrole", "appointment", "notelabellink"
|
||||
]
|
||||
interest_entTypes = ["show", "task"]
|
||||
ignore_ent_types = ["Milestone"]
|
||||
ignore_keys = ["statusid", "thumbid"]
|
||||
|
||||
|
|
@ -137,9 +133,10 @@ class SyncToAvalonEvent(BaseEvent):
|
|||
if self._avalon_ents_by_id is None:
|
||||
self._avalon_ents_by_id = {}
|
||||
proj, ents = self.avalon_entities
|
||||
self._avalon_ents_by_id[proj["_id"]] = proj
|
||||
for ent in ents:
|
||||
self._avalon_ents_by_id[ent["_id"]] = ent
|
||||
if proj:
|
||||
self._avalon_ents_by_id[proj["_id"]] = proj
|
||||
for ent in ents:
|
||||
self._avalon_ents_by_id[ent["_id"]] = ent
|
||||
return self._avalon_ents_by_id
|
||||
|
||||
@property
|
||||
|
|
@ -159,13 +156,14 @@ class SyncToAvalonEvent(BaseEvent):
|
|||
if self._avalon_ents_by_ftrack_id is None:
|
||||
self._avalon_ents_by_ftrack_id = {}
|
||||
proj, ents = self.avalon_entities
|
||||
ftrack_id = proj["data"]["ftrackId"]
|
||||
self._avalon_ents_by_ftrack_id[ftrack_id] = proj
|
||||
for ent in ents:
|
||||
ftrack_id = ent["data"].get("ftrackId")
|
||||
if ftrack_id is None:
|
||||
continue
|
||||
self._avalon_ents_by_ftrack_id[ftrack_id] = ent
|
||||
if proj:
|
||||
ftrack_id = proj["data"]["ftrackId"]
|
||||
self._avalon_ents_by_ftrack_id[ftrack_id] = proj
|
||||
for ent in ents:
|
||||
ftrack_id = ent["data"].get("ftrackId")
|
||||
if ftrack_id is None:
|
||||
continue
|
||||
self._avalon_ents_by_ftrack_id[ftrack_id] = ent
|
||||
return self._avalon_ents_by_ftrack_id
|
||||
|
||||
@property
|
||||
|
|
@ -508,7 +506,7 @@ class SyncToAvalonEvent(BaseEvent):
|
|||
found_actions = set()
|
||||
for ent_info in entities_info:
|
||||
entityType = ent_info["entityType"]
|
||||
if entityType in self.ignore_entTypes:
|
||||
if entityType not in self.interest_entTypes:
|
||||
continue
|
||||
|
||||
entity_type = ent_info.get("entity_type")
|
||||
|
|
|
|||
|
|
@ -33,6 +33,11 @@ class ExtractBurnin(pype.api.Extractor):
|
|||
duration = frame_end - frame_start + 1
|
||||
|
||||
prep_data = copy.deepcopy(instance.data["anatomyData"])
|
||||
|
||||
if "slate.farm" in instance.data["families"]:
|
||||
frame_start += 1
|
||||
duration -= 1
|
||||
|
||||
prep_data.update({
|
||||
"frame_start": frame_start,
|
||||
"frame_end": frame_end,
|
||||
|
|
@ -42,22 +47,6 @@ class ExtractBurnin(pype.api.Extractor):
|
|||
"intent": instance.context.data.get("intent", "")
|
||||
})
|
||||
|
||||
slate_frame_start = frame_start
|
||||
slate_frame_end = frame_end
|
||||
slate_duration = duration
|
||||
|
||||
# exception for slate workflow
|
||||
if "slate" in instance.data["families"]:
|
||||
slate_frame_start = frame_start - 1
|
||||
slate_frame_end = frame_end
|
||||
slate_duration = slate_frame_end - slate_frame_start + 1
|
||||
|
||||
prep_data.update({
|
||||
"slate_frame_start": slate_frame_start,
|
||||
"slate_frame_end": slate_frame_end,
|
||||
"slate_duration": slate_duration
|
||||
})
|
||||
|
||||
# get anatomy project
|
||||
anatomy = instance.context.data['anatomy']
|
||||
|
||||
|
|
@ -101,6 +90,26 @@ class ExtractBurnin(pype.api.Extractor):
|
|||
filled_anatomy = anatomy.format_all(_prep_data)
|
||||
_prep_data["anatomy"] = filled_anatomy.get_solved()
|
||||
|
||||
# dealing with slates
|
||||
slate_frame_start = frame_start
|
||||
slate_frame_end = frame_end
|
||||
slate_duration = duration
|
||||
|
||||
# exception for slate workflow
|
||||
if ("slate" in instance.data["families"]):
|
||||
if "slate-frame" in repre.get("tags", []):
|
||||
slate_frame_start = frame_start - 1
|
||||
slate_frame_end = frame_end
|
||||
slate_duration = duration + 1
|
||||
|
||||
self.log.debug("__1 slate_frame_start: {}".format(slate_frame_start))
|
||||
|
||||
_prep_data.update({
|
||||
"slate_frame_start": slate_frame_start,
|
||||
"slate_frame_end": slate_frame_end,
|
||||
"slate_duration": slate_duration
|
||||
})
|
||||
|
||||
burnin_data = {
|
||||
"input": full_movie_path.replace("\\", "/"),
|
||||
"codec": repre.get("codec", []),
|
||||
|
|
|
|||
|
|
@ -41,6 +41,9 @@ class CollectNukeWrites(pyblish.api.InstancePlugin):
|
|||
handle_end = instance.context.data["handleEnd"]
|
||||
first_frame = int(nuke.root()["first_frame"].getValue())
|
||||
last_frame = int(nuke.root()["last_frame"].getValue())
|
||||
frame_length = int(
|
||||
last_frame - first_frame + 1
|
||||
)
|
||||
|
||||
if node["use_limit"].getValue():
|
||||
handles = 0
|
||||
|
|
@ -81,8 +84,26 @@ class CollectNukeWrites(pyblish.api.InstancePlugin):
|
|||
collected_frames = [f for f in os.listdir(output_dir)
|
||||
if ext in f]
|
||||
if collected_frames:
|
||||
representation['frameStart'] = "%0{}d".format(
|
||||
collected_frames_len = len(collected_frames)
|
||||
frame_start_str = "%0{}d".format(
|
||||
len(str(last_frame))) % first_frame
|
||||
representation['frameStart'] = frame_start_str
|
||||
|
||||
# in case slate is expected and not yet rendered
|
||||
self.log.debug("_ frame_length: {}".format(frame_length))
|
||||
self.log.debug(
|
||||
"_ collected_frames_len: {}".format(
|
||||
collected_frames_len))
|
||||
# this will only run if slate frame is not already
|
||||
# rendered from previews publishes
|
||||
if "slate" in instance.data["families"] \
|
||||
and (frame_length == collected_frames_len):
|
||||
frame_slate_str = "%0{}d".format(
|
||||
len(str(last_frame))) % (first_frame - 1)
|
||||
slate_frame = collected_frames[0].replace(
|
||||
frame_start_str, frame_slate_str)
|
||||
collected_frames.insert(0, slate_frame)
|
||||
|
||||
representation['files'] = collected_frames
|
||||
instance.data["representations"].append(representation)
|
||||
except Exception:
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ class ExtractSlateFrame(pype.api.Extractor):
|
|||
self.render_slate(instance)
|
||||
|
||||
def render_slate(self, instance):
|
||||
node_subset_name = instance.data.get("name", None)
|
||||
node = instance[0] # group node
|
||||
self.log.info("Creating staging dir...")
|
||||
|
||||
|
|
@ -47,6 +48,10 @@ class ExtractSlateFrame(pype.api.Extractor):
|
|||
self.log.info(
|
||||
"StagingDir `{0}`...".format(instance.data["stagingDir"]))
|
||||
|
||||
frame_length = int(
|
||||
instance.data["frameEnd"] - instance.data["frameStart"] + 1
|
||||
)
|
||||
|
||||
temporary_nodes = []
|
||||
collection = instance.data.get("collection", None)
|
||||
|
||||
|
|
@ -56,10 +61,16 @@ class ExtractSlateFrame(pype.api.Extractor):
|
|||
"{head}{padding}{tail}"))
|
||||
fhead = collection.format("{head}")
|
||||
|
||||
collected_frames_len = int(len(collection.indexes))
|
||||
|
||||
# get first and last frame
|
||||
first_frame = min(collection.indexes) - 1
|
||||
|
||||
if "slate" in instance.data["families"]:
|
||||
self.log.info('frame_length: {}'.format(frame_length))
|
||||
self.log.info(
|
||||
'len(collection.indexes): {}'.format(collected_frames_len)
|
||||
)
|
||||
if ("slate" in instance.data["families"]) \
|
||||
and (frame_length != collected_frames_len):
|
||||
first_frame += 1
|
||||
|
||||
last_frame = first_frame
|
||||
|
|
@ -103,6 +114,8 @@ class ExtractSlateFrame(pype.api.Extractor):
|
|||
|
||||
# Render frames
|
||||
nuke.execute(write_node.name(), int(first_frame), int(last_frame))
|
||||
# also render slate as sequence frame
|
||||
nuke.execute(node_subset_name, int(first_frame), int(last_frame))
|
||||
|
||||
self.log.debug(
|
||||
"slate frame path: {}".format(instance.data["slateFrame"]))
|
||||
|
|
|
|||
|
|
@ -76,7 +76,8 @@ class ValidateRenderedFrames(pyblish.api.InstancePlugin):
|
|||
'len(collection.indexes): {}'.format(collected_frames_len)
|
||||
)
|
||||
|
||||
if "slate" in instance.data["families"]:
|
||||
if ("slate" in instance.data["families"]) \
|
||||
and (frame_length != collected_frames_len):
|
||||
collected_frames_len -= 1
|
||||
|
||||
assert (collected_frames_len == frame_length), (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue