From 1132b19c06aa0b154991256e5063c78ad423bdc3 Mon Sep 17 00:00:00 2001 From: Andrey Lihatskiy Date: Wed, 11 Jun 2025 12:31:47 +0300 Subject: #4114 Improve GLTF mesh uploader log 2 --- indra/newview/gltf/llgltfloader.cpp | 20 +++++++++++++++++--- .../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(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(total_models); + args["LIMIT"] = static_cast(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(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 @@ No scenes defined in GLTF file Node [NODE_NAME] references invalid mesh [MESH_INDEX] (total meshes: [TOTAL_MESHES]) Mesh [MESH_NAME] primitive [PRIMITIVE_INDEX]: Invalid geometry with [INDEX_COUNT] indices (must be triangulated) - Mesh [MESH_NAME]: Vertex count [VERTEX_COUNT] exceeds 16-bit limit of [LIMIT] + Unable to process mesh [MESH_NAME] due to 65,534 vertex limit. Vertex count: [VERTEX_COUNT] Found texture: [TEXTURE_NAME] for material: [MATERIAL_NAME] Model uses unsupported extension: [EXT], related material properties are ignored Unable to load model, unsupported extension: [EXT] + Model contains [PART_COUNT] mesh parts. Maximum allowed: [LIMIT]