CAWeightTag Class Reference Library » Character Animation

#include <lib_ca.h>

Inheritance diagram for CAWeightTag:

详细描述

Weight tag.

注意
Has to be created with Alloc() and destroyed with Free() 。使用 AutoAlloc to automate the allocation and destruction based on scope.

私有成员函数

  CAWeightTag ()
  ~CAWeightTag ()

Alloc/Free

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

Joint

BaseObject GetJoint ( 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

矩阵   GetGeomMg ()
void  SetGeomMg (const 矩阵 &mg)

Add/Remove Joint

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

杂项

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)
BaseTag GetNext (void)
BaseTag GetPred (void)
BaseObject GetObject (void)
BaseTag GetOrigin ()
-  Public Member Functions inherited from BaseList2D
const Char GetViewportRenderId ( VIEWPORT_RENDER_ID typeId) const
BaseList2D GetNext ()
BaseList2D GetPred ()
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)
BaseContainer   GetData ()
void  SetData (const BaseContainer &bc, Bool add=true)
const BaseContainer GetDataInstance () const
BaseContainer GetDataInstance ()
const BaseContainer GetDataInstanceRef () const
BaseContainer GetDataInstanceRef ()
String   GetName () const
void  SetName (const maxon::String &name)
String   GetBubbleHelp ()
Bool   TransferGoal ( BaseList2D *dst, Bool undolink)
Bool   TransferMarker ( BaseList2D *dst) const
Bool   比例 ( Float scale)
Bool   编辑 ()
void  GetIcon ( IconData *dat)
GeListHead GetNLARoot ()
BaseList2D AnimationLayerRemap ( BaseObject **layer=nullptr)
String   GetTypeName ()
BaseList2D GetMain () 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
GeListHead GetOverrideRoot ()
BaseOverride GetFirstOverride ()
GeListHead GetShaderRepositoryRoot ()
GeListHead GetHiddenShaderRoot ()
maxon::NimbusInterface *  GetNimbusRef (const maxon::Id &spaceId) const
maxon::Result < maxon::NimbusInterface * >  GetOrCreateNimbusRef (const maxon::Id &spaceId)
void  RemoveNimbusRef (const maxon::Id &spaceId)
maxon::Result < maxon::HashMap < maxon::Id , maxon::ForwardRef < maxon::NimbusRef > > >  GetAllNimbusRefs () const
Bool   IsNodeBased () const
void  GetMarkerStampEx ( UInt32 *l1, UInt32 *l2)
const GeMarker GetMarker () 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)
BaseShader GetFirstShader () const
void  InsertShader ( BaseShader *shader, BaseShader *pred=nullptr)
void  ClearKeyframeSelection ()
Bool   FindKeyframeSelection (const DescID &id)
Bool   SetKeyframeSelection (const DescID &id, Bool selection)
Bool   KeyframeSelectionContent ()
LayerObject GetLayerObject ( BaseDocument *doc)
Bool   SetLayerObject ( LayerObject *layer)
const LayerData GetLayerData ( BaseDocument *doc, Bool rawdata=false)
Bool   SetLayerData ( BaseDocument *doc, const LayerData &data)
GeListHead GetCTrackRoot ()
CTrack GetFirstCTrack ()
CTrack FindCTrack (const DescID &id)
-  Public Member Functions inherited from GeListNode
GeListNode GetNext ()
GeListNode GetPred ()
GeListNode GetDown ()
GeListNode GetUp ()
GeListNode GetDownLast ()
void  InsertBefore ( GeListNode *bl)
void  InsertAfter ( GeListNode *bl)
void  InsertUnder ( GeListNode *bl)
void  InsertUnderLast ( GeListNode *bl)
void  移除 ()
GeListHead GetListHead ()
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)
GeListNode GetCustomData ()
BaseDocument GetDocument ()
Int32   GetBranchInfo ( BranchInfo *info, Int32 max, GETBRANCHINFO flags)
Bool   IsDocumentRelated ()
Int32   GetInfo ()
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   消息 ( Int32 type, void *data=nullptr)
Bool   MultiMessage ( MULTIMSG_ROUTE flags, Int32 type, void *data)
C4DAtom GetClone ( COPYFLAGS flags, AliasTrans *trn)
Bool   CopyTo ( C4DAtom *dst, COPYFLAGS flags, AliasTrans *trn)
Bool   读取 ( HyperFile *hf, Int32 id, Int32 level)
Bool   Write ( HyperFile *hf)
Bool   ReadObject ( HyperFile *hf, Bool readheader)
Bool   WriteObject ( HyperFile *hf)
Bool   GetDescription ( 描述 *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)
DynamicDescription GetDynamicDescription ()
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 BaseTag Alloc ( Int32 type)
static void  Free ( BaseTag *&bl)
-  Static Public Member Functions inherited from BaseList2D
static BaseList2D Alloc ( 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

构造函数 & 析构函数文档编制

◆  CAWeightTag()

CAWeightTag () private

◆  ~CAWeightTag()

~ CAWeightTag () private

成员函数文档编制

◆  Alloc()

static CAWeightTag * Alloc ( )
static

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

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

◆  Free()

static void Free ( CAWeightTag *&  pTag )
static

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

参数
[in,out] pTag The 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 .

参数
[in] index The joint index: <= index < GetJointCount()
[in] doc The document or nullptr .
返回
The joint object, or nullptr .

◆  GetJointCount()

Int32 GetJointCount ( )

Gets the total joint count.

注意
Can also be found and changed using C4DAtom::SetParameter() with ID_CA_WEIGHT_TAG_JOINTS_LIST .
返回
The joint count.

◆  FindJoint()

Int32 FindJoint ( BaseObject op ,
BaseDocument doc  
)

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

参数
[in] op The host object.
[in] doc The document or nullptr .
返回
The joint index, or NOTOK if not found.

◆  GetJointRestState()

JointRestState GetJointRestState ( Int32   index )

Retrieves the rest state for the joint at index .

参数
[in] index The joint index: <= index < GetJointCount()
返回
The joint rest state.

◆  SetJointRestState()

void SetJointRestState ( Int32   index ,
const JointRestState state  
)

Sets the rest state for the joint at index .

参数
[in] index The joint index: <= index < GetJointCount()
[in] state The 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).

参数
[in] index The joint index: <= index < GetJointCount()
[out] map Filled with the weight data.
[in] cnt The point count. Size of map .
[in] includeEffectors 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 .

参数
[in] index The joint index: <= index < GetJointCount()
[in] map The new weight map.
[in] cnt The point count. Size of map .
返回
true if successful, otherwise false .

◆  GetWeightCount()

Int32 GetWeightCount ( Int32   index )

Gets the total number of stored weights.

参数
[in] index The joint index: <= index < GetJointCount()
返回
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 .

参数
[in] index The joint index: <= index < GetJointCount()
[in] windex The weight index: <= windex < GetWeightCount()
[out] pntindex Assigned the point index.
[out] weight Assigned the weight.

◆  GetWeight()

Float GetWeight ( Int32   index ,
Int32   pntindex  
)

Retrieves the weight for the point formatParam{pntindex}.

参数
[in] index The joint index: <= index < GetJointCount()
[in] pntindex The point index.
返回
The weight.

◆  SetWeight()

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

Sets the weight for formatParam{pntindex}.

参数
[in] index The joint index: <= index < GetJointCount()
[in] pntindex The point index.
[in] weight The new weight.
返回
true if successful, otherwise false .

◆  GetWeightDirty()

UInt32 GetWeightDirty ( )

Gets the dirty state of the weights.

返回
The weights' dirty state.

◆  WeightDirty()

void WeightDirty ( )

Marks the weights dirty.

◆  GetGeomMg()

矩阵 GetGeomMg ( )

Retrieves the global matrix for the bind geometry.

注意
Use this with the global matrices of the joints to get the local transforms.
返回
The global matrix for the bind geometry.

◆  SetGeomMg()

void SetGeomMg ( const 矩阵 mg )

Sets the global matrix for the bind geometry.

参数
[in] mg The new global matrix for the bind geometry.

◆  AddJoint()

Int32 AddJoint ( BaseObject op )

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

参数
[in] op The joint object to add to the weight tag's "Joints" list.
返回
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.

参数
[in] op The 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 .

注意
The joints must be in the document.
参数
[in] index The 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.

参数
[in] doc The document containing the weight tags.
[in] doUndo If you want to add undo steps.
返回
true if successful, otherwise false .

◆  SetBindPose()

Bool SetBindPose ( BaseDocument doc ,
Bool   doUndo  
)

Set the bind pose to the currently set joint state.

参数
[in] doc The document containing the weight tags.
[in] doUndo If you want to add undo steps.
返回
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.

参数
[in] doc The document containing the weight tags.
[out] dst The destination weight tag.
[in] sindex The index of the source joint. Pass NOTOK for all joints.
[in] dindex The index of the destination joint. Pass NOTOK for all joints.
[in] offset The offset to move the weight indices when they are copied to the destination. Pass NOTOK for all indices.
[in] cnt The number of weights to be transfered. Pass NOTOK for all weights.
[in] trans An alias translator for the operation. Can be nullptr . The caller owns the pointed alias translator.
[in] mergeTags True if you want to merge the source into the destination, works with common joints.
返回
true if successful, otherwise false .