Bases: Extractor
Extract local render for 3dsmax
Source code in client/ayon_max/plugins/publish/extract_render.py
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 | class ExtractLocalRender(publish.Extractor):
"""Extract local render for 3dsmax"""
label = "Extract Local Render"
families = ["maxrender"]
def process(self, instance):
# Skip if explicitly marked for farm
if instance.data.get("farm"):
self.log.debug("Instance marked for farm, skipping local render.")
return
if instance.data.get("creator_attributes", {}).get(
"render_target"
) != "local":
self.log.debug(
"Instance render target is not local, skipping local render."
)
return
if not instance.data.get("multiCamera"):
camera = next(iter(instance.data.get("cameras", [])), None)
camera_node = (
rt.getNodeByName(camera)
if camera else rt.viewport.GetCamera()
)
for frame in range(int(rt.rendStart), int(rt.rendEnd) + 1):
_, cancelled = rt.render(
frame=frame,
vfb=False,
camera=camera_node,
cancelled=pymxs.byref(None)
)
if cancelled:
raise KnownPublishError(f"Render cancelled at frame {frame}.")
self.log.debug("Local render extraction completed.")
else:
self.log.debug(
"Local render extraction for multi-camera is already "
"performed during multi-camera scene extraction."
)
|