[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