ISkinPose Class Reference

#include <iSkinPose.h>

Class Description

Description:
Interface class for setting and getting a special,

non-animated, transformation pose, SkinPose.

+ Inheritance diagram for ISkinPose:

Public Types

enum  FuncID {
  kSkinPosGet, kSkinPosSet, kSkinRotGet, kSkinRotSet,
  kSkinScaleGet, kSkinScaleSet, kSkinScaleOrientGet, kSkinScaleOrientSet,
  kSkinPosEnabledGet, kSkinPosEnabledSet, kSkinRotEnabledGet, kSkinRotEnabledSet,
  kSkinScaleEnabledGet, kSkinScaleEnabledSet, kSkinPoseModeGet, kSkinPoseModeSet,
  kSetSkinPose, kAssumeSkinPose
}
 
- Public Types inherited from BaseInterface
enum  LifetimeType { noRelease, immediateRelease, wantsRelease, serverControlled }
 

Public Member Functions

virtual Point3 SkinPos () const =0
 
virtual RotationValue SkinRot () const =0
 
virtual ScaleValue SkinScale () const =0
 
virtual void SetSkinPos (const Point3 &)=0
 
virtual void SetSkinRot (const RotationValue &)=0
 
virtual void SetSkinRot (const Point3 &)=0
 
virtual void SetSkinScaleFactors (const Point3 &)=0
 
virtual void SetSkinScaleOrient (const Quat &)=0
 
virtual bool IsSkinPosEnabled () const =0
 
virtual bool IsSkinRotEnabled () const =0
 
virtual bool IsSkinScaleEnabled () const =0
 
virtual bool SkinPoseMode () const =0
 
virtual void EnableSkinPos (bool)=0
 
virtual void EnableSkinRot (bool)=0
 
virtual void EnableSkinScale (bool)=0
 
virtual void SetSkinPoseMode (bool)=0
 
virtual void SetSkinPose (TimeValue)=0
 
virtual void AssumeSkinPose (TimeValue)=0
 
virtual void TMSetValue (TimeValue, SetXFormPacket &)=0
 
Point3 SkinRotAngles () const
 
Point3 SkinScaleFactors () const
 
Quat SkinScaleOrient () const
 
void SetSkinScale (const ScaleValue &sv)
 
void SetSkinRotAngles (const Point3 &)
 
bool ShowSkinPos () const
 
bool ShowSkinRot () const
 
bool ShowSkinScale () const
 
bool IsACompEnabled () const
 
virtual bool NeedToSave () const =0
 
virtual IOResult Save (ISave *) const =0
 
virtual IOResult Load (ILoad *)=0
 
virtual void Copy (const ISkinPose &)=0
 
virtual const voidObjectOf (void *) const =0
 
virtual voidObjectOf (void *)=0
 
FPInterfaceDescGetDesc ()
 
- 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=NULL)
 
- Public Member Functions inherited from InterfaceServer
virtual UtilExport ~InterfaceServer ()
 Destructor. More...
 

Static Public Member Functions

static ISkinPoseGetISkinPose (INode &n)
 
- 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...
 

Additional Inherited Members

- 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
 

Member Enumeration Documentation

enum FuncID
Enumerator
kSkinPosGet 
kSkinPosSet 
kSkinRotGet 
kSkinRotSet 
kSkinScaleGet 
kSkinScaleSet 
kSkinScaleOrientGet 
kSkinScaleOrientSet 
kSkinPosEnabledGet 
kSkinPosEnabledSet 
kSkinRotEnabledGet 
kSkinRotEnabledSet 
kSkinScaleEnabledGet 
kSkinScaleEnabledSet 
kSkinPoseModeGet 
kSkinPoseModeSet 
kSetSkinPose 
kAssumeSkinPose 
356  {
361  // When SkinPosEnabled is false, SkinPoseMode, SetSkinPose, and
362  // AssumeSkinPose will disregard the position component.
363  // Similar to SkinRotEnabled and SkinScaleEnabled.
368  kSetSkinPose,
370  };
Definition: iSkinPose.h:365
Definition: iSkinPose.h:367
Definition: iSkinPose.h:367
Definition: iSkinPose.h:365
Definition: iSkinPose.h:369
Definition: iSkinPose.h:357
Definition: iSkinPose.h:368
Definition: iSkinPose.h:360
Definition: iSkinPose.h:359
Definition: iSkinPose.h:364
Definition: iSkinPose.h:366
Definition: iSkinPose.h:358
Definition: iSkinPose.h:360
Definition: iSkinPose.h:366
Definition: iSkinPose.h:364
Definition: iSkinPose.h:357
Definition: iSkinPose.h:358
Definition: iSkinPose.h:359

Member Function Documentation

static ISkinPose* GetISkinPose ( INode n)
inlinestatic
Remarks
Method to obtain the interface pointer for a given INode.

Parameters:
INode& n

The node having the transformation pose.

Returns
ISkinPose*

A pointer to this interface class.

43  {
44  return static_cast<ISkinPose*>(n.GetInterface(SKINPOSE_INTERFACE)); }
Definition: iSkinPose.h:31
BaseInterface * GetInterface(Interface_ID id)
Definition: inode.h:1704
#define SKINPOSE_INTERFACE
Definition: iSkinPose.h:24
virtual Point3 SkinPos ( ) const
pure virtual
Remarks
Method to obtain the position part of the transformation pose.

Returns
Point3

The position of the pose expressed as 3-vector (Point3).

virtual RotationValue SkinRot ( ) const
pure virtual
Remarks
Method to obtain the rotation part of the transformation pose.

Returns
RotationValue

The rotation of the pose expressed as an RotationValue, which can be quaternion or Euler angle type.

virtual ScaleValue SkinScale ( ) const
pure virtual
Remarks
Method to obtain the scale part of the transformation pose.

Returns
ScaleValue

The scale of the pose expressed as possibly unequal values along the principal axes of a coordinate system whose orientation is defined by a quaternion.

virtual void SetSkinPos ( const Point3 )
pure virtual
Remarks
Method to set the pose position to a given point.

Parameters:
Point3

The desired point for the pose.

virtual void SetSkinRot ( const RotationValue )
pure virtual
Remarks
Method to set the pose rotation to a given value.

Parameters:
RotationValue

The rotation of the pose expressed as an Euler angle or quaternion type.

virtual void SetSkinRot ( const Point3 )
pure virtual
Remarks
Method to set the pose rotation to a given Euler angle.

Parameters:
Point3

The rotation of the pose expressed as an Euler angle vector.

virtual void SetSkinScaleFactors ( const Point3 )
pure virtual
Remarks
Method to set the potentially differing pose scale factors.

Parameters:
Point3

The point containing the scale factors x, y, and z.

virtual void SetSkinScaleOrient ( const Quat )
pure virtual
Remarks
Method to set the orientation of the scale factor axes.

Parameters:
Quat&

The quaternion specifying the orientation of the scale factor axes.

virtual bool IsSkinPosEnabled ( ) const
pure virtual
Remarks
Method to determine if the pose position is enabled.

Returns
bool

If true, the pose position is enabled.

If false, the pose position is disabled.

virtual bool IsSkinRotEnabled ( ) const
pure virtual
Remarks
Method to determine if the pose rotation is enabled.

Returns
bool

If true, the pose rotation is enabled.

If false, the pose rotation is disabled.

virtual bool IsSkinScaleEnabled ( ) const
pure virtual
Remarks
Method to determine if the pose scale is enabled.

Returns
bool

If true, the pose scale is enabled.

If false, the pose scale is disabled.

virtual bool SkinPoseMode ( ) const
pure virtual
Remarks
Member function yielding a Boolean whether the node is in the Skin Pose mode. In this mode, the node will assume the skin pose, subject to "enabled" flags of the three (position, rotation, and scale) parts, as its transformation, rather than from the normal channel, the transform controller.

Returns
bool

If true, the node transformation is in the skin pose mode.

If false, it is in the normal mode.

virtual void EnableSkinPos ( bool  )
pure virtual
Remarks
Sets the state of the pose position transform.

Parameters:
bool

If true, the pose position transform is enabled.

If false, the pose position transform is disabled.

virtual void EnableSkinRot ( bool  )
pure virtual
Remarks
Sets the state of the pose rotation transform.

Parameters:
bool

If true, the pose rotation transform is enabled.

If false, the pose rotation transform is disabled.

virtual void EnableSkinScale ( bool  )
pure virtual
Remarks
Sets the state of the pose scale transform.

Parameters:
bool

If true, the pose scale transform is enabled.

If false, the pose scale transform is disabled.

virtual void SetSkinPoseMode ( bool  )
pure virtual
Remarks
Puts the node transform in the skin pose or normal mode.

Parameters:
bool

If true, the node transform is put in the skin pose mode.

If false, the node transform resumes to the normal mode.

virtual void SetSkinPose ( TimeValue  )
pure virtual
Remarks
Sets the state of all three non-animated skin pose transforms, subject to the "enabled" flags, to the animated normal pose at a particular time.

Parameters:
TimeValue

Time at which the animated normal pose is used as the target to set the skin pose transforms.

virtual void AssumeSkinPose ( TimeValue  )
pure virtual
Remarks
Sets the state of all three animated normal pose transforms, subject to the "enabled" flags, at a particular time, to the non-animated skin pose transforms.

Parameters:
TimeValue

Time at which to set the normal pose transforms.

virtual void TMSetValue ( TimeValue  ,
SetXFormPacket  
)
pure virtual
Remarks
This is a utility method used to set value to the node transform. According to whether it is in the skin pose mode and the three "enabled" flags, it will set value to the TM controller or the skin pose transforms.

Parameters:
TimeValue

Time at which to set the pose transform.

SetXFormPacket&

Controller values for the transform.

Point3 SkinRotAngles ( ) const
inline
Remarks
Method to obtaion the Euler angles of the pose rotation.

Returns
Point3

The Euler angles about x, y, and z.

391 {
392  return SkinRot().Euler() * RAD_TO_DEG;
393 }
Point3 Euler(EulerType et=kXYZ) const
Definition: euler.h:191
#define RAD_TO_DEG
The coefficient to convert the value of an angle in radians into degrees.
Definition: trig.h:21
virtual RotationValue SkinRot() const =0
Point3 SkinScaleFactors ( ) const
inline
Remarks
Method to obtain the scale factors of the pose transformation.

Returns
Point3

The scale factors along the x, y, and z axes.

396 {
397  return SkinScale().s;
398 }
virtual ScaleValue SkinScale() const =0
Point3 s
Definition: control.h:76
Quat SkinScaleOrient ( ) const
inline
Remarks
Method to obtain the scale factor orientation of the pose transformation.

Returns
Quat

The axis and angle of the scale factor orientation.

401 {
402  return SkinScale().q;
403 }
virtual ScaleValue SkinScale() const =0
Quat q
Definition: control.h:77
void SetSkinScale ( const ScaleValue sv)
inline
Remarks
Method to set the scale values for the pose transform.

Parameters:
ScaleValue&

The scale of the pose expressed as possibly unequal values along the principal axes of a coordinate system whose orientation is defined by a quaternion.
406 {
408  SetSkinScaleOrient(sv.q);
409 }
virtual void SetSkinScaleFactors(const Point3 &)=0
virtual void SetSkinScaleOrient(const Quat &)=0
Point3 s
Definition: control.h:76
Quat q
Definition: control.h:77
void SetSkinRotAngles ( const Point3 p)
inline
Remarks
Method to set the rotation angles for the pose transform.

Parameters:
Point3&

The Euler angles of the pose rotation.

412 {
413  SetSkinRot(p * DEG_TO_RAD);
414 }
#define DEG_TO_RAD
The coefficient to convert the value of an angle in degrees into radians.
Definition: trig.h:19
virtual void SetSkinRot(const RotationValue &)=0
bool ShowSkinPos ( ) const
inline
Remarks
Method to determine if the pose position component is enabled and the node is in the skin pose mode.

Returns
bool

If true, the position of the node transform will come from the skin pose.

If false, the position of the node transform comes from the normal TM controller.

417 {
418  return SkinPoseMode() && IsSkinPosEnabled();
419 }
virtual bool SkinPoseMode() const =0
virtual bool IsSkinPosEnabled() const =0
bool ShowSkinRot ( ) const
inline
Remarks
Method to determine if the pose rotation component is enabled and the node is in the skin pose mode.

Returns
bool

If true, the rotation of the node transform will come from the skin pose.

If false, the rotation of the node transform comes from the normal TM controller.

422 {
423  return SkinPoseMode() && IsSkinRotEnabled();
424 }
virtual bool SkinPoseMode() const =0
virtual bool IsSkinRotEnabled() const =0
bool ShowSkinScale ( ) const
inline
Remarks
Method to determine if the pose scale component is enabled and the node is in the skin pose mode.

Returns
bool

If true, the scale of the node transform will come from the skin pose.

If false, the scale of the node transform comes from the normal TM controller.

427 {
428  return SkinPoseMode() && IsSkinScaleEnabled();
429 }
virtual bool SkinPoseMode() const =0
virtual bool IsSkinScaleEnabled() const =0
bool IsACompEnabled ( ) const
inline
Remarks
Method to determine if one or more pose components; position, rotation, or scale are enabled.

Returns
bool

If true, one or more components are enabled.

If false, none of the components are enabled.

432 {
434 }
virtual bool IsSkinPosEnabled() const =0
virtual bool IsSkinRotEnabled() const =0
virtual bool IsSkinScaleEnabled() const =0
virtual bool NeedToSave ( ) const
pure virtual
Remarks
Method to indicate that a post transform component has changed from the default and needs to be saved.

Returns
bool

If true, a pose component has changed.

If false, no pose component has changed.

virtual IOResult Save ( ISave ) const
pure virtual
Remarks
Method to write pose data to a file.

Parameters:
ISave*

Pointer for use in calling write methods.

Returns
IOResult

If IO_OK, the method succeeded.

If IO_ERROR, the method was unsuccessful.

virtual IOResult Load ( ILoad )
pure virtual
Remarks
Method to read pose data from a file.

Parameters:
ILoad*

Pointer for use in calling read methods.

Returns
IOResult

If IO_OK, the method succeeded.

If IO_ERROR, the method was unsuccessful.

virtual void Copy ( const ISkinPose )
pure virtual
Remarks
Method to copy data members from an existing ISkinPose instance to the current one.

Parameters:
ISkinPose&

Reference to instance of this class to copy from.

virtual const void* ObjectOf ( void ) const
pure virtual
Remarks
Determines whether this is a const object of a particular subclass derived from ISkinPose. It is used for the internal implementation purpose.

Parameters:
void*

Pointer to the subclass identifier to test.

Returns
void*

Const pointer to subclass.

virtual void* ObjectOf ( void )
pure virtual
Remarks
Determines whether this is an object of a particular subclass derived from ISkinPose. It is used for the internal implementation purpose.

Parameters:
void*

Pointer to the subclass identifier to test.

Returns
void*

Pointer to subclass.

FPInterfaceDesc* GetDesc ( )
inlinevirtual
Remarks
Method to obtain the function publishing interface description.

Returns
FPInterfaceDesc *

Pointer to the interface descriptor.

Implements FPInterface.

352 { return GetDescByID(SKINPOSE_INTERFACE); }
virtual FPInterfaceDesc * GetDescByID(Interface_ID id)
Definition: ifnpub.h:613
#define SKINPOSE_INTERFACE
Definition: iSkinPose.h:24