c4d.modules.character.CAWeightMgr

class c4d.modules.character.CAWeightMgr

Represents the Weight Manager.

New in version R19.

Note

Weight Manager data and settings are per document.
Any change on a document does not affect other open documents.

Overview

List Access

static CAWeightMgr.GetJointCount

Queries the number of joints bound to a weight tag.

static CAWeightMgr.GetJointId

Returns the unique Id of a joint.

static CAWeightMgr.GetJointIndex

Finds a joint’s main (tag) and sub (joint) indices in the joint list.

static CAWeightMgr.GetJointObject

Finds a joint object from its indices or Id in the joint list.

static CAWeightMgr.GetMeshObject

Finds the object owning the weight tag from a tag index in the joint list.

static CAWeightMgr.GetTagCount

Queries the number of weight tags for the passed document doc.

static CAWeightMgr.GetTagIndex

Finds a tag’s index in the joint list.

static CAWeightMgr.GetWeightTag

Finds a weight tag from its index in the joint list.

static CAWeightMgr.ValidateJointIndex

Validates tag and joint indices before access.

Locks

static CAWeightMgr.IsJointLocked

Checks if a joint of the Weight Manager list is locked.

static CAWeightMgr.LockAllJoints

Locks all joints of all tags in the Weight Manager list.

static CAWeightMgr.LockSelectedJoints

Locks selected joints in the Weight Manager list.

static CAWeightMgr.UnlockAllJoints

Unlocks all joints of all tags in the Weight Manager list.

static CAWeightMgr.UnlockSelectedJoints

Unlocks selected joints in the Weight Manager list.

Manager Update

static CAWeightMgr.GetAutoWeightAlgoId

Get the AutoWeightRef algorithm’s id associated with the given index.

static CAWeightMgr.GetAutoWeightAlgoIndex

Get the AutoWeightRef algorithm’s index associated with the given id.

static CAWeightMgr.GetAutoWeightDictionary

Get autoweight dictionary of the Weight Manager.

static CAWeightMgr.GetParameter

Retrieves a parameter of the Weight Manager.

static CAWeightMgr.SetAutoWeightDictionary

Get autoweight dictionary of the Weight Manager.

static CAWeightMgr.SetDirty

Sets the Weight Manager dirty to force an update on the next call to Update().

static CAWeightMgr.SetParameter

Sets a parameters of the Weight Manager.

static CAWeightMgr.Update

Updates the internal weighted object list.

Selection

static CAWeightMgr.IsJointSelected

Checks if a joint of the Weight Manager list is selected.

static CAWeightMgr.SelectAllJoints

Selects all joints of all tags in the Weight Manager list.

static CAWeightMgr.SelectJoint

Selects a joint of the Weight Manager list.

static CAWeightMgr.UnselectAllJointListNodes

Deselects all of the nodes in the Weight Manager joint list. This includes all type of nodes (mesh/tag/folder/joint).

static CAWeightMgr.UnselectAllJoints

Deselects all joints of all tags in the Weight Manager list.

static CAWeightMgr.UnselectJoint

Deselects a joint of the Weight Manager list.

Weighting Functions

static CAWeightMgr.ApplyWeightFunction

Applies the currently selected weighting function to the selected joints (add, smooth, remap etc.).

static CAWeightMgr.AutoWeight

Runs an auto weight algorithm on the selected joints.

static CAWeightMgr.BakeWeights

Bakes the effector weights.

static CAWeightMgr.ClearWeights

Clears all weights on the selected joints.

static CAWeightMgr.CopyWeights

Copies the weights of the selected joints into the weights clipboard.

static CAWeightMgr.FlipWeights

Flips the weights of the selected joints. Each joint is flipped on itself using the local axis specified in Weight Manager container.

static CAWeightMgr.MirrorWeights

Mirrors the weights for the selected joints.

static CAWeightMgr.NormalizeWeights

Applies a normalization on the selected joints.

static CAWeightMgr.PasteWeights

Pastes the copied weights on the selected joints.

static CAWeightMgr.SmoothWeights

Smooths the weights of the selected joints.

Members

static CAWeightMgr.GetJointCount(doc, tagIdx)

Queries the number of joints bound to a weight tag.

Parameters
Return type

int

Returns

The joints count.

static CAWeightMgr.GetJointId(doc, tag, joint)

Returns the unique Id of a joint.

Note

This Id remains valid even if the joint list changes or if undo/redo is used.

Parameters
Return type

int

Returns

The joint unique Id, or sys.maxsize if not found.

static CAWeightMgr.GetJointIndex(doc, tag, joint)

Finds a joint’s main (tag) and sub (joint) indices in the joint list.

Note

The joint index might not match the joint index on the tag.
It is not recommended to keep indices over time, some operations might change the list ordering or length.
Only the Ids to reference joints can be kept over time.
Parameters
Return type

Tuple[int, int]

Returns

The tag’s index in the joint list, or NOTOK/-1 if not found, and the joint’s index in the joint list, or NOTOK/-1 if not found.

static CAWeightMgr.GetJointObject(doc, tagIdx, jointIdx)

Finds a joint object from its indices or Id in the joint list.

Parameters
  • doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

  • tagIdx (int) – The tag’s index in the joint list.

  • jointIdx (int) – The joint’s index in the joint list.

Return type

Optional[c4d.modules.character.CAJointObject]

Returns

The joint object, or None if not found.

static CAWeightMgr.GetMeshObject(doc, tagIdx)

Finds the object owning the weight tag from a tag index in the joint list.

Parameters
Return type

Optional[c4d.BaseObject]

Returns

The mesh object, or None if not found.

static CAWeightMgr.GetTagCount(doc)

Queries the number of weight tags for the passed document doc.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

int

Returns

The weight tags count.

static CAWeightMgr.GetTagIndex(doc, tag)

Finds a tag’s index in the joint list.

Parameters
Return type

int

Returns

The tag’s index in the list, or NOTOK/-1 if not found.

static CAWeightMgr.GetWeightTag(doc, tagIdx)

Finds a weight tag from its index in the joint list.

Parameters
Return type

Optional[c4d.modules.character.CAWeightTag]

Returns

The weight tag, or None if not found.

static CAWeightMgr.ValidateJointIndex(doc, tagIdx, jointIdx)

Validates tag and joint indices before access.

Warning

Call before functions that require tag and joint indices to avoid crashes.

Parameters
  • doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

  • tagIdx (int) – The tag’s index in the joint list.

  • jointIdx (int) – The joint’s index in the joint list.

Return type

bool

Returns

True if tag and joint indices are valid, otherwise False.

static CAWeightMgr.IsJointLocked(doc, tagIdx, jointIdx)

Checks if a joint of the Weight Manager list is locked.

Parameters
  • doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

  • tagIdx (int) – The tag’s index in the joint list.

  • jointIdx (int) – The joint’s index in the joint list.

Return type

bool

Returns

True if the joint was found and is locked, otherwise False.

static CAWeightMgr.LockAllJoints(doc)

Locks all joints of all tags in the Weight Manager list.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if all joints got locked, otherwise False.

static CAWeightMgr.LockSelectedJoints(doc)

Locks selected joints in the Weight Manager list.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.UnlockAllJoints(doc)

Unlocks all joints of all tags in the Weight Manager list.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.UnlockSelectedJoints(doc)

Unlocks selected joints in the Weight Manager list.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.GetAutoWeightAlgoId(doc, index)

Get the AutoWeightRef algorithm’s id associated with the given index.

New in version R21.

Parameters
Return type

maxon.Id

Returns

The index of the autoweight id.

static CAWeightMgr.GetAutoWeightAlgoIndex(doc, stringId)

Get the AutoWeightRef algorithm’s index associated with the given id.

New in version R21.

Parameters
Return type

int

Returns

The index of the autoweight id.

static CAWeightMgr.GetAutoWeightDictionary(doc, stringId)

Get autoweight dictionary of the Weight Manager.

New in version R21.

Parameters
  • doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

  • stringId (maxon.Id) – The maxon id of the autoweight algorithm.

Return type

maxon.DataDictionary

Returns

The data dictionary with the autoweight parameters inside.

static CAWeightMgr.GetParameter(doc, id)

Retrieves a parameter of the Weight Manager.

Parameters
Return type

Optional[Any]

Returns

The parameter data, otherwise None if the function failed.

static CAWeightMgr.SetAutoWeightDictionary(doc, dataDictionary, stringId)

Get autoweight dictionary of the Weight Manager.

New in version R21.

Parameters
  • doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

  • dataDictionary (maxon.The data dictionary with the autoweight parameters inside.) – The data dictionary with the autoweight parameters inside.

  • stringId (maxon.Id) – The maxon id of the autoweight algorithm.

Return type

bool

Returns

True if it worked.

static CAWeightMgr.SetDirty(doc)
Sets the Weight Manager dirty to force an update on the next call to Update().

If the Weight Manager dialog is open or if the Weight Manager is active, the update happens automatically at the next frame.
To force an update after a parameter change, use SetDirty(), then call Update(). Call SetDirty() if a Weight Manager’s parameter was directly modified in its container.

Note

Call c4d.EventAdd() to refresh the Weight Manager UI to show the updated changes.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.SetParameter(doc, id, newValue)
Sets a parameters of the Weight Manager.
Result is the same as setting a parameter on the Weight Manager’s container directly except that SetParameter() allows to specify the document in which to set the parameter.

Warning

Setting parameters directly into the Weight Manager’s container is not recommended.
Doing so requires to make the Weight Manager dirty and to update it manually.

Note

Call c4d.EventAdd() to refresh the Weight Manager UI to show the updated changes.

Parameters
  • doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

  • id (int) – The ID of the parameter to set.

  • newValue (any) – The parameter data to set.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.Update(doc)
Updates the internal weighted object list.

Call before using other methods of CAWeightMgr if the Weight Manager dialog is closed and if the weight tool is inactive. Any of the two condition is enough to have the update run automatically each frame.
Also call if the weighted object list was changed programmatically. For instance after adding a new tag, performing undo redo, or any reason where an update is needed immediately.

Note

Update has no effect if nothing dirty is detected.
Call c4d.EventAdd() to refresh the Weight Manager UI to show the updated changes.
Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.IsJointSelected(doc, tagIdx, jointIdx)

Checks if a joint of the Weight Manager list is selected.

Parameters
  • doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

  • tagIdx (int) – The tag’s index in the joint list.

  • jointIdx (int) – The joint’s index in the joint list.

Return type

bool

Returns

True if the joint was found and is selected, otherwise False.

static CAWeightMgr.SelectAllJoints(doc)

Selects all joints of all tags in the Weight Manager list.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

static CAWeightMgr.SelectJoint(doc, tagIdx, jointIdx)

Selects a joint of the Weight Manager list.

Parameters
  • doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

  • tagIdx (int) – The tag’s index in the joint list.

  • jointIdx (int) – The joint’s index in the joint list.

Return type

bool

Returns

True if the joint was selected, otherwise False.

static CAWeightMgr.UnselectAllJointListNodes(doc)

Deselects all of the nodes in the Weight Manager joint list. This includes all type of nodes (mesh/tag/folder/joint).

Note

The CAWeightMgr API does not allow selecting/deselecting mesh and tags at the moment.
As a parent mesh, tag, or folder activates the child joints for painting, call this function to get rid of any mesh/tag that could have been already selected.
Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

static CAWeightMgr.UnselectAllJoints(doc)

Deselects all joints of all tags in the Weight Manager list.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

static CAWeightMgr.UnselectJoint(doc, tagIdx, jointIdx)

Deselects a joint of the Weight Manager list.

Parameters
  • doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

  • tagIdx (int) – The tag’s index in the joint list.

  • jointIdx (int) – The joint’s index in the joint list.

Return type

bool

Returns

True if the joint was deselected, otherwise False.

static CAWeightMgr.ApplyWeightFunction(doc, allPoints=False)
Applies the currently selected weighting function to the selected joints (add, smooth, remap etc.).
Uses the parameters currently set in the Weight Manager’s container for the document.

Note

The point selection is fetched from the actual component mode or from point mode if the document is not in component mode.

Parameters
Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.AutoWeight(doc)
Runs an auto weight algorithm on the selected joints.
Uses the parameters currently set in the Weight Manager’s container for the document.

Changed in version R21: allowNull parameter no more there.

Note

Adds an undo.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.BakeWeights(doc, normalize)
Bakes the effector weights.
Uses the parameters currently set in the Weight Manager’s container for the document.
Parameters
  • doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

  • normalize (bool) – True to normalize after bake operation, otherwise False.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.ClearWeights(doc)

Clears all weights on the selected joints.

Note

Adds an undo.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.CopyWeights(doc)

Copies the weights of the selected joints into the weights clipboard.

Note

Document must be in either point, edge or polygon edit mode.
If no selection is present on the mesh, all the point are copied, otherwise only the selected points are copied.
Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.FlipWeights(doc)

Flips the weights of the selected joints. Each joint is flipped on itself using the local axis specified in Weight Manager container.

Note

Both zero and non zero weights are flipped.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.MirrorWeights(doc)
Mirrors the weights for the selected joints.
Uses the parameters currently set in the Weight Manager’s container for the document.

Note

Adds an undo.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.NormalizeWeights(doc)

Applies a normalization on the selected joints.

Note

Some joints can be locked prior to normalization to avoid touching some joints.

Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.PasteWeights(doc, merge)
Pastes the copied weights on the selected joints.
Uses the parameters currently set in the Weight Manager’s container for the document.
Parameters
  • doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

  • merge (bool) –

    True to merge with target weights, False to replace target weights:
    True adds the source weights to the target weights. For instance, source point with null weight does not affect the final result.
    False replaces all the target weights with the source weights including null source weights. For instance, all target weights are lost and replaced with source weights.

Return type

bool

Returns

True if successful, otherwise False.

static CAWeightMgr.SmoothWeights(doc)
Smooths the weights of the selected joints.
Uses the parameters currently set in the Weight Manager’s container for the document.
Parameters

doc (c4d.documents.BaseDocument) – The document for the Weight Manager.

Return type

bool

Returns

True if successful, otherwise True.