Skip to content

Validation Errors

SMG edited this page Apr 17, 2024 · 13 revisions

SSBH Editor runs validation checks on each model folder any time a file is edited within the application. These checks ensure the data in the different model files within a folder agree with each other. For example, the model.numdlb file should only contain mesh names that exist in the model.numshb to ensure materials are properly assigned.

Validation errors will appear as yellow ⚠️ icons. Hover over the icon to see a list of errors. Validation error icons appear in the files list and in the corresponding file editors. This page describes the potential validation errors in more detail and outlines the tools and techniques required to fix them.

Red error icons indicate that a file is corrupted or could not be read. These are hard errors and can only be fixed by exporting the files again from the original application. After correctly exporting the files, reload all files in the workspace using File > Reload Workspace.

Adj Errors (model.adjb)

"Missing entry for mesh {mesh_name} with the RENORMAL material {material_label}."
Meshes without adjb entries using a renormal material will have broken normals in game and appear faceted. Open the Adj Editor by clicking the model.adjb and click the button to add the missing entries. Alternatively, remove the "RENORMAL_" prefix from the material in the Matl Editor.

Anim Errors (.nuanmb)

Hlpb Errors (model.nuhlpb)

Matl Errors (model.numatb)

"Mesh {mesh_name} is missing attributes {attributes} required by assigned material {material_label}."
The shader label for a material determines what mesh vertex attributes are required to render properly in game. Missing any required attributes will result in a yellow checkerboard error. Assign a different shader to the material or add the missing attributes in the Mesh Editor by clicking the model.numshb and opening the attributes editor for the meshes with missing attribute warnings. SSBH Editor will provide a button prompt for adding the missing attributes with reasonable default values.

"Texture {nutexb} for material {material_label} has format {format}, but {param} expects/does not expect an sRGB format."
See the Nutexb Errors for details.

"Texture {nutexb} for material {material_label} has dimensions {actual}, but {param} requires {expected}."
Assigning a cube map to a 2D texture like Texture0 or a 2D texture to a cube map like Texture7 will not work. Fix the texture assignment for the affected material in the Matl Editor.

"Textures {textures} assigned for material {material_label} are missing."
One or more texture files assigned to a material cannot be found in the folder or are not a valid default texture name. Make sure the texture names are spelled correctly in the Matl Editor. Include the nutexb files in the model folder when using SSBH Editor for best results.

"Mesh {mesh_name} has the RENORMAL material {material_label} but no corresponding entry in the model.adjb."
See the Adj Errors for details.

"Material {material_label} is a RENORMAL material, but the model.adjb file is missing."
A model.adjb file is required for RENORMAL materials to render properly. This can be fixed by removing the "RENORMAL_" prefix from the material label in the Matl Editor. Including a model.adjb file can reduce shading artifacts for models with extreme deformations but isn't beneficial for most models.

"Samplers {samplers} for material {material_label} will clamp UV coordinates for mesh {mesh_name}. Use wrap mode Repeat if the texture should tile."
Meshes with UVs outside the first quadrant might not render textures as intended if the wrap modes are set to ClampToEdge or ClampToBorder. This causes UV coordinate values to be clamped to 0.0 to 1.0. Use a wrap mode like Repeat to make the texture tile properly. Examples where tiling is required include translating half of the UVs by 1.0 to ensure proper bakes for mirrored UVs or stage meshes with repeating textures like bricks or grass.

"Shader label {shader_label} for material {material_label} is not a valid shader label."
Smash Ultimate has a fixed set of precompiled shaders. Shader labels should match one of the in game shader labels and have an appropriate render pass tag like "_opaque" or "_sort".

"Material {material_label} uses Source Color "SourceAlpha", but shader {shader_label} already premultiplies alpha. Use a Source Color of "One" or use a shader that does not premultiply alpha."
Some shaders already apply the equivalent of "SourceAlpha" in the shader code itself. Switch the source color to "One" for the intended alpha blending effect.

"The material label {material_label:?} is already used by another material. Material names should be unique."
Material names should be unique for material assignments in the model.numdlb to work properly.

"Material {material_label} enables anisotropic filtering for {param_id} with filter mode Nearest. Set anisotropy to None or use only linear filter modes."
Anisotropic filtering only works with linear filter modes for both min and mag filter. For achieving a pixelated look with non linear filters, simply set anisotropy to None in the Matl Editor for the appropriate sampler. Setting the anisotropy to 1x is equivalent to None.

Mesh Errors (model.numshb)

"Mesh {mesh_name} is missing attributes {missing_attributes} required by assigned material {material_label:?}."
The mesh is missing some of the attributes required by the vertex shader used by its assigned material. SSBH Editor can add default values for missing attributes. Attributes can also be added in 3D modeling applications.

"Mesh {mesh_name} repeats subindex {subindex}. Meshes with the same name must have unique subindices."
Meshes with the same name need to have a unique subindex to allow other files to refer to the appropriate mesh. Subindices should be assigned automatically by applications or addons, so this error should be rare in practice. Subindices can be edited in the Mesh Editor.

"Vertex weights for mesh {mesh_name} are not normalized. Vertex weights should sum to 1.0." The linear blend skinning calculated in game assumes that vertex skin weights sum to 1.0. This must be fixed in an external 3D modeling application.

"Mesh {mesh_name} has vertex weights with a weight of 0.0 that can be removed."
Vertex weights with a weight of 0.0 will not cause any issues in game other than increasing the file size.

"Mesh {mesh_name} has vertices with more than 4 weights and may not deform as expected in game."
The renderer in game can only render at most 4 vertex weights or influences. Additional weights will be ignored. This must be fixed in an external 3D modeling application by removing additional influences and normalizing the weights.

Modl Errors (model.numdlb)

"Modl entry assigns to mesh {mesh} not found in the model.numshb. Ensure the name and subindex are correct."
The mesh can't be found in the model.numshb. This will cause the mesh to be invisible in game if it has no proper modl entry. This usually means the mesh object in the model.numshb was deleted. Fix the assignment by selecting the appropriate mesh in the Modl Editor or delete the modl entry if the mesh is no longer needed.

"Modl entry assigns a material {material_label} not found in the model.numatb."
The material can't be found in the model.numatb. This will cause the mesh to be invisible in game. This can happen if the material was renamed or deleted. Fix the assignment by selecting the material again in the Modl Editor.

Nutexb Errors

"Texture {nutexb} has format {format}, but {param} expects/does not expect an sRGB format.
Certain textures like PRM and NOR maps should use linear formats like BC7Unorm to render properly in game. Textures storing color data like col maps should use sRGB formats like BC7Srgb. Resave the nutexb with the correct format in Switch Toolbox or a nutexb conversion tool. This error can also be caused by assigning the wrong texture like assigning a normal map to Texture0.

Skel Errors (model.nusktb)