This topic describes new items and changes that affect the 3ds Max 2018 C++ SDK.
The Developer's Guide has a new Icon Reference that lists all the standard system icons, their paths, and resolutions, available in
UI_ln/IconsDark.rcc
and UI_ln/IconsLight.rcc
. See Using Multi-Res Icons in Max and Qt for information about how to load and use these icons
in your plug-ins.
3ds Max 2018 is not binary compatible with previous versions. This means that plug-ins must be recompiled using the 3ds Max 2018 SDK and the Microsoft Visual C/C++ version 14.0 compiler. See the SDK Requirements to know the platform requirements for building plug-ins in 3ds Max 2018.
3ds Max 2018 now uses Qt 5.6.2, and plug-ins can build UIs in Qt using the standard GPL Qt 5.6.2 distribution, and the Visual Studio 2015 Qt add-on. See Using Qt with 3ds Max Plug-ins for more information.
In preparation of deprecating the Parameter Block 1 system in the future, plug-in developers should start migrating projects to use Parameter Block 2. All samples in the SDK have been migrated, and the Developer Guide now has a Porting Guide.
These headers contain some small changes due to this migration: include\iparamb.h include\iparamb2.h include\iparamb2.inline.h include\iparamm2.h
Note: Parameter Block 1 is not deprecated in this release, but will be in a future release.
PBAccessor now has new PreSet()
and PostSet()
methods, which guarantee the state of the value returned by GetValue()
to be either the original or new value, respectively. In general, plug-ins should now use PreSet()
instead of Set()
.
ParamBlock2 now supports Point2 and IParamBlock2 value types.
PB2Value has some new helper methods for handling strings, Initialize()
and ReplaceString()
.
The new maxsdk\include\IMNMeshDataChannel.h contains classes and enums that allow you to create additional operators ("engines") to be used by the Data Channel Modifier.
The new IAdjustTangents
class (istdplug.h) supports tangent adjustment.
Actiontables::IconSize
- adds new sizes (to support HDPI) 30x30, 36x36, 46x48QmaxDockingWinHostDelegate bool SetUserDlgProc(ParamBlockDesc2* pbd, ParamMap2UserDlgProc* proc=NULL);
- Previously was void typeInterface17
- addedShowProductHelp*
- all return bool now to indicate the help was displayedMCGFILE_DROPTYPE
for MCGQMenuBar
INotificationManager::NotifyRenderSettingsEvent
and INotificationManager::NotifyEnvironmentEvent
IRendParams2
interface with new methodsTranslator::Translate
– added paramTranslator::TranslateKeyframe
Translator::InvalidateParents
The ClassDesc::InternalName
() returns a fixed, parsable internal name for the plug-in.
By default, Plug-in names exposed to MAXScript are generated using both the strings from ClassName()
and InternalName()
. You can change this behavior by returning true from ClassDesc::UseOnlyInternalNameForMAXScriptExposure()
, in which case the plug-in exposes only its InternalName()
. We recommend that new plugins implement this method and return true.
LinearShape::CreateTriObjRep(TimeValue t)
SimpleShape::CreateTriObjRep(TimeValue t)
SimpleSpline::CreateTriObjRep
SplineShape::CreateTriObjRep
TriObj::CreateTriObjRep
MaxSDK::QmaxMainWindow* GetQmaxMainWindow()
Get/SetEnableTMCache
, NonInteractiveMode
, SecureMode
, SelectedKeyTangent
, PathColoringType
, Trajectory
methodsaligned_malloc
, aligned_free
, aligned_realloc
IMNMeshLegacySnap
NOTIFY_SCENE_EXPLORER_NEEDS_UPDATE
HIT_MIRROREDTM
ControlType2::TYPE_POINT2LISTBOX
, TYPE_FLOAT_EDITABLE_COMBOBOX
IParameterManager::kPType_Point3
SimpleObject
cleanup, added new base.SNAP_OVERRIDE_UNSEL_OBJS_ONLY
, SNAP_DURING_CREATION
ADJTAN_ABSOLUTE
, ADJTAN_ANGLE
, ADJTAN_LENGTH
The SDK property sheets (maxsdk\ProjectSettings\propertySheets\3dsmax.general.project.settings.props) have been updated with software security settings. Existing projects should be updated to use this property sheet.
Elements of the CUIFrame system have been removed as part of the migration to a native Qt UI for 3ds Max. The following classes are removed:
CUIPosData
CUIFrameMsgHandler
ICUIFrame
The CUIFrameMgr::GetCount()
method is removed.
The CreateCUIFrameWindow()
method is also removed. To create a
new window frame for a toolbar, use MaxSDK::QmaxToolBar()
instead. See the maxsdk/howto/ui/cuitest sample for an
example.
See the C++ API Reference > Topics > Deprecated List for more deprecated items.