diff options
| author | Andrey Lihatskiy <alihatskiy@productengine.com> | 2025-06-11 12:31:47 +0300 | 
|---|---|---|
| committer | Andrey Lihatskiy <alihatskiy@productengine.com> | 2025-06-11 14:07:08 +0300 | 
| commit | 1132b19c06aa0b154991256e5063c78ad423bdc3 (patch) | |
| tree | 3e2f30756f9a1f8402edd0a74545972e86e92cf7 /indra | |
| parent | 48eb8a2efecb3c308092ce60dcb0c9975a0c53e1 (diff) | |
#4114 Improve GLTF mesh uploader log 2
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/gltf/llgltfloader.cpp | 20 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_model_preview.xml | 3 | 
2 files changed, 19 insertions, 4 deletions
| diff --git a/indra/newview/gltf/llgltfloader.cpp b/indra/newview/gltf/llgltfloader.cpp index 3e7b14919b..ffe574f4b1 100644 --- a/indra/newview/gltf/llgltfloader.cpp +++ b/indra/newview/gltf/llgltfloader.cpp @@ -309,6 +309,21 @@ bool LLGLTFLoader::parseMeshes()          return false;      } +    // Check total model count against limit +    U32 total_models = static_cast<U32>(mModelList.size()); +    if (total_models > mGeneratedModelLimit) +    { +        LL_WARNS("GLTF_IMPORT") << "Model contains " << total_models +                                << " mesh parts, exceeding the limit of " << mGeneratedModelLimit << LL_ENDL; + +        LLSD args; +        args["Message"] = "TooManyMeshParts"; +        args["PART_COUNT"] = static_cast<S32>(total_models); +        args["LIMIT"] = static_cast<S32>(mGeneratedModelLimit); +        mWarningsArray.append(args); +        return false; +    } +      return true;  } @@ -843,13 +858,12 @@ bool LLGLTFLoader::populateModelFromMesh(LLModel* pModel, const LL::GLTF::Mesh&          {              LL_INFOS("GLTF_IMPORT") << "Unable to process mesh '" << mesh.mName                                      << "' primitive " << prim_idx -                                    << " due to 16-bit index limits. Vertex count: " -                                    << prim.getVertexCount() << " exceeds limit: " << USHRT_MAX << LL_ENDL; +                                    << " due to 65,534 vertex limit. Vertex count: " +                                    << prim.getVertexCount() << LL_ENDL;              LLSD args;              args["Message"] = "ErrorIndexLimit";              args["MESH_NAME"] = mesh.mName.empty() ? ("mesh_" + std::to_string(&mesh - &mGLTFAsset.mMeshes[0])) : mesh.mName;              args["VERTEX_COUNT"] = static_cast<S32>(prim.getVertexCount()); -            args["LIMIT"] = USHRT_MAX;              mWarningsArray.append(args);              return false;          } diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index d9a344ba41..759952b162 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -66,10 +66,11 @@    <string name="NoScenesFound">No scenes defined in GLTF file</string>    <string name="InvalidMeshReference">Node [NODE_NAME] references invalid mesh [MESH_INDEX] (total meshes: [TOTAL_MESHES])</string>    <string name="InvalidGeometryNonTriangulated">Mesh [MESH_NAME] primitive [PRIMITIVE_INDEX]: Invalid geometry with [INDEX_COUNT] indices (must be triangulated)</string> -  <string name="ErrorIndexLimit">Mesh [MESH_NAME]: Vertex count [VERTEX_COUNT] exceeds 16-bit limit of [LIMIT]</string> +  <string name="ErrorIndexLimit">Unable to process mesh [MESH_NAME] due to 65,534 vertex limit. Vertex count: [VERTEX_COUNT]</string>    <string name="TextureFound">Found texture: [TEXTURE_NAME] for material: [MATERIAL_NAME]</string>    <string name="IgnoredExtension">Model uses unsupported extension: [EXT], related material properties are ignored</string>    <string name="UnsupportedExtension">Unable to load model, unsupported extension: [EXT]</string> +  <string name="TooManyMeshParts">Model contains [PART_COUNT] mesh parts. Maximum allowed: [LIMIT]</string>    <panel      follows="top|left" | 
