Created
January 11, 2023 17:23
-
-
Save BigRoy/782b85755de08b1ebe19c7aea7e30615 to your computer and use it in GitHub Desktop.
Get Adobe Substance 3D Painter export maps from an export preset by filename template to filename
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import substance_painter.resource | |
import substance_painter.js | |
import tempfile | |
def get_export_maps(preset, folder=None, format="exr"): | |
"""Return filenames from export preset by filename template. | |
Note: This doesn't return each individual UV tile. | |
""" | |
strip_folder = folder is None | |
if folder is None: | |
folder = tempfile.gettempdir() | |
folder = folder.replace('\\', '/') | |
cmd = f'alg.mapexport.getPathsExportDocumentMaps("{preset}", "{folder}", "{format}")' | |
result = substance_painter.js.evaluate(cmd) | |
if strip_folder: | |
# Strip off the folder | |
for _stack, maps in result.items(): | |
for fname_template, fname in maps.items(): | |
# Strip folder | |
assert fname.startswith(folder) | |
fname = fname[len(folder)+1:] | |
maps[fname_template] = fname | |
return result | |
if __name__ == "__main__": | |
for stack, maps in get_export_maps("Arnold (AiStandard)").items(): | |
print(f"stack: {stack}") | |
for template, fname in maps.items(): | |
print(f"{fname_template: <60} -> {fname}") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Example output:
Result as JSON: