<commit_before>#### polySymmetry (version 0.0.1)
Maya tool for finding the symmetry of a polygon mesh based on the topology.

#### Description
The Poly Symmetry Tool uses an iterative algorithm to compute the symmetry of a mesh that has the same topology on either side of the center edge loop. The tool requires the user to provide pairs of symmetrical components to start (see below) on pair of symmetrical vertex shells (a vertex shell is usually symmertical to itself). After that, the algorithm walks the topology outward from the user provided components and produces a symmetry table for the edges, faces, and vertices.

The symmetry table can be used for mirroring and flipping data associated with the mesh, such as: skinWeights, deformer weights, blendshape targets, etc. Because topology symmetry is indifferent to the world position of the vertices, you could use the symmetry table to mirror weights on a deformed character *without* having to return to the bind pose.

#### Plugin Contents

##### Tools
------------
**polySymmetryCtx**
To active the tool, run this Python command: 
```
    cmds.loadPlugin('polySymmetry')
    cmds.setToolTo(cmds.polySymmetryCtx())
```

Select the mesh you want find the symmetry of, and press Enter.

Select seven components, and press Enter. The seven components should be:
  * A vertex on the left side of the mesh
  * A vertex, an edge, and a face on each side of the mesh. 
    The selected vertex must be on the selected edge, which must be on the 
    selected face. 

After each selection of seven, the vertices of the mesh will be colored 
according to which side of the mesh they are on. If any vertices are 
uncolored. Only the vertices on the same shell(s) as the previous 
selection(s) will be colored.

Continue adding selections until the entire mesh is colored.

With nothing selected, press Enter to complete the tool. A new 
polySymmetryData node will be created with the symmetry data baked into.
    
##### Nodes
------------
**polySymmetryData**
  
  By default, the polySymmetry command creates a data node that holds the component symmetry indices.

  Attribute Name | Description | Attribute Type 
  -------------- | -------------- | --------------
  **vertexSymmetry** | Indices of the array correspond to the vertices of the mesh. Values of the array correspond to the index of the opposite vertex. | int array   
  **edgeSymmetry** | Indices of the array correspond to the edges of the mesh. Values of the array correspond to the index of the opposite edge. | int array   <commit_msg>Update readme with additional selection rules.<commit_after>#### polySymmetry (version 0.0.1)
Maya tool for finding the symmetry of a polygon mesh based on the topology.

#### Description
The Poly Symmetry Tool uses an iterative algorithm to compute the symmetry of a mesh that has the same topology on either side of the center edge loop. The tool requires the user to provide pairs of symmetrical components to start (see below) on pair of symmetrical vertex shells (a vertex shell is usually symmertical to itself). After that, the algorithm walks the topology outward from the user provided components and produces a symmetry table for the edges, faces, and vertices.

The symmetry table can be used for mirroring and flipping data associated with the mesh, such as: skinWeights, deformer weights, blendshape targets, etc. Because topology symmetry is indifferent to the world position of the vertices, you could use the symmetry table to mirror weights on a deformed character *without* having to return to the bind pose.

#### Plugin Contents

##### Tools
------------
**polySymmetryCtx**
To active the tool, run this Python command: 
```
    cmds.loadPlugin('polySymmetry')
    cmds.setToolTo(cmds.polySymmetryCtx())
```

Select the mesh you want find the symmetry of, and press Enter.

Select seven components, and press Enter. The seven components should be:
  * A vertex on the left side of the mesh. This vertex must not touch any other selected component.
  * A vertex, an edge, and a face on each side of the mesh. 
    The selected vertex must be on the selected edge, which must be on the 
    selected face. The selected edges must not be border edges.

After each selection of seven, the vertices of the mesh will be colored 
according to which side of the mesh they are on. If any vertices are 
uncolored. Only the vertices on the same shell(s) as the previous 
selection(s) will be colored.

Continue adding selections until the entire mesh is colored.

With nothing selected, press Enter to complete the tool. A new 
polySymmetryData node will be created with the symmetry data baked into.
    
##### Nodes
------------
**polySymmetryData**
  
  By default, the polySymmetry command creates a data node that holds the component symmetry indices.

  Attribute Name | Description | Attribute Type 
  -------------- | -------------- | --------------
  **vertexSymmetry** | Indices of the array correspond to the vertices of the mesh. Values of the array correspond to the index of the opposite vertex. | int array   
  **edgeSymmetry** | Indices of the array correspond to the edges of the mesh. Values of the array correspond to the index of the opposite edge. | int array   
{'fraction_non_alphanumeric': 0.07274804799085888, 'fraction_numerical': 0.0011426394972386211, 'mean_word_length': 3.639575971731449, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6283106', 'n_tokens_mistral': 1274, 'n_tokens_neox': 1214, 'n_words': 778}