Conform To Surface
Wraps a continuous field, such as a lattice or a surface texture, around a surface so the pattern follows its curvature with no seams between cells. The result is one bounded implicit, ready to combine, preview or mesh.
How it works
Fill Boxes tiles a cell into explicit, twisted boxes. Conform To Surface instead bakes a smooth warp from the surface and evaluates the field through it, so the lattice flows continuously along the surface.
The warp is measured in real arc length, in model units. That means the cell size lives in the content field, not in this component: author the expression in model units and physical distances are kept across stretched and curved regions.
The lattice fills a one-sided shell of the given Thickness on the side the surface normal points to. Toggle Flip Direction to put it on the other side.
Inputs
| Name | Nick | Type | Default | Description |
|---|---|---|---|---|
| Field | F | Field | The continuous content Field to wrap (frequency authored in model units, e.g. a gyroid expression). | |
| Surface | S | Surface | The surface to wrap (used with Thickness). | |
| Thickness | T | Number | 5 | Shell thickness in model units: a one-sided band on the surface-normal side (toggle Flip Direction for the other side). |
| Resolutionoptional | Res | Integer | 50 | Warp fidelity: grid nodes across the SURFACE extent. The grid auto-extends outward to cover a thick shell at the same fidelity, so raise this only for finer surface detail, not for thicker lattices. Higher = finer warp, slower bake; not the final mesh. |
| Flip Directionoptional | Flip | Boolean | False | Put the one-sided shell on the OTHER side of the surface (the −normal side) instead of the default +normal side. Use this if the lattice lands inside when you want it outside (single surface only). |
Outputs
| Name | Nick | Type | Description |
|---|---|---|---|
| Implicit | I | Implicit | The output implicit. |
Example definition
- Change P to set the thread spacing, a for how far the threads rise and fall, and r for their thickness.
- With r above a the threads fuse where they cross into one skin; below a they stay separate and interlock like fabric.
- Move the weave within the shell with c, or change Thickness.
- Set in your own surface: right-click the Surface parameter and choose Set one Surface.
Example: a woven skin
The content doesn't have to be a lattice. Inside the shell, x and y run along the surface and z is the height above it, all in millimetres, so any pattern written in those terms lands on the surface at true size. This one weaves two families of round threads over and under each other:
let dx = mod(x, P) - P/2 in let dy = mod(y, P) - P/2 in let h = z - c in
min(length(vec2(dy, h - a*sin(PI*x/P)*sin(PI*(y - dy)/P))) - r,
length(vec2(dx, h + a*sin(PI*y/P)*sin(PI*(x - dx)/P))) - r)
- Place
Field From Expression, paste the expression, and add Number inputs P(thread spacing, 6),a(rise and fall, 1),r(thread radius, 1.1) andc(height of the weave in the shell, 2.5). - Wire it into
Conform To Surface with your surface and a Thickness of 5. - Mesh it with
Mesh From Implicit at a MinFeatureSizeof about a quarter ofr.
With r larger than a the threads fuse where they cross into one skin; smaller, they stay separate and interlock like fabric. For a lattice instead, use a TPMS such as the gyroid abs(sin(x*f)*cos(y*f) + sin(y*f)*cos(z*f) + sin(z*f)*cos(x*f)) - t, with f = 2π divided by the cell size.
Notes and limits
- Keep Thickness below the smallest concave radius of curvature of the surface. A thicker shell folds the warp and distorts the lattice; the component warns you when this happens. A finer Resolution will not fix it.
- Surfaces closed in one direction (a cylinder, tube or annulus) tile seamlessly across the wrap, provided a whole number of cells fits around the circumference. Choose P so that the arc length around divided by P is an integer.
- Surfaces closed in both directions, such as a torus, are not supported.
- Open edges get a small rounded rim, about half the thickness.
- To fill the space between two surfaces, use
Conform Between Surfaces.
Messages
What the component may report, shown as a balloon on the canvas.
| Level | Message |
|---|---|
| Warning | Wire one valid surface (+ Thickness). |
| Error | Thickness must be positive. |
| Warning | Thickness is large enough that the one-sided shell folds past the surface's curvature radius: the closest-point offset self-intersects there and distorts the lattice. This is a limit of the single-surface offset, not your field or surface, and a finer Resolution will not fix it. Reduce Thickness, toggle Flip Direction to the convex side, or use the Conform Between Surfaces component to define the shell explicitly with two surfaces. |
