Mesh Validator

Use Tridi Viewer Mesh Validator to inspect transform and placement, geometry, topology, normals, tangents, UVs, skinning, and morph-target issues in 3D models.

Applies to Tridi Viewer 1.3.1 public beta. Release notes

What Mesh Validator does

Mesh Validator scans the current canonical scene for geometry, topology, attribute, deformation, transform, and scene-placement problems. Validation can run across the entire scene or only the selected objects and their descendants.

Checks are grouped into Transform & Placement, Geometry, Normals & Tangents, UV, Skinning, and Morph Targets. A separate Performance section reports scene metrics; it does not add validation issues.

Open and use Mesh Validator

  1. Open a supported 3D model.
  2. Open Mesh Validator from the Validation control in the status bar, or press F5.
  3. Open the settings button in the panel header to choose Entire Scene or Selected Objects and enable or disable individual checks. Selected Objects requires at least one selected object and also includes its descendants.
  4. The validator runs automatically when a report has not been created yet or when the existing report becomes stale. Changing the scope or enabled checks resets the report and triggers a fresh scan when validation can run.
  5. Use the panel header control to detach Mesh Validator into a movable panel or attach it back to the workspace dock.

How results are displayed

When import diagnostics are available, Mesh Validator shows those messages in a separate section above the validation report. The validation report then summarizes the current scan with separate Error, Warning, and Info counts.

  • Validation issues are grouped by category, with the category header showing the number of reported issues.
  • Expanding an issue shows its explanation and, when available, the related object and primitive.
  • For geometry, topology, normal, tangent, UV, and skinning issues with addressable edge, face, or vertex samples, the Affected action can display the affected geometry as a wireframe highlight and frame it in the viewport. Large issue sets keep a sample of up to 128 affected elements for highlighting.
  • Object-level Transform & Placement findings provide the related object so it can be focused. Scene-level placement findings provide a Frame Scene action instead of an affected-element wireframe.
  • If the scene or selected-object scope changes after a report is created, the report becomes stale and a fresh validation scan is requested when possible.

Performance metrics

The Performance section reports object, mesh, mesh-instance, primitive, vertex, triangle, edge, material, UV-set, skin, morph-target, and estimated draw-call counts for the validated scope.

Available validation checks

Mesh Validator currently provides 35 checks. Default shows whether a check is enabled in a new default configuration.

Check Type Severity Default What it detects Short explanation
Scene not centered to world originTransform & PlacementWarningOnThe scene bounding box is horizontally offset from the world origin.Entire Scene only. Checks the X/Z center of the complete scene bounds using a size-aware placement tolerance.
Scene floating above grid floorTransform & PlacementErrorOnThe lowest point of the scene is above the grid floor.Entire Scene only. Flags a scene whose bounding-box minimum Y remains above the floor beyond the placement tolerance.
Scene below grid floorTransform & PlacementErrorOnThe scene extends below the grid floor.Entire Scene only. Flags a scene whose bounding-box minimum Y is below the floor beyond the placement tolerance.
Scale not resetTransform & PlacementErrorOnA renderable node does not use a reset scale of approximately (1, 1, 1).Checks renderable nodes with geometry and ignores synthetic importer roots.
Negative scaleTransform & PlacementErrorOnA renderable node has a negative or mirrored scale.Detects negative TRS scale components or a transform matrix with a negative determinant.
Non-uniform scaleTransform & PlacementWarningOnA renderable node uses different scale magnitudes across its axes.Flags transforms whose X, Y, and Z scale magnitudes are not approximately equal.
Sheared transformTransform & PlacementWarningOnA renderable node transform contains shear.Detects matrix transforms whose normalized basis axes are not orthogonal, meaning the transform is not clean TRS.
Rotation not resetTransform & PlacementWarningOffA renderable node rotation is not approximately identity.Optional check for authored TRS rotations or clean matrix rotations that have not been reset.
Model dimension is 100 m or largerTransform & PlacementWarningOnAt least one complete-scene dimension is 100 meters or larger.Entire Scene only. Checks the maximum width, height, or depth of the scene bounds.
Invalid canonical sceneGeometryErrorOnThe canonical scene fails its core validation.This is a global integrity check even when Selected Objects scope is active.
Empty meshGeometryErrorOnAn in-scope mesh contains no primitives.Flags referenced meshes that have no renderable primitive data.
Empty primitiveGeometryErrorOnA primitive has no positions or no triangle indices.Detects primitives that do not contain the minimum geometry data needed for indexed triangles.
NaN / Inf positionGeometryErrorOnA vertex position contains a non-finite component.Finds position values containing NaN or infinity.
Attribute count mismatchGeometryErrorOnA non-empty vertex attribute stream has a different count from positions.Checks normals, tangents, colors, UV0, UV1, joint indices, and joint weights against the primitive position count.
Invalid indexGeometryErrorOnA triangle index is outside the vertex range, or the index count is not divisible by three.Detects invalid indexed-triangle data.
Degenerate triangleGeometryErrorOnA triangle repeats a vertex or has near-zero area.Finds collapsed or effectively zero-area triangles.
Loose vertexGeometryWarningOnA render vertex is not referenced by any triangle.Finds unused vertices in a primitive's indexed triangle data.
BoundariesGeometryWarningOnAn edge belongs to only one face.Finds open boundary edges in canonical topology.
Multiple FacesGeometryWarningOnAn edge is shared by more than two faces.Finds non-manifold edges with more than two adjacent faces.
Non ContiguousGeometryWarningOnTwo faces traverse a shared edge in the same direction.Finds adjacent faces with inconsistent winding across their shared edge.
Missing normalsNormals & TangentsInfoOnA primitive with positions has no authored normals.Reports missing normal data without treating it as an error.
Invalid normalsNormals & TangentsErrorOnA normal is non-finite or has zero length.Detects normals that cannot provide a valid direction.
Non-normalized normalsNormals & TangentsWarningOnA normal is not approximately unit length.Finds authored normals whose length differs from one beyond the validator tolerance.
Missing tangentsNormals & TangentsWarningOnA material uses tangent-space data but the primitive has no authored tangents.Applies when normal, height, or clearcoat-normal texture data requires tangent-space information.
Invalid tangentsNormals & TangentsWarningOnA tangent is non-finite, zero-length, non-normalized, or has invalid handedness.Checks the tangent direction and that its handedness component is approximately +1 or -1.
Missing UVUVErrorOnA material references UV0 or UV1 but that UV set is missing from the primitive.Only reports a missing set when a texture binding actually requires it.
Invalid UVUVErrorOnA UV0 or UV1 coordinate contains NaN or infinity.Detects non-finite UV coordinates in correctly sized UV streams.
UV outside 0-1UVInfoOnA finite UV coordinate lies outside the 0-1 range.Reports possible tiling coordinates as informational because values outside 0-1 can be intentional.
Incomplete skin streamsSkinningErrorOnJoint indices and weights are missing one another or do not match the vertex count.Requires aligned joint-index and joint-weight streams for skinned vertices.
Invalid joint indexSkinningErrorOnA positive-weight influence references a joint outside the mesh instance's skin palette.Also reports skin streams that exist without a mesh instance to provide a valid skin palette.
Negative skin weightSkinningErrorOnA skin weight is negative or non-finite.Finds invalid weight values before normalization is considered.
Non-normalized skin weightsSkinningWarningOnA vertex's skin-weight sum differs from one.Checks the four stored influences against the validator's weight-sum tolerance.
Duplicate joint influenceSkinningWarningOnThe same joint appears more than once with a positive weight on one vertex.Finds redundant positive influences that reference the same joint.
Inconsistent morph target countMorph TargetsErrorOnPrimitive morph-target counts disagree within a mesh, or default morph weights do not match the expected count.Checks that a mesh uses a consistent number of morph targets and matching default weights.
Invalid morph target streamMorph TargetsErrorOnA morph delta stream has the wrong count or contains a non-finite delta.Checks non-empty position, normal, and tangent morph-delta streams against the primitive vertex count.