mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 21:32:15 +01:00
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
import pyblish.api
|
|
|
|
import avalon.fusion as fusion
|
|
|
|
|
|
class FusionRenderLocal(pyblish.api.InstancePlugin):
|
|
"""Render the current Fusion composition locally.
|
|
|
|
Extract the result of savers by starting a comp render
|
|
This will run the local render of Fusion.
|
|
|
|
"""
|
|
|
|
order = pyblish.api.ExtractorOrder
|
|
label = "Render Local"
|
|
hosts = ["fusion"]
|
|
families = ["saver.renderlocal"]
|
|
|
|
def process(self, instance):
|
|
|
|
# This should be a ContextPlugin, but this is a workaround
|
|
# for a bug in pyblish to run once for a family: issue #250
|
|
context = instance.context
|
|
key = "__hasRun{}".format(self.__class__.__name__)
|
|
if context.data.get(key, False):
|
|
return
|
|
else:
|
|
context.data[key] = True
|
|
|
|
current_comp = context.data["currentComp"]
|
|
start_frame = current_comp.GetAttrs("COMPN_RenderStart")
|
|
end_frame = current_comp.GetAttrs("COMPN_RenderEnd")
|
|
|
|
self.log.info("Starting render")
|
|
self.log.info("Start frame: {}".format(start_frame))
|
|
self.log.info("End frame: {}".format(end_frame))
|
|
|
|
with fusion.comp_lock_and_undo_chunk(current_comp):
|
|
result = current_comp.Render()
|
|
|
|
if not result:
|
|
raise RuntimeError("Comp render failed")
|