Skins

apply_skin_weights_from_file(file_path, *skins: List[pymel.core.nt.SkinCluster])

Load skin weights from a .weights file, and apply it to one or more skin clusters.

Parameters:
  • file_path (str) – A full path to the .weights file to read

  • *skins (PyNode) – One or more skin cluster nodes

apply_skin_weights_map(skin_weights, *skins: List[pymel.core.nt.SkinCluster])

Set the skin weights for multiple skin clusters.

Parameters:
  • skin_weights (dict) – A map of skin node names to weights data, as given by get_skin_weights

  • *skins (PyNode) – One or more skin cluster nodes

get_meshes_from_skin(skin)

Return the mesh connected to a skin cluster

get_skin_from_mesh(mesh)

Return the main skin node from a mesh.

Parameters:

mesh (PyNode) – A mesh node

get_skin_influences(skin)

Return all influences affecting a skin.

Parameters:

skin (PyNode) – A skin cluster node

Returns:

A dictionary with influence index (id) as keys and influence nodes as values.

get_skin_weights(skin, indices=None, influences=None, influences_as_strings=True)

Return the vertex weights of a skin, optionally filtered to only a set of vertex indices or influences.

Parameters:
  • skin (PyNode) – A skin cluster node

  • indices (list of int) – If given, only return weights for the vertices at these indices

  • influences (list of PyNode) – An optional list of known influences, if omitted will retrieve all the influences from the skin

  • influences_as_strings (bool) – If true, return influences as strings instead of PyNode objects

Returns:

A list of tuples representing each vertex and the weights for each influence.

e.g. [(index, [(influence, weight), …]), …]

get_skin_weights_map(*skins)

Return a dict containing weights for multiple skin clusters

Parameters:

*skins (PyNode) – One or more skin cluster nodes

Returns:

weights} for all the skin clusters

Return type:

A dict of {skinName

get_skins_from_joint(joint)

Return a list of skin clusters in which a joint is an influence

Parameters:

joint (PyNode) – A joint node

move_inf_weights_to_parents(weights, inf_pattern)

Find influences by pattern, and move their weights to the first parent not removed.

Returns:

A tuple of (new_weights, changed) where changed is true if any influences were remapped.

normalize_skin_weights(skin)

Normalize the weights of a skin manually be retrieving the weights, applying numerical normalization, then reapplying the new weights.

normalize_weights_data(weights)

Return a copy of the given weights data, with all weight values normalized such that the sum of all weights for any vertex is equal to 1.

Parameters:

weights (list) – A list of vertex weights, as given by get_skin_weights

remove_inf_namespaces(weights)

Remove influence namespaces from weights data

save_skin_weights_to_file(file_path, *skins)

Save skin weights to a .weights file for one or more skin clusters.

Parameters:
  • file_path (str) – A full path to the .weights file to write

  • *skins (PyNode) – One or more skin cluster nodes

set_skin_weights(skin, weights, prune=True)

Set the exact weights for a skin.

Parameters:
  • skin (PyNode) – A skin cluster node

  • weights (list) – A list of vertex weights, as given by get_skin_weights

  • prune (bool) – If true, remove influences that have no weights

smooth_mesh_border_normals(meshes, merge_threshold=0.005)

Fix seams along the borders of adjacent meshes by combining, smoothing, and transferring normals back to the original meshes. Affects all normals touching the border faces, but makes sure only the border vertex normals remain locked.