[Bf-blender-cvs] [2e16d14cee3] soc-2020-io-performance: Writer: add object group writer member function
Ankit Meel
noreply at git.blender.org
Mon Sep 21 13:35:40 CEST 2020
Commit: 2e16d14cee343d4f1d701beedd3044366b1f3207
Author: Ankit Meel
Date: Mon Sep 21 13:54:33 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rB2e16d14cee343d4f1d701beedd3044366b1f3207
Writer: add object group writer member function
===================================================================
M source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
M source/blender/io/wavefront_obj/intern/obj_export_file_writer.hh
===================================================================
diff --git a/source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc b/source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
index be9f39cc4ce..935acc1b7e6 100644
--- a/source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
+++ b/source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
@@ -133,25 +133,36 @@ void OBJWriter::write_mtllib_name(const char *mtl_filepath) const
}
/**
- * Write object name conditionally with mesh and material name.
+ * Write an Object's group with mesh and/or material name appended conditionally.
*/
-void OBJWriter::write_object_name(const OBJMesh &obj_mesh_data) const
+void OBJWriter::write_object_group(const OBJMesh &obj_mesh_data) const
{
- const char *object_name = obj_mesh_data.get_object_name();
-
+ BLI_assert(export_params_.export_object_groups);
if (!export_params_.export_object_groups) {
- fprintf(outfile_, "o %s\n", object_name);
+ return;
}
- else {
- const char *object_mesh_name = obj_mesh_data.get_object_mesh_name();
- if (export_params_.export_materials && export_params_.export_material_groups) {
- const char *object_material_name = obj_mesh_data.get_object_material_name(0);
- fprintf(outfile_, "g %s_%s_%s\n", object_name, object_mesh_name, object_material_name);
- }
- else {
- fprintf(outfile_, "g %s_%s\n", object_name, object_mesh_name);
- }
+ const char *object_name = obj_mesh_data.get_object_name();
+ const char *object_mesh_name = obj_mesh_data.get_object_mesh_name();
+ const char *object_material_name = obj_mesh_data.get_object_material_name(0);
+ if (export_params_.export_materials && export_params_.export_material_groups &&
+ object_material_name) {
+ fprintf(outfile_, "g %s_%s_%s\n", object_name, object_mesh_name, object_material_name);
+ return;
+ }
+ fprintf(outfile_, "g %s_%s\n", object_name, object_mesh_name);
+}
+
+/**
+ * Write object name or group, if specified.
+ */
+void OBJWriter::write_object_name(const OBJMesh &obj_mesh_data) const
+{
+ const char *object_name = obj_mesh_data.get_object_name();
+ if (export_params_.export_object_groups) {
+ write_object_group(obj_mesh_data);
+ return;
}
+ fprintf(outfile_, "o %s\n", object_name);
}
/**
@@ -255,10 +266,8 @@ void OBJWriter::write_poly_material(const OBJMesh &obj_mesh_data,
return;
}
const char *mat_name = obj_mesh_data.get_object_material_name(curr_mat_nr);
- if (export_params_.export_material_groups) {
- const char *object_name = obj_mesh_data.get_object_name();
- const char *object_mesh_name = obj_mesh_data.get_object_mesh_name();
- fprintf(outfile_, "g %s_%s_%s\n", object_name, object_mesh_name, mat_name);
+ if (export_params_.export_object_groups) {
+ write_object_group(obj_mesh_data);
}
fprintf(outfile_, "usemtl %s\n", mat_name);
}
diff --git a/source/blender/io/wavefront_obj/intern/obj_export_file_writer.hh b/source/blender/io/wavefront_obj/intern/obj_export_file_writer.hh
index 196cceef85c..6a9611eb32d 100644
--- a/source/blender/io/wavefront_obj/intern/obj_export_file_writer.hh
+++ b/source/blender/io/wavefront_obj/intern/obj_export_file_writer.hh
@@ -78,6 +78,7 @@ class OBJWriter {
bool init_writer(const char *filepath);
void write_object_name(const OBJMesh &obj_mesh_data) const;
+ void write_object_group(const OBJMesh &obj_mesh_data) const;
void write_mtllib_name(const char *obj_filepath) const;
void write_vertex_coords(const OBJMesh &obj_mesh_data) const;
void write_uv_coords(OBJMesh &obj_mesh_data) const;
More information about the Bf-blender-cvs
mailing list