Texturize
Texturize displaces any triangle mesh along its vertex normals. Empty Canvas starts a 50 mm cube (Knurl map, Draw on, bump-shaded). The cube is bare until you paint (or click All). The main workflow is your STL or OBJ; live-link from Mesh Sculptor or a Node Sculptor mesh is optional and never auto-connected.
The result is a derived mesh for STL export. The source shape stays clean. Texturize does not emit G-code — you slice the STL in another app.
Quick start
- Add Texturize from the empty canvas — you get a 50 mm cube immediately.
- Click a thumbnail in Simple / Patterns / SVG (or load an STL / OBJ).
- Set Texture height, Size U/V (link to lock U=V), and Bottom / Top angle masks.
- Draw over the model (or All) so texture appears. Leave 3D Preview off so the cube stays closed. Place on Face is bump-only so picking stays accurate.
- Export Mesh from the top toolbar. Use the caret for Draft / Standard / High / Ultra.
Mental model
Texturize is a displacement layer, not a modeller. It never authors the solid — it samples a heightmap in world space and pushes existing triangles along their normals.
- Source — starter cube, imported STL/OBJ, or a live Mesh Sculptor / Node mesh.
- Heightmap — Simple kernels, Pattern texture tiles, SVG library, Image library, or a custom PNG / JPEG / WebP (optional Make seamless).
- Projection — how UVs are generated (triplanar, cubic, cylindrical, spherical, planar). Scale is in millimetres.
- Masks — skip lids by angle, paint include faces on the selected texture layer (or a UV stamp on live remeshes), then feather the edge. Extra layers mix by adding amplitudes.
- Preview vs export — GPU preview shades (and optionally displaces) the source mesh in a shader so sliders stay instant. Export Mesh subdivides and bakes on the CPU. The viewport never shows export tessellation.
Live vs import vs cube
| Source | Topology | What survives a remesh |
|---|---|---|
| Starter cube | 12 triangles until export | Full recipe |
| Imported STL/OBJ | Fixed until you replace the file | Recipe + face-id paint |
| Live Mesh Sculptor / Node mesh | Changes with quality | Mapping, amplitude, angle masks, UV mask |
G-code modules have no solid. Import an STL or add Mesh Sculptor if you want a live link.
Step-by-step
1) Start from a readable body
The cube is for learning the sliders. For a real part, Load STL / OBJ (or drop the file on the viewport), then Place on Face so the part sits on the bed.
2) Pick a map and a height
Click Knurl, Hexagons, Bricks, or load a Custom heightmap. Keep Texture height around 0.3–1.0 mm until the pattern reads; Symmetric (on by default) treats mid-grey as zero so the surface both rises and sinks.
3) Set the projection
Leave Triplanar unless the part is clearly a cylinder or a flat panel. Size U/V is the pattern period in millimetres — 25 mm is the default. Lock the chain icon so U stays equal to V.
4) Mask lids and details
Raise Bottom (default 5°) so the bed face stays flat. Use Draw or All, then Erase + Face to click a whole cube side. Ctrl / Shift also erases. Grow / To crease / Shrink / Similar / Linked edit the set. See Masks.
5) Export and slice
Export Mesh bakes at High (~0.35 mm edges, 750k triangle cap). Pick Ultra from the caret when the pattern is very fine. Import the STL into Cura, PrusaSlicer, or OrcaSlicer. Details: Preview and export.
Inspiration
Behaviour is inspired by BumpMesh / stlTexturizer (Stefan Hermann). 3dSynth’s engine is an independent TypeScript implementation. No AGPL code or third-party texture packs are bundled.
Where to go next: Texturize overview · Texturize tutorial · Mapping · Textures · Masks · Preview and export · Mesh Sculptor · Getting Started