Public Types | Public Member Functions

ISplineIKControl Class Reference

Search for all occurrences

Detailed Description

This class is only available in release 5 or later.



This class refers to the new modifier which, when assigned to a spline (or a NURBS) curve, generates a certain number of helper objects attached to the knots of the curve.

Spline IK Control Modifier (works for NURBS Point curve and NURBS CV Curve too): This is a modifier and can be used independently of the SplineIK. When applied to a spline, this modifier creates one point helper for each knot of the spline. The user can then animate the spline by simply animating (position and rotation) the point helpers. Thus to animate the spline, the user wouldn't need to get into the sub-object level.

There are three options Link Types, presented as a set of 3 radio buttons:

Link All in Hierarchy (default):

Makes a helper a child to its immediately previous helper. So, Helper#2 is child to Helper#1, Helper#3 is child to Helper#2, and so on. Helper#1 is still child to the world. Translation and rotation of a helper then "solidly" moves/rotates part of the spline _subsequent_ to the selected helper. The part of the spline previous to the helper is unaffected.

Link All to Root

Makes all helpers children to Helper#1, i.e., knot#1. Helper#1 can be position constrained or linked to another object, like it is possible above. Additionally individual helpers can be moved and rotated without any other helper being affect.

No Linking

All helpers are independent -- not linked to any other helper -- so that they can be moved and rotated without any other helper being affect.

"Create Helpers" button:

Helpers are not automatically added to the spline on the assignment of the modifier. To do that the user need to press the "Create Helpers" button.

Helper Display:

These are the all the options:

If the user adds ("insert") a knot to the spline, a new helper object is automatically created at that knotpoint.

Furthermore, please refer to the implementation project which is in /maxsdk/samples/modifiers/splineikcontrol.

The following helper methods have been added to istdplug.h for general access:

#include <istdplug.h>

Inheritance diagram for ISplineIKControl:
Inheritance graph
[legend]

List of all members.

Public Types

enum   { SplineIKControl_params }
enum   {
  sm_point_node_list, sm_helpersize, sm_helper_centermarker, sm_helper_axistripod,
  sm_helper_cross, sm_helper_box, sm_helper_screensize, sm_helper_drawontop,
  sm_link_types
}
enum   {
  getHelperCount, getKnotCount, link_allToRoot, link_allinHierarchy,
  link_none, create_hlpr
}

Public Member Functions

BEGIN_FUNCTION_MAP  FN_0 (getHelperCount, TYPE_INT, GetHelperCount)
  FN_0 (getKnotCount, TYPE_INT, GetKnotCount)
  FN_0 (link_allToRoot, TYPE_BOOL, LinkToRoot)
  FN_0 (link_allinHierarchy, TYPE_BOOL, LinkInHierarchy)
  FN_0 (link_none, TYPE_BOOL, UnLink)
  FN_1 (create_hlpr, TYPE_BOOL, CreateHelpers, TYPE_INT)
END_FUNCTION_MAP FPInterfaceDesc GetDesc ()
virtual int  GetHelperCount ()=0
virtual int  GetKnotCount ()=0
virtual BOOL  LinkToRoot ()=0
virtual BOOL  LinkInHierarchy ()=0
virtual BOOL  UnLink ()=0
virtual BOOL  CreateHelpers (int knotCt)=0

Member Enumeration Documentation

anonymous enum
anonymous enum
anonymous enum

Member Function Documentation

BEGIN_FUNCTION_MAP FN_0 ( getHelperCount  ,
TYPE_INT  ,
GetHelperCount   
)
FN_0 ( getKnotCount  ,
TYPE_INT  ,
GetKnotCount   
)
FN_0 ( link_allToRoot  ,
TYPE_BOOL  ,
LinkToRoot   
)
FN_0 ( link_allinHierarchy  ,
TYPE_BOOL  ,
LinkInHierarchy   
)
FN_0 ( link_none  ,
TYPE_BOOL  ,
UnLink   
)
FN_1 ( create_hlpr  ,
TYPE_BOOL  ,
CreateHelpers  ,
TYPE_INT   
)
END_FUNCTION_MAP FPInterfaceDesc* GetDesc ( ) [virtual]
Remarks:
Returns a pointer to the class which contains the interface metadata.

Implements FPInterface.

virtual int GetHelperCount ( ) [pure virtual]
Remarks:
Obtain the number of helpers created

virtual int GetKnotCount ( ) [pure virtual]
Remarks:
Gets the total number of knots for spline.

virtual BOOL LinkToRoot ( ) [pure virtual]
Remarks:
Makes all helpers children to Helper#1, i.e., knot#1. Helper#1 can be position constrained or linked to another object, like it is possible above. Additionally individual helpers can be moved and rotated without any other helper being affected.

virtual BOOL LinkInHierarchy ( ) [pure virtual]
Remarks:
Makes a helper a child to its immediately previous helper. So, Helper#2 is child to Helper#1, Helper#3 is child to Helper#2, and so on. Helper#1 is still child to the world. Translation and rotation of a helper then "solidly" moves/rotates part of the spline _subsequent_ to the selected helper. The part of the spline previous to the helper is unaffected.

virtual BOOL UnLink ( ) [pure virtual]
Remarks:
All helpers are independent - not linked to any other helper so that they can be moved and rotated without any other helper being affected.

virtual BOOL CreateHelpers ( int  knotCt ) [pure virtual]
Remarks:
Helpers are not automatically added to the spline on the assignment of the modifier. To do that the user need to press the "<b>Create Helpers</b>" button.

ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl
ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl ISplineIKControl