Nodes/ComfyUI libigl/Transform Mesh
ComfyUI Node

Transform Mesh

Move, spin, mirror, and line your mesh up — without touching Blender

By PozzettiAndrea·Created 10 months ago·Updated 4 days ago· 218
Transform Mesh
  • trimesh
  • transformed_mesh
  • info
operation

Sometimes the mesh is fine and the problem is where it's sitting. Off-center, rotated the wrong way, mirror-flipped, or a unit scale that doesn't match the rest of your scene - the fix is a transform, and this is the node that does it inside the graph instead of forcing a round-trip through Blender. Transform Mesh is the pack's Swiss Army knife for placement, and because its parameters are backend-scoped, the widgets you see depend on the operation you pick.

You put a TRIMESH in, pick an operation, and get transformed_mesh plus an info string. The operations and their controls:

  • Translate - translate_x/y/z in whatever units your mesh lives in. Getting a mesh onto the ground plane or into the center of a scene is the classic use.
  • Rotate - rotate_x/y/z in degrees. The escape-hatch for "the scanner had a different idea of up."
  • Scale - scale_uniform for a consistent size bump, or scale_x/y/z for per-axis stretching (the non-uniform kind that technically distorts geometry, so don't overuse it).
  • Mirror - mirror_axis (x/y/z) for flipping. Standard fix for left/right or front/back orientation problems.
  • Center - center_x/y/z toggles that snap the mesh to the origin on each axis. Almost always what you want before further processing, because a lot of downstream algorithms assume centered input.
  • Matrix - matrix_string, a raw 4x4 transform as comma-separated values. For people who know exactly what they want and don't want six widgets arguing about it.

Where it fits

Transform is the plumbing of a pipeline - the step you put in front of everything that cares about position and scale. Remeshing and decimation usually don't care, but anything that uses absolute coordinates does: combining two meshes (do it after transforming them to match), baking, or exporting to an engine with a defined world. Centering before you process is the one move that pays off almost every time.

Install

It's part of the pack, so:

cd ComfyUI/custom_nodes
git clone https://github.com/PozzettiAndrea/ComfyUI-GeometryPack.git
cd ComfyUI-GeometryPack
pip install -r requirements.txt --upgrade
python install.py

Or ComfyUI Manager → GeometryPack. The README's standing caveats apply: the experimental comfy-env/pixi install can pull a big environment on first run, and it's a fast-moving repo with the author collecting reports in Discussions.

Watch out

Order of operations is real: rotate and scale are applied around the mesh's current origin, so if you rotate first and then center, the centering math uses the rotated frame. Do center → transform, or keep the order in your head. Also, matrix_string is a raw 4x4 - a mistyped matrix produces a mesh that's been warped in ways no slider would ever allow. If you don't understand every entry, use the sliders; that's what they're for.

Categorygeompack/transforms

Inputs (2)

NameTypeDefaultDescription
trimeshTRIMESH
operationCOMBO7 options: [object Object], [object Object], [object Object], [object Object], [object Object], [object Object], +1

Outputs (2)

NameTypeDescription
transformed_meshTRIMESH
infoSTRING