[Bf-blender-cvs] [69f70829d2c] soc-2020-io-performance: Fix usemtl line not being written.

Ankit Meel noreply at git.blender.org
Thu Aug 13 22:26:58 CEST 2020


Commit: 69f70829d2c150f5162b12cc949eb132127ab4de
Author: Ankit Meel
Date:   Fri Aug 14 01:56:54 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rB69f70829d2c150f5162b12cc949eb132127ab4de

Fix usemtl line not being written.

`==` → `!=` : the bug.

`totface` → `totpoly`: it was a mistake.

Rest is cleanup.

===================================================================

M	source/blender/io/wavefront_obj/intern/wavefront_obj_ex_file_writer.cc
M	source/blender/io/wavefront_obj/intern/wavefront_obj_ex_file_writer.hh
M	source/blender/io/wavefront_obj/intern/wavefront_obj_ex_mesh.cc

===================================================================

diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_ex_file_writer.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_ex_file_writer.cc
index c9fda3f6f81..869278dca43 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_ex_file_writer.cc
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_ex_file_writer.cc
@@ -211,8 +211,8 @@ void OBJWriter::write_poly_normals(OBJMesh &obj_mesh_data) const
  * so. If the polygon is not shaded smooth, write "off".
  */
 void OBJWriter::write_smooth_group(const OBJMesh &obj_mesh_data,
-                                   int &r_last_face_smooth_group,
-                                   uint poly_index) const
+                                   const uint poly_index,
+                                   int &r_last_face_smooth_group) const
 {
   if (!export_params_.export_smooth_groups || !obj_mesh_data.tot_smooth_groups()) {
     return;
@@ -252,9 +252,9 @@ void OBJWriter::write_poly_material(const OBJMesh &obj_mesh_data,
   }
   const MPoly &mpoly = obj_mesh_data.get_ith_poly(poly_index);
   short mat_nr = mpoly.mat_nr;
-  /* Whenever a face with a new material is encountered, write its material and group, otherwise
+  /* Whenever a face with a new material is encountered, write its material and/or group, otherwise
    * pass. */
-  if (r_last_face_mat_nr == mat_nr) {
+  if (r_last_face_mat_nr != mat_nr) {
     const char *mat_name = obj_mesh_data.get_object_material_name(mat_nr + 1);
     if (export_params_.export_material_groups) {
       const char *object_name = obj_mesh_data.get_object_name();
@@ -271,8 +271,8 @@ void OBJWriter::write_poly_material(const OBJMesh &obj_mesh_data,
  * written.
  */
 void OBJWriter::write_vertex_group(const OBJMesh &obj_mesh_data,
-                                   short &last_face_vertex_group,
-                                   uint poly_index) const
+                                   const uint poly_index,
+                                   short &last_face_vertex_group) const
 {
   if (!export_params_.export_vertex_groups) {
     return;
@@ -337,8 +337,8 @@ void OBJWriter::write_poly_elements(const OBJMesh &obj_mesh_data,
     obj_mesh_data.calc_poly_normal_indices(i, normal_indices);
     const MPoly &poly_to_write = obj_mesh_data.get_ith_poly(i);
 
-    write_smooth_group(obj_mesh_data, last_face_smooth_group, i);
-    write_vertex_group(obj_mesh_data, last_face_vertex_group, i);
+    write_smooth_group(obj_mesh_data, i, last_face_smooth_group);
+    write_vertex_group(obj_mesh_data, i, last_face_vertex_group);
     write_poly_material(obj_mesh_data, i, last_face_mat_nr);
     (this->*func_vert_uv_normal_indices)(
         vertex_indices, uv_indices[i], normal_indices, poly_to_write);
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_ex_file_writer.hh b/source/blender/io/wavefront_obj/intern/wavefront_obj_ex_file_writer.hh
index 0e64c5d9c22..628497071a8 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_ex_file_writer.hh
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_ex_file_writer.hh
@@ -66,14 +66,14 @@ class OBJWriter {
   void write_uv_coords(OBJMesh &obj_mesh_data, Vector<Vector<uint>> &uv_indices) const;
   void write_poly_normals(OBJMesh &obj_mesh_data) const;
   void write_smooth_group(const OBJMesh &obj_mesh_data,
-                          int &r_last_face_smooth_group,
-                          uint poly_index) const;
+                          uint poly_index,
+                          int &r_last_face_smooth_group) const;
   void write_poly_material(const OBJMesh &obj_mesh_data,
                            const uint poly_index,
                            short &r_last_face_mat_nr) const;
   void write_vertex_group(const OBJMesh &obj_mesh_data,
-                          short &r_last_face_vertex_group,
-                          uint poly_index) const;
+                          const uint poly_index,
+                          short &r_last_face_vertex_group) const;
   void write_poly_elements(const OBJMesh &obj_mesh_data, Span<Vector<uint>> uv_indices) const;
   void write_loose_edges(const OBJMesh &obj_mesh_data) const;
   void write_nurbs_curve(const OBJNurbs &obj_nurbs_data) const;
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_ex_mesh.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_ex_mesh.cc
index 858d5cbf317..3e70ea07f16 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_ex_mesh.cc
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_ex_mesh.cc
@@ -152,7 +152,7 @@ uint OBJMesh::tot_vertices() const
 
 uint OBJMesh::tot_polygons() const
 {
-  return export_mesh_eval_->totface;
+  return export_mesh_eval_->totpoly;
 }
 
 uint OBJMesh::tot_uv_vertices() const



More information about the Bf-blender-cvs mailing list