Skip to content
Danilo Pinheiro edited this page Jan 12, 2026 · 6 revisions

In the Validator tab, we find many modules to help us with sanitizing diagnostics and fixing issues. The concept is to identify potential problems and try to automatically solve them. Also, we can see these modules as helpers to review our rig and make sure that everything is working well as expected.

Each module has 2 buttons to do these actions:

  • Verify
  • Fix

They become green if everything works well in the checking or fixing. If they change the color to yellow or red, they need our attention for some issue results, or found errors.

The system shows us a log window with the result and prints it in the Script Editor as well.

Checkin

These validators are designed to verify and fix the modeling before starting the rigging.

VaccineCleaner Vaccine Cleaner

This validator will disinfect the vaccine virus. Once you open an infected Maya file, you start getting this kind of message, and spread it to other computers when sharing the file:

dpAR_Doc5_wiki_31_Validator_Checkin_VaccineCleaner

  • Verify: If there are malicious script nodes in the scene, like:
    • vaccine_gene
    • breed_gene
  • Fix: Delete the infected nodes.

Warning

  • It won't delete these files:
    • ../maya/scripts/userSetup.py
    • ../maya/scripts/vaccine.py
  • You must delete them manually, please.

Tutorial: Cleanup Vaccine Chines
Doc5: Vaccine Cleaner

ImportReference Import Referenced File

  • Verify: If there are referenced files in the scene
  • Fix: It just imports them if they exist.

Doc5: Import Reference

NamespaceCleaner Namespace Cleaner

  • Verify: It checks if there are namespaces in the scene.
  • Fix: Remove them.

Note

It won't delete the namespaces of the guides (including __) because the script needs them to load the modules correctly.

Doc5: Namespace Cleaner

UnlockInitialShadingGroup Unlock InitialShadingGroup

An issue may happen when we get a file with a locked initialShadingGroup node. The problem is that when we try to create a new geometry, it doesn't come with an assigned shading... so it looks invisible in the viewport. Yes, it isn't advantageous to us! This validator uses these commands to check and fix the issue:

  • Verify: maya.cmds.lockNode("initialShadingGroup", query=True, lockUnpublished=True)
  • Fix: maya.cmds.lockNode("initialShadingGroup", lock=False, lockUnpublished=False)

Doc5: Unlock InitialShadingGroup

ShowBPCleaner ShowBP Cleaner

  • Verify: It detects the ShowBP script node from the current Maya scene.
  • Fix: Delete the found ShowBP script nodes.

That disturbing script node opens the BlendShape window many times when we load the file.

dpAR_Doc5_wiki_32_Validator_Checkin_ShowBPCleaner

Doc5: ShowBP Cleaner

DuplicatedName Duplicated Name

Some tools work better if we have only unique names for the nodes, so it's recommended to avoid duplicate names, please.

  • Verify: It's a handy script to find non-unique name nodes in the scene.
  • Fix: It will just add a number as a suffix to the found nodes. So, it won't do a great renaming job, sorry.

Doc5: Duplicated Name

IntermediateObject Intermediate Object

  • Verify: This validator verifies if there are intermediateObject meshes in the scene.
  • Fix: It reveals the intermediateObject meshes setting this attribute to off.

Doc5: Intermediate Object

ParentedGeometry Parented Geometry

We should avoid geometry parenting between meshes in Maya. Especially if we want to render the geometries properly, because it can bring some trouble to the rendering process.

  • Verify: It checks if there are child meshes of another mesh.
  • Fix: Parent the issue children on the uncle position of their parents.

Doc5: Parented Geometry

OneVertex One Vertex

  • Verify: This validator checks the mesh topology to find a non-manifold one vertex.[^1]
  • Fix: It can't fix the issue automatically, because we see a separate mesh method as a brutal force to solve this situation, sorry.

dpAR_Doc5_wiki_33_Validator_Checkin_OneVertex

Doc5: One Vertex

TFaceCleaner T Face Cleaner

  • Verify: If there are T-Face non-manifold edges in the meshes' topology in the scene.[^1]
  • Fix: It can't fix the issue automatically, because we see a separate mesh method as a brutal force to solve this situation, sorry.

dpAR_Doc5_wiki_34_Validator_Checkin_TFaceCleaner

Doc5: T Face Cleaner

LaminaFaceCleaner Lamina Face Cleaner

  • Verify: This validator checks if the mesh topology has some lamina faces, which means it has 2 faces sharing the same edges.[^1]
  • Fix: It can't fix the issue automatically, because we see a delete mesh face method as a brutal force to solve this situation, sorry.

Doc5: Lamina Face Cleaner

NonManifoldCleaner NonManifold Cleaner

Non-manifold means the mesh topologies that won't be possible to unfold as a 2D map when working on the UVs.

  • Verify: It finds non-manifold meshes in the scene.
  • Fix: It will run the Maya cleanup tool to remove the non-manifold issues.

Doc5: NonManifold Cleaner

NonQuadFace Non Quad Face

  • Verify: It finds triangles or polyfaces in the mesh topology that aren't quads.[^1]
  • Fix: It won't fix automatically because it depends on a human choice.

Doc5: Non Quad Face

BorderGap Border Gap

  • Verify: It will find holes in the polygon mesh and also the border edges.[^1]
  • Fix: It won't fix automatically because it depends on a human choice. Usually, it's desired in many prop models. It can also happen for the inner eyelids or inside of the mouth. So, we don't think it's something to change in the modeling, but we can advise the user about this situation.

Doc5: Border Gap

RemainingVertexCleaner Remaining Vertex Cleaner

  • Verify: This validator will check the mesh topologies to find a vertex connected to only 2 edges and not on a border. Sometimes, it happens when we delete a couple of edges and forget to delete the vertices too.[^1]
  • Fix: It just deletes those vertices.

dpAR_Doc5_wiki_35_Validator_Checkin_RemaininVertex

Doc5: Remaining Vertex Cleaner

ColorPerVertexCleaner ColorPerVertex cleaner

  • Verify: It checks if there colorPerVertex in some mesh in the scene.
  • Fix: It removes all found colorPerVertex nodes.

dpAR_Doc5_wiki_36_Validator_Checkin_ColorPerVertex

Doc5: ColorPerVertex Cleaner

UnlockNormals Unlock Normals

This validator is great for avoiding some black regions on the deformed meshes during the animation.

  • Verify: It checks if there are meshes with locked normals.
  • Fix: Unlock the normals.

Doc5: Unlock Normals

InvertedNormals Inverted Normals

  • Verify: It checks if there are face normals in opposite directions from others.
  • Fix: It calculates the number of normals in one direction and another. It'll consider the side with more normals as the correct side. Then, it will reverse those inverted normals.

Doc5: Inverted Normals

SoftenEdges Soften Edges

  • Verify: It will check if there are hard edges in the meshes.
  • Fix: It just applies a soften edges command on the meshes to make them smoother in the viewport.

dpAR_Doc5_wiki_37_Validator_Checkin_SoftenEdges

Doc5: Soften Edges

OverrideCleaner Override Cleaner

  • Verify: It checks if there is any active enableOverride attribute in the model scene.
  • Fix: It'll just disable them if they exist.

Doc5: Override Cleaner

UnlockAttributes Unlock Attributes

  • Verify: This validator will verify if there is any transform node with locked attributes in the channel box [translate, rotate, scale].
  • Fix: It'll unlock them for us.

Doc5: Unlock Attributes

FreezeTransform Freeze Transform

  • Verify: It finds any non-default value in the transforms [translate, rotate, scale].
  • Fix: Applies a FreezeTransformation Maya command.

Doc5: Freeze Transform

GeometryHistory Geometry History

It's very important to validate this module before starting the rigging process.

  • Verify: It checks if there is input history in the meshes.
  • Fix: It'll remove all the input geometry history of the meshes.

Doc5: Geometry History


Checkout

These validators are designed to verify and fix the rig setup after it's done and ready to be published to animation.
The main goal is to review the rig setup and compile it into a better animable rig, which means changing some things to have a lighter and faster rig to animate.

CycleChecker Cycle checker

  • Verify: It checks if there are cycle errors in the scene.
  • Fix: Do nothing. The rigger should fix it manually.

Doc5: Cycle Cheker

BrokenRivets Broken Rivets

Sometimes a rivet isn't attached to a geometry as expected because there's an issue in the mesh UVs or an error in the position calculation, since the setup depends on the follicles. When it happens, usually the rivet goes to the zero of the world after opening the scene.

  • Verify: It verifies if there are rivets with attaching issues.
  • Fix: It fixes the issue recalculating the follicle UV position.

Doc5: Broken Rivets

KeyframeCleaner Keyframe Cleaner

We should avoid sending rig files to animation when they contain keyframes. That's because it will conflict with the rig and the animation keyframes in the same referenced controller attribute, and the same applies to expressions or direct connections.

  • Verify: It checks if there are animation keyframes in exposed attribute controllers.
  • Fix: It'll delete all the keyframe nodes in the scene.

Doc5: Keyframe Cleaner

NgSkinToolsCleaner NgSkinTools Cleaner

A great skinning tool used by riggers is the ngSkinTools. Currently, before Autodesk acquires this tool, it uses non-native nodes to layer the skinning method. That's a problem when we send the rig file to animators, and they don't have this plugin installed on their computers. The solution is to bake the skinning to the original Maya skinCluster without layers or extra external nodes.

  • Verify: It checks if there are any ngSkinTools nodes in the scene.
  • Fix: It deletes all the ngSkinTools custom nodes in the current scene.

Doc5: NgSkinTools Cleaner

BrokenNetworkCleaner Broken Network Cleaner

The dpAutoRigSystem uses network nodes to set up messages, node connections, and values to organize the rig. If part of the setup is deleted or disconnected without cleanup being done, the network won't work as expected, and we consider it garbage to be collected.

  • Verify: It passes through all the setup network nodes and checks if they are correctly connected as expected.
  • Fix: It'll remove all non-conformed network nodes in the scene, which we call a broken network.

Doc5: Broken Network Cleaner

ColorSetCleaner ColorSet Cleaner

We can use the Color Set Editor or some modeling commands in the Mesh Display menu to create ColorSet nodes in the scene. We see it's creating when we edit the vertices of a blendShape target live. We don't know how to use this kind of node, and why we should keep them in the rig file until now. So, we consider them as unnecessary nodes to compute in the rig setup.

  • Verify: It finds createColorSet nodes in the scene.
  • Fix: It removed the found createColorSet nodes, deleting them.

Doc5: ColorSet Cleaner

DataSetCleaner Data_Grp Set Cleaner

Sometimes we duplicate the main mesh and use a copy to create blendShapes, for example, and we forget to clean it up. If the original mesh has a set assigned to it, the duplicated mesh will be assigned to the same set too. So, this checkout validator will remove the set connections for every node in the Data_Grp.

  • Verify: It checks if there are connected sets to any node in Data_Grp.
  • Fix: It removes the set connections on nodes in Data_Grp.

Doc5: Data Set Cleaner

HideDataGrp Hide Data_Grp

  • Verify: It verifies if the Data_Grp transform node is visible and accessible to the animators.
  • Fix: It hides the Data_Grp to avoid some animation mistakes touching the rigging setup nodes.

Doc5: Hide DataGrp

NodeEditorInfoCleaner Node Editor Info Cleaner

  • Verify: It checks if there are any nodeGraphEditorInfo nodes in the scene.
  • Fix: It deletes all nodeGraphEditorInfo nodes because they aren't useful to be stored during the animation.

Doc5: Node Editor Info Cleaner

OutlinerCleaner Outliner Cleaner

This system uses hidden nodes in the outliner to set up some features for guides [dpAR_Temp_Grp, dpAR_GuideMirror_Grp]. After the rig is done, we won't need these nodes anymore, because they are useful for the rigging purposes only, and we can clean them up when we send the file to animation.

  • Verify: It checks if there are construction hidden dpAutoRigSystem nodes.
  • Fix: Delete the unnecessary outliner hidden nodes for animation.

Doc5: Outliner Cleaner

SideCalibration Side Calibration

Usually, we calibrate the controller's values in our rig for one side. We have tools to apply these same calibrations to the opposite side, but sometimes we forget to call them. This script will help us to do this.

  • Verify: It checks if the calibration value isn't the same as the default value. If so, it'll check if one side is different from the other side.
  • Fix: If one side calibration value is the default value, the script will consider the changed value as the calibrated then copy it to the default value side. If the two sides aren't default values, we defined that the left side will be used to copy to the right side.

Doc5: Side Calibration

BlendShapeTargetCleaner BlendShape Target Cleaner

After finishing the rigging, all the non-deformed blendShape target meshes can be deleted without breaking the rig setup. This script analyzes whether we can do this to have a lighter file.

  • Verify: It checks if there are any non-deformed blendShape target meshes.
  • Fix: It deletes the unnecessary non-deformed blendShape target meshes.

Doc5: BlendShape Target Cleaner

UnknownNodesCleaner Unknown Nodes Cleaner

  • Verify: It checks if there are unknown nodes in the scene. Usually, they are from non-installed plugins.
  • Fix: It removes the unknown nodes. It's the same as Maya's menu File/Optimize Scene Size options.

Doc5: Unknown Nodes Cleaner

UnusedNodeCleaner Unused Node Cleaner

  • Verify: It finds shader materials that aren't applied to any geometry.
  • Fix: It deletes the unused shader nodes.

Doc5: Unused Node Cleaner

Prune Skin Weights Prune Skin Weights

  • Verify: This script checks if there are any skinCluster weights with very small influence values to be considered unnecessary to the deformation.
  • Fix: Remove the unnecessary skin weights. It does the same as Maya's menu Skin/Prune Small Weights, with the tolerance value of 0.0005.

Doc5: Prune Skin Weights

UnusedSkinCleaner Unused Skin Cleaner

  • Verify: It finds if there are joints in the skinCluster node influence list, but without any weight.
  • Fix: It removes the unused skinned joints without weights.

Note

It's better to run this script after the Prune Skin Weights, so it'll be more effective.

Doc5: Unused Skin Cleaner

UnusedDeformerCleaner Unused Deformer Cleaner

It does the same task as the Optimize Scene Size (Deformers) command.

  • Verify: It checks if there are any unused deformer nodes in the scene.
  • Fix: It deletes the unused deformer nodes and also the not useful Orig meshes.

Doc5: Unused Deformer Cleaner

EnvelopeChecker Envelope Checker

  • Verify: It verifies if there are any deformer's disconnected envelope attributes not set to 1 (active). We may have forgotten to reset the value to 1.
  • Fix: It set the envelope attribute to 1 for all deformers in the scene.

Doc5: Envelope Checker

ScalableDeformerChecker Scalable Deformer Checker

A scalable rig should work well if all the nodes that are scalable dependent are correctly set up. Some deformers, like DeltaMush or SkinCluster, using dual quaternions will need our attention on this configuration.

  • Verify: It finds deformers without the proper scalable setup in the rig.
  • Fix: It connects the Option_Ctrl scale output to the nodes that have scalable dependence.

Doc5: Scalable Deformer Checker

WIPCleaner WIP Cleaner

  • Verify: It checks if the WIP_Grp has some nodes in there.
  • Fix: It deletes all the nodes inside the WIP_Grp transform.

Doc5: WIP Cleaner

ExitEditMode Exit Edit Mode

In the rigging process, we can activate the Edit Mode for some corrective controllers, and it'll be useful to calibrate their behavior. When we finish the rigging, we can set zero to those attributes, but sometimes we forget to do this as well. This script will help us fix this and prepare the rig to work well in the animation.

  • Verify: It checks if there are some Edit Mode attributes set as 1 (active).
  • Fix: It set the Edit Mode attributes to zero (disable)

Doc5: Exit Edit Mode

HideCorrectives Hide Correctives

The Option_Ctrl has an attribute named correctiveDisplay if there are any modules that have correctives. Usually, these corrective controllers are used only during the rigging processes because they are useful to change or calibrate the corrections for the joints. These corrective controllers aren't designed to be animated, so we expect to hide them after the rigging is done.

  • Verify: It checks if the Option_Ctrl correctiveDisplay attribute is active and visible.
  • Fix: It set the Option_Ctrl correctiveDisplay attribute to zero and hid it from the ChannelBox.

Doc5: Hide Correctives

ControllerTag Controller Tag

Using the controllerTag is useful during the animation to make the rig faster, but it isn't good to apply during the rigging process, because it can cause some caching issues. So, we prefer to add them just when the rigging is done using this checkout validator.

  • Verify: It verifies if there are controllers without the controllerTag.
  • Fix: Add the controllerTag to the controllers.

Doc5: Controller Tag

ControlsHierarchy Controllers Hierarchy

We should avoid changing the controller's hierarchy of referenced rig files in the animation scenes, because it can break some done animations.

  • Verify: It checks if the hierarchy of controllers was changed from the latest published rig file.
  • Fix: Do nothing, it just lets us know about a possible animation issue.

Doc5: Controls Hierarchy

DisplayLayers Display Layers

Usually, we add 2 display layers in the rig [Ctrl_Lyr, Geo_Lyr].

  • Verify: It verifies if there are the 2 default display layers in the scene and if all controllers and meshes are included in those layers as well.
  • Fix: It set the display layers properly for all controllers and geometries in the scene.

Doc5: Display Layers

ResetPose Reset Pose

  • Verify: It checks if there are any attributes with no default values and if the controllers' transformations aren't at the initial state.
  • Fix: It reset the entire rig pose and attribute values to the default.

Doc5: Reset Pose

JointEndCleaner Joint End Cleaner

The system uses joints at the end of the chain for visualization purposes (_JEnd). They are handy to see the last chained joint rotation. After the rig is done, we don't need those joints anymore.

  • Verify: It finds any joints at the end of the chain without any setup connections or not part of any skinCluster deformation influence.
  • Fix: It deletes the unnecessary end joints (_JEnd).

Doc5: Joint End Cleaner

TweakNodeCleaner Tweak Node Cleaner

After the rig is done, we don't need the tweak nodes anymore. Also, we can create rigs without using tweak nodes.

  • Verify: This validator checks if there are any tweak nodes in the scene.
  • Fix: It'll delete the unnecessary and keep the edited tweak nodes in the scene.

Doc5: Tweak Node Cleaner

RemapValue to SetRange RemapValue to SetRange

During the rigging process, we use remapValue nodes because they are more flexible to edit or configure setups. However, their calculus is more expensive than using setRange nodes for simple value changing. So, it's preferable to use setRanges to have lighter and faster rigs during the animation. We do this node change when publishing the rig.

  • Verify: It checks if any remapValue nodes can be changed to setRange without losing any behavior.
  • Fix: Replace remapValue to setRange nodes when possible.

Doc5: RemapValue to SetRange

HideAllJoints Hide All Joints

Joint visualization in the viewport is just necessary during the rigging process. Then, we can hide them when delivering the rig to animation.

  • Verify: It verifies if there are any visible joints in the scene.
  • Fix: It hides all joints using the Joint Display tool automatically.

Note

If we want to go back to the original joint display status, we can easily use the Joint Display for it.

Doc5: Hide All Joints

PassthroughAttributes Passthrough Attributes

  • Verify: It identifies if there are connected attributes that don't change their values when passing their connections through nodes.
  • Fix: It simplifies the node attribute connections.

Caution

It isn't undoable and breaks the rigging maintenance using the dpAutoRigSystem. We recommend saving a wip rig file before using this validator, or just let the Publisher call it for us.

Doc5: Passthrough Attributes

ProxyCreator Proxy Creator

It's a very nice tool to automatically create proxy geometries in the rig. It finds skinned meshes and extracts from them the joint face regions to transform them without deformation. It makes a much faster rig to improve the animation layout speed. There's a proxy attribute in the Option_Ctrl to see it when it's done.

  • Verify: It verifies if there are proxies in the setup.
  • Fix: It creates the proxies for the rigged meshes.

dpAR_Doc5_wiki_38_Validator_Checkout_ProxyCreator

Doc5: Proxy Creator

EmptyTransformCleaner Empty Transform Cleaner

  • Verify: It finds not used empty transforms in the rig.
  • Fix: It deletes the unnecessary empty transform groups in the rig.

Doc5: Empty Transform Cleaner

BindPoseCleaner BindPose Cleaner

There are some issues with multiple dagPose nodes in the rigs when they are exported to some game engines. To solve this problem, we bind the whole rig setup to only one dagPose node.

  • Verify: It checks if there is more than one dagPose node.
  • Fix: It deletes all the current dagPose nodes and creates just one instead.

Doc5: BindPose Cleaner

Cleanup Cleanup

This is the last checkout validator to run when publishing a rig. It's designed to clean the rig. Currently, it just deletes the marked nodes with dpDeleteIt attributes.

  • Verify: if there are any nodes with the dpDeleteIt attributes and if their values are 1 (on).
  • Fix: it deletes the nodes with the active dpDeleteItattributes.

Doc5: Cleanup


AddOn

We can have some extra validator modules to do specific tasks for us. If you set a pipeline, you can have some addons for each studio or project, depending on each requirements. They will run before all other checkout modules.

  • Folder: dpAddOns in the pipeline directory that contains the dpPipelineInfo.json

Finishing

If we need to run some validator modules after all the processes, here's the place to add new validators that depend on the other modules being finished to work well.

  • Folder: dpFinishing in the pipeline directory that contains the dpPipelineInfo.json

[^1]: The log gives us a Python command to easily select the issue; we can share it with modelers.

Clone this wiki locally