ComfyUI Node
CV Convert Axis Convention (3D)
Moves a point cloud between the two coordinate systems this pack lives in: OpenCV (Y down, Z into the scene - what every solver, pose and depth map here uses) and glTF / Three.js (Y up, Z toward the viewer - what 'Load 3D', 'Preview Point Cloud' and the viewer gizmo use). The conversion negates Y AND Z, which is a 180-degree turn about X; negating just ONE of them is a REFLECTION, and a mirrored cloud is the failure nothing catches - right size, right place, aligned with its own scene, object facing the wrong way. Use this in front of 'CV Write PLY' and behind 'CV Depth to 3D Points' rather than counting axis flips by hand. An Nx6 cloud keeps its normals, turned with the points. Failure tolerant: an empty cloud comes back empty.
CV Convert Axis Convention (3D)
- points
- points
◄from_spaceOpenCV (Y down, Z into the scene)►
◄to_spaceglTF / Three.js (Y up)►
Categoryimage/CV/low-level
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| points | NPARRAY | Nx3 (or Nx1x3 / HxWx3) point cloud, or the Nx6 (x,y,z,nx,ny,nz) form the surface-matching nodes pass around - the normals are directions, so they get the same flip as the positions. | |
| from_space | COMBO | OpenCV (Y down, Z into the scene) | Which convention the incoming cloud is written in. A cloud from 'CV Depth to 3D Points', 'CV Write PLY' or a 3D loader is in the glTF/Three.js one; anything that has been through a pose, a camera matrix or a solver is in the OpenCV one. |
| to_space | COMBO | glTF / Three.js (Y up) | Which convention to leave it in. The flip is its own inverse, so only whether these two DIFFER changes the numbers - setting both is what makes the graph say which way it is going instead of leaving the reader to count minus signs. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| points | NPARRAY | The cloud in 'to_space', float32, same shape as the input (Nx3 or Nx6). Unchanged when the two spaces are the same. |