Create USD Token (String)
The string type node that knows USD's rules
- token
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, withstring,asset,opaque, andgroupavailable.
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.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| value | STRING | — | |
| token_type | COMBO | token | 5 options: token, string, asset, opaque, group |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| token | TOKEN | — |