[Bf-blender-cvs] [10e3f23ba36] soc-2020-io-performance: Edit FaceElem list outside polygon creating code.
Ankit Meel
noreply at git.blender.org
Fri Aug 21 19:21:17 CEST 2020
Commit: 10e3f23ba36082a1ae224fc9aaf3d5361692368b
Author: Ankit Meel
Date: Fri Aug 21 21:06:40 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rB10e3f23ba36082a1ae224fc9aaf3d5361692368b
Edit FaceElem list outside polygon creating code.
`new_faces` was a lie after it was extended. Better is all_faces.
===================================================================
M source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.cc
M source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.hh
===================================================================
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.cc
index ef3d28fcdd1..3ce965ac493 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.cc
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.cc
@@ -75,6 +75,7 @@ MeshFromGeometry::MeshFromGeometry(Main *bmain,
blender_object_->data = BKE_object_obdata_add_from_type(bmain, OB_MESH, ob_name.c_str());
create_vertices();
+ new_faces.extend(mesh_geometry_.face_elements());
create_polys_loops(new_faces);
create_edges();
create_uv_verts();
@@ -204,7 +205,7 @@ void MeshFromGeometry::create_vertices()
}
}
-void MeshFromGeometry::create_polys_loops(Vector<FaceElement> new_faces)
+void MeshFromGeometry::create_polys_loops(Span<FaceElement> all_faces)
{
/* May not be used conditionally. */
blender_mesh_->dvert = nullptr;
@@ -223,10 +224,9 @@ void MeshFromGeometry::create_polys_loops(Vector<FaceElement> new_faces)
VectorSet<StringRef> group_names;
const int64_t tot_face_elems{blender_mesh_->totpoly};
int tot_loop_idx = 0;
- new_faces.extend(mesh_geometry_.face_elements());
for (int poly_idx = 0; poly_idx < tot_face_elems; ++poly_idx) {
- const FaceElement &curr_face = new_faces[poly_idx];
+ const FaceElement &curr_face = all_faces[poly_idx];
if (curr_face.face_corners.size() < 3) {
/* Don't add single vertex face, or edges. */
std::cerr << "Face with less than 3 vertices found, skipping." << std::endl;
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.hh b/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.hh
index 90965976031..37437ba4b72 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.hh
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.hh
@@ -74,7 +74,7 @@ class MeshFromGeometry : NonMovable, NonCopyable {
std::pair<int64_t, int64_t> tessellate_polygons(Vector<FaceElement> &new_faces,
Set<std::pair<int, int>> &fgon_edges);
void create_vertices();
- void create_polys_loops(Vector<FaceElement> new_faces);
+ void create_polys_loops(Span<FaceElement> all_faces);
void create_edges();
void create_uv_verts();
void create_materials(Main *bmain, const Map<std::string, MTLMaterial> &materials);
More information about the Bf-blender-cvs
mailing list