[Bf-blender-cvs] [3c953a1b09c] blender-v2.91-release: Fix T82074: Volume to Mesh normals are inverted

Jacques Lucke noreply at git.blender.org
Tue Nov 3 14:01:23 CET 2020


Commit: 3c953a1b09c9025086f38afdb60b02ba1b7d5970
Author: Jacques Lucke
Date:   Tue Nov 3 13:59:33 2020 +0100
Branches: blender-v2.91-release
https://developer.blender.org/rB3c953a1b09c9025086f38afdb60b02ba1b7d5970

Fix T82074: Volume to Mesh normals are inverted

OpenVDB seems to have a different winding order convention.

Reviewers: brecht

Differential Revision: https://developer.blender.org/D9434

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

M	source/blender/modifiers/intern/MOD_volume_to_mesh.cc

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

diff --git a/source/blender/modifiers/intern/MOD_volume_to_mesh.cc b/source/blender/modifiers/intern/MOD_volume_to_mesh.cc
index ea292155d3c..8146c4ca84a 100644
--- a/source/blender/modifiers/intern/MOD_volume_to_mesh.cc
+++ b/source/blender/modifiers/intern/MOD_volume_to_mesh.cc
@@ -237,7 +237,8 @@ static Mesh *new_mesh_from_openvdb_data(Span<openvdb::Vec3s> verts,
     mesh->mpoly[i].loopstart = 3 * i;
     mesh->mpoly[i].totloop = 3;
     for (int j = 0; j < 3; j++) {
-      mesh->mloop[3 * i + j].v = tris[i][j];
+      /* Reverse vertex order to get correct normals. */
+      mesh->mloop[3 * i + j].v = tris[i][2 - j];
     }
   }
 
@@ -248,7 +249,8 @@ static Mesh *new_mesh_from_openvdb_data(Span<openvdb::Vec3s> verts,
     mesh->mpoly[poly_offset + i].loopstart = loop_offset + 4 * i;
     mesh->mpoly[poly_offset + i].totloop = 4;
     for (int j = 0; j < 4; j++) {
-      mesh->mloop[loop_offset + 4 * i + j].v = quads[i][j];
+      /* Reverse vertex order to get correct normals. */
+      mesh->mloop[loop_offset + 4 * i + j].v = quads[i][3 - j];
     }
   }



More information about the Bf-blender-cvs mailing list