Beginner Texture

Painting PBR Textures in the Browser

Learn how to import a mesh, set up PBR channels, paint directly on a 3D model, and export game-ready textures for Unity, Unreal, Godot, and Roblox — all without leaving your browser.

⏱ ~15 min · 6 steps · No install required

Step 01

Create a Texture Document

Every texture project starts with a document. This sets the resolution and ties your layers and channels to a specific mesh later.

  1. Open Trumble and click Start Texturing, or navigate directly to the Texture tool from the toolbar.
  2. Go to File → New or press in the Properties panel. A dialog will appear.
  3. Enter a document name and choose a texture size.
  4. Click Create.
Tip: You can always export at a higher resolution without re-painting. Start at 512 and scale up at export time to save memory.
New Texture Document
New Texture Document dialog: document name, model, bake mesh, dimensions in pixels, Cancel and Create.
Step 02

Import Your Mesh

The Texture tool paints directly on 3D geometry. You need a mesh with proper UVs to get started. Trumble accepts .obj and .glb files.

  1. In the new document panel, locate the Model section and click Choose file.
  2. Select your .fbx .obj or .glb mesh. The model will load into the 3D viewport.
  3. Below model if you have a high poly mesh, select high poly mesh in the bake selection to bake.
  4. Use middle mouse Click to orbit, shift + middle mouse click to pan, and scroll wheel to zoom.
  5. If your mesh looks black or flat, confirm it has baked UV maps. Meshes without UVs cannot be painted.
UV tip: Export UVs from your 3D app before importing. In Blender, use Smart UV Project or a manual unwrap, then pack islands before exporting.
3D Viewport
Texture Wireframe UV
Character mesh displayed in the Trumble 3D viewport after import
Step 03

Understanding PBR Channels

Trumble uses a physically-based rendering (PBR) workflow. Each channel controls a different property of your material's surface. You paint into individual channels, and the engine combines them at runtime.

Color

Base albedo — the raw surface color with no lighting information.

Metallic

Black = non-metal. White = fully metallic. Most surfaces are 0 or 1.

Roughness

Black = mirror-smooth. White = fully diffuse / matte surface.

Normal

RGB-encoded surface details that fake geometry at no poly cost.

AO

Ambient occlusion — white = lit, black = shadowed crevices.

Emissive

Areas that glow. Colour multiplied by emission strength in-engine.

In the right-hand panel, each channel has its own slot. You can paint directly or drag in an image from the Assets Library to use it as a texture fill.

Step 04

Painting on Your 3D Mesh

Select a brush from the left panel and start painting directly on the mesh in the 3D viewport. Strokes are projected onto the UV map automatically.

  1. Select the Brush tool from the left toolbar. Adjust Size, Hardness, Opacity, and Flow in the panel below it.
  2. Pick a color using the color picker at the bottom of the left panel.
  3. In the Channels section, choose which channel to paint into — Color is selected by default.
  4. Click and drag on the mesh to paint. The stroke wraps around the UV islands seamlessly.
  5. Switch channels at any time — for example, paint metallic stripes on armor, then switch to Roughness to add worn edges.
Projection modes: The Fill tool lets you choose between UV projection (paints on UV islands only) and Tri-Planar (tiles a texture over the 3D surface regardless of UV layout).
Step 05

Working with Layers & Masks

The Layers panel (bottom-right) works like a 2D editor. Each layer stores independent paint strokes, and you can combine them non-destructively using blend modes and masks.

  1. Click + New Layer at the top of the Layers panel to add a layer above the current one.
  2. Set the layer's blend mode from the dropdown (Normal, Multiply, Overlay, etc.) to control how it composites with layers below.
  3. Right-click a layer and choose Create black mask or Create white mask to add a non-destructive mask. Paint white to reveal, black to hide.
  4. Use the 3D Gradient, Ambient Occlusion, or Curvature modifiers to automatically generate masks based on mesh geometry — great for adding wear and grime in crevices.
Curvature masks are especially useful for metals — set a Multiply layer with a dark, rough fill, then mask it by curvature to automatically apply wear only on convex edges.
Step 06

Export Textures

When you're happy with your textures, export them in one click. Trumble bundles your channels into the correct format for your target engine.

  1. Go to File → Export Textures.
  2. Set the output texture size (you can downscale here independently of your working resolution).
  3. Pick your target engine preset. The correct channel packing is applied automatically.
  4. Choose which maps to include (Color, Metallic, Roughness, Normal, Emission, Opacity).
  5. Click Export. Files download as a zip to your browser's default folder.
Engine Preset Packed Format Notes
Unity Albedo MetalSmooth (RGBA) Normal Metallic in R, Smoothness (inverted roughness) in A
Unreal BaseColor OcclusionRoughnessMetallic Normal ORM packing: AO→R, Roughness→G, Metallic→B
Godot Albedo ORM Normal Same ORM packing as Unreal; compatible with Godot 4 ORM material
Roblox ColorMap NormalMap RoughnessMap MetalnessMap Individual files; drag into Roblox surface appearance
You're done! Import your exported textures into your engine and assign them to your mesh. The PBR channels will map automatically when using engine-standard material nodes.