CAWeightTag Class Reference

#include <lib_ca.h>

Inheritance diagram for CAWeightTag:

Detailed Description

Weight tag.

Note
Has to be created with Alloc() and destroyed with Free(). Use AutoAlloc to automate the allocation and destruction based on scope.

Private Member Functions

 CAWeightTag ()
 
 ~CAWeightTag ()
 

Alloc/Free

static CAWeightTagAlloc ()
 
static void Free (CAWeightTag *&pTag)
 

Joint

BaseObjectGetJoint (Int32 index, BaseDocument *doc)
 
Int32 GetJointCount ()
 
Int32 FindJoint (BaseObject *op, BaseDocument *doc)
 

Joint Rest State

JointRestState GetJointRestState (Int32 index)
 
void SetJointRestState (Int32 index, const JointRestState &state)
 

Weight

void GetWeightMap (Int32 index, Float32 *map, Int32 cnt, Bool includeEffectors=false)
 
Bool SetWeightMap (Int32 index, Float32 *map, Int32 cnt)
 
Int32 GetWeightCount (Int32 index)
 
void GetIndexWeight (Int32 index, Int32 windex, Int32 &pntindex, Float &weight)
 
Float GetWeight (Int32 index, Int32 pntindex)
 
Bool SetWeight (Int32 index, Int32 pntindex, Float weight)
 
UInt32 GetWeightDirty ()
 
void WeightDirty ()
 

Geometry Matrix

Matrix GetGeomMg ()
 
void SetGeomMg (const Matrix &mg)
 

Add/Remove Joint

Int32 AddJoint (BaseObject *op)
 
void RemoveJoint (BaseObject *op)
 

Miscellaneous

void CalculateBoneStates (Int32 index)
 
Bool ResetBindPose (BaseDocument *doc, Bool doUndo)
 
Bool SetBindPose (BaseDocument *doc, Bool doUndo)
 
Bool TransferWeightMap (BaseDocument *doc, CAWeightTag *dst, Int32 sindex, Int32 dindex, Int32 offset, Int32 cnt, AliasTrans *trans, Bool mergeTags=false)
 

Additional Inherited Members

- Public Member Functions inherited from BaseTag
Bool Draw (BaseObject *op, BaseDraw *bd, BaseDrawHelp *bh)
 
BaseTagGetNext ()
 
BaseTagGetPred ()
 
BaseObjectGetObject ()
 
BaseTagGetOrigin ()
 
- Public Member Functions inherited from BaseList2D
void SetBit (Int32 mask)
 
Bool GetBit (Int32 mask) const
 
void DelBit (Int32 mask)
 
void ToggleBit (Int32 mask)
 
Int32 GetAllBits () const
 
void SetAllBits (Int32 bits)
 
void SetBitEx (Int32 mask, Int32 flags)
 
const CharGetViewportRenderId (VIEWPORT_RENDER_ID typeId) const
 
BaseList2DGetNext ()
 
BaseList2DGetPred ()
 
BaseContainer GetData ()
 
void SetData (const BaseContainer &bc, Bool add=true)
 
const BaseContainerGetDataInstance () const
 
BaseContainerGetDataInstance ()
 
const BaseContainerGetDataInstanceRef () const
 
BaseContainerGetDataInstanceRef ()
 
String GetName () const
 
void SetName (const maxon::String &name)
 
String GetBubbleHelp ()
 
Bool TransferGoal (BaseList2D *dst, Bool undolink)
 
Bool TransferMarker (BaseList2D *dst) const
 
Bool Scale (Float scale)
 
Bool Edit ()
 
void GetIcon (IconData *dat)
 
GeListHeadGetNLARoot ()
 
BaseList2DAnimationLayerRemap (BaseObject **layer=nullptr)
 
String GetTypeName ()
 
BaseList2DGetMain () const
 
void InsertTrackSorted (CTrack *track)
 
Bool AddEventNotification (BaseList2D *bl, NOTIFY_EVENT eventid, NOTIFY_EVENT_FLAG flags, const BaseContainer *data)
 
Bool RemoveEventNotification (BaseDocument *doc, BaseList2D *bl, NOTIFY_EVENT eventid)
 
Bool FindEventNotification (BaseDocument *doc, BaseList2D *bl, NOTIFY_EVENT eventid)
 
Bool SetDescIDState (const DescID &id, DESCIDSTATE descidstate)
 
DESCIDSTATE GetDescIDState (const DescID &id, Bool tolerant) const
 
GeListHeadGetOverrideRoot ()
 
BaseOverrideGetFirstOverride ()
 
GeListHeadGetShaderRepositoryRoot ()
 
GeListHeadGetHiddenShaderRoot ()
 
maxon::NimbusForwardRef GetNimbusRef (const maxon::Id &spaceId) const
 
maxon::Result< maxon::NimbusForwardRefPrivateGetOrCreateNimbusRef (const maxon::Id &spaceId)
 
void RemoveNimbusRef (const maxon::Id &spaceId)
 
maxon::Result< maxon::HashMap< maxon::Id, maxon::NimbusForwardRef > > GetAllNimbusRefs () const
 
Bool IsNodeBased () const
 
void GetMarkerStampEx (UInt32 *l1, UInt32 *l2)
 
const GeMarkerGetMarker () const
 
void SetMarker (const GeMarker &m)
 
Bool AddUniqueID (Int32 appid, const Char *const mem, Int bytes)
 
Bool FindUniqueID (Int32 appid, const Char *&mem, Int &bytes) const
 
Int32 GetUniqueIDCount () const
 
Bool GetUniqueIDIndex (Int32 idx, Int32 &id, const Char *&mem, Int &bytes) const
 
Bool SetAnimatedParameter (CTrack *track, const DescID &id, const GeData &t_data1, const GeData &t_data2, Float mix, DESCFLAGS_SET flags)
 
Bool GetAnimatedParameter (const DescID &id, GeData &t_data1, GeData &t_data2, Float &mix, DESCFLAGS_GET flags)
 
BaseShaderGetFirstShader () const
 
void InsertShader (BaseShader *shader, BaseShader *pred=nullptr)
 
void ClearKeyframeSelection ()
 
Bool FindKeyframeSelection (const DescID &id)
 
Bool SetKeyframeSelection (const DescID &id, Bool selection)
 
Bool KeyframeSelectionContent ()
 
LayerObjectGetLayerObject (BaseDocument *doc)
 
Bool SetLayerObject (LayerObject *layer)
 
const LayerDataGetLayerData (BaseDocument *doc, Bool rawdata=false)
 
Bool SetLayerData (BaseDocument *doc, const LayerData &data)
 
GeListHeadGetCTrackRoot ()
 
CTrackGetFirstCTrack ()
 
CTrackFindCTrack (const DescID &id)
 
- Public Member Functions inherited from GeListNode
GeListNodeGetNext ()
 
GeListNodeGetPred ()
 
GeListNodeGetDown ()
 
GeListNodeGetUp ()
 
GeListNodeGetDownLast ()
 
void InsertBefore (GeListNode *bl)
 
void InsertAfter (GeListNode *bl)
 
void InsertUnder (GeListNode *bl)
 
void InsertUnderLast (GeListNode *bl)
 
void Remove ()
 
GeListHeadGetListHead ()
 
Int32 GetNodeID (Int32 index=0) const
 
template<typename CAST >
const CAST * GetNodeData (Int32 index=0) const
 
template<typename CAST >
CAST * GetNodeData (Int32 index=0)
 
void SetCustomData (GeListNode *node)
 
GeListNodeGetCustomData ()
 
BaseDocumentGetDocument ()
 
Int32 GetBranchInfo (BranchInfo *info, Int32 max, GETBRANCHINFO flags)
 
Bool IsDocumentRelated ()
 
Int32 GetInfo () const
 
Bool GetNBit (NBIT bit) const
 
UInt32 GetNBitMask (Int32 index) const
 
Bool ChangeNBit (NBIT bit, NBITCONTROL bitmode)
 
- Public Member Functions inherited from C4DAtom
Int32 GetType () const
 
Int32 GetRealType () const
 
Int32 GetDiskType () const
 
Bool IsInstanceOf (Int32 id) const
 
Int32 GetClassification () const
 
Bool Message (Int32 type, void *data=nullptr)
 
Bool MultiMessage (MULTIMSG_ROUTE flags, Int32 type, void *data)
 
C4DAtomGetClone (COPYFLAGS flags, AliasTrans *trn)
 
Bool CopyTo (C4DAtom *dst, COPYFLAGS flags, AliasTrans *trn)
 
Bool Read (HyperFile *hf, Int32 id, Int32 level)
 
Bool Write (HyperFile *hf)
 
Bool ReadObject (HyperFile *hf, Bool readheader)
 
Bool WriteObject (HyperFile *hf)
 
Bool GetDescription (Description *description, DESCFLAGS_DESC flags)
 
Bool GetParameter (const DescID &id, GeData &t_data, DESCFLAGS_GET flags)
 
Bool SetParameter (const DescID &id, const GeData &t_data, DESCFLAGS_SET flags)
 
DynamicDescriptionGetDynamicDescription ()
 
Bool GetEnabling (const DescID &id, const GeData &t_data, DESCFLAGS_ENABLE flags, const BaseContainer *itemdesc)
 
Bool TranslateDescID (const DescID &id, DescID &res_id, C4DAtom *&res_at)
 
UInt32 GetDirty (DIRTYFLAGS flags) const
 
void SetDirty (DIRTYFLAGS flags)
 
UInt32 GetHDirty (HDIRTYFLAGS mask) const
 
void SetHDirty (HDIRTYFLAGS mask)
 
- Static Public Member Functions inherited from BaseTag
static BaseTagAlloc (Int32 type)
 
static void Free (BaseTag *&bl)
 
- Static Public Member Functions inherited from BaseList2D
static BaseList2DAlloc (Int32 type)
 
static void Free (BaseList2D *&bl)
 
- Static Public Attributes inherited from BaseList2D
static const Int32 SETBIT_FLAG_NODIRTY
 
static const Int32 SETBIT_FLAG_REMOVE
 

Constructor & Destructor Documentation

◆ CAWeightTag()

CAWeightTag ( )
private

◆ ~CAWeightTag()

~CAWeightTag ( )
private

Member Function Documentation

◆ Alloc()

static CAWeightTag* Alloc ( )
static

Allocates a weight tag. Destroy the allocated weight tag with Free(). Use AutoAlloc to automate the allocation and destruction based on scope.

Returns
The allocated weight tag, or nullptr if the allocation failed.

◆ Free()

static void Free ( CAWeightTag *&  pTag)
static

Destructs weight tags allocated with Alloc(). Use AutoAlloc to automate the allocation and destruction based on scope.

Parameters
[in,out]pTagThe weight tag to destruct. If the pointer is nullptr nothing happens. The pointer is assigned nullptr afterwards.

◆ GetJoint()

BaseObject* GetJoint ( Int32  index,
BaseDocument doc 
)

Retrieves the joint object at index.

Parameters
[in]indexThe joint index: <= index < GetJointCount()
[in]docThe document or nullptr.
Returns
The joint object, or nullptr.

◆ GetJointCount()

Int32 GetJointCount ( )

Gets the total joint count.

Note
Can also be found and changed using C4DAtom::SetParameter() with ID_CA_WEIGHT_TAG_JOINTS_LIST.
Returns
The joint count.

◆ FindJoint()

Int32 FindJoint ( BaseObject op,
BaseDocument doc 
)

Retrieves the index of the joint object the weight tag is attached to.

Parameters
[in]opThe host object.
[in]docThe document or nullptr.
Returns
The joint index, or NOTOK if not found.

◆ GetJointRestState()

JointRestState GetJointRestState ( Int32  index)

Retrieves the rest state for the joint at index.

Parameters
[in]indexThe joint index: <= index < GetJointCount()
Returns
The joint rest state.

◆ SetJointRestState()

void SetJointRestState ( Int32  index,
const JointRestState state 
)

Sets the rest state for the joint at index.

Parameters
[in]indexThe joint index: <= index < GetJointCount()
[in]stateThe new joint rest state.

◆ GetWeightMap()

void GetWeightMap ( Int32  index,
Float32 map,
Int32  cnt,
Bool  includeEffectors = false 
)

Fills map with the weights, which must be allocated with cnt elements (should be the point count).

Parameters
[in]indexThe joint index: <= index < GetJointCount()
[out]mapFilled with the weight data.
[in]cntThe point count. Size of map.
[in]includeEffectorsIf true the effectors weights are added to the map. Since R17.048

◆ SetWeightMap()

Bool SetWeightMap ( Int32  index,
Float32 map,
Int32  cnt 
)

Sets the weights with map.

Parameters
[in]indexThe joint index: <= index < GetJointCount()
[in]mapThe new weight map.
[in]cntThe point count. Size of map.
Returns
true if successful, otherwise false.

◆ GetWeightCount()

Int32 GetWeightCount ( Int32  index)

Gets the total number of stored weights.

Parameters
[in]indexThe joint index: <= index < GetJointCount()
Returns
The number of weights. 0 means weights are not stored.

◆ GetIndexWeight()

void GetIndexWeight ( Int32  index,
Int32  windex,
Int32 pntindex,
Float weight 
)

Retrieves the windex weight and which point index pntindex.

Parameters
[in]indexThe joint index: <= index < GetJointCount()
[in]windexThe weight index: <= windex < GetWeightCount()
[out]pntindexAssigned the point index.
[out]weightAssigned the weight.

◆ GetWeight()

Float GetWeight ( Int32  index,
Int32  pntindex 
)

Retrieves the weight for the point formatParam{pntindex}.

Parameters
[in]indexThe joint index: <= index < GetJointCount()
[in]pntindexThe point index.
Returns
The weight.

◆ SetWeight()

Bool SetWeight ( Int32  index,
Int32  pntindex,
Float  weight 
)

Sets the weight for formatParam{pntindex}.

Parameters
[in]indexThe joint index: <= index < GetJointCount()
[in]pntindexThe point index.
[in]weightThe new weight.
Returns
true if successful, otherwise false.

◆ GetWeightDirty()

UInt32 GetWeightDirty ( )

Gets the dirty state of the weights.

Returns
The weights' dirty state.

◆ WeightDirty()

void WeightDirty ( )

Marks the weights dirty.

◆ GetGeomMg()

Matrix GetGeomMg ( )

Retrieves the global matrix for the bind geometry.

Note
Use this with the global matrices of the joints to get the local transforms.
Returns
The global matrix for the bind geometry.

◆ SetGeomMg()

void SetGeomMg ( const Matrix mg)

Sets the global matrix for the bind geometry.

Parameters
[in]mgThe new global matrix for the bind geometry.

◆ AddJoint()

Int32 AddJoint ( BaseObject op)

Adds a joint object to the weight tag's "Joints" list.

Parameters
[in]opThe joint object to add to the weight tag's "Joints" list.
Returns
The joint object's index in the "Joints" list.
NOTOK if failed i.e. the tag is not present in an object's tag list.

◆ RemoveJoint()

void RemoveJoint ( BaseObject op)

Removes a joint object from the weight tag's "Joints" list.

Parameters
[in]opThe joint object to remove from the weight tag's "Joint" list.

◆ CalculateBoneStates()

void CalculateBoneStates ( Int32  index)

Helper function to initialize the joint at index.
Fills in the bind state (JointRestState::m_oMg and JointRestState::m_oMi) and then call the function to set JointRestState::m_bMg, JointRestState::m_bMi and JointRestState::m_Len.

Note
The joints must be in the document.
Parameters
[in]indexThe joint index: <= index < GetJointCount()
NOTOK to process all joints.

◆ ResetBindPose()

Bool ResetBindPose ( BaseDocument doc,
Bool  doUndo 
)

Reset the pose to the bind pose previously set.

Parameters
[in]docThe document containing the weight tags.
[in]doUndoIf you want to add undo steps.
Returns
true if successful, otherwise false.

◆ SetBindPose()

Bool SetBindPose ( BaseDocument doc,
Bool  doUndo 
)

Set the bind pose to the currently set joint state.

Parameters
[in]docThe document containing the weight tags.
[in]doUndoIf you want to add undo steps.
Returns
true if successful, otherwise false.

◆ TransferWeightMap()

Bool TransferWeightMap ( BaseDocument doc,
CAWeightTag dst,
Int32  sindex,
Int32  dindex,
Int32  offset,
Int32  cnt,
AliasTrans trans,
Bool  mergeTags = false 
)

Transfers the weights from one weight tag to another.

Parameters
[in]docThe document containing the weight tags.
[out]dstThe destination weight tag.
[in]sindexThe index of the source joint. Pass NOTOK for all joints.
[in]dindexThe index of the destination joint. Pass NOTOK for all joints.
[in]offsetThe offset to move the weight indices when they are copied to the destination. Pass NOTOK for all indices.
[in]cntThe number of weights to be transfered. Pass NOTOK for all weights.
[in]transAn alias translator for the operation. Can be nullptr. The caller owns the pointed alias translator.
[in]mergeTagsTrue if you want to merge the source into the destination, works with common joints.
Returns
true if successful, otherwise false.