Skip to content

create_nuke_royalrender_job

Submitting render job to RoyalRender.

CreateNukeRoyalRenderJob

Bases: BaseCreateRoyalRenderJob

Creates separate rendering job for Royal Render

Source code in client/ayon_royalrender/plugins/publish/create_nuke_royalrender_job.py
 7
 8
 9
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
class CreateNukeRoyalRenderJob(lib.BaseCreateRoyalRenderJob):
    """Creates separate rendering job for Royal Render"""

    label = "Create Nuke Render job in RR"
    hosts = ["nuke"]
    families = ["render", "prerender"]

    def process(self, instance):
        super(CreateNukeRoyalRenderJob, self).process(instance)
        # allow skip to
        if not instance.data.get("farm"):
            self.log.info("Skipping local instance.")
            return
        # redefinition of families
        if "render" in instance.data["productType"]:
            instance.data["productType"] = "write"
            instance.data["family"] = "write"
            instance.data["families"].insert(0, "render2d")
        elif "prerender" in instance.data["productType"]:
            instance.data["productType"] = "write"
            instance.data["family"] = "write"
            instance.data["families"].insert(0, "prerender")

        jobs = self.create_jobs(instance)
        for job in jobs:
            job = self.update_job_with_host_specific(instance, job)
            instance.data["rrJobs"].append(job)

    def update_job_with_host_specific(self, instance, job):
        # INFECTED Nuke Version
        nuke_version = instance.context.data.get("hostVersion")
        job.Software = "Nuke"
        job.Version = nuke_version

        return job

    def create_jobs(self, instance):
        """Nuke creates multiple RR jobs - for baking etc."""
        # get output path
        render_path = instance.data["path"]
        script_path = self.scene_path
        node = instance.data["transientData"]["node"]

        # main job
        jobs = [self.get_job(instance, script_path, render_path, node.name())]

        for baking_script in instance.data.get("bakingNukeScripts", []):
            render_path = baking_script["bakeRenderPath"]
            script_path = baking_script["bakeScriptPath"]
            exe_node_name = baking_script["bakeWriteNodeName"]
            single = True
            jobs.append(
                self.get_job(
                    instance, script_path, render_path, exe_node_name, single
                )
            )

        return jobs

create_jobs(instance)

Nuke creates multiple RR jobs - for baking etc.

Source code in client/ayon_royalrender/plugins/publish/create_nuke_royalrender_job.py
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
def create_jobs(self, instance):
    """Nuke creates multiple RR jobs - for baking etc."""
    # get output path
    render_path = instance.data["path"]
    script_path = self.scene_path
    node = instance.data["transientData"]["node"]

    # main job
    jobs = [self.get_job(instance, script_path, render_path, node.name())]

    for baking_script in instance.data.get("bakingNukeScripts", []):
        render_path = baking_script["bakeRenderPath"]
        script_path = baking_script["bakeScriptPath"]
        exe_node_name = baking_script["bakeWriteNodeName"]
        single = True
        jobs.append(
            self.get_job(
                instance, script_path, render_path, exe_node_name, single
            )
        )

    return jobs