Simple UV Nodes

Full node reference and installation guide. For what Simple UV Nodes does and why, see the product page.

Minimum Blender version: 4.5


Installation

  1. Download the release zip and extract it.
  2. Inside you will find version folders — pick the one that matches your Blender installation (e.g. Simple_UV_Nodes_4_5 or Simple_UV_Nodes_5_1).
  3. In Blender, open Edit → Preferences → File Paths → Asset Libraries and add the version folder as a new Asset Library.
  4. Open the Asset Browser (e.g. in a Geometry Nodes editor header), set the library to Simple UV Nodes, and drag any node into your Geometry Nodes modifier tree.

Tip

If you update Blender to a new minor version, swap the registered folder to the matching one from the zip. Older folders continue to work but will not include features introduced in newer Blender versions.


Node Reference

UV Box Project

Box/triplanar projection onto geometry. Projects UVs from three axes simultaneously and writes the result into a named UV attribute.

Box Projection Thumbnail

Input Type Default Description
UV Map String UVMap Name of the UV attribute to write
Coordinates Menu Object Coordinate space: Object or World
Tiling Float 1.0 Uniform tiling multiplier
X Projection
Offset Vector 0, 0, 0 Translation offset for the X-face UV
Rotate Float Rotation for the X-face UV
Scale Vector 1, 1 Scale for the X-face UV
Y Projection
Offset Vector 0, 0, 0 Translation offset for the Y-face UV
Rotate Float Rotation for the Y-face UV
Scale Vector 1, 1 Scale for the Y-face UV
Z Projection
Offset Vector 0, 0, 0 Translation offset for the Z-face UV
Rotate Float Rotation for the Z-face UV
Scale Vector 1, 1 Scale for the Z-face UV

UV Planar Project

Flat projection of UVs along a single chosen axis. Useful for walls, floors, or any surface that is predominantly facing one direction.

alt text

Input Type Default Description
UV Map String UVMap Name of the UV attribute to write
Coordinates Menu Object Coordinate space: Object or World
Projection Plane Menu Z Axis to project along: X, Y, or Z
Transform
Offset Vector 0, 0, 0 Translation offset applied to the UV
Rotate Float Rotation applied to the UV
Tiling Float 1.0 Uniform tiling multiplier
Scale Vector 1, 1 Scale applied to the UV

UV Spherical Project

Equirectangular UV projection that wraps UVs around a sphere. Use this for round objects — planets, eyeballs, fruits — where a planar or box projection would produce visible distortion. The node uses face-domain seam correction to eliminate the discontinuity where the left and right edges of the UV meet.

alt text

Input Type Default Description
UV Map String UVMap Name of the UV attribute to write
UV Scale Menu Normalized Normalized: maps the full sphere surface to the 0–1 UV square. Real World Scale: UV is in Blender units (arc length), centred at 0.5
Axis Menu Z Pole axis of the sphere. Z places poles at top and bottom; X and Y rotate the sphere orientation
Tiling Float 1.0 Uniform tiling multiplier. Values above 1 repeat the texture
Offset Vector 0, 0, 0 UV translation offset. X shifts horizontally, Y shifts vertically
Rotate Float UV rotation angle, pivoted at the centre of UV space
Scale Vector 1, 1 UV scale applied from the centre of UV space. X scales horizontally, Y scales vertically

Tip

Real World Scale keeps UV proportions consistent with the actual surface area of the sphere. Use it when tiling at a consistent texel density matters — for example, to match a spherical projection to a neighbouring planar projection on the same object.


UV Cylindrical Project

Wraps UVs around a chosen axis. U follows the circumference, V follows the height along the axis — ideal for pipes, columns, tree trunks, bottles, and other surfaces of revolution. An optional cap mode blends in a planar projection on end faces, based on how closely a face's normal points along the axis.

alt text

Input Type Default Description
UV Map String UVMap Name of the UV attribute to write
UV Scale Menu Normalized Normalized: maps the full circumference/height to the 0–1 UV square. Real World Scale: UV is in Blender units
Axis Menu Z Cylinder axis: X, Y, or Z
Tiling Float 1.0 Uniform tiling multiplier
Offset Vector 0, 0 UV translation offset
Rotate Float Rotation around the axis — shifts the seam position
Scale Vector 1, 1 Non-uniform UV scale
Caps
Enable Caps Boolean false Activates a blended planar projection on end faces
Cap Blend Angle Float 30° Face-normal angle below which a face is treated as a cap
Cap Scale Vector 1, 1 Scale applied to the cap planar projection
Cap Offset Vector 0, 0 Offset applied to the cap planar projection
Cap Rotate Float Rotation applied to the cap planar projection

Tip

Use Rotate to spin the seam to a hidden edge — the back of a column, the underside of a pipe — before locking in the rest of the projection.


UV Camera Project

Projects UVs from the point of view of a Camera object, the same way a real camera lens would. Focal length, sensor size, and projection type are read directly from the camera's own data-block, so the UVs always match what the camera is actually set up to see — including a proper parallel projection when the camera is set to Orthographic. Point the camera at the surface and the texture appears painted on from that angle — ideal for decals and baked projection setups.

Camera Projection Thumbnail

Input Type Default Description
UV Map String UVMap Name of the UV attribute to write
Camera Object Camera object to project from. The projection follows this camera's perspective
Camera Settings
Resolution X Integer 1920 Horizontal resolution used to compute the camera aspect ratio
Resolution Y Integer 1080 Vertical resolution used to compute the camera aspect ratio
Texture Scaling
Tiling Float 1.0 Uniform tiling multiplier. Values above 1 repeat the texture; values below 1 zoom out
Offset Vector 0, 0 UV translation offset. X shifts horizontally, Y shifts vertically
Rotate Float UV rotation angle, pivoted at the centre of UV space
Scale Vector 1, 1 UV scale applied from the centre of UV space. X scales horizontally, Y scales vertically

Warning

Camera must reference an object with actual camera data — not an Empty, a mesh, or any other object type — and must not be left unassigned. Focal length, sensor size, and orthographic scale are read from the camera's data-block, so if Camera isn't valid, the node raises an Error in the modifier's Warnings panel and passes the incoming geometry through unchanged, leaving any existing UV map untouched instead of overwriting it with an invalid projection. If you need a movable projector that isn't your render camera, add a dedicated Camera object and hide it from the render.

Tip

Because the projection reads the camera's live transform, animating or parenting the Camera object updates the UVs in real time. Add a Copy Location/Copy Rotation constraint if you want the projection to stay fixed once placed.


UV Transform

Modifies an existing UV map non-destructively — offset, rotate, scale, tile, and mirror without re-projecting from scratch.

alt text

Input Type Default Description
UV Map String UVMap Name of the UV attribute to modify
Offset UV Vector 0, 0 Translation offset
Rotate Float Rotation
Scale Vector 1, 1 Scale
Tile Float 1.0 Uniform tiling multiplier
Mirror U Boolean false Mirror along the U axis
Mirror V Boolean false Mirror along the V axis

UV Attribute Transform

A lightweight pure-vector node that offsets, rotates, and scales a UV coordinate value. Has no Geometry socket — use it as a helper sub-node inside other projection setups or to pre-process a UV vector before feeding it into a texture.

Input Type Default Description
UV Coordinates Vector 0, 0, 0 Input UV vector to transform
Offset Vector 0, 0 Translation offset
Rotate Float Rotation angle
Scale Vector 1, 1 Scale
Output Type Description
Vector Vector Transformed UV vector

UV Instance Randomize

Adds per-instance UV variation to scattered geometry. Each instance receives an independent random offset, rotation, and scale value derived from its instance ID, so the variation is stable — changing only when you change the seed. Use this after a Scatter or Instance on Points node to break up texture repetition. Instances are realized as part of this process.

Both scale and rotation pivot on the center of each UV island (0.5, 0.5 in UV space), so island position stays predictable regardless of scale.

alt text

Input Type Default Description
UV Map String UVMap Name of the UV attribute to read and write
Seed Integer 0 Global seed — change to get a different randomization pattern
Offset Variation Vector 0, 0, 0 Random UV shift range per axis. U shifts by a random value in [−X/2, +X/2], V shifts in [−Y/2, +Y/2]. Z is unused
Rotate Variation Float Max random rotation in degrees. Each instance rotates by a random value in [−Var, +Var]. Range: −180° to 180°
Scale Variation Float 1.0 Scale spread. Each instance scales by 1 + random([−Var/2, +Var/2]). At the default of 1.0, instances range from 0.5× to 1.5× their UV island size

Tip

Increase Offset Variation to spread instances across the texture. Set Rotate Variation to 180 for fully random orientations. Keep Scale Variation below 2 to avoid zero-sized islands; values above 2 can produce negative scale (UV flip).


UV Island Randomize

Adds per-island UV variation across a single mesh. Reads each UV island, derives a stable random seed from it, and applies an independent random offset, rotation, and scale to every face in that island — the same mechanism as UV Instance Randomize, but scoped to UV islands instead of geometry instances. Use it to break up visible texture tiling on complex meshes such as rock piles, brick walls, or cobblestones.

alt text

Input Type Default Description
UV Map String UVMap Name of the UV attribute to read and write
Seed Integer 0 Global seed — change to get a different randomization pattern
Offset Variation Vector 0, 0, 0 Random UV shift range per axis. U shifts by a random value in [−X/2, +X/2], V shifts in [−Y/2, +Y/2]. Z is unused
Rotate Variation Float Max random rotation in degrees. Each island rotates by a random value in [−Var, +Var]. Range: −180° to 180°
Scale Variation Float 1.0 Scale spread. Each island scales by 1 + random([−Var/2, +Var/2]). At the default of 1.0, islands range from 0.5× to 1.5× their original size

Tip

UV Island Randomize and UV Instance Randomize stack. Apply Instance Randomize first (unique base offset per instance), then Island Randomize on the realized mesh for further per-island variation.


UV Mark Edges

Reads a named UV attribute and marks every edge that lies on a UV island boundary as a seam, a sharp edge, or both. Run this after any projection node to keep your seams in sync with your UV layout — no manual marking needed.

alt text

Input Type Default Description
UV Map String UVMap Name of the UV attribute to read for boundary detection
Mark Seam Boolean true Write island boundaries to the uv_seam edge attribute (Blender 4.1+)
Mark Sharp Boolean true Write island boundaries to the sharp_edge edge attribute
Clear Seams Boolean false When enabled, replaces all existing seam marks; when disabled, ORs with existing marks
Clear Sharp Boolean false When enabled, replaces all existing sharp marks; when disabled, ORs with existing marks
UV Split Distance Float 0.001 Distance tolerance in UV space. Edges whose shared vertices differ by less than this value are treated as continuous. Raise slightly to compensate for floating-point drift after re-importing.

Tip

Use Clear Seams / Clear Sharp together when you want this node to be the single source of truth for seam marks. Leave them off if you are layering seams from multiple sources.


UV Pack to Channel

Packs UV islands from a source UV map into a destination UV map. Suitable for lightmap baking, ambient occlusion maps, or any workflow requiring a dedicated non-overlapping UV alongside a tiling UV.

alt text

Input Type Default Description
UV In String UVMap Name of the source UV attribute to read islands from
Packed UV String UVMap Name of the destination UV attribute to write the packed layout into
Margin Float 0.02 Gap between islands in UV space (0–1)
Rotate Boolean true Allow islands to be rotated for a tighter fit
Method Menu Exact Shape (only for 5.0+) Packing algorithm: Exact Shape traces the actual island outline; Bounding Box & Convex Hull are faster but less precisse

Tip

Packed UV defaults to the same name as UV In, so by default the packed layout overwrites your source UV map. Set Packed UV to a different attribute name if you want to keep the original projection untouched.


General Tips

UV Map name — The UV Map string socket must match the name of the UV attribute on your mesh exactly. Blender's default is UVMap. You can check the attribute name in the Object Data Properties → UV Maps panel.

Stacking nodesUV Planar Project, UV Box Project, UV Spherical Project, UV Cylindrical Project, and UV Camera Project write a UV attribute from scratch. Feed the result into UV Transform if you need to adjust it afterwards without losing the projection setup.

UV Attribute Transform as a sub-node — Because this node only operates on a vector, you can use it directly inside a custom node group to build composite projection setups without adding a full geometry pass.