diff options
author | Jacques Lucke <jacques@blender.org> | 2020-11-03 15:59:33 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2020-11-03 16:01:07 +0300 |
commit | 3c953a1b09c9025086f38afdb60b02ba1b7d5970 (patch) | |
tree | 1356a298745dc3a2f4a391b43e4fd1aa57fb7a6e /source/blender/modifiers | |
parent | df2a0cd6f419c5b359c29d2aa149f864629c304e (diff) |
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
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r-- | source/blender/modifiers/intern/MOD_volume_to_mesh.cc | 6 |
1 files changed, 4 insertions, 2 deletions
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]; } } |