-
Notifications
You must be signed in to change notification settings - Fork 41
07 ‐ Validator
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.
These validators are designed to verify and fix the modeling before starting the rigging.
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:

- 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
- Verify: If there are referenced files in the scene
- Fix: It just imports them if they exist.
Doc5: Import Reference
- 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
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)
- Verify: It detects the
ShowBPscript node from the current Maya scene. - Fix: Delete the found
ShowBPscript nodes.
That disturbing script node opens the BlendShape window many times when we load the file.

Doc5: ShowBP Cleaner
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
- 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
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
- 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.

Doc5: One Vertex
- 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.

Doc5: T 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
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
- 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
- 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
- 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.

Doc5: Remaining Vertex Cleaner
- Verify: It checks if there colorPerVertex in some mesh in the scene.
- Fix: It removes all found colorPerVertex nodes.

Doc5: ColorPerVertex Cleaner
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
- 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
- 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.

Doc5: Soften Edges
- 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
- 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
- Verify: It finds any non-default value in the transforms [translate, rotate, scale].
- Fix: Applies a FreezeTransformation Maya command.
Doc5: Freeze Transform
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
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.
- Verify: It checks if there are cycle errors in the scene.
- Fix: Do nothing. The rigger should fix it manually.
Doc5: Cycle Cheker
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
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
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
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
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
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
- 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
- Verify: It checks if there are any
nodeGraphEditorInfonodes in the scene. - Fix: It deletes all
nodeGraphEditorInfonodes because they aren't useful to be stored during the animation.
Doc5: Node Editor Info 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
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
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.
- 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
- Verify: It finds shader materials that aren't applied to any geometry.
- Fix: It deletes the unused shader nodes.
Doc5: Unused Node Cleaner
- 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
- 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
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
- 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
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.
- 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
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
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
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
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
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
- 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
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
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
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
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
- 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
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.

Doc5: Proxy Creator
- 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
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
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
dpDeleteItattributes and if their values are 1 (on). - Fix: it deletes the nodes with the active
dpDeleteItattributes.
Doc5: Cleanup
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:
dpAddOnsin the pipeline directory that contains the dpPipelineInfo.json
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:
dpFinishingin 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.