ComfyUI Node

Substance Info Extractor

Read the .sbsar Before You Touch It

By jasonjgardner·Created about a year ago·Updated about a year ago· 4
Substance Info Extractor
    • file_info
    • graph_info
    • parameter_info
    • output_info
    • formatted_summary
    sbsar_file_path
    extract_parameterstrue
    extract_outputstrue
    extract_graphstrue
    format_outputtrue
    verbosefalse

    A .sbsar archive is a black box until someone tells you what's inside it. Which graphs does it contain? What parameters can you actually set? Which outputs will a render produce? That's exactly the metadata SubstanceInfoExtractor surfaces, and it's the node you reach for before you start writing parameter overrides - because every other node in this pack that accepts a parameter name (the Parameter Controller, the Renderer, the Batch Processor) will happily reject a name that isn't in the material.

    How it works

    The node runs sbsrender info from Adobe's free Substance 3D Automation Toolkit on the .sbsar, then parses the CLI output into structured JSON. The extract_parameters, extract_outputs, and extract_graphs toggles (all on by default) decide which sections get parsed, and format_output pretty-prints the JSON so it's actually readable in a text node. Set the one real input - sbsar_file_path - and you get five JSON string outputs back. That's the whole job, and it does it without you needing to open Designer.

    The outputs

    • file_info - basic facts about the archive: path, size, that kind of thing.
    • graph_info - which graphs are inside the .sbsar. Important when a material has multiple graphs and you need to pick one for rendering.
    • parameter_info - the list of settable parameters. This is the output you came for. It's your source of truth for what names the Parameter Controller and Renderer will accept.
    • output_info - the channels a render will produce, which tells you whether you're getting a normal map or just a diffuse, before you spend a render on it.
    • formatted_summary - a human-readable digest of all the above, handy when you just want the headline and don't feel like squinting at nested JSON.

    Installing and honest caveats

    Install via ComfyUI Manager (search "Substance Designer Integration") or git clone https://github.com/jasonjgardner/comfui-substance-designer-integration into custom_nodes/, then restart. The Python deps are already in ComfyUI; the real requirement is the Substance 3D Automation Toolkit installed with sbsrender reachable on the PATH or in an auto-detected location. If you get a tool-not-found error, that's what it means - install the toolkit, or point the plugin at it via config.json under substance_designer/ in your ComfyUI config directory.

    Two honest caveats before you build a pipeline on this node. First, the parsing is straightforward text-scraping of the sbsrender info output, and the code itself notes the parsing "would need to be enhanced based on actual sbsrender output format" - so on unusual materials you may get thin or partially populated metadata. Second, it's a string-output node: nothing renders here, and there's no image or file to preview. It's a companion node, and it earns its place precisely by preventing the most common failure of the rest of the pack - guessing parameter names. Like its siblings, it's part of a young, AI-generated, MIT-licensed pack with a thin community footprint, but for discovering what a .sbsar exposes, it does what it says.

    Categorysubstance

    Inputs (6)

    NameTypeDefaultDescription
    sbsar_file_pathSTRING
    extract_parametersoptBOOLEANtrue
    extract_outputsoptBOOLEANtrue
    extract_graphsoptBOOLEANtrue
    format_outputoptBOOLEANtrue
    verboseoptBOOLEANfalse

    Outputs (5)

    NameTypeDescription
    file_infoSTRING
    graph_infoSTRING
    parameter_infoSTRING
    output_infoSTRING
    formatted_summarySTRING