Nodes/Pixar's OpenUSD/Create USD Token (String)
ComfyUI Node

Create USD Token (String)

The string type node that knows USD's rules

By cjhosken·Created 3 months ago·Updated 2 months ago· 9
Create USD Token (String)
    • token
    value
    token_typetoken

    Here's the USD pedantry this node exists to save you from: USD distinguishes between a token and a string, and they're different attribute types even though they both look like text. A token is the interned, dictionary-friendly identifier - the kind of thing that names a shader id, a variant selection, or a role - while a string is just a string. Then there are asset (a file reference), opaque, and group (routing-only labels that carry no value). Create USD Token (String) is how you mint the right one instead of guessing.

    Reach for it when you're writing attributes by name or building up values for the pack's Set/Get USD Attribute and scripting nodes. The classic use: a shader or a primvar wants a token for something like a varname or an interpolation role, and handing it a plain ComfyUI string gets you a type mismatch. This node stamps the type so the attribute lands as USD expects.

    The inputs

    • value - the text, default empty.
    • token_type - default token, with string, asset, opaque, and group available.

    The rule of thumb: token for identifiers and enumerated role labels, string for free text you expect to display or edit, asset when the value is a path to a file (USD will treat it as an asset reference that resolves relative to the layer). opaque and group are exotic - they're for graph routing and metadata labels respectively, and you'll rarely need them; they exist for completeness.

    Output is a single TOKEN socket.

    Install & the honest caveats

    Standard pack install: ComfyUI Manager → search "ComfyUI-OpenUSD", or

    cd ComfyUI/custom_nodes
    git clone https://github.com/cjhosken/ComfyUI-OpenUSD
    

    then restart. Deps: usd-core==26.5, numpy==2.5.0, trimesh.

    Caveats worth knowing. In the pack's Python layer, token, asset, opaque, and group are all handled as plain strings - the type label is what matters when the value gets written into a USD attribute, so the node is really about labeling the value correctly. And the TOKEN socket is pack-private, like the other type sockets here: it plugs into this pack's attribute and scripting nodes, not generic ComfyUI string sockets. If all you're doing is passing text around a normal workflow, a ComfyUI string node is the better tool - this one is for when the target is a real USD attribute.

    Category3d/usd/type

    Inputs (2)

    NameTypeDefaultDescription
    valueSTRING
    token_typeCOMBOtoken5 options: token, string, asset, opaque, group

    Outputs (1)

    NameTypeDescription
    tokenTOKEN