Nodes/ComfyUI-Koolook/Koolook Load Camera Poses (Absolute Path)
ComfyUI Node

Koolook Load Camera Poses (Absolute Path)

Koolook Load Camera Poses

By malkuthro·Created 11 months ago·Updated a day ago· 8
Koolook Load Camera Poses (Absolute Path)
    • CAMERACTRL_POSES
    file_pathinput/poses/example_track.txt
    pose_width1280
    pose_height720

    Camera control nodes usually come with a rule you never noticed until it bites you: the pose file has to live inside ComfyUI's input folder, because the built-in loaders strip paths outside it. Koolook Load Camera Poses (Absolute Path) exists specifically to ignore that rule. You hand it a path anywhere on disk and it loads the track.

    The file format is the RealEstate10k-style CameraCtrl pose file, the same one AnimateDiff's CameraCtrl loader expects: line 1 is metadata, and every line after is 19 space-separated floats - a timestamp, camera intrinsics, width/height placeholders, and a flattened 3x4 pose. If you've exported a camera track from a matchmove tool or a CameraCtrl workflow, this is the file you already have.

    How it works

    The mechanism is deliberately boring: read the file, parse each pose row, rewrite the width/height placeholders with pose_width and pose_height, and return a CAMERACTRL_POSES list. The ~ in a path gets expanded (~/shots/track.txt works), blank lines are tolerated, and a row with the wrong number of columns raises a clear error naming the offending line rather than silently producing a broken track.

    The two optional floats - pose_width (1280) and pose_height (720) - are the resolution baked into every pose row. They matter because some downstream CameraCtrl nodes use the pose resolution to interpret the intrinsics. Set them to match the resolution you'll actually generate at, not the original track's.

    When to reach for it

    This is a niche node for a specific workflow: you have a camera track (from a matchmove, from a drone shot you stabilized, from a real set you're replicating), it lives in a project folder next to your plates, and you want AnimateDiff-CameraCtrl or a similar camera-conditioned model to drive a generated shot along that exact path. The absolute-path load is the whole value - your project folder stays organized, the track doesn't get copied into ComfyUI's input directory.

    Install

    Part of the ComfyUI-Koolook pack. ComfyUI Manager → Install Custom Nodes → Git URL:

    https://github.com/malkuthro/ComfyUI-Koolook.git
    

    Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/malkuthro/ComfyUI-Koolook.git
    

    Restart and it's under Koolook/Camera. No models, no dependencies. Standard pack warning: install once. A Manager install at custom_nodes/koolook/ plus a git clone copy at custom_nodes/ComfyUI-Koolook/ loads both on every boot and the workflow store starts silently corrupting until you remove one.

    Common issues

    • "Pose file not found" - the path is relative to the ComfyUI working directory or the wrong absolute path. This node doesn't strip paths, but it also doesn't guess. Check the path exists and is absolute or ~-expanded.
    • "Line N expected 19 values" - the file isn't RealEstate10k format, or it has trailing junk. Every data row must be exactly 19 whitespace-separated numbers.
    • Camera looks wrong downstream - pose_width / pose_height don't match your generation resolution, so the intrinsics are interpreted against the wrong frame size. Align them and re-run.
    CategoryKoolook/Camera

    Inputs (3)

    NameTypeDefaultDescription
    file_pathSTRINGinput/poses/example_track.txtAbsolute or user-expanded path to a RealEstate10k-style CameraCtrl pose TXT file.
    pose_widthoptFLOAT12801–16384Width value written into each pose row before returning CAMERACTRL_POSES.
    pose_heightoptFLOAT7201–16384Height value written into each pose row before returning CAMERACTRL_POSES.

    Outputs (1)

    NameTypeDescription
    CAMERACTRL_POSESCAMERACTRL_POSES