Nodes/ComfyUI_MieNodes/Load Asset ๐Ÿ‘
ComfyUI Node

Load Asset ๐Ÿ‘

The One Node That Stops Your Character Drifting Between Clips

By MieMieeeeeยทCreated 2 years agoยทUpdated 2 days agoยท 269
Load Asset ๐Ÿ‘
    • name
    • description
    • voice
    • image
    • audio
    • asset
    โ—„kindcharacterโ–บ
    โ—„library_dirโ–บ
    โ—„name๏ผˆไธ‹ๆ‹‰้€‰ๆ‹ฉ่ต„ไบง๏ผ‰โ–บ

    Every multi-clip video project hits the same wall somewhere around shot three: the model has no memory of what it just made, so the same character comes back with a slightly different face, and the same kitchen comes back with the counter on the other side. The reference-image route - hand the model a picture every time and let it look - is the one that actually holds. Load Asset ๐Ÿ‘ is where those hand-picked pictures live.

    It's a reader, not a generator. You point it at a name in the pack's on-disk library and it returns everything about that asset at once: the picture, the authored description, and for characters the voice text plus the audio sample. One asset, one node, reused in every scene of the board.

    What comes out of it

    kind is a dropdown with character and scene, and it decides everything else about the node. name is a dropdown of existing assets of that kind.

    For a character the outputs are name, description, voice, image (an IMAGE), audio (an AUDIO) and asset (a MIE_ASSET bundle). For a scene, voice and audio come back empty, because scenes are deliberately voice-free - a place doesn't need a timbre.

    The two text outputs are English and are inserted into the H3 prompt verbatim. That's the design choice worth understanding: there's no model in the loop translating your intent into prose at load time. What you wrote in the library is what the video model reads, which means editing a character is editing a file, not re-running a captioner. It also means a bad description is your problem to fix - nothing downstream will smooth it out.

    The asset output is the one you'll reach for nine times out of ten. It's the whole bundle on a single wire - the same "one context object instead of forty wires" pattern rgthree and friends popularised - and it's what feeds character_1..9 / scene_1..9 on MiniMax H3 Loop Plan Generator V2, or the slots on Asset โ†’ Assets ๐Ÿ‘. Its one hazard is the standard one for that pattern: the wire doesn't show you what's inside. A stale bundle looks connected and behaves wrong. The name and description outputs are there when you want to see what's travelling.

    Where the library actually is

    Under the plugin folder - ComfyUI/custom_nodes/ComfyUI-MieNodes/asset_library/ - unless $MIE_ASSET_LIBRARY is set, in which case that wins. A pre-V2 ~/mie_asset_library gets moved into place automatically, once.

    library_dir appears in the input list and is ignored at execution. That's deliberate: old workflows stored a path there and the widget stays hidden so saved widget indices don't shift. There's no path to type; the only control is the ๐Ÿ“‚ button, which opens the resolved folder in your file manager.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/MieMieeeee/ComfyUI-MieNodes
    pip install -r ComfyUI-MieNodes/requirements.txt
    

    Or via ComfyUI Manager, search ComfyUI_MieNodes. No model weights: this node reads PNGs and WAVs (soundfile is in the requirements for the audio, and an .mp3 you drop in by hand is decoded fine). You need assets in the library before the dropdown is useful, so install Save Asset ๐Ÿ‘ alongside it.

    Things that go wrong

    character 'x' does not fit the simple model (one image + one audio): found 3 image(s) is the common one, and it's a migration artefact - an old multi-image asset, or a Save where you wired in an image batch. Trim the asset down to one picture (the folder is right there via ๐Ÿ“‚) and it loads. Same-size is required within an asset for the same reason: one IMAGE socket can't hold two resolutions.

    An empty name dropdown for one kind and a populated one for the other is normal - the lists are separate.

    And the caching behaviour that trips people up when they hand-edit the JSON: the node's cache key is a content hash of the asset files, so a changed description invalidates the cache and the next run picks it up. If a graph still shows the old text in the same queue, run it again - a Load that already executed earlier in that same queue won't re-read the file mid-run.

    Category๐Ÿ‘ MieNodes/๐Ÿ‘ Assets

    Inputs (3)

    NameTypeDefaultDescription
    kindCOMBOcharacter่ต„ไบง็ฑปๅž‹ kind๏ผšcharacter = ่ง’่‰ฒ๏ผˆvoice ้Ÿณ่‰ฒ + ้Ÿณ้ข‘ๆ ทๆœฌ๏ผ‰๏ผ›scene = ๅœบๆ™ฏ๏ผˆๅชๆœ‰ๆ่ฟฐ + ๅ›พ๏ผŒ้Ÿณ่‰ฒ/้Ÿณ้ข‘่ขซๅฟฝ็•ฅ๏ผ‰ใ€‚ Asset kind: character (voice + audio sample) or scene (description + image only; voice/audio are ignored).
    library_dirSTRINGโ€”
    nameCOMBO๏ผˆไธ‹ๆ‹‰้€‰ๆ‹ฉ่ต„ไบง๏ผ‰1 options: ๏ผˆไธ‹ๆ‹‰้€‰ๆ‹ฉ่ต„ไบง๏ผ‰

    Outputs (6)

    NameTypeDescription
    nameSTRINGโ€”
    descriptionSTRINGโ€”
    voiceSTRINGโ€”
    imageIMAGEโ€”
    audioAUDIOโ€”
    assetMIE_ASSETโ€”