A universal bridge for integrating Autodesk Maya and Marmoset Toolbag. Enables FBX export and automated baking in a single click.
- In Marmoset Toolbag, go to
Edit -> Plugins -> Show User Plugin Folder. - Copy
marmoset_scripts/mset_external_listener.pyto this folder. - In Marmoset, select
Edit -> Plugins -> Refresh. - Find
mset_external_listenerinEdit -> Pluginsand activate it (ensure the checkbox is checked).- The plugin is now listening for commands from any 3D DCC.
- Copy the
maya_mset_integrationfolder to your Maya scripts directory (e.g.,C:\Users\user\Documents\maya\2025\scripts).
To automatically create a dedicated Marmoset shelf with all tools:
- Locate
maya_mset_integration/install_shelf.mel. - Drag & Drop the file into the Maya viewport.
- A new Marmoset shelf will be created with 4 buttons (HP, LP, Bake, Reload).
To configure export paths, the Marmoset window title, and mesh parameters (Unlock Normals, Freeze Normals, Triangulate), use the GUI.
On the Marmoset shelf, Right-Click the HP or LP buttons and select Settings.
import importlib
import maya_mset_integration.maya_mset_settings_gui as mset_gui
importlib.reload(mset_gui)
mset_gui.main()- HP: Export High Poly mesh and trigger bake in Marmoset.
- LP: Process geometry (triangulation, normals), export Low Poly, and trigger bake.
- Bake: Re-trigger baking in Marmoset without re-exporting.
- Reload: Force refresh textures in Maya viewport.
- Open in Explorer: Opens the export folder and selects the file.
- Export Only: Exports the mesh (with LP processing) without triggering Marmoset.
- Settings: Open the configuration dialog.
The integration uses a file-based Inter-Process Communication (IPC) mechanism to bypass application isolation.
- Trigger: When you click a button in Maya, the script writes a small JSON file named
mset_bake_trigger.jsonto the user's home directory. - Focus: Since Marmoset Toolbag only processes Python commands when it has window focus, the Maya script uses the Win32 API (
SetForegroundWindow) to briefly bring the Marmoset window to the foreground. - Listener: Inside Marmoset, the
mset_external_listener.pyscript runs a persistent callback (onPeriodicUpdate). It polls for the existence of the trigger file. - Execution: Once detected, the listener reads the command (e.g.,
"rebake"), deletes the trigger file, and executes the corresponding Marmoset API calls (e.g.,baker.bake()). - Reporting: After the operation, Marmoset writes a
mset_bake_report.json. Maya polls for this report to show a success notification or error message directly in the viewport (In-View Message).
- If Marmoset is unresponsive, ensure
mset_external_listener.pyis active in the Plugins menu. - If buttons fail after an update, reinstall the shelf by dragging
install_shelf.melagain. - Check the Maya Script Editor and Marmoset Console for error logs.
- Render Trigger: Automated rendering from Maya/ZBrush.
- ZBrush Integration: SubTool export and scene updates.
- Other DCC Support: Integration for Blender, Cinema 4D, and 3ds Max.