Documentation / Node reference / geo nodes

geo/TransformAlign

Puts the input where something else is: a named point of its box onto a named point of another box, or its axis onto another axis.

Transform

TRANSLATE matches two boxes. Both are measured the same way: every point of the geometry, composed through the hierarchy, so a parented assembly is measured as the assembly and moving its root carries its children.

Each axis names two anchors: one on the input's own box, one on the reference box. MIN to MAX on Y stacks one part on top of another, CENTER to CENTER centres it, and NONE leaves that axis alone.

ROTATE aims instead of matching: the input's fromAxis is turned onto toAxis by the shortest arc, then rolled by twist. It turns around the object's origin, or around a named point of its box when pivot says so.

The reference is either typed in (EXPLICIT), read off input 1, or the input itself (SELF). In TRANSLATE, SELF turns the offsets into fractions of the input's own size, so an offsetRelative of 1 on X moves the input by exactly its own width. In ROTATE and in SCALE, SELF has nothing to say and the node reports it.

SCALE matches the two boxes by SIZE. Uniform takes the smallest per-axis ratio, so the input fits the reference box whole; per axis stretches each axis whose anchor is not NONE onto the reference size on that axis. allowGrow off never scales a small input up.

Parameters

Name Type What it does
group String Which objects to move. Empty operates on the stage ROOTS, so a parented assembly is moved once at the top rather than once per piece.
mode UInt8 TRANSLATE · ROTATE · SCALE Which part of the transform this node writes. TRANSLATE moves the input onto the reference box. ROTATE aims its axis. SCALE resizes it to the reference box.
reference UInt8 EXPLICIT · INPUT1 · SELF What to align TO. EXPLICIT is typed into this node: the box below in TRANSLATE, the toAxis vector in ROTATE, read as a world direction. INPUT1 is input 1, which is read and never forwarded: its box in TRANSLATE, its world rotation applied to toAxis in ROTATE, so "point my axis where the reference points" needs no numbers. SELF is the input itself, which makes a TRANSLATE a fraction of its own size; in ROTATE it means nothing and the node reports an error.
referenceCenter Vector3 EXPLICIT reference: where the reference box is centred. The default of zero with a size of zero is the world origin, which is what centring on the origin means.
referenceSize Vector3 EXPLICIT reference: how big the reference box is on each axis. In TRANSLATE, zero on an axis makes MIN, CENTER and MAX the same point there. In SCALE it is the size the input is fitted into, so an axis left at zero has nothing to fit into and the node reports it.
anchorX UInt8 NONE · MIN · CENTER · MAX The point of the INPUT's box that moves, on X. NONE leaves X alone. In SCALE the anchors say which axes take part: an axis on NONE is not resized and not counted in the uniform ratio.
anchorY UInt8 NONE · MIN · CENTER · MAX The point of the INPUT's box that moves, on Y. MIN is the bottom face, which is what rests a part on something.
anchorZ UInt8 NONE · MIN · CENTER · MAX The point of the INPUT's box that moves, on Z. NONE leaves Z alone.
targetX UInt8 NONE · MIN · CENTER · MAX The point of the REFERENCE box the input lands on, on X. NONE leaves X alone.
targetY UInt8 NONE · MIN · CENTER · MAX The point of the REFERENCE box the input lands on, on Y. MAX is the top face, which is what stacks a part on another.
targetZ UInt8 NONE · MIN · CENTER · MAX The point of the REFERENCE box the input lands on, on Z. NONE leaves Z alone.
offset Vector3 Added after the anchors are matched, in world units. It applies on every axis, including one whose anchor is NONE.
offsetRelative Vector3 Added after the anchors are matched, in fractions of the INPUT's own size. 1 on X moves it by its own width, which is how you place copies edge to edge.
fromAxis Vector3 The axis of the INPUT that gets aimed. The default of +Y is the axis the primitives are built along, so a tube or a capsule needs no change here.
toAxis Vector3 Where that axis should point. A world direction with an EXPLICIT reference; read in the reference object's own frame with INPUT1, so +Y there means wherever the reference's own Y points. Length is ignored.
twist Float Roll about the aimed axis, in degrees, applied after the aim. Invisible on a round part and the whole difference on a keyed one.
pivot UInt8 OBJECT_ORIGIN · BOX_ANCHOR What the rotation turns around. OBJECT_ORIGIN is the object's own origin. BOX_ANCHOR is a named point of its bounding box, read off the anchors above, so a part can hinge on its bottom face instead of orbiting its middle, or be scaled from its foot instead of about its middle. NONE on an anchor reads as CENTER here, since a rotation and a scale each need a point on every axis.
uniform Bool SCALE: one factor for every axis, the smallest of the per-axis ratios, so the whole input fits inside the reference box and its proportions are kept. Off gives one factor per axis, which stretches the input onto the reference size on each axis whose anchor is not NONE.
margin Float SCALE with an EXPLICIT reference: clearance to keep, taken off the reference size on every axis before anything is fitted into it. A margin of 10 against a 256 reference fits into 246.
allowGrow Bool SCALE: let a small input be scaled UP to reach the reference box. Off clamps the factor at 1, so the input is only ever made smaller, which is what a part heading for a build volume wants.
batchMode UInt8 ALL_OBJECTS_TOGETHER · OBJECTS_INDIVIDUALLY ALL_OBJECTS_TOGETHER measures one box over the whole input and moves everything by one translation, so the objects keep their relative positions. OBJECTS_INDIVIDUALLY measures and moves each selected object on its own.
transformMode UInt8 OBJECT · GEOMETRY OBJECT writes the move onto the object's transform, which is reversible and what the exporters compose. GEOMETRY bakes it into the point positions.
multiplyMatrix Bool OBJECT mode only: compose the result onto what the object already carries instead of replacing it. TRANSLATE adds to its position, ROTATE turns from its orientation, SCALE multiplies its scale.

See also

This page is generated from the engine, so it describes the release you can download. The same text is in the editor's Help panel next to the node itself.