From 499b752272b3e6fb7a614e0f6c037f41c4828b75 Mon Sep 17 00:00:00 2001 From: Jan Date: Sat, 11 May 2024 01:51:28 +0200 Subject: [PATCH] chore: add names to exported gltf models --- src/ObjCommon/XModel/XModelCommon.h | 1 + src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperXModel.cpp | 1 + src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperXModel.cpp | 1 + src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperXModel.cpp | 1 + src/ObjWriting/Game/T5/AssetDumpers/AssetDumperXModel.cpp | 1 + src/ObjWriting/Game/T6/AssetDumpers/AssetDumperXModel.cpp | 1 + src/ObjWriting/XModel/Gltf/GltfWriter.cpp | 6 ++++++ 7 files changed, 12 insertions(+) diff --git a/src/ObjCommon/XModel/XModelCommon.h b/src/ObjCommon/XModel/XModelCommon.h index 7f1f0b44..82f6bbef 100644 --- a/src/ObjCommon/XModel/XModelCommon.h +++ b/src/ObjCommon/XModel/XModelCommon.h @@ -96,6 +96,7 @@ struct XModelObject struct XModelCommon { + std::string m_name; std::vector m_objects; std::vector m_bones; std::vector m_materials; diff --git a/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperXModel.cpp b/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperXModel.cpp index df8dad55..862b0470 100644 --- a/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperXModel.cpp +++ b/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperXModel.cpp @@ -412,6 +412,7 @@ namespace DistinctMapper materialMapper(model->numsurfs); AllocateXModelBoneWeights(model, lod, out.m_bone_weight_data); + out.m_name = std::format("{}_lod{}", model->name, lod); AddXModelBones(out, context, model); AddXModelMaterials(out, materialMapper, model); AddXModelObjects(out, model, lod, materialMapper); diff --git a/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperXModel.cpp b/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperXModel.cpp index f88bcc3b..d8310cdd 100644 --- a/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperXModel.cpp +++ b/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperXModel.cpp @@ -394,6 +394,7 @@ namespace DistinctMapper materialMapper(model->numsurfs); AllocateXModelBoneWeights(modelSurfs, out.m_bone_weight_data); + out.m_name = modelSurfs->name; AddXModelBones(out, context, model); AddXModelMaterials(out, materialMapper, model); AddXModelObjects(out, modelSurfs, materialMapper, model->lodInfo[lod].surfIndex); diff --git a/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperXModel.cpp b/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperXModel.cpp index cef5b987..1cf707d5 100644 --- a/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperXModel.cpp +++ b/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperXModel.cpp @@ -394,6 +394,7 @@ namespace DistinctMapper materialMapper(model->numsurfs); AllocateXModelBoneWeights(modelSurfs, out.m_bone_weight_data); + out.m_name = modelSurfs->name; AddXModelBones(out, context, model); AddXModelMaterials(out, materialMapper, model); AddXModelObjects(out, modelSurfs, materialMapper, model->lodInfo[lod].surfIndex); diff --git a/src/ObjWriting/Game/T5/AssetDumpers/AssetDumperXModel.cpp b/src/ObjWriting/Game/T5/AssetDumpers/AssetDumperXModel.cpp index 6538f7c7..ed204379 100644 --- a/src/ObjWriting/Game/T5/AssetDumpers/AssetDumperXModel.cpp +++ b/src/ObjWriting/Game/T5/AssetDumpers/AssetDumperXModel.cpp @@ -412,6 +412,7 @@ namespace DistinctMapper materialMapper(model->numsurfs); AllocateXModelBoneWeights(model, lod, out.m_bone_weight_data); + out.m_name = std::format("{}_lod{}", model->name, lod); AddXModelBones(out, context, model); AddXModelMaterials(out, materialMapper, model); AddXModelObjects(out, model, lod, materialMapper); diff --git a/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperXModel.cpp b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperXModel.cpp index f2cf9370..0a136a96 100644 --- a/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperXModel.cpp +++ b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperXModel.cpp @@ -436,6 +436,7 @@ namespace DistinctMapper materialMapper(model->numsurfs); AllocateXModelBoneWeights(model, lod, out.m_bone_weight_data); + out.m_name = std::format("{}_lod{}", model->name, lod); AddXModelBones(out, context, model); AddXModelMaterials(out, materialMapper, model); AddXModelObjects(out, model, lod, materialMapper); diff --git a/src/ObjWriting/XModel/Gltf/GltfWriter.cpp b/src/ObjWriting/XModel/Gltf/GltfWriter.cpp index 11da0980..a48ba3f8 100644 --- a/src/ObjWriting/XModel/Gltf/GltfWriter.cpp +++ b/src/ObjWriting/XModel/Gltf/GltfWriter.cpp @@ -69,6 +69,9 @@ namespace { JsonNode meshNode; + if (!xmodel.m_name.empty()) + meshNode.name = xmodel.m_name; + // We only have one mesh meshNode.mesh = 0u; @@ -90,6 +93,9 @@ namespace { JsonNode rootNode; + if (!xmodel.m_name.empty()) + rootNode.name = std::format("{}_skel", xmodel.m_name); + if (!gltf.nodes.has_value()) gltf.nodes.emplace();