Transform Points
Spin, slide and squish your point cloud — the 'poor man's Blender' move
- points
- Points3D
This is the node that got the pack recommended on r/comfyui in the first place. Someone asked whether any ComfyUI node could do "3D roto-translations on depth maps" as a Blender replacement, and ComfyUI_depthMapOperation was the answer. Transform Points is the roto-translation: take the point cloud you got from Image To Points (Torch) and rotate it, slide it, or scale it along any axis.
Why would you? The classic payoff is parallax - rotate the cloud a few degrees around Y, render it back through a Points To Image node, and the flat photo suddenly has believable motion. The other trick people actually ship is the inpaint-mask hack: transform the cloud so the object you want to remove is out of frame, render it, and the black region where it used to be becomes your inpaint mask.
How it works
Nothing fancy under the hood - the cloud's (x, y, z) coordinates get run through rotation matrices and translation. One detail worth knowing: the transform order is scale first, then rotation, then translation, with rotation applied as Z-Y-X. In practice that means "rotate then move" behaves like you'd expect for the typical spin-a-head-and-save-it workflow.
The inputs that matter
There are nine, and they're all the same idea, so don't panic.
- rot_x / rot_y / rot_z (degrees, −360 to 360) - the Euler angles. These are the ones you'll animate for parallax. For the classic "head turns toward camera" effect, sweep
rot_ya few degrees and render each frame. - trl_x / trl_y / trl_z (−2048 to 2048) - translation, in pixels. Since the cloud's X and Y are in image-pixel space, these numbers feel like pixels, which makes them easy to reason about.
- scale_x / scale_y / scale_z (−500 to 500, default 1) - per-axis scaling. Note the negative range: a negative scale flips/mirrors that axis, which is occasionally exactly what you want.
Output: Points3D - the transformed cloud, same shape as the input, ready to hand to a renderer, Cube Limit, or Export to PLY. As with all the pack's nodes, Points3D only wires into other nodes in this pack.
Install
Same as the rest of the pack - ComfyUI Manager, search "ComfyUI_depthMapOperation", or:
cd ComfyUI/custom_nodes
git clone https://github.com/chri002/ComfyUI_depthMapOperation
Restart, done. No model files. Dependencies (torch, numpy, opencv-python, scipy, pandas) are already in a stock ComfyUI install.
Where people get burned
Two things. First, the pack is batch-size-1 throughout, and this node is no exception - don't feed it a batched cloud. Second, the README's own TODO flags "artifacts with some extreme values"; if you scale an axis way up (say 100+) and re-render, you can get gaps and holes in the output, which is where the "advance" renderer's hole-filling (correct + ksize + threshold) comes in. Keep transforms modest and you'll rarely see it.
One more honest note: this pack is a small, lightly-maintained utility (last touched mid-2025). It's not a production-grade 3D suite - it's the 80/20 version that stays inside ComfyUI so you don't have to round-trip to Blender for a simple rotation.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| points | Points3D | — | |
| rot_x | FLOAT | 0.0-360–360 | — |
| rot_y | FLOAT | 0.0-360–360 | — |
| rot_z | FLOAT | 0.0-360–360 | — |
| trl_x | INT | 0-2048–2048 | — |
| trl_y | INT | 0-2048–2048 | — |
| trl_z | INT | 0-2048–2048 | — |
| scale_x | FLOAT | 1.00-500–500 | — |
| scale_y | FLOAT | 1.00-500–500 | — |
| scale_z | FLOAT | 1.00-500–500 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Points3D | Points3D | — |