substance-3d-texturing

Automates PBR texture creation and web-optimized export from Substance 3D Painter via Python API.

Updated Aug 12, 2026
One-click install
npx skills add https://github.com/sixscripts-ai/agent-arena-voice --skill substance-3d-texturing-sixscripts-ai
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: substance-3d-texturing
Source: https://github.com/sixscripts-ai/agent-arena-voice/tree/main/.claude/plugins/claudedesignskills/plugins/bundles/authoring-motion/skills/substance-3d-texturing
Command: npx skills add https://github.com/sixscripts-ai/agent-arena-voice --skill substance-3d-texturing-sixscripts-ai

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) and assets (resource) components.

What problem does it solve? Exporting PBR textures from Substance 3D Painter for web and game engines involves repetitive manual configuration, channel packing decisions, and resolution tuning that is error-prone and slow when done by hand across many texture sets. ## Core Features & Use Cases - Web-Optimized Texture Export: Export baseColor, normal, and metallicRoughness maps in glTF 2.0 format for Three.js, Babylon.js, and React Three Fiber with correct color spaces and infinite padding. - Python API Automation: Batch export all texture sets, override resolution per asset, and trigger auto-export on project save using the substance_painter Python API. - Channel Packing & Compression: Generate ORM (Occlusion-Roughness-Metallic) packed textures and mobile-optimized presets that cut texture memory by roughly 50%. - Use Case: A developer building a React Three Fiber product configurator needs 20 textured props at 1024×1024. Run the batch export script to produce glTF-compliant textures for every texture set in one pass, then load them directly into MeshStandardMaterial. ## Quick Start Ask the AI to export all texture sets from the open Substance Painter project as web-optimized 1024×1024 PBR textures for Three.js.

Frequently Asked Questions about substance-3d-texturing

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I export PBR textures from Substance Painter for Three.js?

Use the built-in PBR Metallic Roughness preset at 1024×1024 with PNG format and infinite padding. Load the resulting baseColor, normal, and metallicRoughness maps into a MeshStandardMaterial, setting the baseColor texture colorSpace to SRGBColorSpace.

How to batch export all texture sets with the Substance Painter Python API?

Build an export config with exportList containing every texture set from substance_painter.textureset.all_texture_sets(), then call substance_painter.export.export_project_textures(config). The batch_export.py script implements this with resolution and mobile-optimized variants.

What is ORM texture packing and when should I use it?

ORM packing stores Ambient Occlusion in red, Roughness in green, and Metallic in blue of a single texture, reducing six textures to three. Use it for production web applications where texture count and memory matter more than per-channel editability.

Why do my exported textures show seams at UV borders?

Seams appear when padding is insufficient at UV island edges. Set paddingAlgorithm to "infinite" in the export parameters so Substance dilates pixel colors beyond UV boundaries, eliminating black or colored seam lines.

Does Substance Painter export work for mobile WebGL applications?

Yes, use the mobile preset with 512×512 resolution, JPEG for baseColor, and PNG for data maps. This reduces total texture size to roughly 3MB per asset versus about 16MB for standard exports, fitting mobile GPU memory budgets.

Why does my normal map look inverted in my engine?

Substance exports OpenGL-format normal maps (Y+), matching glTF, Three.js, and Babylon.js. DirectX engines like Unity and Unreal expect Y-flipped normals, so invert the green channel during export or in the engine settings.