Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAras Pranckevicius <aras@nesnausk.org>2022-08-03 09:49:56 +0300
committerAras Pranckevicius <aras@nesnausk.org>2022-08-03 09:49:56 +0300
commit89f0fedb5cfcde8d2d29f4cf08f3cfa194c375b2 (patch)
tree6ad75e76870c045a5908ef4101a41502af2bbbb5 /source/blender/io/wavefront_obj/exporter
parentead8260a49debaeb69967b2b4d2b62bf97333328 (diff)
Fix T97769: new OBJ exporter does not replace spaces in object names
The Python based exporter was replacing spaces with underscores in object/group names, mostly to handle cases where names could begin or end with spaces. The new exporter was not doing that. Note: spaces in material names were already handled by the new exporter. Fixes T97769. Updated test coverage expectations; one of the test files has an object with a space in the name.
Diffstat (limited to 'source/blender/io/wavefront_obj/exporter')
-rw-r--r--source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc15
1 files changed, 11 insertions, 4 deletions
diff --git a/source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc b/source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc
index 731587bfcea..36a9cf1b9ae 100644
--- a/source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc
+++ b/source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc
@@ -179,13 +179,19 @@ void OBJWriter::write_mtllib_name(const StringRefNull mtl_filepath) const
fh.write_to_file(outfile_);
}
+static void spaces_to_underscores(std::string &r_name)
+{
+ std::replace(r_name.begin(), r_name.end(), ' ', '_');
+}
+
void OBJWriter::write_object_name(FormatHandler<eFileType::OBJ> &fh,
const OBJMesh &obj_mesh_data) const
{
- const char *object_name = obj_mesh_data.get_object_name();
+ std::string object_name = obj_mesh_data.get_object_name();
+ spaces_to_underscores(object_name);
if (export_params_.export_object_groups) {
- const std::string object_name = obj_mesh_data.get_object_name();
- const char *mesh_name = obj_mesh_data.get_object_mesh_name();
+ std::string mesh_name = obj_mesh_data.get_object_mesh_name();
+ spaces_to_underscores(mesh_name);
fh.write<eOBJSyntaxElement::object_group>(object_name + "_" + mesh_name);
return;
}
@@ -389,7 +395,8 @@ void OBJWriter::write_poly_elements(FormatHandler<eFileType::OBJ> &fh,
mat_name = MATERIAL_GROUP_DISABLED;
}
if (export_params_.export_material_groups) {
- const std::string object_name = obj_mesh_data.get_object_name();
+ std::string object_name = obj_mesh_data.get_object_name();
+ spaces_to_underscores(object_name);
fh.write<eOBJSyntaxElement::object_group>(object_name + "_" + mat_name);
}
buf.write<eOBJSyntaxElement::poly_usemtl>(mat_name);