ComfyUI Node

Transform Points

Spin, slide and squish your point cloud — the 'poor man's Blender' move

By chri002·Created about a year ago·Updated about a year ago· 15
Transform Points
  • points
  • Points3D
rot_x0.0
rot_y0.0
rot_z0.0
trl_x0
trl_y0
trl_z0
scale_x1.00
scale_y1.00
scale_z1.00

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_y a 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.

CategorydepthMapOperation

Inputs (10)

NameTypeDefaultDescription
pointsPoints3D
rot_xFLOAT0.0-360–360
rot_yFLOAT0.0-360–360
rot_zFLOAT0.0-360–360
trl_xINT0-2048–2048
trl_yINT0-2048–2048
trl_zINT0-2048–2048
scale_xFLOAT1.00-500–500
scale_yFLOAT1.00-500–500
scale_zFLOAT1.00-500–500

Outputs (1)

NameTypeDescription
Points3DPoints3D