Overview: Plug-ins
A plug-in describes scene entities, such as procedural (parametric) objects, materials,
etc, processes that manipulate them, such as the process of rendering or exporting
a scene, or customize how 3ds Max looks and behaves. Plug-ins can be written in C++,
MAXScript, or .NET. Most plug-ins are written in C++.
Plugins are packaged in DLLs (dynamic load libraries). 3ds Max recognizes DLLs that
contain plugins and loads them into its process space when it starts up or when an
instance of a plug-in from that DLL is required to perform a task, such as importing
data from a file in a given format into the 3ds Max scene. To speed up the plug-in
DLL identification process, 3ds Max looks in specific folders for DLL files with specific
extensions such as dlo, dlm, dlt, dlu, etc .
Most plug-ins fall into one of the following categories:
- Object Plug-ins - These plug-ins (also called procedural or parametric object plug-ins)
represent objects the user can create and manipulate interactively in the viewport.
Examples of such plug-ins include geometrical primitives (teapot, torus, etc), shapes,
lights, camera, and helpers. Plug-ins in this category are expected to be packaged
in DLLs with the "dlo" extension.
- Modifier Plug-ins - These are plug-ins that take as input a procedural object or
a mesh of some kind (triangle mesh, patch mesh, poly-mesh) and apply a transformation
to it. Examples include deformers such as bend, taper, etc, mesh editing modifiers
such as extrude, bevel, etc. Plug-ins in this category are expected to be packaged
in DLLs with the "dlm" extension.
- Animation Controller Plug-ins - The main role of these plug-ins is to store and interpolate
between animation keyframe values of basic data types such as integers and floats.
Controllers can expose sub-controllers. This allows for creating more complex controllers
such as constraints. Controllers are used everywhere in 3ds Max, starting with the
position, rotation and scale of objects to constraints, from evaluators of expressions
written in MAXScript to generators of fractal noise. Plug-ins in this category are
expected to be packaged in DLLs with the "dlc" extension.
- Materials and Texture Plug-ins - These plug-ins allow for defining the look, or appearance
of objects when displayed in the viewport and rendered. Materials define how objects
interact (reflect, transmit, etc) light. Texture maps add details or complexity to
the appearance of objects. Plug-ins in this category are expected to be packaged in
DLLs with the "dlt" extension.
- Rendering plug-ins - These plug-ins can add effects such as glare, shadows, etc to
a scene, or render the entire scene. The plug-in is not restricted in the rendering
method it implements (scan-line, ray-tracing, etc). Plug-ins in this category are
normally expected to be packaged in DLLs with the "dlr" or "dlv" extension.
- Scene Data Import Export Plug-ins - These plug-ins either import or export 3D scene
data such as geometry, lights, camera, materials, textures, etc. Plug-ins in this
category are normally expected to be packaged in DLLs with the "dle" or "dli" extension.
- Image File IO Plug-ins - These plug-ins allow for importing and saving images (such
as a rendering of the scene) in various formats such as bmp, jpg, png, high-dynamic
range, etc). Plug-ins in this category are expected to be packaged in DLLs with the
"bmi" extension.
- Utility Plug-ins - These plug-ins usually perform some operation on scene entities,
such as display information about the selected objects, or provide other miscellaneous
services. Plug-ins in this category are expected to be packaged in DLLs with the "dlu"
or "gup" extension.
- MAXScript Plug-ins - These plug-ins customize how the MAXScript engine works or extend
it with new functionality, such as C++ implemented functions.