Skip to content

Nuke

The Nuke adapter (fxqintegrations.nuke) publishes Write-node output. nuke is imported lazily, so the module loads anywhere and the host-touching functions only run inside Nuke.

Publishing a Write

from fxqclient import Session
from fxqintegrations import nuke

fxq = Session("http://localhost:8000", api_key="fxq_...")

nuke.publish_write(
    fxq,
    task_id="...",
    write_node="Write1",
    product="compMain",
    inputs=[houdini_render_version_id],   # the renders this comp consumed
    comment="comp v3",
)

Cross-DCC lineage

The comp publish declares the upstream Houdini render version(s) it consumed via inputs. That records the lineage DAG end to end: from a Nuke comp you can walk back to the exact renders it was built from, and from a Houdini render you can find every comp that depends on it. See the publish chain.

This is the same inputs mechanism the Houdini adapter and the SDK use - the host differs, the contract does not.

Loading a version

Like Houdini, the Nuke adapter registers a universal loader entry, so a published comp/render/image can be dropped into the script as a Read node:

@loader.register_loader("nuke_read", product_types=["comp", "render", "image"])
def load_read(session, version_id, files, **_):
    ...   # create a Read node for the given files