@@ -153,6 +153,9 @@ bool LLGLTFLoader::parseMeshes()
153
153
node.makeMatrixValid ();
154
154
}
155
155
156
+ // Track how many times each mesh name has been used
157
+ std::map<std::string, S32> mesh_name_counts;
158
+
156
159
// Process each node
157
160
for (auto & node : mGLTFAsset .mNodes )
158
161
{
@@ -166,7 +169,17 @@ bool LLGLTFLoader::parseMeshes()
166
169
{
167
170
LLModel* pModel = new LLModel (volume_params, 0 .f );
168
171
auto mesh = mGLTFAsset .mMeshes [meshidx];
169
- if (populateModelFromMesh (pModel, mesh, node, mats) &&
172
+
173
+ // Get base mesh name and track usage
174
+ std::string base_name = mesh.mName ;
175
+ if (base_name.empty ())
176
+ {
177
+ base_name = " mesh_" + std::to_string (meshidx);
178
+ }
179
+
180
+ S32 instance_count = mesh_name_counts[base_name]++;
181
+
182
+ if (populateModelFromMesh (pModel, mesh, node, mats, instance_count) &&
170
183
(LLModel::NO_ERRORS == pModel->getStatus ()) &&
171
184
validate_model (pModel))
172
185
{
@@ -244,9 +257,25 @@ void LLGLTFLoader::computeCombinedNodeTransform(const LL::GLTF::Asset& asset, S3
244
257
combined_transform = node_transform;
245
258
}
246
259
247
- bool LLGLTFLoader::populateModelFromMesh (LLModel* pModel, const LL::GLTF::Mesh& mesh, const LL::GLTF::Node& nodeno, material_map& mats)
260
+ bool LLGLTFLoader::populateModelFromMesh (LLModel* pModel, const LL::GLTF::Mesh& mesh, const LL::GLTF::Node& nodeno, material_map& mats, S32 instance_count )
248
261
{
249
- pModel->mLabel = mesh.mName ;
262
+ // Create unique model name
263
+ std::string base_name = mesh.mName ;
264
+ if (base_name.empty ())
265
+ {
266
+ S32 mesh_index = static_cast <S32>(&mesh - &mGLTFAsset .mMeshes [0 ]);
267
+ base_name = " mesh_" + std::to_string (mesh_index);
268
+ }
269
+
270
+ if (instance_count > 0 )
271
+ {
272
+ pModel->mLabel = base_name + " _copy_" + std::to_string (instance_count);
273
+ }
274
+ else
275
+ {
276
+ pModel->mLabel = base_name;
277
+ }
278
+
250
279
pModel->ClearFacesAndMaterials ();
251
280
252
281
S32 skinIdx = nodeno.mSkin ;
0 commit comments