Create USD Light
Light the scene so your USD stage isn't pitch black
- USD
- color
- USD
A mesh with no lights renders as a flat silhouette, or nothing at all. Create USD Light is how you add real UsdLux lights to your stage - the same light prims that renderers, USD viewers, and DCCs actually respect - so the scene you save is a scene you can see. If you've generated a mesh, given it a material, and then stared at a dark void in the viewer, this is the node you were missing.
It creates four standard light types from USD's own library: DomeLight (the default - an ambient sky-style light, your "it should never be fully dark" workhorse), DistantLight (like the sun - parallel rays from a direction), SphereLight, and RectLight (area lights for soft, shape-defined illumination). Each gets created at your prim_path if it doesn't exist, or edited in place if it does.
The inputs that matter
- USD and prim_path (default
/Root/Lights/DomeLight). - light_type - Dome/Distant/Sphere/Rect, default Dome.
- intensity (default 1.0) and exposure (default 0.0) - the two brightness knobs. Exposure is an extra f-stop-style multiplier on top of intensity; for a first pass, intensity 1–2 usually does it.
- color - hex color, default white. Lights in USD take a
colorattribute (not "light color," just color), so this is where you tint the light. - texture_path - only meaningful for a DomeLight: point it at an HDR/EXR environment texture and the dome becomes image-based lighting instead of a flat color.
Each of intensity, exposure, color, and texture has its own mode dropdown - create/set, block, ignore - the same trio as Create USD Camera. Default is create/set for everything except texture, which defaults to ignore (so the dome starts as flat white and doesn't silently demand a texture file). block stamps a blocking opinion that erases a value inherited from a weaker layer; ignore leaves that attribute untouched.
Output is the USD stage with the light in it.
Install & gotchas
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.
Two things that bite people. First, the texture only applies to DomeLight - the code sets texture:file only for domes, so if you set a texture on a RectLight and it's ignored, that's expected behavior, not a bug. Second, remember the USD socket is this pack's private type; the light prim is real and will show up when the saved stage is opened anywhere, but in the graph it only flows through OpenUSD nodes.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| USD | USD | — | |
| prim_path | STRING | /Root/Lights/DomeLight | — |
| light_type | COMBO | DomeLight | 4 options: DomeLight, DistantLight, SphereLight, RectLight |
| intensity | FLOAT | 1.00 | — |
| intensity_mode | COMBO | create/set | 3 options: create/set, block, ignore |
| exposure | FLOAT | 0.00 | — |
| exposure_mode | COMBO | create/set | 3 options: create/set, block, ignore |
| color | COLOR | #FFFFFF | — |
| color_mode | COMBO | create/set | 3 options: create/set, block, ignore |
| texture_path | STRING | — | |
| texture_mode | COMBO | ignore | 3 options: create/set, block, ignore |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| USD | USD | — |