[Bf-blender-cvs] [eaf54f9eb77] soc-2020-io-performance: Remove export_params_ member from OBJMesh.

Ankit Meel noreply at git.blender.org
Wed Sep 16 13:05:50 CEST 2020


Commit: eaf54f9eb77a3e2b1840bd01559068f0c1ae3a8e
Author: Ankit Meel
Date:   Tue Sep 1 03:33:42 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rBeaf54f9eb77a3e2b1840bd01559068f0c1ae3a8e

Remove export_params_ member from OBJMesh.

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

M	source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
M	source/blender/io/wavefront_obj/intern/obj_export_mesh.cc
M	source/blender/io/wavefront_obj/intern/obj_export_mesh.hh
M	source/blender/io/wavefront_obj/intern/obj_exporter.cc

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

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 8674541413c..87a903012bb 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
@@ -168,7 +168,7 @@ void OBJWriter::write_object_name(const OBJMesh &obj_mesh_data) const
 void OBJWriter::write_vertex_coords(const OBJMesh &obj_mesh_data) const
 {
   for (uint i = 0; i < obj_mesh_data.tot_vertices(); i++) {
-    float3 vertex = obj_mesh_data.calc_vertex_coords(i);
+    float3 vertex = obj_mesh_data.calc_vertex_coords(i, export_params_.scaling_factor);
     fprintf(outfile_, "v %f %f %f\n", vertex[0], vertex[1], vertex[2]);
   }
 }
diff --git a/source/blender/io/wavefront_obj/intern/obj_export_mesh.cc b/source/blender/io/wavefront_obj/intern/obj_export_mesh.cc
index 11ea70ac6c7..17411efcdd1 100644
--- a/source/blender/io/wavefront_obj/intern/obj_export_mesh.cc
+++ b/source/blender/io/wavefront_obj/intern/obj_export_mesh.cc
@@ -50,7 +50,7 @@ namespace blender::io::obj {
  * meshes.
  */
 OBJMesh::OBJMesh(Depsgraph *depsgraph, const OBJExportParams &export_params, Object *export_object)
-    : depsgraph_(depsgraph), export_params_(export_params), export_object_eval_(export_object)
+    : depsgraph_(depsgraph), export_object_eval_(export_object)
 {
   export_object_eval_ = DEG_get_evaluated_object(depsgraph_, export_object);
   export_mesh_eval_ = BKE_object_get_evaluated_mesh(export_object_eval_);
@@ -69,7 +69,7 @@ OBJMesh::OBJMesh(Depsgraph *depsgraph, const OBJExportParams &export_params, Obj
     case OB_SURF:
       ATTR_FALLTHROUGH;
     case OB_MESH: {
-      if (export_params_.export_triangulated_mesh) {
+      if (export_params.export_triangulated_mesh) {
         triangulate_mesh_eval();
       }
       break;
@@ -78,7 +78,7 @@ OBJMesh::OBJMesh(Depsgraph *depsgraph, const OBJExportParams &export_params, Obj
       break;
     }
   }
-  store_world_axes_transform();
+  store_world_axes_transform(export_params.forward_axis, export_params.up_axis);
 }
 
 /**
@@ -129,16 +129,14 @@ void OBJMesh::triangulate_mesh_eval()
  * Store the product of export axes settings and an object's world transform matrix in
  * world_and_axes_transform[4][4].
  */
-void OBJMesh::store_world_axes_transform()
+void OBJMesh::store_world_axes_transform(const eTransformAxisForward forward,
+                                         const eTransformAxisUp up)
 {
   float axes_transform[3][3];
   unit_m3(axes_transform);
   /* -Y-forward and +Z-up are the default Blender axis settings. */
-  mat3_from_axis_conversion(OBJ_AXIS_NEGATIVE_Y_FORWARD,
-                            OBJ_AXIS_Z_UP,
-                            export_params_.forward_axis,
-                            export_params_.up_axis,
-                            axes_transform);
+  mat3_from_axis_conversion(
+      OBJ_AXIS_NEGATIVE_Y_FORWARD, OBJ_AXIS_Z_UP, forward, up, axes_transform);
   mul_m4_m3m4(world_and_axes_transform_, axes_transform, export_object_eval_->obmat);
   /* mul_m4_m3m4 does not copy last row of obmat, i.e. location data. */
   copy_v4_v4(world_and_axes_transform_[3], export_object_eval_->obmat[3]);
@@ -209,10 +207,9 @@ void OBJMesh::ensure_mesh_edges() const
  * \return A polygon aligned array of smooth group numbers or bitflags if export
  * settings specify so.
  */
-void OBJMesh::calc_smooth_groups()
+void OBJMesh::calc_smooth_groups(const bool use_bitflags)
 {
   int tot_smooth_groups = 0;
-  const bool use_bitflags = export_params_.smooth_groups_bitflags;
   poly_smooth_groups_ = BKE_mesh_calc_smoothgroups(export_mesh_eval_->medge,
                                                    export_mesh_eval_->totedge,
                                                    export_mesh_eval_->mpoly,
@@ -280,12 +277,12 @@ const char *OBJMesh::get_object_material_name(short mat_nr) const
 /**
  * Calculate coordinates of a vertex at the given index.
  */
-float3 OBJMesh::calc_vertex_coords(const uint vert_index) const
+float3 OBJMesh::calc_vertex_coords(const uint vert_index, const float scaling_factor) const
 {
   float3 r_coords;
   copy_v3_v3(r_coords, export_mesh_eval_->mvert[vert_index].co);
   mul_m4_v3(world_and_axes_transform_, r_coords);
-  mul_v3_fl(r_coords, export_params_.scaling_factor);
+  mul_v3_fl(r_coords, scaling_factor);
   return r_coords;
 }
 
diff --git a/source/blender/io/wavefront_obj/intern/obj_export_mesh.hh b/source/blender/io/wavefront_obj/intern/obj_export_mesh.hh
index 168df423037..07c14213fde 100644
--- a/source/blender/io/wavefront_obj/intern/obj_export_mesh.hh
+++ b/source/blender/io/wavefront_obj/intern/obj_export_mesh.hh
@@ -40,7 +40,6 @@ namespace blender::io::obj {
 class OBJMesh : NonMovable, NonCopyable {
  private:
   Depsgraph *depsgraph_;
-  const OBJExportParams &export_params_;
 
   Object *export_object_eval_;
   Mesh *export_mesh_eval_;
@@ -82,7 +81,7 @@ class OBJMesh : NonMovable, NonCopyable {
 
   void ensure_mesh_normals() const;
   void ensure_mesh_edges() const;
-  void calc_smooth_groups();
+  void calc_smooth_groups(const bool use_bitflags);
   const Material *get_object_material(const short mat_nr) const;
 
   bool is_ith_poly_smooth(const uint poly_index) const;
@@ -93,7 +92,7 @@ class OBJMesh : NonMovable, NonCopyable {
   const char *get_object_mesh_name() const;
   const char *get_object_material_name(const short mat_nr) const;
 
-  float3 calc_vertex_coords(const uint vert_index) const;
+  float3 calc_vertex_coords(const uint vert_index, const float scaling_factor) const;
   void calc_poly_vertex_indices(const uint poly_index, Vector<uint> &r_poly_vertex_indices) const;
   void store_uv_coords_and_indices(Vector<std::array<float, 2>> &r_uv_coords,
                                    Vector<Vector<uint>> &r_uv_indices);
@@ -104,6 +103,6 @@ class OBJMesh : NonMovable, NonCopyable {
 
  private:
   void triangulate_mesh_eval();
-  void store_world_axes_transform();
+  void store_world_axes_transform(const eTransformAxisForward forward, const eTransformAxisUp up);
 };
 }  // namespace blender::io::obj
diff --git a/source/blender/io/wavefront_obj/intern/obj_exporter.cc b/source/blender/io/wavefront_obj/intern/obj_exporter.cc
index 32f9947f3f8..81ae4cf5424 100644
--- a/source/blender/io/wavefront_obj/intern/obj_exporter.cc
+++ b/source/blender/io/wavefront_obj/intern/obj_exporter.cc
@@ -134,7 +134,7 @@ static void export_frame(ViewLayer *view_layer,
     if (mesh_to_export->tot_polygons() > 0) {
       Vector<Vector<uint>> uv_indices;
       if (export_params.export_smooth_groups) {
-        mesh_to_export->calc_smooth_groups();
+        mesh_to_export->calc_smooth_groups(export_params.smooth_groups_bitflags);
       }
       if (export_params.export_normals) {
         frame_writer.write_poly_normals(*mesh_to_export);



More information about the Bf-blender-cvs mailing list