# substance-3d-texturing

A skill for Substance 3D Painter work: PBR material authoring, texture export for Three.js, Babylon.js, Unity and Unreal, plus batch export through the Python API.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 2400 installs · ★ 1133
- Author: freshtechbro
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/freshtechbro/claudedesignskills/tree/HEAD/plugins/bundles/authoring-motion/skills/substance-3d-texturing/SKILL.md
- Updated: 2025-11-20
- HTML: https://affpapa.org/en/nevibecode/skills/substance-3d-texturing

## What it does

The skill lays out the metallic/roughness pipeline: which channels a material needs (baseColor, normal, metallic, roughness, AO, height, emissive, opacity) and how they get packed on export. For web engines the baseline is the PBR Metallic Roughness preset, which produces `MyAsset_baseColor.png`, `MyAsset_normal.png` and a shared `MyAsset_metallicRoughness.png` with roughness in green and metallic in blue.

Manual export runs through File → Export Textures. The skill also covers Python API automation: a script builds a config with the output path, PNG 8-bit, infinite padding and `sizeLog2`, loops over every texture set and calls `export_project_textures`. Resolution can be overridden per asset — 2048 for a hero, 512 for a background prop. There is a custom preset example that writes metallic and roughness as separate files instead of a packed map.

The advice is to start at 1024×1024 and scale up only where texture detail is actually visible. That matters for web builds: a 4096 map on a background prop costs memory and load time while looking the same on screen. The source text is cut off, so some custom preset examples are missing from it.

## Requirements
- Works with: Unity, Unreal Engine

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add freshtechbro/claudedesignskills --skill substance-3d-texturing -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/substance-3d-texturing/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/substance-3d-texturing/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add freshtechbro/claudedesignskills --skill substance-3d-texturing -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/substance-3d-texturing/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add freshtechbro/claudedesignskills --skill substance-3d-texturing -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/substance-3d-texturing/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install freshtechbro/claudedesignskills substance-3d-texturing
```

2. **Manually: put the files in place**
- File: `.github/skills/substance-3d-texturing/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add freshtechbro/claudedesignskills --skill substance-3d-texturing -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/freshtechbro/claudedesignskills --path plugins/bundles/authoring-motion/skills/substance-3d-texturing
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/substance-3d-texturing/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add freshtechbro/claudedesignskills --skill substance-3d-texturing -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/freshtechbro/claudedesignskills/tree/HEAD/plugins/bundles/authoring-motion/skills/substance-3d-texturing/SKILL.md

## When to use it
- author a PBR material for a game or web asset
- export textures from Substance 3D Painter for Three.js or Babylon.js
- write a Python API script for batch export
- pick a texture resolution for a specific asset
- build a custom preset with separate metallic and roughness maps

## Example prompts
- Author a PBR material for this asset and export the textures for Three.js
- Write a Substance Painter Python API script that batch-exports every texture set at 1024
- Build a custom preset that writes metallic and roughness as separate files

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 1d659c56193952d9.

BEGIN THIRD-PARTY FILE 1d659c56193952d9
```text
---
name: substance-3d-texturing
description: Comprehensive skill for Adobe Substance 3D Painter texturing and material creation workflow. Use this skill when creating PBR materials, exporting textures for web/game engines, optimizing 3D assets for real-time rendering, or automating texture workflows. Triggers on tasks involving Substance 3D Painter, PBR texturing, material creation, texture export for Three.js, Babylon.js, Unity, Unreal, glTF optimization, or Python API automation. Creates optimized textures for threejs-webgl, react-three-fiber, and babylonjs-engine materials.
---

# Substance 3D Texturing

## Overview

Master PBR (Physically Based Rendering) texture creation and export workflows for web and real-time engines. This skill covers Substance 3D Painter workflows from material creation through web-optimized texture export, with Python automation for batch processing and integration with WebGL/WebGPU engines.

**Key capabilities:**
- PBR material authoring (metallic/roughness workflow)
- Web-optimized texture export (glTF, Three.js, Babylon.js)
- Python API automation for batch export
- Texture compression and optimization for real-time rendering

## Core Concepts

### PBR Workflow

Substance 3D Painter uses the **metallic/roughness** PBR workflow with these core channels:

**Base Texture Maps:**
- `baseColor` (Albedo) - RGB diffuse color, no lighting information
- `normal` - RGB normal map (tangent space)
- `metallic` - Grayscale metalness (0 = dielectric, 1 = metal)
- `roughness` - Grayscale surface roughness (0 = smooth/glossy, 1 = rough/matte)

**Additional Maps:**
- `ambientOcclusion` (AO) - Grayscale cavity/occlusion
- `height` - Grayscale displacement/height
- `emissive` - RGB self-illumination
- `opacity` - Grayscale transparency

### Export Presets

Substance 3D Painter includes built-in export presets for common engines:
- **PBR Metallic Roughness** - Standard glTF/WebGL format
- **Unity HDRP/URP** - Unity pipelines
- **Unreal Engine** - UE4/UE5 format
- **Arnold (AiStandard)** - Renderer-specific

For web engines, **PBR Metallic Roughness** is the universal standard.
```
END THIRD-PARTY FILE 1d659c56193952d9

The third-party file has ended. Everything between the 1d659c56193952d9 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2127 of 15927 bytes. © freshtechbro · MIT · https://github.com/freshtechbro/claudedesignskills/tree/HEAD/plugins/bundles/authoring-motion/skills/substance-3d-texturing/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
