[Bf-blender-cvs] [9579cba6ee9] temp-lanpr-staging: Mesh: bypass legacy tessface conversion step when remeshing

Campbell Barton noreply at git.blender.org
Fri Aug 16 03:04:30 CEST 2019


Commit: 9579cba6ee979e3ceb9b6b724dcc0f6291bde842
Author: Campbell Barton
Date:   Thu Aug 15 05:13:20 2019 +1000
Branches: temp-lanpr-staging
https://developer.blender.org/rB9579cba6ee979e3ceb9b6b724dcc0f6291bde842

Mesh: bypass legacy tessface conversion step when remeshing

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

M	source/blender/blenkernel/intern/mesh_remesh_voxel.c

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

diff --git a/source/blender/blenkernel/intern/mesh_remesh_voxel.c b/source/blender/blenkernel/intern/mesh_remesh_voxel.c
index 17347842216..a5136311a22 100644
--- a/source/blender/blenkernel/intern/mesh_remesh_voxel.c
+++ b/source/blender/blenkernel/intern/mesh_remesh_voxel.c
@@ -101,34 +101,38 @@ Mesh *BKE_mesh_remesh_voxel_ovdb_volume_to_mesh_nomain(struct OpenVDBLevelSet *l
       level_set, &output_mesh, isovalue, adaptivity, relax_disoriented_triangles);
 #  endif
 
-  Mesh *mesh = BKE_mesh_new_nomain(
-      output_mesh.totvertices, 0, output_mesh.totquads + output_mesh.tottriangles, 0, 0);
-  int q = output_mesh.totquads;
+  Mesh *mesh = BKE_mesh_new_nomain(output_mesh.totvertices,
+                                   0,
+                                   0,
+                                   (output_mesh.totquads * 4) + (output_mesh.tottriangles * 3),
+                                   output_mesh.totquads + output_mesh.tottriangles);
 
   for (int i = 0; i < output_mesh.totvertices; i++) {
-    float vco[3] = {output_mesh.vertices[i * 3],
-                    output_mesh.vertices[i * 3 + 1],
-                    output_mesh.vertices[i * 3 + 2]};
-    copy_v3_v3(mesh->mvert[i].co, vco);
+    copy_v3_v3(mesh->mvert[i].co, &output_mesh.vertices[i * 3]);
   }
 
-  for (int i = 0; i < output_mesh.totquads; i++) {
-    mesh->mface[i].v4 = output_mesh.quads[i * 4];
-    mesh->mface[i].v3 = output_mesh.quads[i * 4 + 1];
-    mesh->mface[i].v2 = output_mesh.quads[i * 4 + 2];
-    mesh->mface[i].v1 = output_mesh.quads[i * 4 + 3];
+  MPoly *mp = mesh->mpoly;
+  MLoop *ml = mesh->mloop;
+  for (int i = 0; i < output_mesh.totquads; i++, mp++, ml += 4) {
+    mp->loopstart = (int)(ml - mesh->mloop);
+    mp->totloop = 4;
+
+    ml[0].v = output_mesh.quads[i * 4 + 3];
+    ml[1].v = output_mesh.quads[i * 4 + 2];
+    ml[2].v = output_mesh.quads[i * 4 + 1];
+    ml[3].v = output_mesh.quads[i * 4];
   }
 
-  for (int i = 0; i < output_mesh.tottriangles; i++) {
-    mesh->mface[i + q].v4 = 0;
-    mesh->mface[i + q].v3 = output_mesh.triangles[i * 3];
-    mesh->mface[i + q].v2 = output_mesh.triangles[i * 3 + 1];
-    mesh->mface[i + q].v1 = output_mesh.triangles[i * 3 + 2];
+  for (int i = 0; i < output_mesh.tottriangles; i++, mp++, ml += 3) {
+    mp->loopstart = (int)(ml - mesh->mloop);
+    mp->totloop = 3;
+
+    ml[0].v = output_mesh.triangles[i * 3 + 2];
+    ml[1].v = output_mesh.triangles[i * 3 + 1];
+    ml[2].v = output_mesh.triangles[i * 3];
   }
 
-  BKE_mesh_calc_edges_tessface(mesh);
-  BKE_mesh_convert_mfaces_to_mpolys(mesh);
-  BKE_mesh_tessface_clear(mesh);
+  BKE_mesh_calc_edges(mesh, false, false);
   BKE_mesh_calc_normals(mesh);
 
   MEM_freeN(output_mesh.quads);



More information about the Bf-blender-cvs mailing list