Class ISkinPose

3DS Max Plug-In SDK

Class ISkinPose : public FPMixinInterface

 

Description:

 

Interface class for setting and getting a special,

non-animated, transformation pose, SkinPose.

 

Methods:

 

Prototype:

static ISkinPose* GetISkinPose(INode& n)

 

Remarks:

Method to obtain the interface pointer for a given INode.

 

Parameters:

INode& n

The node having the transformation pose.

 

Return Value:

ISkinPose*

A pointer to this interface class.

 

 

Prototype:

virtual Point3 SkinPos() const = 0;

 

Remarks:

Method to obtain the position part of the transformation pose.

 

Return Value:

Point3

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

 

 

Prototype:

virtual RotationValue SkinRot() const = 0;

 

Remarks:

Method to obtain the rotation part of the transformation pose.

 

Return Value:

RotationValue

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

 

 

Prototype:

virtual ScaleValue SkinScale() const = 0;

 

Remarks:

Method to obtain the scale part of the transformation pose.

 

Return Value:

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.

 

 

Prototype:

virtual void SetSkinPos(const Point3&) = 0;

 

Remarks:

Method to set the pose position to a given point.

 

Parameters:

Point3

The desired point for the pose.

 

 

Prototype:

virtual void SetSkinRot(const RotationValue&) = 0;

 

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.

 

 

Prototype:

virtual void SetSkinRot(const Point3&) = 0;

 

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.

 

 

Prototype:

virtual void SetSkinScaleFactors(const Point3&) = 0;

 

Remarks:

Method to set the potentially differing pose scale factors.

 

Parameters:

Point3

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

 

 

Prototype:

virtual void SetSkinScaleOrient(const Quat&) = 0;

 

Remarks:

Method to set the orientation of the scale factor axes.

 

Parameters:

Quat&

The quaternion specifying the orientation of the scale factor axes.

 

 

Prototype:

virtual bool IsSkinPosEnabled() const = 0;

 

Remarks:

Method to determine if the pose position is enabled.

 

Return Value:

bool

If true, the pose position is enabled.

If false, the pose position is disabled.

 

 

Prototype:

virtual bool IsSkinRotEnabled() const = 0;

 

Remarks:

Method to determine if the pose rotation is enabled.

 

Return Value:

bool

If true, the pose rotation is enabled.

If false, the pose rotation is disabled.

 

 

Prototype:

virtual bool IsSkinScaleEnabled() const = 0;

 

Remarks:

Method to determine if the pose scale is enabled.

 

Return Value:

bool

If true, the pose scale is enabled.

If false, the pose scale is disabled.

 

 

Prototype:

virtual bool SkinPoseMode() const = 0;

 

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.

 

Return Value:

bool

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

If false, it is in the normal mode.

 

 

Prototype:

virtual void EnableSkinPos(bool) = 0;

 

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.

 

 

Prototype:

virtual void EnableSkinRot(bool) = 0;

 

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.

 

 

Prototype:

virtual void EnableSkinScale(bool) = 0;

 

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.

 

 

Prototype:

virtual void SetSkinPoseMode(bool) = 0;

 

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.

 

 

Prototype:

virtual void SetSkinPose(TimeValue) = 0;

 

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.

 

 

Prototype:

virtual void AssumeSkinPose(TimeValue) = 0;

 

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.

 

 

Prototype:

virtual void TMSetValue(TimeValue, SetXFormPacket&) = 0;

 

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.

 

 

Prototype:

Point3 SkinRotAngles() const;

 

Remarks:

Method to obtaion the Euler angles of the pose rotation.

 

Return Value:

Point3

The Euler angles about x, y, and z.

 

 

Prototype:

Point3 SkinScaleFactors () const;

 

Remarks:

Method to obtain the scale factors of the pose transformation.

 

Return Value:

Point3

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

 

 

Prototype:

Quat SkinScaleOrient() const;

 

Remarks:

Method to obtain the scale factor orientation of the pose transformation.

 

Return Value:

Quat

The axis and angle of the scale factor orientation.

 

 

Prototype:

void SetSkinScale(const ScaleValue&);

 

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.

 

 

Prototype:

void SetSkinRotAngles(const Point3&);

 

Remarks:

Method to set the rotation angles for the pose transform.

 

Parameters:

Point3&

The Euler angles of the pose rotation.

 

 

Prototype:

bool ShowSkinPos() const;

 

Remarks:

Method to determine if the pose position component is enabled and the node is in the skin pose mode.

 

Return Value:

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.

 

 

Prototype:

bool ShowSkinRot() const;

 

Remarks:

Method to determine if the pose rotation component is enabled and the node is in the skin pose mode.

 

Return Value:

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.

 

 

Prototype:

bool ShowSkinScale() const;

 

Remarks:

Method to determine if the pose scale component is enabled and the node is in the skin pose mode.

 

Return Value:

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.

 

 

Prototype:

bool IsACompEnabled() const;

 

Remarks:

Method to determine if one or more pose components; position, rotation, or scale are enabled.

 

Return Value:

bool

If true, one or more components are enabled.

If false, none of the components are enabled.

 

 

Prototype:

virtual bool NeedToSave() const = 0;

 

Remarks:

Method to indicate that a post transform component has changed from the default and needs to be saved.

 

Return Value:

bool

If true, a pose component has changed.

If false, no pose component has changed.

 

 

Prototype:

virtual IOResult Save(ISave*) const = 0;

 

Remarks:

Method to write pose data to a file.

 

Parameters:

ISave*

Pointer for use in calling write methods.

 

Return Value:

IOResult

If IO_OK, the method succeeded.

If IO_ERROR, the method was unsuccessful.

 

 

Prototype:

virtual IOResult Load(ILoad*) = 0;

 

Remarks:

Method to read pose data from a file.

 

Parameters:

ILoad*

Pointer for use in calling read methods.

 

Return Value:

IOResult

If IO_OK, the method succeeded.

If IO_ERROR, the method was unsuccessful.

 

 

Prototype:

virtual void Copy(const ISkinPose&) = 0;

 

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.

 

 

Prototype:

virtual const void* ObjectOf(void*) const = 0;

 

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.

 

Return Value:

void*

Const pointer to subclass.

 

 

Prototype:

virtual void* ObjectOf(void*) const = 0;

 

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.

 

Return Value:

void*

Pointer to subclass.

 

 

Prototype:

FPInterfaceDesc* GetDesc();

 

Remarks:

Method to obtain the function publishing interface description.

 

Return Value:

FPInterfaceDesc *

Pointer to the interface descriptor.