Share

Object Plug-ins

Camera Objects

Plug-in cameras derive from CameraObject and GenCamera.

  • Camera - \samples\objects\camera.cpp

    Cameras present a scene from a particular point of view. Camera objects simulate still-image, motion picture, or video cameras in the real world.

Compound Objects

Compound objects take several objects and combine them together to produce a new object. Examples includes Boolean and Morph objects. The principal class involved in compound objects is IBoolObject.

  • Boolean - \samples\objects\boolobj.cpp

    Produce a new object using union, intersection and difference operations.

  • Blob Mesh Compound Object - \samples\objects\BlobMesh

    The Blob Mesh compound object creates a set of spheres from geometry or particles, and connects the spheres together as if they were made of a soft, liquid substance. When the spheres move within a certain distance of one another, they connect together. When they move apart, they take on a spherical form again.

  • Mesher Compound Object - \samples\objects\mesher

    The Mesher compound object converts objects to mesh objects on a per-frame basis so that you can apply modifiers such as Bend or UVW Map. It can be used with any type of object, but is designed primarily to work with particle systems.

Geometric Object Plug-ins

Geometric object plug-ins derive derived from GeomObject or SimpleObject2.

  • Primitive Geometric Objects - \samples\objects\prim.vcproj

    Implements numerous primitive geometric objects such as boxes, spheres, cones, cylinders, and tubes.

  • Extended Primitives - \samples\objects\ExtendedObjects

    Implements all the extended primitive objects available in the Create Command Panel such as chamfer cubes, oil tanks, pyramids etc..

  • Geodesic Sphere Primitive - \samples\objects\GSphere

    Creates spheres and hemispheres based on three classes of regular polyhedrons.

Helper Objects

Helper objects are items such as dummy objects, grids, tape measurers and point objects. Helper objects derive from ConstObject or HelperObject.

  • Grid Helper - \samples\objects\helpers\gridhelp.cpp

    The grid, also called User Grid or Custom Grid, is a 2D object with adjustments for overall size and grid spacing. The user can move and orient user grids anywhere in world space.

  • Pointer Helper - \samples\objects\helpers\pthelp.cpp

    The point helper provides a specific location in 3D space that can be used as a reference or by other program functions

  • Expose Transform - \samples\objects\Helpers\Exposeform

    The Expose Transform helper object exposes values of non-keyed objects for use in expressions and scripts.

  • Luminaire Helper Object - \samples\objects\Helpers\Luminaire

    The Luminaire helper object serves primarily as a head, or control, object for light fixtures.

Light Objects

Examples of plug-ins lights include point lights, direct lights, and spot lights. Light plug-ins derive from LightObject or GenLight.

  • Light - \samples\objects\light.cpp

    Lights are objects that simulate real lights such as household or office lamps, the light instruments used in stage and film work, and the sun itself. Different kinds of light objects cast light in different ways, emulating different kinds of real-world light sources.

Manipulator Helper Objects

Manipulator helpers are objects you can create to manipulate other objects. They let you add customized controls to your scene that provide visual feedback in viewports. To control other objects, manipulators use the parameter wiring feature. The following samples demonstrate implementing manipulators by inheriting from SimpleManipulator.

  • Cone Angle Manipulator - \samples\manipulators\coneanglemanip.cpp

    The Cone Angle manipulator is a cone whose base you can adjust. By wiring its Angle value to a parameter of another object, you can create a custom control, with visual feedback, within a scene.

  • Plane Angle Manipulator - \samples\manipulators\planeanglemanip.cpp

    The Plane Angle manipulator looks like a lever or joystick. By wiring its Angle value to a parameter of another object, you can create a custom control, with visual feedback, within a scene.

  • Slider Manipulator - \samples\manipulator\slider.cpp

    The Slider manipulator is a graphic control that appears in the active viewport. By wiring its Value to a parameter of another object, you can create a custom control, with visual feedback, within a scene

  • Bend Manipulator - \howto\manipulators\bend

    A how-to sample showing a full manipulator. It uses the Bend modifier to provide a gizmo and also handles setting up of aHitData object.

Mesh Object Samples

  • Editable Mesh Object - \samples\mesh\editablemesh

    A triangular mesh object.

  • Editable Poly Mesh Object - \samples\mesh\editablepoly

    A polygon mesh object.

NURBS Objects

The NURBS API provides an interface into the NURBS objects used by 3ds Max. You can create new NURBS objects or modify existing ones. A NURBS object plug-in will derive from NURBSObject.

  • NURBS Test Utility - \samples\utilties\nurbs

    A test harness for the NURBS API that can be used an example of how to work with NURBS.

Patch Object

Developers can create patch modeling systems for 3ds Max. Patch object plug-ins derive from PatchObject.

  • Editable Patch Object - \samples\objects\tripatch.cpp

    Editable Patch provides controls for manipulating an object as a patch object and at five sub-object levels: vertex, handle, edge, patch, and element.

  • Patch Grid - \samples\objects\patchgrd.cpp

    Patch grids provide convenient "building material" for custom surfaces and objects, or for adding patch surfaces to existing patch objects.

Spline Objects

These are shapes such as circles, arcs, rectangles, and donuts. Spline objects derived from SimpleSpline.

  • Circle - \samples\objects\circle.cpp
  • Ellipse - \samples\objects\ellipse.cpp
  • Arc - \samples\objects\arc.cpp

Shape Objects

These are shapes such as the helix. Shape objects derive from ShapeObject.

  • Helix - \samples\objects\helix.cpp

Instance Objects

Objects can display instances of themselves, either in the viewport or at render-time, without creating new scene objects.

The Render-time Instancing API allows you to display multiple instances of a single object at render-time. Plug-ins that use this API must implement the required methods in MaxSDK::RenderTimeInstancing::RenderTimeInstancingInterface.

  • \howto\objects\RenderTimeInstancedObject - An example plug-in that implements the RenderTimeInstancingInterface. It creates a new type of object that can display multiple instances of itself at render-time.

The Viewport Instancing API allows an object plug-in to display many instances in the viewport without creating them all in the scene. The plug-in describes the instance data based on a single object, and 3ds Max creates efficient representations of that object on the GPU. The instances can have different transforms, materials, mapping coordinates, and vertex colors. Plug-ins that use this API use the methods of class InstanceDisplayGeometry.

  • \howto\objects\InstancedObject - An example plug-in that implements InstanceDisplayGeometry. It creates a new type of object that can display multiple instances of itself in the viewport.

Was this information helpful?