
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.
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.
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.
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.
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.
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.
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.
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.