3ds Max C++ API Reference
IProjectionIntersector Class Referenceabstract

#include <IProjectionMod.h>

+ Inheritance diagram for IProjectionIntersector:

Public Types

enum  { FINDCLOSEST_CAGED =1 , FINDCLOSEST_IGNOREBACKFACING =2 }
 

Public Member Functions

 IProjectionIntersector ()
 
virtual ~IProjectionIntersector ()
 
virtual void DeleteThis ()
 
virtual BOOL InitRoot (MNMesh *root, MNMesh *cage, Matrix3 &objectToWorldTM)=0
 
virtual BOOL InitRoot (ObjectWrapper &root, ObjectWrapper &cage, Matrix3 &objectToWorldTM)=0
 
virtual BOOL RootValid ()=0
 
virtual BOOL InitLeaf (MNMesh *leaf, Matrix3 &objectToWorldTM)=0
 
virtual BOOL InitLeaf (ObjectWrapper &leaf, Matrix3 &objectToWorldTM)=0
 
virtual BOOL LeafValid ()=0
 
virtual void Free ()=0
 
virtual BOOL RootClosestFace (Ray &pointAndNormal, int flags, float &dist, DWORD &rootFaceIndex, Tab< float > &rootFaceBary)=0
 
virtual BOOL LeafIntersectRay (Ray &ray, float &dist, DWORD &leafFaceIndex, Tab< float > &leafFaceBary)=0
 
virtual BOOL LeafIntersectRay (DWORD rootFaceIndex, Point3 &rootFaceBary, float &dist, DWORD &leafFaceIndex, Tab< float > &leafFaceBary)=0
 

Additional Inherited Members

- 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...
 

Detailed Description

Description
provides an interface to the Projection Intersector which provides ray-tracing tools intended for use by the plug-ins.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
FINDCLOSEST_CAGED 
FINDCLOSEST_IGNOREBACKFACING 
@ FINDCLOSEST_CAGED
Definition: IProjectionMod.h:532
@ FINDCLOSEST_IGNOREBACKFACING
Definition: IProjectionMod.h:532

Constructor & Destructor Documentation

◆ IProjectionIntersector()

502 {}

◆ ~IProjectionIntersector()

virtual ~IProjectionIntersector ( )
inlinevirtual
503 {}

Member Function Documentation

◆ DeleteThis()

virtual void DeleteThis ( )
inlinevirtual
504 {}

◆ InitRoot() [1/2]

virtual BOOL InitRoot ( MNMesh root,
MNMesh cage,
Matrix3 objectToWorldTM 
)
pure virtual
Parameters
root- The root is normally the object on which the projection modifier is applied.
cage- The cage is optional, it may be NULL or empty; if supplied, the cage must have the same topology as the root.
objectToWorldTM- The object to world transform matrix.

◆ InitRoot() [2/2]

virtual BOOL InitRoot ( ObjectWrapper root,
ObjectWrapper cage,
Matrix3 objectToWorldTM 
)
pure virtual
Parameters
root- The root is normally the object on which the projection modifier is applied.
cage- The cage is optional, it may be NULL or empty; if supplied, the cage must have the same topology as the root.
objectToWorldTM- The object to world transform matrix.

◆ RootValid()

virtual BOOL RootValid ( )
pure virtual
Returns
true if initialized, false when freed

◆ InitLeaf() [1/2]

virtual BOOL InitLeaf ( MNMesh leaf,
Matrix3 objectToWorldTM 
)
pure virtual
Parameters
leaf- A leaf is normally one of the objects targeted by the projection modifier.
objectToWorldTM- The object to world transform matrix.

◆ InitLeaf() [2/2]

virtual BOOL InitLeaf ( ObjectWrapper leaf,
Matrix3 objectToWorldTM 
)
pure virtual
Parameters
leaf- A leaf is normally one of the objects targeted by the projection modifier.
objectToWorldTM- The object to world transform matrix.

◆ LeafValid()

virtual BOOL LeafValid ( )
pure virtual
Returns
true if initialized, false when freed

◆ Free()

virtual void Free ( )
pure virtual
Remarks
releases memory allocated by the Init functions

◆ RootClosestFace()

virtual BOOL RootClosestFace ( Ray pointAndNormal,
int  flags,
float &  dist,
DWORD &  rootFaceIndex,
Tab< float > &  rootFaceBary 
)
pure virtual
Remarks
Given a point in root object space, and a normal for the point (optional - may be zero), find the closest face, and barycentric coordinates of the point as projected onto the face
Precondition
Root functions: Require the root be initialized first

◆ LeafIntersectRay() [1/2]

virtual BOOL LeafIntersectRay ( Ray ray,
float &  dist,
DWORD &  leafFaceIndex,
Tab< float > &  leafFaceBary 
)
pure virtual
Remarks
Find an intersection on a leaf, given a ray
Precondition
Require a leaf be initialized first

◆ LeafIntersectRay() [2/2]

virtual BOOL LeafIntersectRay ( DWORD  rootFaceIndex,
Point3 rootFaceBary,
float &  dist,
DWORD &  leafFaceIndex,
Tab< float > &  leafFaceBary 
)
pure virtual
Remarks
Find an intersection on a leaf, given a point on the root mesh
Precondition
Require that BOTH the root and a leaf are initialized