New APIs, Interfaces, and Notifications
- New APIs for handling keyboard shortcut files
- New message box API
- New Normal mapping API
- Mikk Tangent support, and tangent computation callback
- New IAutoBackup interface
- New modifier name change notification
New APIs for handling keyboard shortcut files
The IActionManager
interface has been extended with APIs that support the new keyboard shortcut file format (.hsx) introduced in 3ds Max 2020 Update 1. See IActionManager::SaveKeyboardFile()
and IActionManager::LoadKeyboardFile()
.
virtual BOOL IActionManager::LoadKeyboardFile(const MCHAR* pFileName) = 0;
virtual BOOL IActionManager::SaveKeyboardFile(const MCHAR* pFileName) = 0;
virtual const MCHAR* IActionManager::GetKeyboardFile() = 0;
The new .hsx
file format only contain user-customized or additional factory preset shortcuts which will get applied on top of the base shortcuts that 3ds Max loads internally. That's different compared to the legacy keyboard shortcut files which contained both built-in, plug-in-defined and user-customized shortcuts.
3rd party developers should note that IActionManager::GetKeyboardFile()
now returns the path to a file with a different format and extension than the old .kbdx
one. Please do not assume that the returned file is in the .kbdx
format, and make sure you don't output shortcuts in the old kbdx to the new hsx file.
New message box API
The new MaxSDK::MaxMessageBox()
and MaxSDK::QmaxMessageBox()
APIs should be used instead of the Win32 MessageBox()
API and 3ds Max's MaxMsgBox()
API, in order to avoid text clipping that can occur with the later with certain locales, font types and sizes on Windows 10 when DPI scaling is greater than 100%. The new message box APIs have built-in handling of quiet mode: they will log a message and will not be displayed.
New Normal mapping API
The INormalMappingManager
interface manages the normal mapping modes that can affect how 3ds Max calculates and interprets the tangent/binormal (also called bitangent) at the vertex or pixel shading level during baking and rendering. In addition to the 3ds Max default mode, it allows for using Maya, DirectX and Mikk-t modes. This interface is implemented by the system.
Mikk Tangent support, and tangent computation callback
A new API is provided for computing the bump basis vector in MikkT way for the U texture channel (called the tangent), and the cross product of the surface normal with the tangent (called the binormal). These along with the surface normal are used as the basis vectors for normal mapping.
void ComputeMikkTangents(ITangentsComputationCallback* tangentsComputationCallback);
class ITangentsComputationCallback
allows for customizing computing the bump basis vectors on a given set of triangle/quad faces. The callback could be used as an input parameter of the method ComputeMikkTangents() to compute the tangent and binormal(bitangent).
New IAutoBackup interface
The IAutoBackup
interface allows plugin developers to control AutoBackup settings programmatically.
New modifier name change notification
REFMSG_MODIFIER_NAMECHANGE
This reference message is sent by a modifier when its name has been changed. One example where this notification is useful is to dynamically update the UI where a modifier's name is displayed. The pointer to the modifier is sent as partid. For example:
NotifyDependents(FOREVER, (INT_PTR)modifier, REFMSG_MODIFIER_NAMECHANGE);