3dSynth

Docs / Texturize

Open in the interactive docs reader

Textures

The Texture card is one equal thumb grid plus an optional custom image. The dock does not split maps into Simple / Patterns / SVG / Image headings — every thumb uses the same cell size. The sections below only describe where each map comes from. Maps are the same seamless tiles as Pattern texture / the SVG library / the image library (main-thread rasterize, then sampled as a packed heightmap). None of these images are vendored from BumpMesh.

Simple kernels

Five wrap-tested kernels, generated on the CPU (no SVG). Empty canvas defaults to Knurl.

Simple

Knurl
Diamond knurl. Default.
Grid
Orthogonal raised bars that tile.
Dots
Circular bumps on a repeating grid.
Stripes
Periodic ridges along U.
Hexagon
Packed hex cells that wrap on the tile.

Patterns

All 61 Pattern-texture generators, rasterized at 512 px with frozen defaults (same numbers as the Pattern texture tests; no extra sliders in Texturize). Thumbnails are 64 px and load when they scroll into view.

Ids are stored as pattern:<id> (for example pattern:hexagons).

SVG library

The eight bundled SVG tiles (Bricks, Herringbone, …), rasterized through the same path as Pattern texture. Ids are svg:<slug> (for example svg:Bricks).

Image library

Twenty-four bundled PNG/JPEG heightmaps (Basket, Brick, Carbon Fiber, woodgrains, …). Ids are image:<slug> (for example image:carbon-fiber). Luminance is height. Old unprefixed names such as basket still migrate to Pattern/SVG ids — they do not auto-switch to these photos.

Custom heightmap

Image import

Formats
PNG, JPEG, WebP. The file is converted to luminance (Rec. 709) and packed as grayscale. Colour is not preserved — only height.
Resolution
Longest side is capped at 1024 px. Smaller images are left as-is. Kernels are always 512×512.
Make seamless
Off by default. Blend opposite edges so the map tiles. Leave off for logos — wrap-blend destroys a non-tiling photo.
Storage
Only custom uploads are saved inside the .3dsynth project. Pattern/SVG/image pixels are never written to customImageB64 — they re-rasterize from the id.

Old projects

Unprefixed Crystal-class ids migrate on load: crystal / voronoipattern:hexagons, noise / leather / wood → pattern:noise, bricksvg:Bricks, weave|weave2|weave3svg:Herringbone, unknown → kernel:knurl.

Displacement controls

These apply to every map, kernel, Pattern, SVG, image, or custom.

Height interpretation

Texture height (mm)
Peak displacement (0–10, default 0.5). Start around 0.3–1.0 mm for print-scale detail; go higher only for chunky architectural relief.
Invert
Flips the map: bright pixels pull in (when Symmetric is on) or become the low side (when Symmetric is off).
Symmetric (mid-grey = 0)
On: sample 0.5 → no motion, 0 → −height, 1 → +height. Off: 0 → no motion, 1 → +height (emboss sitting on the surface). Default on.
Blur (px)
Advanced. Box blur 0–16 px on the packed map before sampling. Use 1–3 on noisy photos; high values wash out knurls and grids.

Sampling

The heightmap tiles. Size U/V (see Mapping) sets how many millimetres one tile covers. Triplanar takes three tiled samples and blends them; other modes take one.