Bases: InstancePlugin
Collect new plates from Reel.
Source code in client/ayon_flame/plugins/publish/collect_plate_from_reel.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 | class CollectReelPlate(pyblish.api.InstancePlugin):
"""Collect new plates from Reel."""
order = order = pyblish.api.CollectorOrder - 0.48
label = "Collect Plate from Reel"
hosts = ["flame"]
families = ["plate"]
def process(self, instance):
"""
Args:
instance (pyblish.Instance): The shot instance to update.
"""
if (instance.data.get("flame_context") != "FlameMenuUniversal"):
# Plate instance could also come from Timeline.
self.log.debug("Current plate instance is part of a timeline.")
return
# Adjust instance families
instance.data["families"].append("clip")
if instance.data["creator_attributes"].get("review"):
instance.data["families"].append("review")
clip_data = instance.data["clip_data"]
version_data = instance.data.setdefault("versionData", {})
version_data["colorSpace"] = clip_data["colour_space"]
instance_clip_data = {
"clipIn": clip_data["record_in"],
"clipOut": clip_data["record_out"],
"colorspace": clip_data["colour_space"],
"fps": clip_data["fps"],
"frameStart": clip_data["record_in"],
"frameEnd": clip_data["record_out"],
"handleStart": 0,
"handleEnd": 0,
"item": instance.data["transientData"]["clip_item"],
"path": clip_data["fpath"],
"resolutionWidth": clip_data["width"],
"resolutionHeight": clip_data["height"],
"sourceFirstFrame": clip_data["source_in"],
"xml_overrides": {},
}
# Build otio timeline and otio clip from clip item.
flame_export.OtioExportCTX.set_fps(instance_clip_data["fps"])
# Cannot use instance data as PySegment is not serializable.
clip_data_duplicate = clip_data.copy()
clip_data_duplicate["PySegment"] = lib.get_clip_segment(
instance_clip_data["item"]
)
otio_clip = flame_export.create_otio_clip(clip_data_duplicate)
otio_timeline = otio.schema.Timeline(
tracks=[otio.schema.Track(children=[otio_clip])]
)
instance_clip_data.update({
"otioClip": otio_clip,
"otioTimeline": otio_timeline,
})
self.log.debug(f">>> Clip data: {pformat(instance_clip_data)}")
instance.data.update(instance_clip_data)
|
process(instance)
Parameters:
| Name | Type | Description | Default |
instance | Instance | The shot instance to update. | required |
Source code in client/ayon_flame/plugins/publish/collect_plate_from_reel.py
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 | def process(self, instance):
"""
Args:
instance (pyblish.Instance): The shot instance to update.
"""
if (instance.data.get("flame_context") != "FlameMenuUniversal"):
# Plate instance could also come from Timeline.
self.log.debug("Current plate instance is part of a timeline.")
return
# Adjust instance families
instance.data["families"].append("clip")
if instance.data["creator_attributes"].get("review"):
instance.data["families"].append("review")
clip_data = instance.data["clip_data"]
version_data = instance.data.setdefault("versionData", {})
version_data["colorSpace"] = clip_data["colour_space"]
instance_clip_data = {
"clipIn": clip_data["record_in"],
"clipOut": clip_data["record_out"],
"colorspace": clip_data["colour_space"],
"fps": clip_data["fps"],
"frameStart": clip_data["record_in"],
"frameEnd": clip_data["record_out"],
"handleStart": 0,
"handleEnd": 0,
"item": instance.data["transientData"]["clip_item"],
"path": clip_data["fpath"],
"resolutionWidth": clip_data["width"],
"resolutionHeight": clip_data["height"],
"sourceFirstFrame": clip_data["source_in"],
"xml_overrides": {},
}
# Build otio timeline and otio clip from clip item.
flame_export.OtioExportCTX.set_fps(instance_clip_data["fps"])
# Cannot use instance data as PySegment is not serializable.
clip_data_duplicate = clip_data.copy()
clip_data_duplicate["PySegment"] = lib.get_clip_segment(
instance_clip_data["item"]
)
otio_clip = flame_export.create_otio_clip(clip_data_duplicate)
otio_timeline = otio.schema.Timeline(
tracks=[otio.schema.Track(children=[otio_clip])]
)
instance_clip_data.update({
"otioClip": otio_clip,
"otioTimeline": otio_timeline,
})
self.log.debug(f">>> Clip data: {pformat(instance_clip_data)}")
instance.data.update(instance_clip_data)
|