Nodes/ComfyBlockout/ComfyBlockout
ComfyUI Node

ComfyBlockout

A 3D previs editor that lives inside your ComfyUI graph

By spiritform·Created 3 months ago·Updated 2 months ago· 6
ComfyBlockout
    • image
    • video
    • prompt
    scene
    video_ref

    The problem ComfyBlockout solves is one anyone who's burned ten minutes on image-to-video has felt: you type a prompt, the model decides the camera for you. It pans when you wanted a push-in, it drifts off your subject, and there is no knob to tell it "no, the camera goes from here to here, and that cube is a car that moves at second two." Blockout is the fix - a real 3D editor that runs inside the node, where you build a rough scene with primitives, keyframe the camera and per-object motion, record it, and pipe the result into Seedance, Wan, Nano Banana, or Flux as the reference they're supposed to obey.

    It's basically previsualization for local generation. Filmmakers have done this forever - shoot a grey-box animatic, then hand it to the VFX team. Here the grey boxes are cubes and capsules, and the "VFX team" is a diffusion model that's actually quite good at matching a start frame and camera path once you hand it one. For the video models of 2026, where the strongest local workflows are image-to-video and R2V, anchoring the first frame to something you drew instead of something the model invented is a huge consistency win.

    How it works

    The node is a three.js editor iframed into your canvas - a live viewport in the node body, plus a fullscreen editor with the whole toolset. When you hit Record, the browser does canvas.captureStream() into a MediaRecorder, uploads the file to a server route (/comfyblockout/save_video), and ffmpeg converts it to an h264 mp4 with yuv420p and +faststart so it plays literally anywhere. A first frame gets pulled with opencv-python for the image output. Everything is stored keyed by a stable per-node UUID, so re-opening a workflow restores your scene, assets, keyframes, and background image - that round-trip persistence is the sort of thing most editor nodes forget and this one got right.

    Ground truth on the inputs: there are only two, both optional STRINGs, and you basically never touch them. scene carries the node's UUID from the frontend so the backend can find your saved recording, and video_ref is a fallback path to a video if the stored one isn't found. Leave them alone. This is an output-first node.

    The three outputs are what you wire:

    • image (IMAGE) - the first frame or snapshot. Goes into Seedance's image_N slots, Nano Banana's images, or Flux as a start image.
    • video (VIDEO) - the recorded mp4. Seedance video_1, Wan motion ref, LTX.
    • prompt (STRING) - an editable system prompt with a model-tuned default. Worth reading once: it tells the model to match your camera, composition, and scale but not your blockout colors or style. The author's own framing, and it's the right instinct.

    Install

    No model downloads here - this is pure tooling, zero weights. ComfyUI Manager: search "ComfyBlockout" and install, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/spiritform/comfyblockout
    

    Restart ComfyUI and the node appears under video. Manager pulls the Python deps (imageio-ffmpeg, opencv-python, Pillow, numpy) automatically. A system ffmpeg on PATH is recommended - faster than the bundled imageio-ffmpeg fallback. You need a recent browser: WebGL 2, three years old or newer.

    Where people get burned

    • No ffmpeg at all and your recording stays .webm - which Seedance will flatly refuse. If the mp4 never lands, check you have ffmpeg on PATH or pip install imageio-ffmpeg.
    • Black image output usually means opencv-python didn't install.
    • On older ComfyUI installs the VIDEO output can degrade to a plain path string, and Seedance throws 'str' object has no attribute 'get_dimensions'. That's the "your ComfyUI is too old for VideoFromFile" tell - upgrade rather than chasing it.
    • Wire something into video before you've recorded and you'll get a hard error; that's the node's way of telling you to hit Record.
    • Note the data (scenes, recordings, projects) currently lives in custom_nodes/ComfyBlockout/data/, not temp - the README still says temp, but the code migrated it so the Desktop build doesn't wipe your work.

    It's brand new - the announcement thread is barely older than this article - so expect rough edges and fast fixes. But if you've ever wanted to point a video model at a camera move you chose, this is the only node I know that does it without leaving ComfyUI.

    Categoryvideo

    Inputs (2)

    NameTypeDefaultDescription
    sceneoptSTRING
    video_refoptSTRING

    Outputs (3)

    NameTypeDescription
    imageIMAGE
    videoVIDEO
    promptSTRING