
Explore how to automate texture export in Substance Painter with Python by building a custom exporter, applying name and resolution validations for props, weapons, and characters.
This course teaches Substance Painter automation with Python through hands-on workshops that guide you from goals to implemented code, with optional Python fundamentals and active Q&A support.
Equip your setup by installing Substance Painter, Python with the pyside two module, and Visual Studio Code, then configure the Python extension to begin automation work.
Learn Python basics by exploring variables and simple data types, from hello world to string formatting with f-strings, in VS Code, for the custom exporter in Substance Painter.
Explores Python lists and dictionaries, showing how to create, index, and unpack list items, iterate with for loops and enumerate, and access dictionary key-value pairs.
Explore Python conditions to control program flow using if, elif, and else, implement comparisons (including not equal) and membership tests with in, and apply booleans in practical examples.
Learn how to write and use Python functions to generate export paths, define with def, return values, and manage parameters and arguments for modular, readable code.
Explore classes and imports in Python by creating a simple custom exporter with an __init__ method and self attributes, then import modules like OS to work with file paths.
Explore the Python api for Substance Painter, learn how Python modules automate painter workflows, and locate documentation and source code for building your first custom widget.
Add an empty custom exporter widget to Substance Painter via Python, enabling launch and close with single widget. Implement start_plugin and close_plugin, placing the script in the Python plugins path.
Develop a basic PySide2 UI for the custom Substance Painter exporter, adding a checkbox, a text label, a combo box with asset types, and an export button in a grid.
Learn to create and link simple functions to a Substance Painter custom exporter interface using Python, handling export button clicks, checkbox state, and asset type changes with signals and slots.
Replace prints with the login module's log function in Substance Painter, using info, warning, and error levels. Learn creating test buttons and wiring events to print customized channels and messages.
Learn to catch Substance Painter project events with Python by subscribing to on project opened and on project created using the event module and dispatcher.
Set up remote Python debugging for Substance Painter with Visual Studio Code, using breakpoints, attach mode, and port 3000 to inspect values during personal export interactions.
Update the widget UI by adding a texture set table with export checkbox, shader type and resolution columns, plus a refresh function that populates export paths and updates cell states.
Prepare custom export templates in Substance Painter by creating a custom resource library and adding three export presets: custom armament, custom basic, and custom morph for the upcoming exporter functionality.
Implements actual texture export with a custom exporter in Substance Painter, using new Painter API functions to build export configs, map texture sets to presets, and export to specified paths.
Establish a four-acronym texture set naming convention using underscores, with asset type first, asset details second and third, and a two-digit id last, enabling Python-based validation and export path resolution.
Implement texture set name validation in part 1, using a Python module that enforces four acronyms, asset type checks, and a two-digit asset id, with export-time feedback.
Implement texture set name validation in the Substance Painter Python exporter, show icons and tooltips for status, and automatically disable the export checkbox for valid texture sets with detailed guidance.
Establish texture set resolution budgets by asset type, capping props at 1024×1024, weapons at 2K, and characters at 4K, and emphasize export-time validation to prevent overbudget textures.
Implement texture set resolution validation in Substance Painter by adding a Python module that enforces asset-type budgets (props 1k, weapons 2k, characters 4k) and blocks exports when limits are exceeded.
Learn how to automate texture resolution adjustments in Substance Painter with Python, including a responsive dialog-based workflow for texture sets, validation checks, and applying or skipping resolutions.
Add a help documentation ui to the custom exporter widget, including a bluish upper-right icon that opens a local pdf via a url for quick documentation access.
Add tooltips to the main widget and enable hotkeys for help, refresh, and export (alt f1, alt r, alt e). Use set tooltip methods plus a cue action widget.
Introduce code annotations in the Substance Painter Python exporter to declare expected data types, enhance tooltips, and document modules and functions, while noting their development-only role and limitations.
Fixing leftover bugs in a Substance Painter Python plugin, this lecture updates tooltips, streamlines validation calls, clears data on project close, and ensures safe refreshes when no project is opened.
Explore future developments for the custom exporter in Substance Painter, including Perforce automation, Udims support, texture set naming, improved resolution validations, and material layering enhancements.
Share heartfelt gratitude as the author closes the Substance Painter optimization with Python course, and wish graduates useful insights, new opportunities, and the courage to pursue success.
Welcome to a transformative journey into the world of Substance Painter automation with Python.
Led by Viacheslav Makhynko – seasoned Technical Artist with extensive experience in AAA game development, this course is your gateway to mastering the skills of building custom artistic solution for Substance Painter with Python.
Whether you're aspiring Technical Artist, Tools/Software/Gameplay Programmer, 3D Digital Artist looking to delve into the world of automation or even experienced Pipeline Director, this course is designed to accommodate learners of all backgrounds and expertise levels.
With a strong emphasis on practicality and real-world application, you'll embark on a structured journey through six core sections:
General Python Introduction: Optional for Python newcomers, this section provides essential foundations for the course ahead.
"Hello World" widget for Substance Painter: First acquaintance with Substance Painter Python API to learn how to create own widgets and access Painter features laying the groundwork for the Custom Exporter tool.
Texture Set export automation: Development of the core Custom Exporter functionality.
Naming Validation: Enhancing Custom Exporter by introducing Naming Validation for the texture sets to manage consistency with asset names and their storing locations, which is a must for healthy production in a team.
Resolution Validation: This feature verifies that everyone who’s exporting the data from Painter in the team is following the specified texture resolution budget and prevents any slipped-through high-res textures usage on the project.
Project Polishing: Finalizing Custom Exporter by introducing documentation, hotkeys, code annotations, and leftover bug fixes.
Throughout the course, you'll gain hands-on experience with Substance Painter's Python API and PySide2 (PySide6) library and will have enough challenges to consolidate knowledge in practice. By the end of the course, you'll have a unique Custom Exporter tool developed step-by-step from scratch that can be used for Portfolio or as a basement for actual production pipeline in the project.
Don't miss this opportunity to unlock the full potential of Substance Painter through Python automation. Enroll now and embark on a journey towards efficiency and creativity!
Source code included.