Home Adobe Substance

Substance Painter - Megascan Link Plugin

polycounter lvl 7
Offline / Send Message
Darkimage polycounter lvl 7
Hello guys,
Since i made the Megascan Link Plugin for Substance Designer  i decided to the same for Substance Painter.
With the Megascan Link for Substance Painter plugin you can import Megascan Assets directly into an opened project or create one if you export from Quixel Bridge a Megascan Asset with a 3D mesh.
The plugin is completely Free and OpenSource, you can Download it here and you can find the complete Documentation here.


Quick Start Guide

For a complete guide on all the options of the plugin refere to the How to use documentation.
  • Install it by extracting the zip file in the documents folder of Substance Painter:
For Windows 10 
<pre class="CodeBlock"><code>%userprofile%\Documents\Allegorithmic\Substance&nbsp;Painter
For Linux
<pre class="CodeBlock"><code>~/Documents/Allegorithmic/Substance&nbsp;Painter
For MacOS
<pre class="CodeBlock"><code>&nbsp;/Users/%username%/Documents/Allegorithmic/Substance&nbsp;Painter
  • In Substance Painter enable both plugins (yup there are two: Python and JS) 
  • You are ready to use it (see below for some example or look in the documentation for more information on what you can do with it)

Examples

Import into project


Auto Bake when creating project

(sorry for the heavy gif)

Remember to change Color Space for Normal Maps



Updates

Version v0.2.6-beta Changelog:

the plugin now shows the user an error dialog whenever it fails to install the needed dependencies and guides him to the Manual Installation documentation page.

  • [c2d71dd]: [GLOBAL] Added docs badge (Darkimage)
  • [92f16b1]: [PYTHON] Added configurable error dialog (Darkimage)
  • [8d492ac]: [PYTHON] Updated qt compiler version (Darkimage)
  • [edcc1e0]: [PYTHON] Added DependencyErrorDialog (Darkimage)
  • [623b63c]: [PYTHON] Added fallback options to getConfigSetting and checkIfOptionIsSet (Darkimage)
  • [dc80d32]: [PYTHON] Added showErrorDialog when an error occurs during the automatic dependecy installation step (Darkimage)
  • [bd59a35]: [PYTHON] Show the DependencyErrorDialog when loading dependencies fails (Darkimage)

Thank you guys, I hope you like it!!!

Replies

  • Darkimage
    Offline / Send Message
    Darkimage polycounter lvl 7

    Hello guys,

    I've updated the plugin to show the user an error dialog whenever it fails to install the needed dependencies and guides him to the Manual Installation documentation page.

    Currently the plugin is heavily based on a work around for the Substance painter Python APIs, I hope that in future versions of painter I can get rid of this work around and thus of the additional dependency making a more smooth end user installation process

    Download the update (v0.2.6-beta) HERE.

    Here's a screenshot of the new dialog:

    Version v0.2.6-beta Changelog:

    • [c2d71dd]: [GLOBAL] Added docs badge (Darkimage)
    • [92f16b1]: [PYTHON] Added configurable error dialog (Darkimage)
    • [8d492ac]: [PYTHON] Updated qt compiler version (Darkimage)
    • [edcc1e0]: [PYTHON] Added DependencyErrorDialog (Darkimage)
    • [623b63c]: [PYTHON] Added fallback options to getConfigSetting and checkIfOptionIsSet (Darkimage)
    • [dc80d32]: [PYTHON] Added showErrorDialog when an error occurs during the automatic dependecy installation step (Darkimage)
    • [bd59a35]: [PYTHON] Show the DependencyErrorDialog when loading dependencies fails (Darkimage)
  • Jerc
    Offline / Send Message
    Jerc interpolator
    Hi, what are you missing in the Python APi to make this more straightforward?
  • Darkimage
    Offline / Send Message
    Darkimage polycounter lvl 7
    Hi, currently in the Python API there is no way to import resources in the current session/project/shelf (or at least I didn't find a way to do so). In the plugin I had to use the Javascript API for this reason, so to make Python and Javascript communicate I had to install a Python package to set up from Python a websocket to send the data to the Javascript part of the plugin.

    This are the most important method that I used in Javascript that are missing from the Python API:
    <static> importProjectResource(path, usages [, destination])
    &lt;static&gt;&nbsp;importShelfResource(path, usages [, destination])<br>
    <static> importSessionResource(path, usages [, destination])

    I also used the baking API in Javascript that are also missing from Python, but that is not crucial for the plugin.

    Another option instead of adding the missing methods to the Python API would be to include in the default installation a websocket client package to allow the communication from and to the Javascript API.

    Thank you for reaching out and Have a great day.
  • poopipe
    Offline / Send Message
    poopipe polycount lvl 666
    you can create a websocket client with the javascript API.

    I'm pretty sure there's an example online - it may be connected to the S.A.T documentation 
  • Darkimage
    Offline / Send Message
    Darkimage polycounter lvl 7
    @poopipe yes that exactly what I'm doing  =)  I'm sending data between python and javascript using a websocket the problem here is a combination of things:
    1. I must use python to receive the data from Quixel Bridge since Javascript can't listen on normal (filesystem/process) socket
    2. The Python installation of Substance Painter don't come with the package that I use to create websocket (and the automatic installation from script of this package is not always successful because of permission issues and this is the major problem the users were facing)
    3. I cannot use only Python to create the plugin because the Python API don't have all the functionality of the Javascript API
    So basically the problem is the package that I use to create a websocket on Python, so either I create from scratch a websocket implementation in Python or if the Python API were at the same level of Javascript I could discard the Javascript part of the plugin and do all in Python

  • poopipe
    Offline / Send Message
    poopipe polycount lvl 666
    ah ok,  sorry - probably didnt read it properly :) 

    number 3 is the reason I haven't moved any of our painter stuff over to python yet. 

    Your installation problems sound very familiar to me and that's within a studio ecosystem, it must be a right pain in the arse doing this in the wild. 
    I think you can be proud if it works for anyone :D
  • Darkimage
    Offline / Send Message
    Darkimage polycounter lvl 7
    No worries I probably expressed myself badly.
    Your installation problems sound very familiar to me and that's within a studio ecosystem, it must be a right pain in the arse doing this in the wild. 
    It's definitely challenging that's for sure but for some strange reasons I like to put myself in that kind of situations

    I think you can be proud if it works for anyone :D

    For sure but I fear that it only worked on my machine  =) =) 
  • frmdbl
    Offline / Send Message
    frmdbl polycounter
    I'm really glad this addon exists, but I wonder why it can't create a material on import rather than just import the textures.
    It would be really cool.

  • Darkimage
    Offline / Send Message
    Darkimage polycounter lvl 7
    @frmdbl yup I, too, would like to add that feature but unfortunately there's no way to do that from a plugin, with that I mean there no API that exposes that functionality, maybe in future versions of Painter =)
Sign In or Register to comment.