Create USD Stage
The blank canvas every USD workflow in this pack starts with
- USD
Every graph built with this pack starts here. Create USD Stage makes an empty, in-memory USD stage and hands it down the wire as the pack's USD socket type - the thing every other node in ComfyUI-OpenUSD wants to consume. No Load USD needed, no file on disk, just a blank scene with your conventions already baked in. It's the "New Document" button for the whole pack.
You'll practically always wire its output into a composition node (a reference, a sublayer) or a scene node (a light, a camera, a material), and eventually into a viewer or a Save USD node to get it out of memory and onto disk. Because a stage is just an object the pack carries in a dict, you can also branch the same stage to several downstream nodes - that's how you assemble a scene in parallel.
How it works
The node calls Usd.Stage.CreateInMemory() - genuinely no file is created - then applies your two conventions:
- up_axis -
YorZ, defaultY. Y-up is the glTF/game convention; Z-up is Blender/film. Pick based on where the scene is headed. - meters_per_unit - float, default
1.0(one unit = one meter). USD's own fallback is0.01(centimeters); if you're mixing with sources that assume cm, set it.
It returns a single USD output. That socket is this pack's private type - a {"stage": <Usd.Stage>} dict - so it only connects to other OpenUSD nodes. You can't plug it into core ComfyUI's MESH sockets; the bridge for that is Convert USD in the other direction.
Also note: the node marks itself IS_CHANGED = NaN, which is ComfyUI-speak for "always treat this node as dirty and re-run it." That's deliberate - it means your edits upstream actually propagate on every queue instead of being cached away.
Install & the one real gotcha
Standard pack install: ComfyUI Manager → search "ComfyUI-OpenUSD", or
cd ComfyUI/custom_nodes
git clone https://github.com/cjhosken/ComfyUI-OpenUSD
then restart. It brings usd-core==26.5, numpy==2.5.0, and trimesh; the usd-core wheel is the heavy first download.
The gotcha is baked into the name: in-memory. Nothing this node builds exists until you run it through Save USD (or the pack's in-memory viewer path). If your workflow crashes or you close the browser before saving, the stage is gone - ComfyUI re-runs the graph and rebuilds it from scratch, so it's not lost between runs, but you also can't rely on it persisting anywhere by itself. Treat Save USD as the real output and this node as the temporary scratchpad.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| up_axis | COMBO | Y | 2 options: Y, Z |
| meters_per_unit | FLOAT | 1.000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| USD | USD | — |