Ray3.2
The reframe node for people who think in canvases, not clips
- frameImages
- video
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 usingsourcePosition.settings.sourcePosition.*- required:x,y,width,heightas 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.
Inputs (30)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| settings.sourcePosition.height | FLOAT | 0.00 | Height of the source video, as a fraction of the canvas height. |
| settings.sourcePosition.width | FLOAT | 0.00 | Width of the source video, as a fraction of the canvas width. |
| settings.sourcePosition.x | FLOAT | -2.00-2–2 | Horizontal position of the source video, as a fraction of the canvas width. |
| settings.sourcePosition.y | FLOAT | -2.00-2–2 | Vertical position of the source video, as a fraction of the canvas height. |
| frameImagesopt | IMAGE | — | |
| videoopt | STRING | Source video to edit or reframe (UUID or URL). Editing preserves the source aspect ratio; reframing places it on a new canvas. | |
| sizeopt | COMBO | 720p (16:9) | Output size. Only one of resolution or dimensions is sent. |
| durationopt | COMBO | 5 | Length of the generated video in seconds. The total number of frames produced is determined by duration multiplied by the model's frame rate (fps). |
| numberResultsopt | INT | 11–4 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| settings.edit.autoControlsopt | BOOLEAN | false | Derive the full conditioning schedule automatically from the source video. |
| settings.edit.controls.depthBluropt | BOOLEAN | false | Enable to set settings.edit.controls.depthBlur. Off uses the model's default. |
| settings.edit.controls.depthBlur_valueopt | FLOAT | 0.000–1 | Scene-geometry depth blur. Higher values allow more freedom. |
| settings.exrExportopt | BOOLEAN | false | Also export an OpenEXR frame sequence alongside the MP4. |
| settings.edit.controls.faceopt | BOOLEAN | false | Enable face-identity conditioning. |
| settings.hdropt | BOOLEAN | false | Render in high dynamic range. |
| settings.loopopt | BOOLEAN | false | Loop the generated video seamlessly. |
| settings.edit.controls.normalsAugmentationopt | BOOLEAN | false | Enable to set settings.edit.controls.normalsAugmentation. Off uses the model's default. |
| settings.edit.controls.normalsAugmentation_valueopt | FLOAT | 0.000–1 | Surface-geometry normals augmentation. Higher values allow more reinterpretation. |
| settings.edit.controls.poseStrengthopt | COMBO | (default) | Skeleton conditioning strength. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| safety.modeopt | COMBO | fast | Safety checking mode for video generation. |
| settings.edit.strengthopt | COMBO | (default) | Preservation preset, from strict adherence to free reinterpretation. |
| settings.edit.controls.trajectorySparsityopt | BOOLEAN | false | Enable to set settings.edit.controls.trajectorySparsity. Off uses the model's default. |
| settings.edit.controls.trajectorySparsity_valueopt | FLOAT | 0.000–1 | Motion-anchoring sparsity. Higher values use fewer anchors. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | MP4 | File format for the generated video. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |