Nodes/IAMCCS-nodes/IAMCCS Motion Sketch Renderer
ComfyUI Node

IAMCCS Motion Sketch Renderer

Draw the motion, get the control frames LTX-2 can actually read

By IAMCCS·Created 11 months ago·Updated 7 days ago· 113
IAMCCS Motion Sketch Renderer
    • control_frames
    • control_video_hint_json
    • report
    motion_render_plan_json{}
    width512
    height288
    max_render_frames240
    line_width8
    trail_frames12
    background_level0.00
    glow0.35

    The gap between "I want the camera to push in over these 80 frames" and "here is a video frame by frame" is where motion control usually dies. IAMCCS_MotionSketchRenderer bridges it: you feed it a motion render plan (JSON) describing the movement, and it rasterizes that plan into actual control frames - glowing motion trails, sketch lines, timed exactly to your clip - that LTX-2's control mechanisms can consume. Sketch in, renderable control video out.

    It's part of the IAMCCS-nodes Shotboard V4 chain (author IAMCCS), slotting between the MotionGuideBridge that produces the render plan and the MotionPartsICLoRAApply that uses the control frames. This is the node that makes the "motion sketch" real pixels.

    How it works

    The motion_render_plan_json describes the movement: where things are, when, over how many frames. The renderer draws each frame's position with a line, and trail_frames (default 12) keeps a motion trail behind it so the model sees direction, not just position - that's what turns a dot bouncing around into "an object moving left-to-right with a sweep." line_width (8) sets stroke thickness, glow (0.35) adds a bloom so the trail reads clearly against the background, and background_level (0) sets how dark the backdrop is (0 = black, which maximizes contrast for most control setups).

    width/height (defaults 512×288) set the control resolution - deliberately modest, because control frames don't need to be big. max_render_frames (240) caps the clip length the renderer will draw; beyond that it stops rather than silently extending.

    Inputs and outputs

    • motion_render_plan_json (STRING) - the plan from MotionGuideBridge (or hand-written).
    • width / height (defaults 512×288) - control frame resolution.
    • max_render_frames (INT, 240) - frame cap.
    • line_width (INT, 8), trail_frames (INT, 12), background_level (FLOAT, 0), glow (FLOAT, 0.35) - the look of the sketch.

    Outputs:

    • control_frames (IMAGE) - the rendered sketch frames, ready for MotionPartsICLoRAApply or any control-video consumer.
    • control_video_hint_json (STRING) - metadata for downstream video handling.
    • report (STRING) - how many frames were rendered and from what plan.

    How to install

    Ships in IAMCCS-nodes. ComfyUI Manager search "IAMCCS", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/IAMCCS/IAMCCS-nodes.git
    

    Restart. No model downloads; the LTX-2 model and IC-LoRAs are separate. Pack floors: ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8.

    Gotchas

    This node renders, it doesn't invent. Feed it {} and you get an empty plan - report will tell you. The trail_frames setting is the one people underestimate: too few and the model can't infer direction (motion reads as jitter), too many and trails bleed into each other on busy motion. 12 is a genuinely good default. And remember the control resolution is the input the model gets - there's no point rendering 1024px control frames when the motion guide is being downscaled anyway; keep it lean, save the VRAM for the actual sample. That's exactly why the IC-LoRA apply node has tiled encoding built in.

    CategoryIAMCCS/Cine/Shotboard V4

    Inputs (8)

    NameTypeDefaultDescription
    motion_render_plan_jsonSTRING{}
    widthINT51264–2048
    heightINT28864–2048
    max_render_framesINT2401–2048
    line_widthINT81–96
    trail_framesINT120–240
    background_levelFLOAT0.000–1
    glowFLOAT0.350–1

    Outputs (3)

    NameTypeDescription
    control_framesIMAGE
    control_video_hint_jsonSTRING
    reportSTRING