Home Adobe Substance

Substance Designer > Painter workflow ?

polycounter lvl 11
Offline / Send Message
ng.aniki polycounter lvl 11
Hi here!
I am trying to figure out what would be the optimal workflow to make all created substances available to several artists of the same team over a network, and so I was wondering if any of you here already have some efficient workflow?

1- Would you set up as shelf a directory that is under version control, and share it across all the artists of your team?
Do every artist publish manually a sbsar file to this shelf folder, or do you rely on some automation system (Maybe using the SubstanceAutomationToolkit )? 

2- Artists often create substances with the intention of creating a simple tiling texture, but then if another artist want to use that substance in their substance painter workflow, the first artist might not have published the .sbsar file. So do you have a rule that every artist creating a substance file has to also publish the sbsar file? And also has to maintain it every time he upgrades/tweaks the texture? (I imagine human error could happen often if this process is manual, especially if artists are for example focused on the exported texture instead of the sbsar.)

3- Do you use a symmetrical folder structure between the sbs and the sbsar files, or are all the sbsar files simply stored in the same folder as the sbs file?

4- Do you have some scripts to update and export textures from substance painter file if a sbs/sbsar file has been updated?

I would love to hear your opinion about all that.


  • poopipe
    Offline / Send Message
    poopipe hero character

    We use a template painter material graph to manage output channels (you don't necessarily want them all).
    Designer materials are plugged into that and saved with the rest of the painter specific materials in a folder structure mirroring the categories we want in our shelf. These are done as a matter of course - almost everything we do in designer gets mirrored into painter.
    Sbsar generation is done with automation toolkit based on the content of these folders - we can choose to do individuals or the whole lot in one go.
    We sometimes build painter materials off baked maps from designer rather than the raw graphs this works fine when authoring for layered shaders or similar and can cut out a lot of processing time.

    Change propogation can be done selectively with automation toolkit - there's a set of libraries etc. if you understand the API you'll be able to implement it,  if you can't then you're going to struggle a bit. 

  • Clark Coots
    Offline / Send Message
    Clark Coots polycounter lvl 8
    Hey Julien,
    I have some experience with Designer/Painter pipeline. I'll preface this with I am a Material/Environment Artist. I've done a lot of research on the topic and I've described to one of our Tech Artists what I'd like to see in the pipeline and he has implemented the more technical side of things. So I wouldn't be able to get into specifics of any Python or Substance APIs but I have a reasonable understanding of whats happening under the hood.

    1. Yes, set up a shelf directory. When you create a new Painter Shelf it auto creates a bunch of folders for you. It can be version controlled. Your team will have to be diligent syncing though if you're making a lot of changes to materials daily. You could also put it on a shared Network folder or Dropbox which does not require syncing. To get all the latest materials either way you'll need to restart Painter after any syncing. It's easy to set up which shelf to point to in the Painter settings. It's a simple path, so put it anywhere you want that can be accessed by your team. There is good documentation: https://docs.substance3d.com/spdoc/shelfs-124059665.html The SBSARs have to be in the shelf, or else it won't show up in Painter.

    2. The Automation Tool Kit from Allgorithmic/Adobe is what we use to publish SBSAR files. You'll have to get in touch with them: http://https//www.substance3d.com/products/substance-automation-toolkit With the magic of code you can do probably anything you'd want. Ours checks the Source/Material folder for new/updated SBS files, and publishes all of them to the Shelf/materials folder. If you have a lot of WIP or test SBS files might be good to have another folder for them, and then a finals SBS which gets Published. Our ATK also exports all outputs per SBS (Base Color, Normal, Roughness, etc.) anything that the SBS outputs the ATK will - however if you're consistent with your naming convention you can tell the ATK to only export textures with the suffix "_X" or whatever. We also have it output thumbnails of each material. If you don't use the ATK, then yes you should have a rule that every artist exports an SBSAR and manually puts it in the Shelf since painter can't read SBS files.

    3. We do not have a symmetrical folder structure, although I suppose you could. However, some Shelf folders like "smart-materials" are Painter only, you wouldn't have a mirrored directory for Designer. Same with "export-presets". I have a Source Folder and a Shelf Folder. All authoring SBS go into Source which has some sub folders - Materials, Utilities, Textures.

    4. We are investigating if an SBSAR has been updated, the ATK will check Painter files and use the Resource Updater (I think) to update that material and re-export the textures from Painter. In theory it should work. From my understanding Designers API is better suited to handle automation, but there are ways making Painter automation work. One thing I'm testing is if you have an SBSAR with exposed parameters, do they get reset to defaults when the SBSAR is updated? If they do, then you've overwritten any parameter tweaks in Painter an artist has done, which doesn't help for automating re-export of textures. Maybe there's a way to say if SBSAR has parameters, do not re-export from Painter and print those file names for someone to manually update material (so they can screenshot parameter values before hand???) Or maybe there is automated way to say if material needs update and has parameters store parameter values, and re-use them after update has happened.

    Still some things to work out on our end. But overall it's all very promising, and should mitigate the amount of manual publishing or re-exporting an artist has to do (at least so far from Designer). Let me know if you have any further questions! I'd love to keep the conversation going and hear if you have any ideas or troubles for your pipeline.

  • poopipe
    Offline / Send Message
    poopipe hero character
    It is possible to launch painter with python, update resources and re-export maps but it's not entirely straightforward.  It should in theory be possible to run the process over a network too but I've not tried that yet.

    I've not got the details in front of me but a google should reveal all and failing that you ask allegorithmic 
Sign In or Register to comment.