Extrait de code Painter
Cette page contient des extraits de code pour l’API Python de Substance Painter.
Ajouter une library (shelf)
import substance_painter.resource as sp_r
shelf_name = "my_painter_library"
shelf_path = "/path/to/my/painter/library" # Painter needs POSIX paths.
if not sp_r.Shelves.exists(shelf_name):
sp_r.Shelves.add(shelf_name, shelf_path)
Notez que, comme explicitement indiqué dans la documentation, la shelf n’existera que pour la session en cours. Elle ne sera pas stocké de façon globale et ne sera donc pas visible dans les paramètres de l’application.
Ce code doit donc être exécuté au démarrage.
Faire fonctionner les events sans avoir de « project is locked »
Quand on utilise certaines fonctions dans un event, Painter lève l’exception suivante :
_substance_painter.exception.ProjectError: The project is locked.
Le hack permettant de contourner l’exception consiste à délocker le projet le temps d’utiliser les fonctions et de le relocker ensuite :
import _substance_painter.project as _sp_p
import substance_painter.project as sp_p
import substance_painter.event as sp_e
def on_project_saved(_):
_sp_p.do_action(_sp_p.Action.Unlock)
proj_path = sp_p.file_path()
mesh_path = sp_p.last_imported_mesh_path()
_sp_p.do_action(_sp_p.Action.Lock)
print(proj_path)
print(mesh_path)
sp_e.DISPATCHER.connect(sp_e.ProjectSaved, on_project_saved)
Il va de soi que ce genre d’opération consistant à contourner le mécanisme de lock de Painter est risqué.
Dernière mise à jour : dim. 16 mars 2025