3ds Max Plus

Shotgun Engine for 3ds Max Plus

Shotgun Integration in 3ds Max Plus
Latest Version: v0.5.9 (prod)
For our version numbers, we follow the Semantic Versioning standard.
System Name: tk-3dsmaxplus

Please Note: This document describes functionality only available if you have taken control over a Toolkit configuration. Please refer to the Shotgun Integrations User Guide for more details.

The Shotgun engine for 3ds Max Plus provides a bridge between the 3ds Max application and the Shotgun Pipeline Toolkit. The engine supports PySide and all Multi apps, meaning that you can run our standard apps inside of 3ds Max - the same apps that also work in Maya, Nuke etc. This engine uses the 3ds Max Plus python API.

Supported Application Versions

This item has been tested and is known to be working on the following application versions: 2016-2020. Please note that it is perfectly possible, even likely, that it will work with more recent releases, however it has not yet been formally tested with these versions.


This engine connects Shotgun Pipeline Toolkit (Sgtk) and 3D studio Max via Max Plus' Python support.


Installation and Updates

Adding this Engine to the Shotgun Pipeline Toolkit

If you want to add this engine to Project XYZ, and an environment named asset, execute the following command:

> tank Project XYZ install_engine asset tk-3dsmaxplus

Updating to the latest version

If you already have this item installed in a project and you want to get the latest version, you can run the update command. You can either navigate to the tank command that comes with that specific project, and run it there:

> cd /my_tank_configs/project_xyz
> ./tank updates

Alternatively, you can run your studio tank command and specify the project name to tell it which project to run the update check for:

> tank Project XYZ updates

Collaboration and Evolution

If you have access to the Shotgun Pipeline Toolkit, you also have access to the source code for all apps, engines and frameworks in Github where we store and manage them. Feel free to evolve these items; use them as a base for further independent development, make changes (and submit pull requests back to us!) or simply tinker with them to see how they have been built and how the toolkit works. You can access this code repository at https://github.com/shotgunsoftware/tk-3dsmaxplus.

Special Requirements

  • You need Shotgun Pipeline Toolkit Core API version v0.18.45 or higher to use this.


Below is a summary of all the configuration settings used. These settings need to be defined in the environment file where you want to enable this App or Engine.


Type: list

Description: Controls what apps will run on startup. This is a list where each element is a dictionary with two keys: 'app_instance' and 'name'. The app_instance value connects this entry to a particular app instance defined in the environment configuration file. The name is the menu name of the command to run when the 3dsMax engine starts up. If name is '' then all commands from the given app instance are started.


Type: list

Description: Comma-separated list of tk-3dsmaxplus plugins to load when launching 3dsMax. Use of this feature disables the classic mechanism for bootstrapping Toolkit when 3dsMax is launched. Therefore, if any plugins are specified using this setting, the first one in the list must be responsible for starting Toolkit when 3dsMax is launched.


Type: int

Default Value: 2017

Description: Specify the minimum Application major version that will prompt a warning if it isn't yet fully supported and tested with Toolkit. To disable the warning dialog for the version you are testing, it is recomended that you set this value to the current major version + 1.


Type: bool

Description: Controls whether debug messages should be emitted to the logger


Type: list

Description: Controls the favourites section on the main menu. This is a list and each menu item is a dictionary with keys app_instance and name. The app_instance parameter connects this entry to a particular app instance defined in the environment configuration file. The name is a menu name to make a favourite.

Release Notes

Welcome to the release notes for this Engine. Below you will find an overview of all the changes we did for each release. We try to be as detailed as possible and include all bugs we have fixed, features we have added and things that may have changed. If you have questions about a particular release, don't hesitate to contact our support team!



Adds a deprecation message on engine startup.


A migration guide exists to migrate from tk-3dmaxplus to tk-3dsmax. It can be found at the tk-3dsmax engine's documentation page.



Fixes the open file on startup behaviour. Previously the provided file was just ignored.



Changes the way in which the parent widget is gathered in the specific 2018 - 2019 versions of 3dsmax, to fix occasional errors that would occur during startup.



Ups the maximum-supported version of 3ds Max. No functional changes to the engine, otherwise.



Simplifies window parenting logic for modern Max versions.


In modern 3ds Max, we're able to get the main window via MaxPlus. In that case, we can skip the older, more complicated logic for window parenting and use the more standard approach taken by most other integrations.



Minor change to ensure compatibility with 3ds Max 2019 update 3.



Now ensures that the work folder exists when saving the scene at publish time.



Adds support for 3ds Max 2019



Adds session geometry plugin for publish2



Now houses publish2 plugin hooks and supports template-based worklfows



Minor adjustments to logging output



Dockable panels, Plugin, Software support and dropped support for max 2015.



Upgraded to better handle python ssl. Bumped major supported version.



Adds support for 3ds Max 2017 and engine-level styling.



Bug fix for Qt dialog management during maxscript operations that launch modal, native dialogs.


It's required that we hide any open Qt dialogs during these operations, as native Max dialogs that are modal pair poorly with Qt dialogs that are active and not locked away like the rest of Max. Our logic attempted to do this, but ended up showing otherwise-hidden dialogs that shouldn't have been shown, and also had the unintended effect of triggering certain operations once per existing dialog (like merge operations from the loader app).



Menu action fixes when multiple Max sessions are run at once.


The bug cropped up when multiple Max sessions are run concurrently. The macros attached to the menu actions changed after the second session's Shotgun menu was built (Max caches the menu layout, including the macros, to disk) and the first session would call the macro defined in the second session. Because we keyed our cache of AppCommand objects off of the Python object ID, the lookup to find the AppCommand in the first session looked for the ID of the second session and fail.



Modal dialogs are no longer attached to Max's main window.


Modal dialogs behave properly when not explicitly attached to Max's main window via MaxPlus. When they ARE attached, however, keyboard and mouse inputs are blocked for both Max and the modal dialog. As a result, we no longer attach modal dialogs to Max's main window.



Parents Qt dialogs to Max's main window.


As of the 2016 SP1 release, Max can have Qt widgets parented to its main window. The Maxplus engine will now attempt to do so for any version of Max of that release or newer.



Use string instead of float for version logging



hotfix for metrics logging typo



Adds a call to log a user metric for the DCC version



Logging using engine.log_* is no longer blocking.


A deadlock would occur when a background thread was logging through the engine's log methods while the main thread was waiting for the background thread to complete.

Note that this fix requires Core API 0.16.35.


Update 3ds Max version compatibility to include 2016


Fixed debug logging and SSL fix


  • Enabling debug logging would cause 3ds Max to hang - this has now been fixed.
  • The previous fix for the Python SSL slowdown bug wasn't being applied correctly - this has now been fixed.


Fix 3ds Max when merging objects


Fixes crashing issues relating to qt dialogs and max modal.


Documentation update


Fix favorite menu handling


Fix an exception that stopped the engine from being created with favorite menus.


Small fix for menus


Changes default behavior for menus by making them active in case the engine hasn't started properly.


Added exception guard in modals


Added guard to restore menu in case of exception thrown in modal dialogs.


Fix crash with modal dialogs


Fixes a crash when trying to use the shotgun menu while a modal dialog is opened.


23021: 3DS Max Engine w/MaxPlus


Updated engine to work with MaxPlus instead of Blur's python distribution for 3ds max, thus removing the dependency.