ComfyUI Node

Ray3.2

The reframe node for people who think in canvases, not clips

By Runware·Created 2 years ago·Updated about a month ago· 140
Ray3.2
  • frameImages
  • video
positivePrompt
settings.sourcePosition.height0.00
settings.sourcePosition.width0.00
settings.sourcePosition.x-2.00
settings.sourcePosition.y-2.00
video
size720p (16:9)
duration5
numberResults1
settings.edit.autoControlsfalse
settings.edit.controls.depthBlurfalse
settings.edit.controls.depthBlur_value0.00
settings.exrExportfalse
settings.edit.controls.facefalse
settings.hdrfalse
settings.loopfalse
settings.edit.controls.normalsAugmentationfalse
settings.edit.controls.normalsAugmentation_value0.00
settings.edit.controls.poseStrength(default)
safetyfalse
safety.checkContentfalse
safety.modefast
settings.edit.strength(default)
settings.edit.controls.trajectorySparsityfalse
settings.edit.controls.trajectorySparsity_value0.00
ttlfalse
ttl_value60
outputFormatMP4
outputQuality95

Most video nodes ask you to generate a clip. Luma Ray3.2 asks you where the clip should live. It's an edit-and-reframe model: you hand it a source video plus a position on a canvas, and it re-renders the scene in that new framing - zooming, panning, extending, or dropping your subject onto a different composition. The required sourcePosition inputs (x, y, width, height, each as a fraction of the canvas) tell you immediately this is a model built for layout thinking, not just prompting.

It's a closed Luma model served through Runware's cloud via the ComfyUI-Runware pack. No weights, no local GPU, pay per render. If your workflow is "compose a canvas, place footage, regenerate," this is the node you've been missing.

How it works

Widgets become a request for model AIR luma:[email protected] with a videoInference task, sent over REST through the runware-sdk, and the MP4 comes back wrapped as a native VIDEO output. The inputs that define the behavior:

  • video - the source clip as a URL or UUID. Editing preserves the source aspect ratio; reframing places it on a new canvas using sourcePosition.
  • settings.sourcePosition.* - required: x, y, width, height as fractions of the canvas (defaults put the source off-canvas at -2). This is where the composition happens.
  • settings.edit.strength - the preservation preset, from strict adherence to free reinterpretation.
  • settings.edit.autoControls - derive the full conditioning schedule automatically from the source, instead of tuning each control.
  • settings.edit.controls.* - the individual levers: face (face-identity conditioning), poseStrength, depthBlur, normalsAugmentation, trajectorySparsity. Each is a gate with a value that follows.
  • settings.loop - seamless looping. settings.hdr - high dynamic range rendering. settings.exrExport - also export an OpenEXR frame sequence alongside the MP4.

That last trio is the giveaway that this is aimed at compositing pipelines - EXR frames drop straight into Resolve or Nuke. Most people will only touch video, sourcePosition, and settings.edit.strength.

The output

One video socket, type VIDEO, into Preview Video or Save Video (plus EXR frames when that toggle is on).

Installing it

Standard pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt

Restart, set your key via ComfyUI Settings → Runware API key, RUNWARE_API_KEY, or runware auth login.

Where people get burned

The sourcePosition defaults are off-canvas (-2), so a stock node with no position set will genuinely not place your video anywhere useful - set those before you queue or you'll wonder why the output ignores your source. And this is a closed model with a metered bill: numberResults and the EXR export both make the receipt fatter. If you're not doing compositing work, the hdr/exrExport/loop controls are there for people who are - ignore them and they'll ignore you.

CategoryRunware/Video/luma

Inputs (30)

NameTypeDefaultDescription
positivePromptSTRINGText prompt describing elements to include in the generated output.
settings.sourcePosition.heightFLOAT0.00Height of the source video, as a fraction of the canvas height.
settings.sourcePosition.widthFLOAT0.00Width of the source video, as a fraction of the canvas width.
settings.sourcePosition.xFLOAT-2.00-2–2Horizontal position of the source video, as a fraction of the canvas width.
settings.sourcePosition.yFLOAT-2.00-2–2Vertical position of the source video, as a fraction of the canvas height.
frameImagesoptIMAGE
videooptSTRINGSource video to edit or reframe (UUID or URL). Editing preserves the source aspect ratio; reframing places it on a new canvas.
sizeoptCOMBO720p (16:9)Output size. Only one of resolution or dimensions is sent.
durationoptCOMBO5Length of the generated video in seconds. The total number of frames produced is determined by duration multiplied by the model's frame rate (fps).
numberResultsoptINT11–4Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
settings.edit.autoControlsoptBOOLEANfalseDerive the full conditioning schedule automatically from the source video.
settings.edit.controls.depthBluroptBOOLEANfalseEnable to set settings.edit.controls.depthBlur. Off uses the model's default.
settings.edit.controls.depthBlur_valueoptFLOAT0.000–1Scene-geometry depth blur. Higher values allow more freedom.
settings.exrExportoptBOOLEANfalseAlso export an OpenEXR frame sequence alongside the MP4.
settings.edit.controls.faceoptBOOLEANfalseEnable face-identity conditioning.
settings.hdroptBOOLEANfalseRender in high dynamic range.
settings.loopoptBOOLEANfalseLoop the generated video seamlessly.
settings.edit.controls.normalsAugmentationoptBOOLEANfalseEnable to set settings.edit.controls.normalsAugmentation. Off uses the model's default.
settings.edit.controls.normalsAugmentation_valueoptFLOAT0.000–1Surface-geometry normals augmentation. Higher values allow more reinterpretation.
settings.edit.controls.poseStrengthoptCOMBO(default)Skeleton conditioning strength.
safetyoptBOOLEANfalseEnable to set safety. Off uses the model's default.
safety.checkContentoptBOOLEANfalseEnable or disable content safety checking.
safety.modeoptCOMBOfastSafety checking mode for video generation.
settings.edit.strengthoptCOMBO(default)Preservation preset, from strict adherence to free reinterpretation.
settings.edit.controls.trajectorySparsityoptBOOLEANfalseEnable to set settings.edit.controls.trajectorySparsity. Off uses the model's default.
settings.edit.controls.trajectorySparsity_valueoptFLOAT0.000–1Motion-anchoring sparsity. Higher values use fewer anchors.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOMP4File format for the generated video.
outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.

Outputs (1)

NameTypeDescription
videoVIDEO