Documentation / Node reference / geo nodes

geo/CopyToQuads

Bends one copy of a flat template onto every quad, through the quad's own (u,v).

Copy

Input 0 is a template drawn in the XY plane, input 1 is QUAD geometry. Every quad gets its own copy of the template, with each point sent through the quad's bilinear map: the template's x and y are the quad's parameters, so the template's square lands on the quad's four corners however the quad is twisted or sheared, and its z is laid along the quad's normal. It is how a trim curve sits in a NURBS surface's (u,v) space, applied to a mesh.

domain says which square is stretched: the unit square from 0 to 1, or the template's own bounding box, which fills the quad whatever the template's size. uAxis says which edge the template's x runs along; y then completes a frame that reads the right way round seen from the front of the quad. keepAspect fits the template with one scale factor instead of stretching it, and margin keeps it clear of the quad's edges.

The warp runs in local space: the template's own points, its transform ignored, onto the quads' own corners. Each copy takes the transform of its quad object and its place in input 1's hierarchy. A 2D template on 2D quads stays 2D, never mirrored in the XY plane. Any other pair comes out 3D. An M3D or M2D template is warped by manifold and stays a manifold, except an M2D on 3D quads, which is triangulated first. Normals are carried through the warp, so hard edges stay hard. With copyAttributes on, every primitive attribute of a quad becomes an object attribute of its copies.

Use geo/CopyToPoints to place rigid copies at points instead.

Parameters

Name Type What it does
domain UInt8 UNIT_SQUARE · BOUNDS Which part of the template's XY plane is stretched onto each quad. UNIT_SQUARE takes x and y from 0 to 1, so a point at (0.5, 0.5) lands in the middle of the quad. BOUNDS takes the template's own bounding box over every object of input 0, so the template fills the quad whatever its size or position.
uAxis UInt8 EDGE_01 · EDGE_12 · EDGE_23 · EDGE_30 · LONGER_EDGE Which quad edge the template's x axis runs along, in the direction of the edge. y then runs across the quad so the copy is not mirrored seen from the quad's front. LONGER_EDGE picks edge 0-1 or edge 1-2, whichever is longer, so a caption runs along the long side.
squareTolerance Float LONGER_EDGE only: a quad whose sides are within this fraction of each other counts as square and takes edge 0-1, so neighbouring square quads all read the same way.
keepAspect Bool Fit the template with ONE scale factor, the largest that fits, and centre it, instead of stretching it to the quad on each axis. What text wants.
margin Float Clearance to keep from every edge of the quad, in the quads' units, taken off both ends of each side before the template is fitted.
depthScale Float Multiplies the template's z before it is laid along the quad's normal. z is in the template's units and is not scaled with x and y, so an extrusion keeps its depth however small the quad is.
copyAttributes Bool Copy every primitive attribute of a quad onto its copies, as object attributes.

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.