3ds Max C++ API Reference
IMeshDeformPWMod Class Referenceabstract

IMeshDeformPWMod is the interface into the Skin Wrap(Mesh) modifier. More...

#include <ISkinWrapMesh.h>

+ Inheritance diagram for IMeshDeformPWMod:

Public Member Functions

FPInterfaceDescGetDesc ()
 
virtual void SelectVertices (int whichWrapMesh, BitArray *selList, BOOL updateViews)=0
 This selects the control point cage vertices. More...
 
virtual BitArrayGetSelectedVertices (int whichWrapMesh)=0
 This returns the current selected control points on the cage. More...
 
virtual int GetNumberControlPoints (int whichWrapMesh)=0
 This returns the number of control points on the cage. More...
 
virtual Point3GetPointScale (int whichWrapMesh, int index)=0
 This returns the local scale factor for a control point. More...
 
virtual void SetPointScale (int whichWrapMesh, int index, Point3 scale)=0
 This lets you set a control points local scale. More...
 
virtual float GetPointStr (int whichWrapMesh, int index)=0
 this returns the strength of a control point More...
 
virtual void SetPointStr (int whichWrapMesh, int index, float str)=0
 This lets you set the strength of a control point. More...
 
virtual Matrix3 GetPointInitialTM (int whichWrapMesh, int index)=0
 This returns the initial tm of the control point. More...
 
virtual Matrix3 GetPointCurrentTM (int whichWrapMesh, int index)=0
 This returns the current tm of the control point. More...
 
virtual float GetPointDist (int whichWrapMesh, int index)=0
 This returns the size of the envelope of a control point. More...
 
virtual int GetPointXVert (int whichWrapMesh, int index)=0
 this is the vertex that forms the x axis, the z axis is the normal More...
 
virtual void MirrorSelectedVerts ()=0
 This mirrors the current selected control points. More...
 
virtual void BakeControlPoints ()=0
 This bakes the control point data into the app data of the node that is the control mesh. More...
 
virtual void RetreiveControlPoints ()=0
 This retrieves the control point data from the app data of the node that is the control mesh.
More...
 
virtual void Resample ()=0
 This forces the modifier to resample itself. More...
 
virtual void SetResampleModContext ()=0
 same as Resample More...
 
virtual void SetRebuildNeighborDataModContext ()=0
 Update the neighbouring weight lists on selection change. More...
 
virtual void SetRebuildSelectedWeightDataModContext ()=0
 This forces the selected control points to have their weights rebuilt this should be called when you change the str/scaling etc of a control point. More...
 
virtual int NumberOfVertices (INode *node)=0
 returns the number of deformed vertices More...
 
virtual int VertNumberWeights (INode *node, int vindex)=0
 this returns the number of weights of a vertex More...
 
virtual float VertGetWeight (INode *node, int vindex, int windex)=0
 this returns a particular weight of a vertex More...
 
virtual float VertGetDistance (INode *node, int vindex, int windex)=0
 this returns a particular distance of a vertex More...
 
virtual int VertGetControlPoint (INode *node, int vindex, int windex)=0
 this returns the control point that owns this weight More...
 
virtual int VertGetWrapNode (INode *node, int vindex, int windex)=0
 this returns the wrap node that owns this weight More...
 
virtual void Reset ()=0
 This forces the modifier to reset itself.
More...
 
virtual void ConvertToSkin (BOOL silent)=0
 This takes the weighting generated from a wrap modifier and turns it into a skin modifier. More...
 
- Public Member Functions inherited from FPMixinInterface
 FPMixinInterface ()
 
virtual LifetimeType LifetimeControl ()
 
virtual CoreExport bool RegisterNotifyCallback (InterfaceNotifyCallback *incb)
 
virtual void UnRegisterNotifyCallback (InterfaceNotifyCallback *incb)
 
CoreExport ~FPMixinInterface ()
 
virtual BaseInterfaceGetInterface (Interface_ID id)
 
virtual FPInterfaceDescGetDescByID (Interface_ID id)
 
virtual Interface_ID GetID ()
 
- Public Member Functions inherited from FPInterface
virtual CoreExport FPStatus Invoke (FunctionID fid, TimeValue t=0, FPParams *params=NULL)
 
virtual FPStatus Invoke (FunctionID fid, FPParams *params)
 
virtual CoreExport FPStatus Invoke (FunctionID fid, TimeValue t, FPValue &result, FPParams *params=NULL)
 
virtual FPStatus Invoke (FunctionID fid, FPValue &result, FPParams *params=NULL)
 
virtual CoreExport FunctionID FindFn (const MCHAR *name)
 
virtual CoreExport BOOL IsEnabled (FunctionID actionID)
 
virtual CoreExport BOOL IsChecked (FunctionID actionID)
 
virtual CoreExport BOOL IsVisible (FunctionID actionID)
 
virtual CoreExport FunctionID GetIsEnabled (FunctionID actionID)
 
virtual CoreExport FunctionID GetIsChecked (FunctionID actionID)
 
virtual CoreExport FunctionID GetIsVisible (FunctionID actionID)
 
virtual ActionTableGetActionTable ()
 
virtual void EnableActions (BOOL onOff)
 
- Public Member Functions inherited from BaseInterface
virtual UtilExport ~BaseInterface ()
 Destructor. More...
 
virtual BaseInterfaceAcquireInterface ()
 
virtual void ReleaseInterface ()
 
virtual void DeleteInterface ()
 
virtual BaseInterfaceCloneInterface (void *remapDir=nullptr)
 
- Public Member Functions inherited from InterfaceServer
virtual UtilExport ~InterfaceServer ()
 Destructor. More...
 
template<class InterfaceType >
InterfaceType * GetTypedInterface ()
 

Additional Inherited Members

- Public Types inherited from BaseInterface
enum  LifetimeType { noRelease , immediateRelease , wantsRelease , serverControlled }
 
- Static Public Member Functions inherited from MaxHeapOperators
static UtilExport voidoperator new (size_t size)
 Standard new operator used to allocate objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e)
 Standard new operator used to allocate objects if there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate objects that takes the type of memory, filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate arrays of objects. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void operator delete (void *ptr)
 Standard delete operator used to deallocate an object If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an object If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an object that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, void *placement_ptr)
 Placement new operator. More...
 
static UtilExport void operator delete (void *ptr, void *placement_ptr)
 Placement delete operator. More...
 
static UtilExport voidaligned_malloc (size_t size, size_t alignment)
 Allocates memory on a specified alignment boundary. More...
 
static UtilExport voidaligned_realloc (void *ptr, size_t size, size_t alignment)
 Reallocates memory on a specified alignment boundary. More...
 
static UtilExport void aligned_free (void *ptr)
 Frees a block of memory that was allocated with aligned_malloc/aligned_realloc. More...
 
- Static Public Attributes inherited from FPInterface
static CoreExport FPInterfaceDesc nullInterface
 
- Protected Member Functions inherited from FPMixinInterface
 FPMixinInterface (const FPMixinInterface &rhs)
 
FPMixinInterfaceoperator= (const FPMixinInterface &rhs)
 
- Protected Member Functions inherited from FPInterface
virtual FPStatus _dispatch_fn (FunctionID fid, TimeValue t, FPValue &result, FPParams *p)
 
- Protected Attributes inherited from FPMixinInterface
Tab< InterfaceNotifyCallback * > * interfaceNotifyCBs
 

Detailed Description

IMeshDeformPWMod is the interface into the Skin Wrap(Mesh) modifier.

Member Function Documentation

◆ GetDesc()

FPInterfaceDesc* GetDesc ( )
virtual
Remarks
Returns a pointer to the class which contains the interface metadata.

Implements FPInterface.

◆ SelectVertices()

virtual void SelectVertices ( int  whichWrapMesh,
BitArray selList,
BOOL  updateViews 
)
pure virtual

This selects the control point cage vertices.

Parameters
whichWrapMesh- this is which wrap mesh you are getting the selection from each wrap mesh keeps it own selection list
selList- the bitarray representing the selection
updateViews- whether to update the view and the modifier

◆ GetSelectedVertices()

virtual BitArray* GetSelectedVertices ( int  whichWrapMesh)
pure virtual

This returns the current selected control points on the cage.

Parameters
whichWrapMesh- this is which wrap mesh you are setting the selection to each wrap mesh keeps it own selection list

◆ GetNumberControlPoints()

virtual int GetNumberControlPoints ( int  whichWrapMesh)
pure virtual

This returns the number of control points on the cage.

Parameters
whichWrapMesh- this is which wrap mesh you are getting the number of control pointss from

◆ GetPointScale()

virtual Point3* GetPointScale ( int  whichWrapMesh,
int  index 
)
pure virtual

This returns the local scale factor for a control point.

The total influence area is equal to the control points distance * global distance * local scale

Parameters
whichWrapMesh- this is which wrap mesh you are getting the info from
index- this is which control point you want to get

◆ SetPointScale()

virtual void SetPointScale ( int  whichWrapMesh,
int  index,
Point3  scale 
)
pure virtual

This lets you set a control points local scale.

Parameters
whichWrapMesh- this is which wrap mesh you are setting the info to
index- this is the index of the point you want to set
scale- this is the scale of the point

◆ GetPointStr()

virtual float GetPointStr ( int  whichWrapMesh,
int  index 
)
pure virtual

this returns the strength of a control point

Parameters
whichWrapMesh- this is which wrap mesh you are getting the info from
index- this is the index of the control point you want to get

◆ SetPointStr()

virtual void SetPointStr ( int  whichWrapMesh,
int  index,
float  str 
)
pure virtual

This lets you set the strength of a control point.

Parameters
whichWrapMesh- this is which wrap mesh you are setting the info to
index- this is the index of the control point you want to set
str- this is the strength

◆ GetPointInitialTM()

virtual Matrix3 GetPointInitialTM ( int  whichWrapMesh,
int  index 
)
pure virtual

This returns the initial tm of the control point.

Parameters
whichWrapMesh- this is which wrap mesh you are getting the info from
index- the control point index

◆ GetPointCurrentTM()

virtual Matrix3 GetPointCurrentTM ( int  whichWrapMesh,
int  index 
)
pure virtual

This returns the current tm of the control point.

Parameters
whichWrapMesh- this is which wrap mesh you are getting the info from
index- the control point index

◆ GetPointDist()

virtual float GetPointDist ( int  whichWrapMesh,
int  index 
)
pure virtual

This returns the size of the envelope of a control point.

Parameters
whichWrapMesh- this is which wrap mesh you are getting the info from
index- the control point index

◆ GetPointXVert()

virtual int GetPointXVert ( int  whichWrapMesh,
int  index 
)
pure virtual

this is the vertex that forms the x axis, the z axis is the normal

Parameters
whichWrapMesh- this is which wrap mesh you are getting the info from
index- the control point index

◆ MirrorSelectedVerts()

virtual void MirrorSelectedVerts ( )
pure virtual

This mirrors the current selected control points.

This is identical to pushing the Mirro button in the UI

◆ BakeControlPoints()

virtual void BakeControlPoints ( )
pure virtual

This bakes the control point data into the app data of the node that is the control mesh.

This is identical to pushing the Bake button in the UI

◆ RetreiveControlPoints()

virtual void RetreiveControlPoints ( )
pure virtual

This retrieves the control point data from the app data of the node that is the control mesh.

This is identical to pushing the Retrieve button in the UI

◆ Resample()

virtual void Resample ( )
pure virtual

This forces the modifier to resample itself.

This will force all weights to be recomputed

◆ SetResampleModContext()

virtual void SetResampleModContext ( )
pure virtual

same as Resample

◆ SetRebuildNeighborDataModContext()

virtual void SetRebuildNeighborDataModContext ( )
pure virtual

Update the neighbouring weight lists on selection change.

The system keep tracks of a potential weight lists by using neighbor data. Any time a selection is changed this potential weight list needs to be updated use this function to update that list.
This should be called after any control point selection change.

◆ SetRebuildSelectedWeightDataModContext()

virtual void SetRebuildSelectedWeightDataModContext ( )
pure virtual

This forces the selected control points to have their weights rebuilt this should be called when you change the str/scaling etc of a control point.

◆ NumberOfVertices()

virtual int NumberOfVertices ( INode node)
pure virtual

returns the number of deformed vertices

Parameters
node- the node that owns the local data

◆ VertNumberWeights()

virtual int VertNumberWeights ( INode node,
int  vindex 
)
pure virtual

this returns the number of weights of a vertex

Parameters
node- the node that owns the local data
vindex- the vertex index that you want to get the number of weights from

◆ VertGetWeight()

virtual float VertGetWeight ( INode node,
int  vindex,
int  windex 
)
pure virtual

this returns a particular weight of a vertex

Parameters
node- the node that owns the local data
vindex- the vertex index that you want to get the weight
windex- the weight index you want to get

◆ VertGetDistance()

virtual float VertGetDistance ( INode node,
int  vindex,
int  windex 
)
pure virtual

this returns a particular distance of a vertex

Parameters
node- the node that owns the local data
vindex- the vertex index that you want to get the weight
windex- the weight index you want to get

◆ VertGetControlPoint()

virtual int VertGetControlPoint ( INode node,
int  vindex,
int  windex 
)
pure virtual

this returns the control point that owns this weight

Parameters
node- the node that owns the local data
vindex- the vertex index that you want to get the weight
windex- the weight index you want to get

◆ VertGetWrapNode()

virtual int VertGetWrapNode ( INode node,
int  vindex,
int  windex 
)
pure virtual

this returns the wrap node that owns this weight

Parameters
node- the node that owns the local data
vindex- the vertex index that you want to get the weight
windex- the weight index you want to get

◆ Reset()

virtual void Reset ( )
pure virtual

This forces the modifier to reset itself.

This is identical to pressing the reset button in the UI. This will force all weights and param space to be recomputed

◆ ConvertToSkin()

virtual void ConvertToSkin ( BOOL  silent)
pure virtual

This takes the weighting generated from a wrap modifier and turns it into a skin modifier.

This requires that the modifier not be instances and all the wrap objects be driven by skin

Parameters
silent- this suppresses any warning/error message boxes