From 3c953a1b09c9025086f38afdb60b02ba1b7d5970 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Tue, 3 Nov 2020 13:59:33 +0100 Subject: 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 --- source/blender/modifiers/intern/MOD_volume_to_mesh.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'source/blender/modifiers') 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 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 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]; } } -- cgit v1.2.3