Skip to content

Edit Texture

Edit Texture opens a 3D model's material as a set of Canvas artboards, one per texture channel, with the model rendered live beside them. Paint on the base colour and the model updates as you go; export the channels as assets, files, a Take, or a new textured GLB.

Opening a model

  • Right-click a .glb or .gltf in Files (Sandbox mode) and choose Edit Textures…, or press the palette button in the viewer toolbar while a model is shown.
  • The dialog lists the model's materials with the maps each one carries. Pick a Mesh first when the model has several, to narrow the list.
  • Material type: PBR gives the glTF metallic-roughness set; NPR gives a toon set. You can open the same material twice, once each way.
  • The glTF file stores metallic, roughness and occlusion packed into one RGB map, which nobody can paint by eye. Kitlig always splits it into three greyscale artboards and packs them again on preview and export.
  • Size: the working resolution. Native is the largest map on the material; pick a fixed size to work smaller or larger.
  • Open in Canvas extracts the maps into texture assets (under tex/generated), bakes the material's factors into the pixels, and creates a canvas named after the model and material.

Maps the material lacks start as flat placeholders, so every channel is there to paint on. Textures Kitlig cannot decode (KTX2, for instance) are replaced by placeholders and a note says so.

The channels

Channel PBR NPR Meaning
Base colour yes yes Albedo, sRGB.
Normal yes Tangent-space normal map.
Metallic yes Greyscale, white = metal. Packed into the glTF map's blue channel on export.
Roughness yes Greyscale, white = fully rough. Packed into the green channel on export.
Occlusion yes Ambient occlusion, white = unoccluded. Packed into the red channel on export.
Height yes Greyscale height / bump map, mid-grey = neutral. The preview shades it as a bump map so you can see it working, but glTF has no displacement slot, so it's never written by Apply to model — export it as a texture (Project assets, Folder, or Assign to Take) for engines or tools that take a height map directly.
Emissive yes yes Self-illumination colour.
Opacity when the material is not opaque when not opaque Greyscale alpha, merged into the base colour alpha on export.
Toon ramp yes A horizontal light-to-dark ramp the toon shader samples; the preview uses it as the gradient map.
Shading tiers yes Greyscale multiplier for hand-placed shadow and highlight bands.
Outline yes Ink lines composited over the base colour (alpha = coverage).

The artboards sit in one row, transparent, each the size of its map. Anything you can do to a layer applies: paint, mask, AI Fill, Edit with AI, Place Image, Fill, and so on. The channel list in the preview panel has Locate (select the channel's artboard), Import (drop a project image into the channel, fitted to cover it; the previous layers are hidden, not deleted) and Revert (back to the extracted map).

The brush and bucket options bar reads which channel the active layer belongs to: Metallic, Roughness, Occlusion and Height show a plain 0–255 Level slider instead of a colour wheel (nothing but the level ever paints there), Normal shows a single Elevation slider from -1 to +1 with the track coloured to match — positive raises, negative sinks, centre is flat — and every other channel keeps the ordinary colour pair.

The 3D preview

The panel between the canvas and the layer panels shows the model with the artboards mapped onto its material. A paint stroke updates the model within a frame or two, since just the touched region is pushed; a full correct re-render (needed for NPR base colour's shading-tiers/outline composite, and for anything else — moved or hidden layers, imports, undo) follows shortly after. The 3D preview toggle in the options bar hides and shows it; the crosshair button isolates the meshes that use this material.

  • PBR sessions render the model's own physically based material with your maps in its slots. Metallic and roughness factors are set to one because the factors were baked into the extracted pixels.
  • NPR sessions swap the material for a toon material (base colour times shading tiers, with the outline composited on top, and the toon ramp as the gradient), plus an inverted-hull outline. The outline colour and width live under the preview.

Painting on the model

Press the brush button in the preview header to paint directly on the mesh. Left-drag paints the active layer through the model's UVs (select a layer in the channel you want first; Locate does that), right-drag orbits, the wheel zooms. The stroke uses the ordinary brush settings from the options bar (colour, size, hardness, opacity, flow), respects the mask slot and any selection, and lands as one undo step. Where a drag crosses a UV seam or leaves the mesh, the brush lifts, so no line is drawn across the texture between islands. The canvas artboard and the model both update as you drag.

Exporting

Textures… in the options bar opens Export Textures. Tick the channels and choose where they go:

  • Project assets: one texture asset per channel under tex/generated, named <model>_<material>_<Channel>.png.
  • Folder: the same PNG files in a folder you pick.
  • Apply to model: publishes the channels, then writes a new GLB under geo/generated named <model>_textured.glb with the maps applied to the material. Metallic, roughness and occlusion are packed back into the one glTF map; opacity goes into the base colour alpha when the material is not opaque; NPR sessions bake the shading tiers and outline into the base colour, and can mark the material unlit so engines show it verbatim. Height has no glTF slot to write into, so it's silently skipped here even if ticked — use one of the other destinations for it. The original model is never modified. The toast's Show in Sandbox opens the new file.
  • Assign to Take: publishes the channels and attaches each one to a Kitlig Asset take under the matching channel names (diffuse, normal, roughness, metalness, ao, height, emissive, opacity, toonRamp, outline, shadingTiers).

The Export… dialog still exports the artboards as plain images if you prefer that route.

Notes

  • Reopening the canvas restores the session and the preview; the model must still be in the project.
  • Deleting a channel's artboard drops that channel from the session (and from the export list).
  • Texture coordinates and any KHR_texture_transform on the original slots are kept when applying.
  • The inverted-hull outline pushes vertices along their normals and works on rigged meshes; it is a preview aid and is not part of the exported GLB.
  • Painting on the model uses the first UV set. Meshes whose material uses a second UV set for occlusion still paint through the first.