Skip to content

Geometry Nodes

Altitude Vertex Color

Paints vertex colors by altitude (world Y position). Pair with an altitude-blending shader material.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Options

  • lowAltitude: World Y at which vertices receive the low-altitude color (blend clamps at and below this).
  • highAltitude: World Y at which vertices receive the high-altitude color (blend clamps at and above this).
  • lowR: Red channel of the low-altitude vertex color.
  • lowG: Green channel of the low-altitude vertex color.
  • lowB: Blue channel of the low-altitude vertex color.
  • highR: Red channel of the high-altitude vertex color.
  • highG: Green channel of the high-altitude vertex color.
  • highB: Blue channel of the high-altitude vertex color.

Assign Vertex Color

Assigns a uniform RGBA vertex color to every vertex of a mesh.

Inputs

  • Geometry (Geometry)
  • Color (Color)

Outputs

  • Geometry (Geometry)

Attribute Vertex Color

Maps an attribute channel [0,1] to a two-colour gradient and writes the result to vertex colors. Matches the Slope Vertex Color and Altitude Vertex Color pattern.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Options

  • attributeSlot: Which attribute channel to read. Attribute 1-6 map to uvExtra c5-c7 (x and y of each float2).
  • lowR: Red channel of the color applied to vertices with attribute value 0.
  • lowG: Green channel of the color applied to vertices with attribute value 0.
  • lowB: Blue channel of the color applied to vertices with attribute value 0.
  • highR: Red channel of the color applied to vertices with attribute value 1.
  • highG: Green channel of the color applied to vertices with attribute value 1.
  • highB: Blue channel of the color applied to vertices with attribute value 1.

Limitations

  • Attribute slots not written upstream read as 0 on every vertex (all vertices receive Low Color).

Tips

  • Place this node after any Transform node; the attribute is read as it exists at this point in the graph.
  • Pair with a shader that reads vertex colors (e.g. the Infinio Blend Material) for gradient-based surface tinting.

Bend

Bends a mesh by leaning its tip. Bend X tips the mesh toward the X axis, Bend Z toward the Z axis: both in degrees. Bend Region limits which span of the mesh deforms; Up Axis names the base-to-tip axis. Wire a Float Parameter with HandleType.Angle to Bend X or Bend Z for a scene handle.

Inputs

  • Geometry (Geometry)
  • Bend X (Float)
  • Bend Z (Float)

Outputs

  • Geometry (Geometry)

Options

  • spineAxis: Axis that runs from base to tip. Y for upright geometry (trees, poles); Z or X for meshes built lying flat.
  • falloffExp: Bend-curve exponent. 1 = linear arc; 2 = smooth ease-in; higher concentrates bend toward the tip.
  • lowerBound: Normalized spine position (0–1) where the bend region starts. Vertices below this stay rigid.
  • upperBound: Normalized spine position (0–1) where the bend region ends. Vertices above this extend as a rigid arm in the arc tangent direction.

Limitations

  • Operates in local mesh space: applied before any GeometryTransform. Apply UV projection before stacking deformers so the UV reads the undeformed position.

Tips

  • Chain Bend + Fold to arch a palm frond along its length while also creasing it down the spine.
  • Use Lower / Upper Bound to leave the trunk base rigid and only bend the top half.

Bevel Edges

Chamfers or rounds sharp edges (dihedral angle > Threshold). Segments=1 gives a flat chamfer; Segments≥2 places arc rings for a rounded chamfer. The node badge shows the safe maximum Amount for the current mesh; enable Clamp to cap Amount there automatically.

Inputs

  • Geometry (Geometry)
  • Amount (Float)
  • Segments (Int)
  • Threshold (Float)

Outputs

  • Geometry (Geometry)

Options

  • profile: Bevel cross-section profile. Reserved for future blend control; currently unused.
  • selectionMode: Which edges to bevel. 0 = angle-based (edges sharper than Threshold); 1 = all edges regardless of angle.
  • clampToSafe: When on, caps Amount at the safe ceiling (a conservative estimate of the largest Amount before bevels risk overlapping). Use when you want the thickest possible bevel without geometry artefacts. Off (default) lets you exceed the ceiling deliberately: useful to see where it falls before constraining it.

Limitations

  • Welds coincident vertices on a 1 mm grid recentred on the mesh bounds: features finer than ~1 mm may merge. Tuned for roughly metre-scale geometry; bevel at authoring scale, not at extreme world coordinates.
  • Non-manifold edges (3+ triangles meet, common in raw CSG output) are left un-bevelled and warned: weld or repair the mesh before beveling.
  • Inputs with more than 100,000 triangles are rejected: the node returns the input geometry unchanged and raises a warning. Reduce triangle count or split the mesh before beveling.
  • Input geometry whose bounds extend more than 1,000 m from the origin is rejected: the node returns the input geometry unchanged and raises a warning. Bevel close to the origin at authoring scale.
  • A non-finite (NaN or infinite) Amount is rejected: the node returns the input geometry unchanged and raises a warning. Check upstream nodes that drive Amount.

Tips

  • Segments=3–4 gives a visually rounded chamfer for most meshes without excessive vertex count.

Bounding Box

Computes the axis-aligned bounding box of a mesh. Outputs Min, Max, Center, and Size as Vector3.

Inputs

  • Geometry (Geometry)

Outputs

  • Min (Vector3)
  • Max (Vector3)
  • Center (Vector3)
  • Size (Vector3)

Limitations

  • Outputs Min = Max = Center = Size = zero if the connected geometry is empty or fully degenerate (all vertices coincident). Use a Branch node to guard downstream logic when the source may be conditionally empty.

Box

Box primitive with independent width, height, and depth, and per-axis subdivision.

Inputs

  • Width (Float)
  • Height (Float)
  • Depth (Float)
  • Width Segments (Int)
  • Height Segments (Int)
  • Depth Segments (Int)

Outputs

  • Geometry (Geometry)

Options

  • originMode: Which point of the bounding box sits at the local origin. Center: geometric centre (default). Bottom: Y=0 at the bottom face (use when placing on ground). Top: Y=0 at the top face. Left: X=0 at the left face. Right: X=0 at the right face.

Tips

  • Origin Mode: Center places the mesh centred at the local origin. Base places Y=0 at the bottom face: use Base when placing objects on a ground plane or terrain.

Branch Transform

Applies a cumulative TRS at a given iteration index: rotate, scale, and translate per step for L-system branching loops.

Inputs

  • Geometry (Geometry)
  • Iteration (Float)
  • Rotate X / Step (Float)
  • Rotate Y / Step (Float)
  • Rotate Z / Step (Float)
  • Scale / Step (Float)
  • Translate X / Step (Float)
  • Translate Y / Step (Float)
  • Translate Z / Step (Float)

Outputs

  • Geometry (Geometry)

Bulge

Inflates mesh vertices radially outward from the spine axis, with a smooth falloff peaked at a configurable spine position. Center and Width control where and how broadly the bulge occurs.

Inputs

  • Geometry (Geometry)
  • Amount (Float)

Outputs

  • Geometry (Geometry)

Options

  • center: Spine position (0 = base, 1 = tip) where the bulge peaks.
  • width: Fraction of the spine length over which the bulge falls off. 1 = full length; 0.2 = narrow band.
  • spineAxis: Axis that runs from base to tip. Y for upright geometry; Z or X for meshes built lying flat.

Limitations

  • Operates in local mesh space: applied before any GeometryTransform. Apply UV projection before stacking deformers.

Tips

  • Center = 0.5, Width = 1.0 gives a full-length barrel shape. Narrow Width (0.2–0.3) with Center at 0.7 produces a localized mid-belly bulge.
  • Negative Amount deflates: use to create an hourglass waist or concave groove.

Cap Holes

Detects open boundary loops and fills each with a flat fan-triangulated cap from the loop centroid.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Capsule

Cylinder capped with hemispheres: common for character and prop colliders.

Inputs

  • Radius (Float)
  • Height (Float)
  • Segments (Int)
  • Cap Segments (Int)

Outputs

  • Geometry (Geometry)

Catmull-Clark Subdivide

Catmull-Clark subdivision: smooths topology by inserting face and edge points. Each iteration multiplies triangle count by six. Cap at 3 iterations.

Inputs

  • Geometry (Geometry)
  • Iterations (Int)

Outputs

  • Geometry (Geometry)

Compute Tangents

Computes per-vertex tangent vectors from UV0 and surface normals. Required for normal-mapped Unity materials. UV0 must contain valid projection coordinates before calling this node.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Cone

Cone tapering from a circular base to an apex, with configurable radial and height segments.

Inputs

  • Radius (Float)
  • Height (Float)
  • Radial Segments (Int)
  • Height Segments (Int)

Outputs

  • Geometry (Geometry)

Options

  • originMode: Which point of the cone sits at the local origin. Center: geometric centre (default). Bottom: Y=0 at the base circle (use for cones/stalagmites sitting on ground). Top: Y=0 at the apex. Left: X=0 at leftmost base edge. Right: X=0 at rightmost base edge.

Tips

  • Origin Mode Base places Y=0 at the base circle: use when the cone rests on a surface (stalagmite, mountain peak, pile of debris).

Copy Offset

Duplicates geometry with a per-copy offset. The simplest way to make extra copies of a mesh.

Inputs

  • Geometry (Geometry)
  • Copies (Float)
  • Offset X (Float)
  • Offset Y (Float)
  • Offset Z (Float)

Outputs

  • Geometry (Geometry)

Options

  • materialMode: How submeshes from the original and all copies are combined. 0 = Preserve Materials: each copy keeps its original submeshes. 1 = Flatten: collapses everything to a single submesh using material index 0.

Tips

  • For evenly repeated copies with rotation or jitter, use Linear Array.

Cylinder

Cylinder with configurable radius, height, radial segment count, and height segment count.

Inputs

  • Radius (Float)
  • Height (Float)
  • Radial Segments (Int)
  • Height Segments (Int)

Outputs

  • Geometry (Geometry)

Options

  • originMode: Which point of the cylinder sits at the local origin. Center: geometric centre (default). Bottom: Y=0 at the base circle (use for pillars on ground). Top: Y=0 at the top cap. Left: X=0 at leftmost. Right: X=0 at rightmost.
  • seamMode: How the back edge of the cylinder is built. Welded: back edge shares one vertex per ring: clean deformer stacks (Bend/Twist/NormalDisplace/Bulge) with no seam gap. UvSplit: adds a duplicate vertex at the back to give UV.x a clean 0–1 range for texture wrapping, but produces a visible gap when deformers stack heavily.

Tips

  • Origin Mode Base places Y=0 at the bottom cap: use when the cylinder represents a column or pillar sitting on a ground plane.
  • Seam Mode Welded shares the back edge for smooth deformer stacks (Bend/Twist/NormalDisplace). UvSplit keeps a UV seam for texture-wrapped materials but can cause a visible gap under heavy deformation.

Displace (Terrain)

Displaces each vertex along world Y by fBm noise sampled at its XZ position: the heightfield node, for terrain and ground.

Inputs

  • Geometry (Geometry)
  • Scale (Float)
  • Strength (Float)
  • Octaves (Int)
  • Lacunarity (Float)
  • Gain (Float)
  • Seed (Float)

Outputs

  • Geometry (Geometry)

Options

  • noiseType: Noise algorithm. Perlin is smoother. Simplex is slightly sharper. Ridged maps each octave to abs(noise), producing sharp ridges with smooth valleys.
  • bias: How the noise maps onto height. Centered spreads displacement either side of the original surface, so Strength is amplitude only. Raise pushes upward only, which also lifts the whole surface by about half of Strength.
  • normalMode: 0 (Mesh) uses triangle normals from the mesh topology; accurate for any mesh. 1 (Field) computes normals analytically from the noise field via central differences; eliminates seams between adjacent chunks but shows detail the silhouette lacks on coarse meshes.
  • falloffRadius: Island falloff radius in world units. 0 = disabled. Greater than 0 = displacement fades smoothly to zero at this distance from world origin (0,0): use to shape island terrain that reaches sea level at the edges.

Tips

  • Samples in 2D at XZ, so it is a heightfield: it cannot produce overhangs, and on a closed mesh (a sphere or rock) it stretches the poles. Use Displace (Volumetric) for those.
  • Resolution is controlled by the input mesh’s vertex density. Increase Width/Depth Segments on the upstream Plane node: not on this node.
  • Pair with Compute Tangents afterwards so normal maps on the final material read correctly.
  • Wire a plain integer or a Float parameter into Seed to get a different landscape per instance: the seed is a domain shift, so adjacent chunks sharing a seed still agree at their edges.

Displace (Volumetric)

Displaces each vertex outward along its pre-displacement normal, sampling noise in 3D at the vertex position: for spheres, rocks and closed meshes.

Inputs

  • Geometry (Geometry)
  • Scale (Float)
  • Strength (Float)
  • Seed (Float)

Outputs

  • Geometry (Geometry)

Options

  • noiseType: Noise algorithm: Perlin is smoother; Simplex is slightly sharper.

Limitations

  • ⚠ Displacing along normals is only chunk-seam-safe when the pre-displacement normals are a pure function of world position. On a flat shared field it matches world-Y exactly and is safe; after a second displace pass, or on any chunk-locally accumulated normal, boundary normals differ per chunk and open position cracks that skirts do NOT hide.

Tips

  • Samples in 3D at the vertex position, so there are no poles to distort and no preferred axis. This is the one to reach for on anything closed or organic.
  • Displacement is already balanced either side of the surface, so there is no Bias knob: Strength is pure amplitude.
  • Wire Seed to vary the surface per instance; two rocks in one graph need different seeds to look different.

Extrude

Extrudes a 2D polygon along a direction vector to form a prism. End Caps controls whether top and/or bottom caps are emitted; compose with Bend/Twist/Taper for tapered or twisted profiles.

Inputs

  • Polygon (Polygon)
  • Direction (Vector3)
  • Height (Float)

Outputs

  • Geometry (Geometry)

Options

  • endCaps: Which cap faces to emit. Both = solid prism; TopOnly or BottomOnly = open on one end; None = open tube/sleeve.
  • heightSegments: Edge loops along the extrusion height. 1 = single segment; increase for Bend/Twist/Taper deformers to give vertices to deform.
  • creaseAngle: Turning angles above this threshold produce hard-shaded edges. 30° (default) gives sharp box corners and smooth curves. 0° = all hard; 180° = all smooth.

Filter by Attribute

Removes triangles whose average attribute value is below a threshold. Vertices are retained; only the index buffer is filtered.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Options

  • attributeSlot: Which attribute channel to read. Attribute 1-6 map to uvExtra c5-c7 (x and y of each float2).
  • threshold: Triangles whose average attribute is below this value are removed (or kept if Invert is enabled).
  • invert: When enabled, keeps triangles below the threshold and removes those at or above it.

Limitations

  • Attribute slots not written upstream read as 0 on every vertex; with default threshold 0.5 and invert=false, all triangles are removed.

Tips

  • Place this node after any Transform node; the filter reads attribute values as they exist at this point in the graph.
  • Enable Invert to keep low-attribute triangles and remove high-attribute ones.

Flip Normals

Reverses the winding order of all triangles and negates per-vertex normals, flipping the visible side of the mesh. For single-sided wall and facade panels, use the Facing control on WallAlongPath or PolygonToFacadeShell instead: Flip Normals inverts existing normals and may produce unexpected results on extruded panels.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Fold

Creases the mesh along its spine into a symmetric V cross-section (palm-leaf fold). Chain a Bend node after Fold to arch the frond along its length.

Inputs

  • Geometry (Geometry)
  • Fold Angle (Float)

Outputs

  • Geometry (Geometry)

Options

  • spineAxis: Axis the leaf spine runs along. Auto detects the longest mesh axis; set manually when the mesh is near-square.
  • creaseProfile: 0 = uniform crease along the whole leaf; higher values concentrate the fold toward the tip.

Limitations

  • Operates in local mesh space: applied before any GeometryTransform. Apply UV projection before stacking deformers.

Tips

  • Auto spine mode detects the longest mesh axis: works for most leaf/frond shapes. Set manually if the mesh is near-square.
  • Combine: Fold (crease) → Bend (arch) → GeometryTransform (place at branch attach point) for a complete palm frond assembly.

Geometry Palette Sample

Samples a mesh from a Geometry Palette parameter: connect to a MeshSelector or WeightedMeshSelector variant output.

Inputs

  • Variant Index (Float)

Outputs

  • Geometry (Geometry)

GeometryExtTestEditor

Test fixture: emits a unit tetrahedron at a parameterized offset to verify geometry extension dispatch.

Outputs

  • Geometry (Geometry)

Height Falloff

Writes per-vertex world-space Y height as a [0,1] falloff into an attribute slot.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Options

  • attributeSlot: Which attribute channel to write. Attribute 1-6 map to uvExtra c5-c7 (x and y of each float2).
  • minValue: World Y position that maps to 0. Vertices at or below this receive 0.
  • maxValue: World Y position that maps to 1. Vertices at or above this receive 1.

Tips

  • Place this node after any Transform node; the falloff reads vertex positions as they exist at this point in the graph.

Icosphere

Sphere built from subdivided icosahedron faces: rounder than UV sphere at the same polygon count.

Inputs

  • Radius (Float)
  • Subdivisions (Int)

Outputs

  • Geometry (Geometry)

Tips

  • Each Subdivision pass quadruples the polygon count: 0 = 20 triangles, 1 = 80, 2 = 320, 3 = 1280, 4 = 5120. Use 2 for most smooth-sphere use cases; 3–4 for close-camera organic shapes.

Instancer

Places a geometry template at every position from a Spawn input, merging all instances into a single Geometry output.

Inputs

  • Geometry (Geometry)
  • Spawns (Scatter)

Outputs

  • Geometry (Geometry)

Options

  • materialMode: How submeshes from all instances are combined. 0 = Preserve Materials: each instance keeps its original submeshes (multi-material instanced meshes). 1 = Flatten: collapses everything to a single submesh using material index 0 (reduces draw calls, use when all instances share one material).

Tips

  • Geometry Instancer bakes all instances into one merged mesh: for runtime GPU-instanced rendering, use Scatter Output connected to ChunkSystem instead.
  • The merged output is visible in the node preview, but requires an InfinioInstance component in the scene to render in the editor. A bare scene shows nothing.

Linear Repeat

Repeat geometry N times along an axis with optional alternating rotation.

Inputs

  • Geometry (Geometry)
  • Count (Float)
  • Step X (Float)
  • Step Y (Float)
  • Step Z (Float)
  • Rot X (Float)
  • Rot Y (Float)
  • Rot Z (Float)
  • Alt Angle (Float)
  • Jitter X (Float)
  • Jitter Y (Float)
  • Jitter Z (Float)

Outputs

  • Geometry (Geometry)

Options

  • materialMode: How submeshes from all array instances are combined. 0 = Preserve Materials: each instance keeps its original submeshes. 1 = Flatten: collapses everything to a single submesh using material index 0.

Merge

Merges 2-8 geometry inputs into one. “Keep separate” preserves per-input material assignments; “Combine into one” produces a single submesh carrying the first input’s material.

Inputs

  • Geometry A (Geometry)
  • Geometry B (Geometry)
  • Geometry C (Geometry)
  • Geometry D (Geometry)
  • Geometry E (Geometry)
  • Geometry F (Geometry)
  • Geometry G (Geometry)
  • Geometry H (Geometry)

Outputs

  • Geometry (Geometry)

Options

  • mergeMode: How materials survive the merge. Keep separate (the default) gives each input its own submesh, so both materials come through. Combine into one flattens to a single submesh carrying the first contributing input’s material.

Limitations

  • “Combine into one” keeps only the material of the first input that contributes triangles: any other input material is dropped. Use “Keep separate” when the inputs carry distinct MaterialTag / material settings you want to survive the merge, or add a Material Tag after this node to set the combined material explicitly.

Mesh Asset

Bakes a Unity Mesh asset into the graph binary at compile time. Outputs Geometry. Multi-submesh meshes (≤4 submeshes) are fully baked. Skinned meshes are baked at bind pose only.

Outputs

  • Geometry (Geometry)

Options

  • meshAsset: Unity Mesh to bake into the binary. Drag from the Project window. Mesh must have ≤4 submeshes. Skinned meshes are baked at bind pose; blendshapes are not baked.

Limitations

  • If a mesh’s baked submesh ranges are out of bounds in the binary, the node falls back to treating the whole mesh as one material slot and shows a warning in the graph editor. Recompile the graph to fix the baked data.
  • Meshes imported with Normals: None will render black under lit materials unless Recompute missing normals is on (Graph Settings > Baking). The setting is on by default and computes smooth normals at bake time.

Mesh Difference

Boolean difference: mesh A with mesh B’s volume carved out. UV0 and material slots are carried through from each operand. v1: clean closed-manifold input; vertex colors, tangents and UV2-7 are not yet carried: re-apply those after the boolean if needed.

Inputs

  • Geometry A (Geometry)
  • Geometry B (Geometry)

Outputs

  • Geometry (Geometry)

Limitations

  • Tuned for metre-scale geometry (up to ~1000 world units). Operands beyond that scale may mis-weld near the boolean’s tolerance floor: build at a sensible scale and Transform afterward.
  • Hole-fill repair patches (synthetic watertight geometry) carry UV=0 and material=0.
  • Self-intersecting operands: GWN classifies doubly-folded regions as Inside, so those regions are removed by Difference even when the raw surface folds back. The validation pre-pass degrades obvious self-intersecting inputs, but subtle cases may pass through.
  • Either operand containing NaN or Inf vertex positions is refused: the node outputs A unchanged as a fallback and shows a warning. Fix the upstream geometry before running the boolean.
  • Inputs whose combined triangle count would overflow the mesh arena are refused with the same fallback and warning. Simplify operands with Simplify Geometry upstream.

Tips

  • Wire Simplify Geometry (Quality 0.1–0.3) upstream of each operand for fast preview iteration: a few thousand triangles per input previews comfortably; tens of thousands take seconds.
  • Both operands must be closed, watertight solids. Open-mesh inputs produce incomplete or missing output. Right-click → ‘Cap open mesh’ to add a closing face if needed.
  • A is the base mesh; B is the cutter. Swapping A and B produces the complementary carved shape: only A’s exterior survives.

Mesh Intersect

Boolean intersection: only the volume shared by both meshes. UV0 and material slots are carried through from each operand. v1: clean closed-manifold input; vertex colors, tangents and UV2-7 are not yet carried: re-apply those after the boolean if needed.

Inputs

  • Geometry A (Geometry)
  • Geometry B (Geometry)

Outputs

  • Geometry (Geometry)

Limitations

  • Tuned for metre-scale geometry (up to ~1000 world units). Operands beyond that scale may mis-weld near the boolean’s tolerance floor: build at a sensible scale and Transform afterward.
  • Hole-fill repair patches (synthetic watertight geometry) carry UV=0 and material=0.
  • Self-intersecting operands: GWN classifies doubly-folded regions as Inside (winding ≥ 2), so those regions survive Intersection even when you might expect the self-folded surface to be excluded. The validation pre-pass degrades obvious self-intersecting inputs, but subtle cases may pass through.
  • Either operand containing NaN or Inf vertex positions is refused: the node outputs empty geometry as a fallback and shows a warning. Fix the upstream geometry before running the boolean.
  • Inputs whose combined triangle count would overflow the mesh arena are refused with the same fallback and warning. Simplify operands with Simplify Geometry upstream.

Tips

  • Wire Simplify Geometry (Quality 0.1–0.3) upstream of each operand for fast preview iteration: a few thousand triangles per input previews comfortably; tens of thousands take seconds.
  • Both operands must be closed, watertight solids. Open-mesh inputs produce incomplete or missing output. Right-click → ‘Cap open mesh’ to add a closing face if needed.
  • If the operands don’t overlap at all, the output is empty geometry. Check that B actually penetrates A in the canvas preview before investigating further.

Mesh Union

Boolean union of two meshes: the combined solid with overlapping interior removed. UV0 and material slots are carried through from each operand. v1: clean closed-manifold input; vertex colors, tangents and UV2-7 are not yet carried: re-apply those after the boolean if needed.

Inputs

  • Geometry A (Geometry)
  • Geometry B (Geometry)

Outputs

  • Geometry (Geometry)

Limitations

  • Tuned for metre-scale geometry (up to ~1000 world units). Operands beyond that scale may mis-weld near the boolean’s tolerance floor: build at a sensible scale and Transform afterward.
  • Hole-fill repair patches (synthetic watertight geometry) carry UV=0 and material=0.
  • Self-intersecting operands: GWN legitimately classifies doubly-folded (inside-inside) regions as Inside, so those regions survive Union even when you might expect them not to. The validation pre-pass degrades obvious self-intersecting inputs, but subtle cases may pass through.
  • Either operand containing NaN or Inf vertex positions is refused: the node outputs the larger input as a fallback and shows a warning. Fix the upstream geometry before running the boolean.
  • Inputs whose combined triangle count would overflow the mesh arena are refused with the same fallback and warning. Simplify operands with Simplify Geometry upstream.

Tips

  • Wire Simplify Geometry (Quality 0.1–0.3) upstream of each operand for fast preview iteration: a few thousand triangles per input previews comfortably; tens of thousands take seconds.
  • Both operands must be closed, watertight solids. Open-mesh inputs produce incomplete or missing output. Right-click → ‘Cap open mesh’ to add a closing face if needed.
  • Union is commutative: A ∪ B = B ∪ A. Input order does not affect the result.

Mirror

Reflects geometry across the selected axis plane (X=0, Y=0, or Z=0) and merges the original with its mirror image.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Options

  • axis: The plane of symmetry. X: reflects across X=0 (left/right symmetry). Y: reflects across Y=0 (top/bottom symmetry). Z: reflects across Z=0 (front/back symmetry).
  • materialMode: How submeshes from the original and mirror are combined. 0 = Preserve Materials: keeps each side’s original submeshes. 1 = Flatten: collapses everything to a single submesh using material index 0.

Offset Wind Phase

Adds a constant delta to vertex color A (wind phase) on every vertex. Use inside a loop with delta = loopIndex × 0.13 to de-sync frond animation phases. Pass-through when source has no vertex colors.

Inputs

  • Geometry (Geometry)
  • Delta (Float)

Outputs

  • Geometry (Geometry)

Plane

Flat XZ plane subdivided into a configurable grid of quads.

Inputs

  • Width (Float)
  • Depth (Float)
  • Width Segments (Int)
  • Depth Segments (Int)

Outputs

  • Geometry (Geometry)

Point Falloff

Writes per-vertex distance from a reference point as a [0,1] falloff into an attribute slot.

Inputs

  • Geometry (Geometry)
  • Reference (Vector3)

Outputs

  • Geometry (Geometry)

Options

  • attributeSlot: Which attribute channel to write. Attribute 1-6 map to uvExtra c5-c7 (x and y of each float2).
  • minValue: Distance at which falloff is 0. Vertices at or closer than this receive 0.
  • maxValue: Distance at which falloff is 1. Vertices at or farther than this receive 1.

Tips

  • Place this node after any Transform node; the falloff reads vertex positions as they exist at this point in the graph. In a chunk-streaming context the reference point is world-space, not chunk-local.

Points to Vertex Attribute

Writes each spawn’s Attribute value into the chosen vertex attribute channel, mapped by vertex index (spawn[i] sets attribute[i]).

Inputs

  • Geometry (Geometry)
  • Points (Scatter)

Outputs

  • Geometry (Geometry)

Options

  • attributeSlot: Target attribute channel (Attribute1-Attribute6). Read back with Scale by Attribute or Filter by Attribute.

Limitations

  • Mapping is strictly by index, not by position proximity. Spawn count must equal vertex count exactly or geometry passes through unchanged with a warning.
  • Attribute values are written unclamped. Downstream nodes that expect a 0-1 range may need a remap node.

Tips

  • Feed the same Geometry into both this node and a Points from Geometry node to guarantee vertex count and spawn count always match.
  • Use For Each Spawn with Loop End Spawn’s Attribute port to compute a custom float per point, then feed the result here.
  • Combine with Scale by Attribute or Filter by Attribute downstream to use the written values for further operations.

Points to Vertex Normal

Replaces each vertex normal with the direction encoded in the matching spawn’s rotation, mapped by vertex index (spawn[i] sets normal[i]).

Inputs

  • Geometry (Geometry)
  • Points (Scatter)

Outputs

  • Geometry (Geometry)

Limitations

  • Mapping is strictly by index, not by position proximity. Spawn count must equal vertex count exactly or geometry passes through unchanged with a warning.
  • Tangents are cleared. Recalculate downstream if the material uses a normal map.

Tips

  • Feed the same Geometry into both this node and a Points from Geometry node to guarantee vertex count and spawn count always match.
  • Run a For Each Spawn loop between Points from Geometry and this node to modify rotations per point before writing them back.
  • Tangents are dropped by this node. Add a Compute Tangents node downstream when a normal-mapped material requires them.

Recalculate Normals

Recomputes per-vertex normals from the mesh’s triangle geometry. Edges sharper than the crease angle get hard normals (split vertices). Required after Apply Noise or any deformer that changes vertex positions.

Inputs

  • Geometry (Geometry)
  • Crease Angle (Float)

Outputs

  • Geometry (Geometry)

Recenter Geometry

Moves the mesh so a chosen point of its bounding box sits at the local origin: without changing its shape.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Options

  • pivotMode: Which point of the bounding box moves to the local origin. Center: geometric centre. Bottom: Y=0 at the lowest face (use before Instancer/Scatter so props sit flush on the ground). Top: Y=0 at the highest face (use for hanging signs, lamps). Left: X=0 at the leftmost face (tile cleanly along -X under Linear Array). Right: X=0 at the rightmost face (tile cleanly along +X).

Limitations

  • ⚠ Recenter Geometry moves vertices, so run it BEFORE Set Sway Pivot / Set Wind Weights. Those bake positions into side channels, and recentering afterwards leaves that baked data pointing at the pre-recenter frame.

Tips

  • Recenter to Bottom before an Instancer or Scatter so props sit flush on the ground: instancing places the template’s local origin at each spawn point, so a mesh whose origin is at its centre sinks half-way in.
  • Top is the one you want for anything that hangs: signs, lamps, vines: so the attach point is the origin.
  • Left and Right make a piece tile cleanly along X under Linear Array.
  • For an arbitrary nudge, chain a Geometry Transform after this rather than looking for an offset port here.

Revolve

Creates a solid mesh by revolving a 2D polygon profile around the Y axis.

Inputs

  • Polygon (Polygon)

Outputs

  • Geometry (Geometry)

Options

  • segments: Number of radial divisions around the Y axis. 3 = triangular prism, 6 = hexagonal, 16 = smooth-looking vase (default), 64 = high-quality round column. Minimum 3; capped at 256.

Limitations

  • Polygon profiles with holes (multi-contour output from Difference or GridSubdivide) are not supported: only the outer contour is used; interior holes are silently dropped. Use a simple outer boundary as the profile.

Scale by Attribute

Scales each vertex position (relative to the bounding box centre) by a factor remapped from the chosen attribute channel.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Options

  • attributeSlot: Which attribute channel to read. Attribute 1-6 map to uvExtra c5-c7 (x and y of each float2).
  • minScale: Scale factor applied to vertices with attribute value 0.
  • maxScale: Scale factor applied to vertices with attribute value 1.

Limitations

  • Attribute slots not written by an upstream falloff or attribute node read as 0 on every vertex.

Tips

  • Place this node after any Transform node; the scale reads vertex positions as they exist at this point in the graph.
  • Attribute values outside [0,1] are clamped. Use minScale=1 maxScale=1 to leave the mesh unchanged while validating the attribute.

Set Normals

Sets all vertex normals to a constant world-space direction. The input direction is normalised before use.

Inputs

  • Geometry (Geometry)
  • Direction (Vector3)

Outputs

  • Geometry (Geometry)

Options

  • direction: World-space direction that all vertex normals are set to. Normalised before use. If zero, defaults to world up (0,1,0).

Limitations

  • Sets ALL vertex normals to the same direction. For per-vertex normal control use Points to Vertex Normal (UID 298): wire Geometry to Points from Geometry, run a loop to modify the rotation, then feed the spawn list to Points to Vertex Normal.

Tips

  • Wire a Vector3 parameter or a scene handle position to the Direction port to control the normal direction at edit time.
  • Tangents are cleared (set to zero) by this node; recalculate tangents downstream if a normal-mapped material is used.

Set Sway Pivot

Stores a sway pivot (XZ) into UV2 for every vertex: the point each vertex’s pendulum swing rotates around in object space.

Inputs

  • Geometry (Geometry)
  • Pivot X (Float)
  • Pivot Y (Float)
  • Pivot Z (Float)

Outputs

  • Geometry (Geometry)

Limitations

  • ⚠ XZ coords must be in the assembled object frame. Wire the same X/Z values you pass to the part’s Transform translation; calling inside a subgraph before Transform leaves the pivot at local origin.

Tips

  • Use Set Wind Weights (Uniform) instead for rigid attached objects (props, fruit); it avoids the frame-dependency by writing identical RGBA to every vertex.

Set Wind Weights

Writes per-vertex wind weights into vertex color: R=saturate(BendBase + BendScale × UV.y), G=Flutter × UV.x, B=FrondSwing × UV.y, A=Phase.

Inputs

  • Geometry (Geometry)
  • Bend Base (Float)
  • Bend Scale (Float)
  • Flutter Scale (Float)
  • Frond Swing Scale (Float)
  • Phase (Float)

Outputs

  • Geometry (Geometry)

Limitations

  • ⚠ call after any GeometryTransform that places this geometry in its final assembled frame. UV.y is mesh-local; setting BendBase inside a subgraph then Transforming the part leaves R encoding local-frame attach height, not tree-frame height.

Tips

  • Trunk: BendBase=0, BendScale=1. Frond placed by parent Transform: set BendBase = (attachY / treeHeight) × outerBendScale in the parent graph so the frond bends with the trunk at its attach height.
  • Connect Set Sway Pivot after this node (also in the parent graph, also after Transform) to complete the wind setup.

Set Wind Weights (Uniform)

Like Set Wind Weights but writes UNIFORM RGBA: every vertex gets the same wind weights, with no per-vertex UV multiplication. Use for rigid sub-objects attached to a tree (coconuts, fruit, props) where the per-vertex UV formula would distort the object instead of translating it. Set Bend to the object’s height-in-tree fraction × bendScale so it translates with the trunk’s bend at its height.

Inputs

  • Geometry (Geometry)
  • Bend (Float)
  • Flutter (Float)
  • Frond Swing (Float)
  • Phase (Float)

Outputs

  • Geometry (Geometry)

Shear

Offsets mesh cross-sections laterally proportional to spine progress, leaning the mesh sideways like a shear transform. Positive Shear X leans toward +X at the tip; Shear Z leans toward +Z.

Inputs

  • Geometry (Geometry)
  • Shear X (Float)
  • Shear Z (Float)

Outputs

  • Geometry (Geometry)

Options

  • spineAxis: Which local axis runs from the base to the tip of the mesh. Y: upright geometry (grass, posts, trees). Z: horizontal geometry built along Z. X: horizontal geometry built along X.

Limitations

  • Operates in local mesh space: applied before any GeometryTransform. Apply UV projection before stacking deformers.

Tips

  • Use to simulate a wind-blown lean for grass, flags, or tall props. Pair with Set Wind Weights for a dynamic runtime wind effect.
  • Shear and Bend produce similar visual leans but differ in vertex distribution: Shear is a pure linear offset, Bend curves the spine.

Simplify Geometry

Reduces triangle count with Quadric Error Metrics decimation: preserves silhouette, material boundaries, and optionally hard edges and UV seams while collapsing the lowest-error geometry. Built for collision meshes, scatter-prop density reduction, and stripping coplanar tessellation.

Inputs

  • Geometry (Geometry)
  • Quality (Float)
  • Target Ratio (Float)

Outputs

  • Geometry (Geometry)

Options

  • mode: Reduction strategy. Quality / Target Ratio are count-driven; Planar collapses every edge below Max Error and stops at the features (count-independent), ideal for flat-surface redundancy.
  • preserveBorders: Locks open-edge (boundary) vertices so the mesh outline is preserved. Default on.
  • maxError: Planar-mode tolerance (QEM squared-distance metric). Lower = only near-perfectly-coplanar regions collapse; raise to merge surfaces that deviate slightly. Ignored in Quality / Target Ratio modes. Tune with live preview. Default 0.001.
  • weldDistance: Distance threshold for the internal positional weld that canonicalises split-vertex topology before decimation. Default 0.0001.
  • creaseAngleDeg: Hard-locks vertices on interior edges whose dihedral angle exceeds this threshold, so sharp geometric features survive any Quality or Ratio setting. 0 = disabled. Try 30–60° on hard-surface meshes.
  • preserveMaterialBoundaries: Pins edges where adjacent faces have different materials. Keeps multi-material seams crisp. Default on.
  • preserveUvSeams: Keeps UV-discontinuity edges distinct (attribute-aware weld + seam lock) so UV islands cannot bleed together. Costs extra weld work. Default off: leave off for collision or density-reduction use.

Limitations

  • Multi-material meshes are partitioned by material: each surviving material gets its own submesh in the output, in source first-appearance order. Turn off Preserve Material Boundaries only if you want the decimator to ignore material seams entirely.
  • Simplification recomputes smooth normals and copies UVs from the surviving vertex: UVs drift on heavily decimated meshes. Enable Preserve UV Seams to protect seam edges from collapsing, but within-island UV drift still applies. Best suited to collision and silhouette use, not hero visual geometry.
  • Planar only removes redundancy WITHIN coplanar regions. It can’t (and won’t) merge distinct feature planes: e.g. it won’t fuse separate steps into a ramp.

Tips

  • Mode picks the strategy. Quality / Target Ratio are count-driven (keep a fraction of triangles). Planar is error-driven: it collapses every edge flatter than Max Error and stops at the feature edges: use it to remove redundant coplanar triangles on large flat faces while keeping the shape and hard creases exactly.
  • Quality is the main count knob: 1 keeps full detail, 0.5 targets ~half the triangles, 0 maximally reduces. Switch Mode to Target Ratio to dial an exact keep-fraction instead.
  • Leave Preserve Borders on for open meshes (planes, terrain patches) so the outer edge stays put. Turn it off for closed meshes (spheres, props) to let the whole surface decimate.
  • On a staircase or anything stepped, prefer Planar: tread/riser creases are high-error so they survive, while long coplanar side walls and undersides collapse. A count ratio would start eating the steps once the flat redundancy runs out.
  • On hard-surface meshes with corners or ridges, enable Crease Angle (try 45°): it pins the sharp edges as immovable locks so the decimator can only collapse the smooth interior topology, leaving the silhouette intact at any quality level.
  • Weld first if the mesh has split seams: QEM welds internally, but an explicit Weld lets you control the threshold.

Slice Geometry

Cuts a mesh into three pieces along an axis at two normalised cut planes (Below / Middle / Above). Lower Cut and Upper Cut are 0–1 fractions of the mesh’s own extent on that axis. Each cut is capped with a solid face: concave profiles, hollow tubes, and shapes the plane crosses in more than one place are all handled. An open mesh with no enclosed area at the cut gets no cap. Caps get their own material slot and UV scale, and normals, UVs, tangents, vertex colours and UV1–7 all survive the cut. Managed PostProcess.

Inputs

  • Geometry (Geometry)

Outputs

  • Below (Geometry)
  • Middle (Geometry)
  • Above (Geometry)

Options

  • axis: Which axis the cut planes are perpendicular to. X, Y, or Z: pick the axis that runs through the height of the mesh. Lower Cut and Upper Cut are measured as fractions of the mesh’s extent along this axis.
  • tileA: Lower cut position as a normalised fraction (0–1) of the mesh’s extent on the slice axis. Everything below this plane outputs as the Below piece.
  • tileB: Upper cut position as a normalised fraction (0–1). Everything above this plane outputs as the Above piece; everything between the two cuts is the Middle piece. Set tileB > tileA.
  • capMaterial: Material slot index used for the flat cap faces at each cut. 0 = first material. Assign a higher index to give the exposed cut its own material (e.g. end-grain on a sliced beam).
  • capUvScale: Texture tiling density across cap faces, in tiles per metre. 0 = auto-fit the cap UVs to the 0–1 range so the cap always has full texture coverage whatever its size.

Slope Falloff

Writes per-vertex surface slope (deviation from world up) as a [0,1] falloff into an attribute slot.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Options

  • attributeSlot: Which attribute channel to write. Attribute 1-6 map to uvExtra c5-c7 (x and y of each float2).
  • minValue: Slope value (0=flat, 1=vertical) that maps to 0 in the output.
  • maxValue: Slope value (0=flat, 1=vertical) that maps to 1 in the output.

Tips

  • Place this node after any Transform node; the falloff reads vertex normals as they exist at this point in the graph.

Slope Submesh Partition

Reorders triangles into two submesh ranges by surface slope. Assign different materials to flat and steep faces via the Renderer.materials array on the scene instance.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Options

  • thresholdAngle: Slope angle in degrees. Faces at or below this angle are assigned to submesh 0 (flat material); steeper faces go to submesh 1.
  • materialIndex0: Material slot index for flat faces (slope ≤ threshold). Matches the Renderer.materials array on the InfinioInstance.
  • materialIndex1: Material slot index for steep faces (slope > threshold).

Slope Vertex Color

Paints vertex colors by surface slope. Flat faces get the shallow color; steep faces get the steep color. Pair with a slope-blending shader material.

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Options

  • minAngleDeg: Slope angle (degrees) at or below which vertices receive the shallow color.
  • maxAngleDeg: Slope angle (degrees) at or above which vertices receive the steep color. Blend between min and max is linear.
  • shallowR: Red channel of the flat-face vertex color.
  • shallowG: Green channel of the flat-face vertex color.
  • shallowB: Blue channel of the flat-face vertex color.
  • steepR: Red channel of the steep-face vertex color.
  • steepG: Green channel of the steep-face vertex color.
  • steepB: Blue channel of the steep-face vertex color.

Smooth Geometry

Iterative Laplacian smoothing: each vertex moves toward the average position of its neighbours. Use after Height Displace to soften terrain.

Inputs

  • Geometry (Geometry)
  • Iterations (Int)
  • Strength (Float)

Outputs

  • Geometry (Geometry)

Straight Skeleton Roof

Generates a hipped roof mesh from a polygon footprint using straight-skeleton wavefront simulation (Felkel-Obdrzalek 1998). Convex footprints only in v1; non-convex falls back to a flat roof.

Inputs

  • Footprint (Polygon)
  • Pitch Angle (Float)
  • Wall Height (Float)
  • Ridge Max (Float)
  • Stop Height (Float)

Outputs

  • Geometry (Geometry)
  • Cap Polygon (Polygon)

Limitations

  • Footprints above 256 vertices fall back to a flat roof: the solver’s scratch memory is quadratic in vertex count. Keep footprints under ~64 for best performance; simplify a Bezier-tessellated ScenePolygon before feeding it in.
  • Tuned for metre-scale footprints (~0.1–1000 world units). Footprints far outside that scale, or wider than 10,000 units, fall back to a flat roof. Build at a sensible scale and apply a Transform afterward if you need it larger.

Tips

  • Set Stop Height > 0 to freeze the wavefront at that height and produce a mansard (flat-top) roof.
  • Wire the Cap Polygon output into a second Straight Skeleton Roof pass for a gambrel (two-slope) roof.
  • Stop Height = 0 (default) collapses fully: identical to the original behaviour.

Stretch Squash

Volume-preserving axial scale: values > 1 stretch the mesh along the spine (and compress it laterally), values < 1 squash it (and expand it laterally). Total volume stays constant.

Inputs

  • Geometry (Geometry)
  • Stretch Factor (Float)

Outputs

  • Geometry (Geometry)

Options

  • spineAxis: Which local axis runs from the base to the tip of the mesh. Y: upright objects (characters, trees, bottles): default. Z: objects built lying along Z. X: objects built lying along X.

Limitations

  • Operates in local mesh space: applied before any GeometryTransform. Apply UV projection before stacking deformers.

Tips

  • Classic cartoon squash-and-stretch: Stretch Factor > 1 for a quick snap, then quickly transition to < 1 on landing: combine with a Loop Begin (Geometry) to animate frame by frame.
  • Spine Axis Y (default) is correct for upright objects (characters, trees, bottles). Switch to Z or X for horizontal objects aligned to those axes.

Subdivide

Subdivides every triangle into four by inserting edge midpoints. Each iteration multiplies the triangle count by four. Cap at 3 iterations to avoid OOM.

Inputs

  • Geometry (Geometry)
  • Iterations (Int)

Outputs

  • Geometry (Geometry)

Supershape Mesh

Generate a 3D superformula mesh.

Inputs

  • M1 (Float)
  • N1 (Float)
  • N2 (Float)
  • N3 (Float)
  • M2 (Float)
  • N2b (Float)
  • N3b (Float)

Outputs

  • Geometry (Geometry)

Options

  • slices: Longitude subdivisions (columns). Higher = smoother longitude. Range: 3–128.
  • stacks: Latitude subdivisions (rows). Higher = smoother latitude. Range: 3–128.

Limitations

  • Slices and stacks are capped at 128 each (maximum 16,641 vertices). Vertex count = (slices+1) * (stacks+1).
  • n1 (shared power) clamps to 0.001 to avoid division by zero in the Gielis exponent.
  • EditorGraphEvaluator (managed preview) returns an empty handle; the full mesh is only produced by the Burst evaluator.

Tips

  • Start with all n values at 1 and m values at 4 for a cube-like shape. Reduce n1 toward 0.1 to round corners.
  • Set m1 = m2 = 6 with n2 / n3 = 2 for a smooth hexagonal blob. Increase slices and stacks for finer geometry.
  • Pipe m1 or m2 from a Float node and vary it in a loop to generate a sequence of different solids.

Surface Falloff

Writes per-vertex distance to the nearest triangle of a surface mesh as a [0,1] falloff. O(V*T) cost: keep both meshes small or use on finite-asset graphs.

Inputs

  • Geometry (Geometry)
  • Surface (Geometry)

Outputs

  • Geometry (Geometry)

Options

  • attributeSlot: Which attribute channel to write. Attribute 1-6 map to uvExtra c5-c7 (x and y of each float2).
  • minValue: Distance at which falloff is 0. Vertices at or closer than this receive 0.
  • maxValue: Distance at which falloff is 1. Vertices at or farther than this receive 1.

Tips

  • Place this node after any Transform node; the falloff reads vertex positions as they exist at this point in the graph. For chunk-streaming use keep the surface triangle count low to avoid per-chunk O(V*T) cost.

Taper

Two modes: Pinch scales cross-sections by a single taper amount (Taper=1 pinches to a point); Base to Tip sets independent scale at each end of the spine and blends between them.

Inputs

  • Geometry (Geometry)
  • Taper (Float)
  • Base Scale (Float)
  • Tip Scale (Float)

Outputs

  • Geometry (Geometry)

Options

  • mode: Pinch: pinches cross-sections by a single Taper amount; Base to Tip: blends independently set Base Scale and Tip Scale along the spine.
  • spineAxis: Axis that runs from base to tip. Y for upright geometry; Z or X for meshes built lying flat. Combine with Tip End to target the negative direction.
  • falloffExp: Scale-curve exponent. 1 = linear (default); 2 = smooth ease-in; higher concentrates the effect toward the tip.
  • tipEnd: Which end is the ’tip’: PositiveAxis (default) targets the positive spine-axis end; NegativeAxis reverses so the negative end is the tip.

Limitations

  • Operates in local mesh space: applied before any GeometryTransform. Apply UV projection before stacking deformers.

Tips

  • Pinch mode: Negative Taper values flare the tip outward: useful for mushroom caps, flower petals, and trumpet shapes.
  • Base to Tip mode: set Base Scale=1 and Tip Scale=0 for a sharp cone; invert them to flare. Both ends are independently wirable.
  • Chain Taper → Twist for a twisted taper (narwhal horn): Taper first, then Twist around the same spine axis.

Torus

Donut ring with independent major (ring) and minor (tube) radius and segment counts.

Inputs

  • Major Radius (Float)
  • Minor Radius (Float)
  • Major Segments (Int)
  • Minor Segments (Int)

Outputs

  • Geometry (Geometry)

Transform

Moves, rotates (Euler degrees), and scales Geometry before passing it downstream.

Inputs

  • Geometry (Geometry)
  • Translate X (Float)
  • Translate Y (Float)
  • Translate Z (Float)
  • Rotate X (Float)
  • Rotate Y (Float)
  • Rotate Z (Float)
  • Scale X (Float)
  • Scale Y (Float)
  • Scale Z (Float)

Outputs

  • Geometry (Geometry)

Triangulate

Ensures all polygons in the mesh are triangles. Pass-through when the mesh is already triangulated (all Infinio generators produce triangles).

Inputs

  • Geometry (Geometry)

Outputs

  • Geometry (Geometry)

Twist

Twists a mesh around its spine axis. Twist Angle sets the total rotation in degrees from base to tip. Wire a Float Parameter with HandleType.Angle to Twist Angle for a scene handle.

Inputs

  • Geometry (Geometry)
  • Twist Angle (Float)

Outputs

  • Geometry (Geometry)

Options

  • spineAxis: Axis that runs from base to tip. Y for upright geometry; Z or X for meshes built lying flat.
  • falloffExp: Twist-curve exponent. 1 = linear (default); 2 = smooth ease-in; higher concentrates twist toward the tip.

Limitations

  • Operates in local mesh space: applied before any GeometryTransform. Apply UV projection before stacking deformers.

Tips

  • 360° twist produces one full revolution from base to tip: useful for drill bits, twisted columns, and candy-cane stripes.
  • Pair with a high-radial-segment Cylinder (16+ radial segs) so the twist looks smooth at full rotation.

UV Project

Projects UV coordinates onto geometry. Box (default) uses six-face projection and works on any mesh. Planar projects onto an axis-aligned plane. Cylindrical wraps around an axis. Spherical uses longitude-latitude mapping. Place before geometry deformers; projecting after a deformer distorts the mapping.

Inputs

  • Geometry (Geometry)
  • Scale (Float)

Outputs

  • Geometry (Geometry)

Options

  • mode: Selects the projection algorithm. Box is the forgiving default; it produces a non-degenerate result on any mesh. Planar collapses geometry parallel to the projection axis; Cylindrical and Spherical assume the mesh straddles the origin.
  • projectionMode: (Box and Planar only) Fixed Scale: Scale sets the texel density and anchors the UV origin at graph-local (0,0,0). Fit to Bounds: normalises each face direction’s extent to 0–1 with Scale as a tiling multiplier.
  • plane: (Planar mode only) Projection plane: Top (XZ) for flat surfaces, Front (XY) for facades, Side (YZ) for side-facing surfaces.
  • upAxis: (Cylindrical mode only) Cylinder axis: 0=Y, 1=X, 2=Z.
  • scale: Texel density (Fixed Scale) or tiling multiplier (Fit to Bounds). Cylindrical: height that maps V to [0,1]. Spherical: radius that maps to the full lat-long sphere.
  • targetChannel: UV channel to write. 0 = primary UV (used by most materials). 1–7 = extra UV slots for multi-layer or detail materials.

UV Rotate

Rotates UV coordinates around a pivot point. Use to align tileable textures to surface direction. Channel 0 rewrites the primary UV; channels 1-7 write extra UV slots.

Inputs

  • Geometry (Geometry)
  • Angle (Float)
  • Pivot U (Float)
  • Pivot V (Float)

Outputs

  • Geometry (Geometry)

Options

  • angleDegrees: Rotation angle in degrees, counter-clockwise. 0 = no rotation; 90 = quarter turn.
  • pivotU: U coordinate of the rotation pivot. 0.5 = texture centre (default), 0 = left edge, 1 = right edge.
  • pivotV: V coordinate of the rotation pivot. 0.5 = texture centre (default), 0 = bottom edge, 1 = top edge.
  • targetChannel: UV channel to write. 0 = primary UV (used by most materials). 1–7 = extra UV slots for multi-layer or detail materials.

UV Sphere

UV sphere subdivided by longitude slices and latitude stacks.

Inputs

  • Radius (Float)
  • Slices (Int)
  • Stacks (Int)

Outputs

  • Geometry (Geometry)

Options

  • originMode: Which point of the sphere sits at the local origin. Center: geometric centre (default). Bottom: Y=0 at the south pole (use for rocks, domes on ground). Top: Y=0 at the north pole. Left: X=0 at leftmost. Right: X=0 at rightmost.

Tips

  • Origin Mode Base places Y=0 at the south pole: use when the sphere sits on a surface (rock, dome, or hill placed on terrain).

UV Tile and Offset

Scales and offsets UV coordinates. Equivalent to Tiling and Offset in Shader Graph. Channel 0 rewrites the primary UV; channels 1-7 write extra UV slots.

Inputs

  • Geometry (Geometry)
  • Tiling X (Float)
  • Tiling Y (Float)
  • Offset X (Float)
  • Offset Y (Float)

Outputs

  • Geometry (Geometry)

Options

  • targetChannel: UV channel to write. 0 = primary UV (used by most standard materials). 1–7 = extra UV slots for multi-layer or detail-map materials.

Wave

Applies a sinusoidal wave displacement to the mesh. Amplitude controls wave height; Frequency controls cycles per unit of spine length; Phase shifts the wave in degrees. Both X and Z waves can be combined for complex ripple effects.

Inputs

  • Geometry (Geometry)
  • Amplitude (Float)

Outputs

  • Geometry (Geometry)

Options

  • frequency: Number of wave cycles per unit of spine length. Higher = tighter, more frequent waves.
  • phase: Wave offset in degrees. Wire a Float Parameter to animate the wave over time.
  • amplitudeZ: Wave height along the Z axis in the spine frame. 0 = X-only wave; combine with Amplitude for a circular ripple.
  • frequencyZ: Number of Z-wave cycles per unit of spine length.
  • phaseZ: Z-wave offset in degrees. Default 90° produces a circular wave when combined with a matching amplitude.
  • spineAxis: Axis that runs from base to tip. Y for upright geometry; Z or X for meshes built lying flat.

Limitations

  • Operates in local mesh space: applied before any GeometryTransform. Apply UV projection before stacking deformers.

Tips

  • Wire a Float Parameter to Phase to animate the wave over time in Play Mode.
  • Set equal Amplitude X and Z with a 90° Phase Z offset to produce a circular wave (e.g. a coiled spring or a water ripple).

Weld Vertices

Merges nearby vertices within a distance threshold, combining normals and attributes using the selected mode.

Inputs

  • Geometry (Geometry)
  • Weld Distance (Float)

Outputs

  • Geometry (Geometry)

Options

  • normalMode: Controls how normals are blended at welded vertices. Average (0) sums all merged normals and normalises (legacy). First (1) preserves the first-emitted vertex normal, keeping hard edges. AngleWeighted (2) weights each face normal by the corner’s interior angle.
  • attributeMode: Controls how colour and uvExtra channels are combined at welded vertices. First (0) copies from the first-emitted vertex (legacy). Average (1) averages all group members per channel. Min (2) / Max (3) take the per-channel extremum.

Limitations

  • UV0 and tangents always use First mode; only normals and colour/uvExtra channels respect the Normal Mode and Attribute Mode settings.

Tips

  • Keep Weld Distance small (≈ the gap between duplicate seam vertices). Too large a distance collapses intentionally separate vertices and rounds off sharp corners.
  • Welding never removes triangles, so UVs and submeshes are preserved. Weld before Smooth or Simplify for clean topology.
  • Normal Mode = First keeps hard edges: each welded corner keeps the normal of the first-emitted face at that position.
  • Angle Weighted normals weight each face’s contribution by the corner’s interior angle, giving more influence to larger-angle faces and avoiding the area-bias skew that Average can introduce on non-uniform topology.