This API is used to support OLE structured storage streams containing user specified string data in 3ds Max scene files or other OLE Structured Storage based files.
These are classes and enums to support the Data Channel Modifier.
These classes let you define skin weighting using a voxel or height map based algorithm.
See https://msdn.microsoft.com/en-us/library/windows/desktop/aa380369(v=vs.85).aspx for a description of OLE Structured Storage. Within 3ds Max, this API is used by CustomFileStream.dlu and implemented by CustomFileStreamAPI.dll source. The source for these are in maxsdk\samples\utilities\CustomFileStream. CustomFileStream.dlu defines the CustomSceneStreamManager and CustomFileStream FPS (Function Publishing System) interfaces. CustomFileStreamAPI.dll defines the low level file access methods that are used by CustomFileStream.dlu, and can be used by external applications to read, write, and modify the CustomFileStream as supported by the CustomSceneStreamManager and CustomFileStream interfaces. To use this dll, you would link against CustomFileStreamAPI.lib in maxsdk\libs. There are no dependencies by CustomFileStreamAPI.dll on other 3ds Max dlls. To see how these low level methods should be tied together, see the CustomFileStream.dlu source. This API will read and write CustomFileStream to 3ds Max scene files written by any version of 3ds Max. The CustomSceneStreamManager is required to persist the custom data streams across scene file load and save operations. CustomFileStream as supported by CustomSceneStreamManager and CustomFileStream are located in the CustomFileStream IStorage of the 3ds Max scene file main IStorage. Each stream consists of a header consisting of a 1 WORD version number and two 32 bit DWORD values (see CustomFileStreamHeader below), followed by a non-null terminated wchar string or an array of null terminated wchar strings. The current version number is 1. The first 32 bit DWORD is considered private (flag bit usage defined by Autodesk) and the second is considered public (flag bit usage defined by the creator of the stream). Currently, bits 1 to 3 of the private DWORD are used. Bit 1 signifies that the stream is a persistent stream. When this bit is set, the CustomSceneStreamManager will write this stream to the scene file when the scene file is saved. This allows an CustomFileStream to be automatically persisted across a load/save operation. Bit 2 signifies that the stream is to be saved to the scene file when the scene file is saved, but the stream is not necessarily a persistent stream. This allows the user to add streams to CustomSceneStreamManager's cache and have those streams be written to the scene file. This bit is not persisted to the scene file, and is cleared when read from the scene file. Bit 3 signifies that the stream is not to be added to the CustomSceneStreamManager's cache when the scene file is loaded. If neither of the first 2 bits are set, CustomSceneStreamManager does not write this stream to the scene file when the scene file is saved. The content of the stream is considered to be an array of strings if the last character in the content is a null character (signifying an array of null terminated strings), otherwise the content is considered to be a single non-null terminated string,
Samples of usage can be found in
maxsdk/samples/modifiers/bonesdef/VoxelWeights/BMD_Command_VoxelWeight.cpp
The Data Channel Modifier can be extened by adding additional Engines. This is done by having a plugin derive from IDataChannelEngine and using the SuperClassID DATACHANNELENGINE_SUPER_CLASS_ID. Any plugins that do that will appear in the Data Channel modifiers drop down list.
An IDataChannelEngine is just a black box solution that takes an MNMesh and then outputs an array that describes the mesh. For instance a Curvature engine would compute the curvature at each vertex and then return an array of floats one for each geometric vertex that describe the curvature.
The Data Channel modifier allows the vertex, edge and face channels to be modified. NOTE channels here just represent an array of data that describes part of a mesh and is not related to channels that flow up the stack. Vertex data is a bit tricky since some channels need face information and some do not. For instance the Vertex Selection channel implicitly is attached to the geometry face index so you cannot change that while something like a map channel has an explicit face channel attached to it. The Map Channel modifier allows you to copy different face index channels around but not edit them directly.
|
class | Array |
| A generic array container, with proper support for non-POD types. More...
|
|
class | ArrayAutoPtr |
| Standard implementation of a AutoPtr for pointer to array types. More...
|
|
class | ArrayPointerDestructor |
| DestructorPolicy template for pointer to array types. More...
|
|
class | AutoPtr |
| Automatic memory-ownership pointer supporting "resource acquisition is initialization. More...
|
|
struct | AutoPtrRef |
| Helper class used to implement destructive copy semantics and allow for AutoPtrs to be used as return values. More...
|
|
class | BufferProxy |
|
class | DeleteThisAutoPtr |
| Partial template specialization of AutoPtr for types requiring destruction through a DeleteThis method. More...
|
|
class | DeleteThisDestructor |
| DestructorPolicy template for types requiring destruction through DeleteThis. More...
|
|
class | EdgeDescr |
|
class | HoldBegin |
|
class | IActiveShadeFragmentManager |
| The IActiveShadeFragmentManager class is used to control the active shade fragment (in-viewport) active shade. More...
|
|
class | IHairModifier |
| Provides access to hair strand definitions for a modifier that generates hair. More...
|
|
class | IHelpSystem |
| This interface provides access to the 3ds Max Help system. More...
|
|
class | INoSignalCheckProgress |
| An alternative progress reporting interface to class RendProgressCallback, which does not process the window message queue. More...
|
|
class | IPhysicalCamera |
| Access to the properties of the Physical Camera object. More...
|
|
class | IPhysicalCamera_BitmapApertureSampler |
| Utility class that provides efficient sampling for a bitmap aperture on the physical camera. More...
|
|
class | IPhysicalCameraToneOperator |
| Access to the properties of the Physical Camera Exposure Control. More...
|
|
class | IPhysicalSunSky |
| Access to functionality and properties of the Physical Sun & Sky environment map. More...
|
|
class | ISunPositioner |
| Access to functionality and properties of the Sun Positioner object. More...
|
|
class | PluginPackageComponent |
| A plugin package may contain various 3ds Max components, including native C++ plug-ins, managed assemblies, maxscripts, macroscripts, various resources such as icons, etc. More...
|
|
class | PluginPackageInfo |
| A plugin package may contain various pieces of information including name, package description, company email, and so on. More...
|
|
class | PluginPackageManager |
| The PluginPackageManager is a service implemented by 3ds Max. More...
|
|
class | PointToPointPath |
|
class | QMaxColorSwatch |
| Simple UI component to display and modify a color-value. More...
|
|
class | QmaxDockingWinHost |
| This class acts as docking host for native win32 ui controls. More...
|
|
class | QmaxDockingWinHostDelegate |
|
class | QmaxDockWidget |
|
class | QmaxDoubleSpinBox |
|
class | QmaxFloatSlider |
| Qt Max slider for float values. More...
|
|
class | QmaxLightingSpinBox |
| a special QmaxSpinBox for displaying lighting units. More...
|
|
class | QmaxMainWindow |
| This class is used by 3ds Max for its docking UI and should be used as replacement for the standard QMainWindow. More...
|
|
class | QmaxMatrix3Spinner |
|
class | QmaxMultiSpinner |
|
class | QMaxParamBlockWidget |
| Base class for QWidgets which are to be controlled by a parameter block/map. More...
|
|
class | QmaxPoint2Spinner |
|
class | QmaxPoint3Spinner |
|
class | QmaxPoint4Spinner |
|
class | QmaxProxyDockingWinHostDelegate |
|
class | QmaxRollup |
| 3ds Max Qt Rollup class. More...
|
|
class | QmaxSpinBox |
|
class | QmaxSpinBoxPrivate |
|
class | QmaxToolBar |
| This class is used by 3ds Max for the docking toolbars and should be used as replacement for the standard QToolBar. More...
|
|
class | QmaxToolClips |
| The QmaxToolClips class provides a collection of tool clip related methods. More...
|
|
class | QmaxTranslationLoader |
|
class | QMaxWinHost |
| Simple widget that can host a native win32 window. More...
|
|
class | QmaxWorldSpinBox |
|
class | SinglePointerDestructor |
| DestructorPolicy template for pointer to single object types. More...
|
|
class | SingleWeakRefMaker |
| Utility base class for a ReferenceMaker with a single target that does not share ownership of it's ReferenceTarget. More...
|
|
class | TexmapThreadSafe |
| TexmapThreadSafe interface has been deprecated. More...
|
|
class | TypedSingleWeakRefMaker |
|
class | VariableGuard |
| Resets a variable when the object goes out of scope. More...
|
|
class | VertexNormal |
| The class used to compute vertex normals considering smoothing. More...
|
|
class | WindowsMessageFilter |
| Runs a message loop without blocking, allowing only acceptable Windows messages through to their destination UI controls. More...
|
|
|
HINSTANCE | GetHInstance () |
| Get the calling module's HINSTANCE. More...
|
|
MSTR | GetResourceStringAsMSTR (UINT resourceId) |
| Extract a resource from the calling module's string table. More...
|
|
bool | GetResourceStringAsMSTR (UINT resourceId, MSTR &resourceString) |
| Extract a resource from the calling module's string table. More...
|
|
UtilExport MSTR | GetResourceStringAsMSTR (HINSTANCE hinstance, UINT resourceId) |
| Extract a resource from a module's string table. More...
|
|
UtilExport bool | GetResourceStringAsMSTR (HINSTANCE hinstance, UINT resourceId, MSTR &resourceString) |
| Extract a resource from a module's string table. More...
|
|
CoreExport QIcon | LoadMaxMultiResIcon (const QString &iconName) |
| Loads a set of Images into a multi-resolution QIcon. More...
|
|
CoreExport HICON | CreateHICONFromMaxMultiResIcon (const MSTR &iconName, int width, int height, bool enabled=true, bool on=false) |
| Create an HICON from a MaxMultiResIcon. More...
|
|
HICON | CreateHICONFromMaxMultiResIcon (const MSTR &iconName, int size, bool enabled=true, bool on=false) |
|
CoreExport HIMAGELIST | CreateHIMAGELISTFromMaxMultiResIcon (const MSTR &imageIconName, int size, int count, bool alpha=true, bool enabled=true, bool on=false) |
| Create an HIMAGELIST from a MaxMultiResIcon. More...
|
|
UtilExport int | QmaxMessageBox (QWidget *parent, const QString &text, const QString &caption, unsigned int type, unsigned int exType=0, DWORD *exRet=nullptr) |
| Provides an extended message box functionality. This is used to support message dialogs with a 'Hold', a 'Help' button and/or a 'Do not show this message again' check box. More...
|
|
| Q_DECLARE_METATYPE (AColor) |
|
| Q_DECLARE_METATYPE (Point2) |
|
| Q_DECLARE_METATYPE (Point3) |
|
| Q_DECLARE_METATYPE (Point4) |
|
| Q_DECLARE_METATYPE (Matrix3) |
|
QString | QStringFromID (int resourceID) |
|
IPhysicalCamera_BitmapApertureSampler::RGBValue | operator* (const float a, const IPhysicalCamera_BitmapApertureSampler::RGBValue &b) |
|
IPhysicalCamera_BitmapApertureSampler::RGBValue | operator* (const IPhysicalCamera_BitmapApertureSampler::RGBValue &a, const float b) |
|
IPhysicalCamera_BitmapApertureSampler::RGBValue | operator* (const IPhysicalCamera_BitmapApertureSampler::RGBValue &a, const IPhysicalCamera_BitmapApertureSampler::RGBValue &b) |
|
IPhysicalCamera_BitmapApertureSampler::RGBValue | operator+ (const IPhysicalCamera_BitmapApertureSampler::RGBValue &a, const IPhysicalCamera_BitmapApertureSampler::RGBValue &b) |
|
IPhysicalCamera_BitmapApertureSampler::RGBValue | operator- (const IPhysicalCamera_BitmapApertureSampler::RGBValue &a, const IPhysicalCamera_BitmapApertureSampler::RGBValue &b) |
|
void | SortPolygonDiagonals (int dnum, int *diag) |
| Puts diagonals in increase-by-last-index, decrease-by-first order. More...
|
|
void | BestConvexDiagonals (const BufferProxy< const int > &faceVertexIndices, const BufferProxy< const Point3 > &meshVertices, int *diag) |
| Uses a triangulation scheme optimized for convex polygons to find a set of diagonals for this sequence of vertices, creating a triangulation for the polygon they form. More...
|
|
void | BestConvexDiagonals (const BufferProxy< const int > &faceVertexIndices, const BufferProxy< const DPoint3 > &meshVertices, int *diag) |
| Uses a triangulation scheme optimized for convex polygons to find a set of diagonals for this sequence of vertices, creating a triangulation for the polygon they form. More...
|
|
void | FindDiagonals (const BufferProxy< const int > &faceVertexIndices, const BufferProxy< const Point3 > &meshVertices, int *diag) |
| This method finds diagonals for this sequence of vertices, creating a triangulation for the polygon they form. More...
|
|
void | FindDiagonals (const BufferProxy< const int > &faceVertexIndices, const BufferProxy< const DPoint3 > &meshVertices, int *diag) |
| This method finds diagonals for this sequence of vertices, creating a triangulation for the polygon they form. More...
|
|
void | GetTriangles (int deg, int *diag, Tab< int > &tri) |
| This method fills in the table with the full triangulation for the face, based on the internal diagonal list. More...
|
|
UtilExport float | GetUIScaleFactor (int monitorID=-1) |
| Returns the UI scaling factor relative to a default of 96 DPI. More...
|
|
UtilExport float | GetUIUserScaleFactor () |
| Get the additional user UI scaling factor. More...
|
|
int | UIScaled (int value, int monitorID=-1) |
| Returns the given value multiplied with the UI scaling factor. More...
|
|
float | UIScaled (float value, int monitorID=-1) |
| Returns the given value multiplied with the UI scaling factor. More...
|
|
int | UIUnScaled (int value, int monitorID=-1) |
| Returns the given value divided with the UI scaling factor. More...
|
|
float | UIUnScaled (float value, int monitorID=-1) |
| Returns the given value divided with the UI scaling factor. More...
|
|
void | ScaleRect (RECT &rect, int monitorID=-1) |
| Scaling of a rectangle values based on UIScaleFactor. More...
|
|
void | UnscaleRect (RECT &rect, int monitorID=-1) |
| Unscaling of a rectangle values based on UIScaleFactor. More...
|
|
UtilExport HBITMAP | GetUIScaledBitmap (HBITMAP bitmap, int monitorID=-1) |
| Returns a scaled copy of the bitmap if the UI scaling factor is not 1.0. More...
|
|
UtilExport HRESULT | AnnotateControlName (HWND hWnd, const MSTR &name) |
| Annotates the control with Microsoft Active Accessibility name property. More...
|
|
UtilExport HRESULT | RemoveAnnotatedNameFromControl (HWND hWnd) |
| Removes the Microsoft Active Accessibility name from the control. More...
|
|
CoreExport void | ScaleFileOpenSaveDialogToolbar (HWND hDlg) |
| Scales the toolbar size and icons in standard file open/save dialogs. More...
|
|
CoreExport INT_PTR WINAPI | MinimalMaxFileOpenHookProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) |
| A minimal LPOFNHOOKPROC for scaling the toolbar size and icons in standard file open/save dialogs. More...
|
|
UtilExport int | MaxMessageBox (HWND parent, LPCMSTR text, LPCMSTR caption, unsigned int type, unsigned int exType=0, DWORD *exRet=nullptr) |
| Provides an extended message box functionality. This is used to support message dialogs with a 'Hold', a 'Help' button and/or a 'Do not show this message again' check box. More...
|
|
CoreExport bool | SearchComboBox (HWND hWnd, MCHAR key, const MCHAR *szTrim=NULL) |
| Multiple character search for ComboBoxes. More...
|
|
CoreExport bool | SearchListBox (HWND hWnd, MCHAR key, const MCHAR *szTrim=NULL) |
| Multiple character search for ListBoxes. More...
|
|
CoreExport int | GetDefaultToolTipMaxWidth () |
|
CoreExport QIcon MaxSDK::LoadMaxMultiResIcon |
( |
const QString & |
iconName | ) |
|
Loads a set of Images into a multi-resolution QIcon.
This function looks into the UI_ln folder of the 3dsmax installation (or the internal Qt resource system) to find a set of matching image files to mark for usage. The actual images get loaded on demand.
The naming of those files has to match one of the following schemes:
[:/]Folder/BaseName[_on|_off][_size].ext
[:/]Folder/BaseName[_on|_off][_(width)
x(height)].ext
So for example:
iconName | files on disk | QIcon entry size | QIcon state |
Undo | Undo_16.png | 16 x 16px | Off |
Undo | Undo_off_24.png | 24 x 24px | Off |
Undo | Undo_on_32.png | 32 x 32px | On |
Undo | Undo_on_100.png | 100 x 100px | On |
Undo | Undo_16x32.png | 16 x 32px | Off |
Undo | Undo_on_16x32.png | 16 x 32px | On |
In that case a single call on LoadMaxMultiResIcon( "Undo" ) would produce an QIcon containing all the different sizes and states.
iconName | files on disk | QIcon entry size | QIcon state |
Redo.png | Redo.png | based on file[^1] | Off |
Redo.png | Redo_on.png | based on file[^1] | On |
[^1]: This forces the QIcon to load the image file to determine its actual size.
iconName | files on disk | QIcon entry size | QIcon state |
Fancy.jpg | Fancy_300x100.jpg | 300 x 100px | Off |
Fancy.jpg | Fancy_150x50.jpg | 150 x 50px | Off |
The iconName may also contain folders or sub-folders, so these fileNames are fine, too (slashes or backslashes can be used):
"SME/Editor.png" "SME/Nodes/Collapse.png" "SME\\Nodes\\RemoveItem.png"
Based on the current 3dsmax theme (Dark/Light) the icons are retrieved from different locations on the file-system, so depending on the setting "SME/Editor.png" may get:
UI_ln/Icons/Dark/SME/Editor*.png UI_ln/Icons/Light/SME/Editor*.png
If the iconName starts with ":/", it points to a Qt Resource like ":/Icons/Undo", the theming is not automatically applied, so the caller is responsible to actually provide the correct resource-bundle. Nevertheless the QIcons internal pixmap cache will be wiped on a theme change, so the next paint call on the QIcon will reload the acquired version.
If a size of an image inside an QIcon is not available but requested for painting, Qt will downscale the next bigger version automatically - but will never scale images up.
- Parameters
-
[in] | iconName | The name of the icon to load. The path, basename and the extension of the file is used to find matching icons. The Extension may be omitted and .png is assumed to be the default extension. |
- Returns
- A QIcon that contains all the images that matches the given iconName. Might be an empty QIcon if no match could be found.
- See also
- QIcon class in the Qt documentation, Qt Resource System