diff --git a/src/ObjCommon/XModel/XModelCommon.h b/src/ObjCommon/XModel/XModelCommon.h index 46ebf3bb..04718be2 100644 --- a/src/ObjCommon/XModel/XModelCommon.h +++ b/src/ObjCommon/XModel/XModelCommon.h @@ -132,5 +132,7 @@ typedef DistinctMapper VertexMerger; namespace xmodel { + constexpr auto DEFAULT_XMODEL_ROOT_BONE_NAME = ""; + std::string GetJsonFileNameForAssetName(const std::string& assetName); -} +} // namespace xmodel diff --git a/src/ObjLoading/XModel/LoaderXModel.cpp.template b/src/ObjLoading/XModel/LoaderXModel.cpp.template index 6188cf0a..b23fbd2b 100644 --- a/src/ObjLoading/XModel/LoaderXModel.cpp.template +++ b/src/ObjLoading/XModel/LoaderXModel.cpp.template @@ -163,7 +163,7 @@ namespace assert(common.m_vertex_bone_weights.size() == common.m_vertices.size()); XModelBone rootBone{ - .name = jXModel.rootBoneName.value_or("root"), + .name = jXModel.rootBoneName.value_or(xmodel::DEFAULT_XMODEL_ROOT_BONE_NAME), .parentIndex = std::nullopt, .scale = {1.0f, 1.0f, 1.0f}, .globalOffset = {0.0f, 0.0f, 0.0f}, diff --git a/src/ObjWriting/XModel/XModelDumper.cpp.template b/src/ObjWriting/XModel/XModelDumper.cpp.template index 0c5038ba..9b0b1bba 100644 --- a/src/ObjWriting/XModel/XModelDumper.cpp.template +++ b/src/ObjWriting/XModel/XModelDumper.cpp.template @@ -797,8 +797,11 @@ namespace if (!model.boneNames || model.boneNames[0] >= context.m_zone.m_script_strings.Count() || model.numRootBones == 0) return; + + const auto& rootBoneName = context.m_zone.m_script_strings[model.boneNames[0]]; - jXModel.rootBoneName = context.m_zone.m_script_strings[model.boneNames[0]]; + if (rootBoneName != xmodel::DEFAULT_XMODEL_ROOT_BONE_NAME) + jXModel.rootBoneName = rootBoneName; } void CreateJsonXModel(AssetDumpingContext& context, JsonXModel& jXModel, const XModel& model)