Create USD Vec3
The type node behind every 3D value in the pack
- vec3
Of all the type nodes in this pack, the Vec3 one is the workhorse. Positions, normals, velocities, scale factors, texture coordinates in 3D - the 3-float vector is the most common shape a USD attribute takes, and USD is fussy about which kind of 3-vector it is. A point3f and a normal3f and a vector3f are all three floats, but they're distinct attribute types, and USD (and the DCCs that read it) will complain if you feed a point where it expects a normal. Create USD Vec3 exists to get that right.
Use it anywhere the pack's attribute nodes need a typed 3D value. And it's the input shape for Create USD Matrix, which wants a VEC3 for translation, rotation, and scale - so this node quietly sits upstream of the whole transform-building path.
The inputs
- x, y, z - the floats. Defaults 0,0,0.
- vec3_type - default
float3, and here's where the dropdown earns its length (16 choices): plainfloat3/double3/int3/half3, then the semantic families -point3*(a position),vector3*(a direction/magnitude),normal3*(a surface normal), andtexCoord3*(3D UVs), each in f/d/h precision.
The naming is USD's own and the rule is simple: use point3f for locations, vector3f for displacements, normal3f for normals, and plain float3 when you're just passing three floats around and the semantics don't matter. Getting this right at construction time saves you the "attribute type mismatch" errors downstream.
Output is a single VEC3 socket.
Install & the caveat
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.
The one thing worth flagging: the VEC3 socket is this pack's type, so it won't connect to generic ComfyUI value nodes - it's meant to feed the pack's own attribute/matrix/scripting nodes. And the half-precision (half3, point3h, etc.) options are stored as plain float tuples in the pack rather than true half floats, so don't expect a memory win from them; they're really "float3 with a half label."
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| x | FLOAT | 0.00 | — |
| y | FLOAT | 0.00 | — |
| z | FLOAT | 0.00 | — |
| vec3_type | COMBO | float3 | 16 options: float3, double3, int3, half3, point3f, point3d, +10 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| vec3 | VEC3 | — |