# I3dExSkinable Struct Reference
[External Interfaces]

Inheritance diagram for I3dExSkinable:

List of all members.

## Public Member Functions
virtual void MCCOMAPI | AttachSkeleton (TMCPtrArray< I3DShJoint > &joints, I3DShInstance *instance, boolean computeWeights=true, boolean computeJointsTransforms=true, IMCUnknown *undoExtraData=NULL)=0
virtual void MCCOMAPI | TransferSkeleton (const TMCPtrArray< I3DShJoint > &joints, I3DShInstance *instance)=0
virtual void MCCOMAPI | DetachAll ()=0
virtual void MCCOMAPI | DetachSkeleton (IMCUnknown **undoExtraData=NULL)=0
virtual boolean MCCOMAPI | IsAttached ()=0
virtual boolean MCCOMAPI | IsSkeletonAttached ()=0
virtual void MCCOMAPI | GetJoints (TMCPtrArray< I3DShJoint > &joints)=0
virtual void MCCOMAPI | GetJointsInverseReferenceTransforms (TMCArray< TTransform3D > &outTransforms)=0
virtual void MCCOMAPI | SetJointsInverseReferenceTransforms (const TMCArray< TTransform3D > &inTransforms)=0
virtual void MCCOMAPI | InvalidateSkining ()=0
virtual void MCCOMAPI | GetInstance (I3DShInstance **instance)=0
virtual void MCCOMAPI | GetInstanceGlobalReferenceTransform (TTransform3D &outTransform)=0
virtual void MCCOMAPI | SetInstanceGlobalReferenceTransform (const TTransform3D &inTransform)=0
virtual void MCCOMAPI | WeightsModified ()=0
virtual void MCCOMAPI | SetSkinableDisplayMode (ESkinableDisplayMode mode)=0
virtual ESkinableDisplayMode MCCOMAPI | GetSkinableDisplayMode () const =0
virtual void MCCOMAPI | ValidateJointBoundingBoxes ()=0
virtual void MCCOMAPI | SetSkinnableSelectionMode (ESkinnableSelectionMode mode)=0
virtual ESkinnableSelectionMode MCCOMAPI | GetSkinnableSelectionMode () const =0
virtual int32 MCCOMAPI | AttachGlobalDeformer (I3DShInstance *instance, I3DShGlobalDeformerHelper *deformer, int32 insertIndex=-1, IMCUnknown *undoExtraData=NULL, boolean relink=false)=0
virtual int32 MCCOMAPI | DetachGlobalDeformer (I3DShGlobalDeformerHelper *deformer, IMCUnknown **undoExtraData=NULL)=0
virtual void MCCOMAPI | GetGlobalDeformers (TMCPtrArray< I3DShGlobalDeformerHelper > &deformers)=0
virtual boolean MCCOMAPI | HasGlobalDeformers () const =0
virtual void MCCOMAPI | DetachAllGlobalDeformers ()=0
virtual void MCCOMAPI | InvalidateGlobalDeformer (I3DShGlobalDeformerHelper *deformer)=0
virtual void MCCOMAPI | SetEditedJointIndex (const TJointIndex &index)=0
| For internal uses.
virtual TJointIndex MCCOMAPI | GetEditedJointIndex () const =0
| For internal uses.
virtual void MCCOMAPI | SetEditedChannelIndex (uint32 index)=0
| For internal uses.
virtual uint32 MCCOMAPI | GetEditedChannelIndex ()=0
| For internal uses.
virtual int32 MCCOMAPI | GetFatherJointIndex (int32 jointIndex)=0
| Returns the Father joint index of the joint index.

## Detailed Description

I3DExSkinable is an interface for a primitive that accepts bones. To create a primitive to which bones can be applied, you just need to derive it from this interface and implement its methods.

At this point only the vertex primitives support this interface.

If you implement the I3DExSkinable interface, it is recommended that your class offers a way to access weights data. For example, you can use the I3DExVertex interface to access the weights on a vertex of a vertex primitive (using SetSkiningData, GetSkiningData).

The classes supporting I3dExSkinable should provide a low level api to access the skining data. For example, with I3DExVertexPrimitive you can get an I3DExVertex interface for each vertex and then manipulate the joints weights with SetSkiningData and GetSkiningData.

## Member Function Documentation

virtual int32 MCCOMAPI I3dExSkinable::AttachGlobalDeformer | ( | I3DShInstance * | instance,
|  | I3DShGlobalDeformerHelper * | deformer,
|  | int32 | insertIndex = `-1`,
|  | IMCUnknown * | undoExtraData = `NULL`,
|  | boolean | relink = `false` |
| ) |  |  | `[pure virtual]`

Attaches the given deformer to the skinnable.

Parameters:

  | undoExtraData | Can be used to undo a detach properly, give the object you get from the detach call to DetachGlobalDeformer.
  | relink | Used if this attach is just a relink (ie. the deformer just has to be attached to the primitive but all internal parameters already contains this deformer).

virtual void MCCOMAPI I3dExSkinable::AttachSkeleton | ( | TMCPtrArray< I3DShJoint > & | joints,
|  | I3DShInstance * | instance,
|  | boolean | computeWeights = `true`,
|  | boolean | computeJointsTransforms = `true`,
|  | IMCUnknown * | undoExtraData = `NULL` |
| ) |  |  | `[pure virtual]`

Attaches the given skeletton, this object and its single instance together for skinning Note: do NOT call it twice without first dettaching the Skeleton

Parameters:

  | joints | The list of the joints forming the skeleton of the the primitive to. They MUST have a common root.
  | computeWeights | If true, automatically computes the weights of the joints for each vertex. (pass false only when the weights are already there, eg when loading a file)
  | computeJointsTransforms,: | If true, stores the inverse of the global transform of each joint if you pass false, you must call SetJointsInverseReferenceTransforms.
  | instance | The single instance of the object
  | undoExtraData | Can be used to undo a detach properly, give the object you get from the detach call

virtual void MCCOMAPI I3dExSkinable::DetachAll | ( |  | ) | `[pure virtual]`

Turns back to a non skinned object.

virtual void MCCOMAPI I3dExSkinable::DetachAllGlobalDeformers | ( |  | ) | `[pure virtual]`

virtual int32 MCCOMAPI I3dExSkinable::DetachGlobalDeformer | ( | I3DShGlobalDeformerHelper * | deformer,
|  | IMCUnknown ** | undoExtraData = `NULL` |
| ) |  |  | `[pure virtual]`

Detaches the given deformer. undoExtraData can be used to undo a detach properly, give this object to AttachGlobalDeformer when re-attaching

virtual void MCCOMAPI I3dExSkinable::DetachSkeleton | ( | IMCUnknown ** | undoExtraData = `NULL` | ) | `[pure virtual]`

Detaches the skeleton but keeps the deformers. undoExtraData can be used to undo a detach properly, give this object to AttachSkeleton when re-attaching

virtual uint32 MCCOMAPI I3dExSkinable::GetEditedChannelIndex | ( |  | ) | `[pure virtual]`

For internal uses.

virtual TJointIndex MCCOMAPI I3dExSkinable::GetEditedJointIndex | ( |  | ) | const`[pure virtual]`

For internal uses.

virtual int32 MCCOMAPI I3dExSkinable::GetFatherJointIndex | ( | int32 | jointIndex | ) | `[pure virtual]`

Returns the Father joint index of the joint index.

virtual void MCCOMAPI I3dExSkinable::GetGlobalDeformers | ( | TMCPtrArray< I3DShGlobalDeformerHelper > & | deformers | ) | `[pure virtual]`

Returns all the deformers.

virtual void MCCOMAPI I3dExSkinable::GetInstance | ( | I3DShInstance ** | instance | ) | `[pure virtual]`

Returns THE skinned instance.

Parameters:

  | instance | A pointer to this instance that is returned.

virtual void MCCOMAPI I3dExSkinable::GetInstanceGlobalReferenceTransform | ( | TTransform3D & | outTransform | ) | `[pure virtual]`

Returns the global transform of the instance (when the skining was created).

virtual void MCCOMAPI I3dExSkinable::GetJoints | ( | TMCPtrArray< I3DShJoint > & | joints | ) | `[pure virtual]`

Returns the joints attached to the vertex object

Parameters:

  | joints | Returns the list of the joints that are used for the skinning of this primitive.

virtual void MCCOMAPI I3dExSkinable::GetJointsInverseReferenceTransforms | ( | TMCArray< TTransform3D > & | outTransforms | ) | `[pure virtual]`

Returns the inverse global transforms that the joints had when they were attached to the object The array has the same order and number of elements than GetJoints

Parameters:

  | outTransforms | The array of the original inverse transform of the joints.

virtual ESkinableDisplayMode MCCOMAPI I3dExSkinable::GetSkinableDisplayMode | ( |  | ) | const`[pure virtual]`

Sets the display mode for this skinable.

virtual ESkinnableSelectionMode MCCOMAPI I3dExSkinable::GetSkinnableSelectionMode | ( |  | ) | const`[pure virtual]`

Gets the skinnable selection mode (see ESkinnableSelectionMode).

virtual boolean MCCOMAPI I3dExSkinable::HasGlobalDeformers | ( |  | ) | const`[pure virtual]`

Returns true if the skinnable is deformed by global deformers

virtual void MCCOMAPI I3dExSkinable::InvalidateGlobalDeformer | ( | I3DShGlobalDeformerHelper * | deformer | ) | `[pure virtual]`

Invalidtaes the given deformer (this function should be called if the deformer instance is modified, for instance a magnet deformer changes its zone).

virtual void MCCOMAPI I3dExSkinable::InvalidateSkining | ( |  | ) | `[pure virtual]`

Called when the transform of a joint change so that the skinnable can invalidate its caches.

virtual boolean MCCOMAPI I3dExSkinable::IsAttached | ( |  | ) | `[pure virtual]`

Returns true if the vertex primitive is skinned (skeleton or deformer).

virtual boolean MCCOMAPI I3dExSkinable::IsSkeletonAttached | ( |  | ) | `[pure virtual]`

Returns true if the vertex primitive is skinned by a skeleton

virtual void MCCOMAPI I3dExSkinable::SetEditedChannelIndex | ( | uint32 | index | ) | `[pure virtual]`

For internal uses.

virtual void MCCOMAPI I3dExSkinable::SetEditedJointIndex | ( | const TJointIndex & | index | ) | `[pure virtual]`

For internal uses.

virtual void MCCOMAPI I3dExSkinable::SetInstanceGlobalReferenceTransform | ( | const TTransform3D & | inTransform | ) | `[pure virtual]`

Sets the global transform of the instance (when loading a file).

virtual void MCCOMAPI I3dExSkinable::SetJointsInverseReferenceTransforms | ( | const TMCArray< TTransform3D > & | inTransforms | ) | `[pure virtual]`

Sets the inverse global transforms that the joints had when they were attached to the object The array must have the same order and number of elements than the one given to AttachSkeleton

Parameters:

  | inTransforms | The array of the original inverse transform of the joints.

virtual void MCCOMAPI I3dExSkinable::SetSkinableDisplayMode | ( | ESkinableDisplayMode | mode | ) | `[pure virtual]`

Sets the display mode for this skinable.

virtual void MCCOMAPI I3dExSkinable::SetSkinnableSelectionMode | ( | ESkinnableSelectionMode | mode | ) | `[pure virtual]`

Sets the skinnable selection mode (see ESkinnableSelectionMode).

virtual void MCCOMAPI I3dExSkinable::TransferSkeleton | ( | const TMCPtrArray< I3DShJoint > & | joints,
|  | I3DShInstance * | instance |
| ) |  |  | `[pure virtual]`

Turns back to a non skinned object.

virtual void MCCOMAPI I3dExSkinable::ValidateJointBoundingBoxes | ( |  | ) | `[pure virtual]`

Validates the bounding baxes at the noint level

See also:
  I3DShJoint::

virtual void MCCOMAPI I3dExSkinable::WeightsModified | ( |  | ) | `[pure virtual]`

Called when some weights have been modified.

The documentation for this struct was generated from the following file:

- I3dExSkinable.h