Nodes/ComfyUI-Studio-Fury/📂 SF Asset Loader
ComfyUI Node

📂 SF Asset Loader

Reload your saved .fury renders — image and latent together — for refinements and variations

By FuryNocturn·Created 9 months ago·Updated 4 months ago· 0
📂 SF Asset Loader
    • image
    • latent
    project_nameMy_Movie_01
    asset_type
    asset_nameHero_01

    StudioFury's save format is the .fury file - a torch.saved dict holding both the decoded image and the latent it came from. Asset Loader is the node that gets them back. Give it a project, a category, and a name, and it returns the IMAGE and LATENT you saved, so you can refinish, inpaint, or run variations without re-rolling the whole generation from scratch.

    That "latent with it" part is the reason this format exists. A plain PNG gives you pixels; a latent gives you a starting point you can img2img from at low denoise, or mask-inpaint, or interpolate. The pack's whole persistence story is "save the technical file, keep the flexibility." The loader even handles the format's own version drift - files saved before a certain version used a preview_image key, and it falls back to that automatically.

    Mechanically it's a thin, careful I/O node. It calls the shared FuryFileManager, which loads with torch.load(..., weights_only=True) - a genuinely good call, since it blocks arbitrary code execution from malicious pickle files. Given the ecosystem's history (the KB's writeup of the ComfyUI_LLMVISION malware incident is worth reading if you haven't), seeing a custom-node author explicitly use weights_only is a green flag. It also validates that the file is a dict with an image key, and - nice touch - it doesn't crash on a miss: if the file isn't there, it returns a black placeholder image and an empty latent with a console warning.

    The inputs that matter:

    • project_name - must match the project you created in the Project Manager, since files live under output/StudioFury/<project_name>/.
    • asset_type - Characters or Scenes, matching the folder the saver wrote to.
    • asset_name - the entity/render name, like Hero_01. Note: it expects the name without the .fury extension (it tries both the bare name and the extension, so either works).

    The outputs: image (IMAGE) and latent (LATENT). Wire latent into an img2img or inpaint path for refinement, or image into a preview.

    Install

    Part of StudioFury: ComfyUI Manager → ComfyUI-Studio-Fury → Install → restart, or:

    cd ComfyUI/custom_nodes/
    git clone https://github.com/FuryNocturn/ComfyUI-Studio-Fury
    

    Dependencies are torch/Pillow/numpy/aiohttp - nothing extra to install.

    Gotchas

    Two things. First, the "empty on miss" behavior is silent-ish: a typo in asset_name gives you a black image and an empty latent, and if you don't read the console you'll think the render itself was black. Second - and this is the same wiring gap that trips up Scene Composer - this loader returns raw IMAGE + LATENT, it does not write anything onto the SF_LINK bus. The Scene Composer expects assets under bus["loaded_assets"], so you can't just drop an Asset Loader's output into a Composer. For refinement workflows that's fine: take the latent, run it through your own KSampler at low denoise, save the result. That's honestly where this node earns its keep.

    Category🧩 Studio Fury/🎬 Director

    Inputs (3)

    NameTypeDefaultDescription
    project_nameSTRINGMy_Movie_01
    asset_typeCOMBO2 options: Characters, Scenes
    asset_nameSTRINGHero_01

    Outputs (2)

    NameTypeDescription
    imageIMAGE
    latentLATENT