[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