Improve Voxel Remesher volume projection artifacts on sharp edges

The voxel remesher was using the voxel size to limit the shrink-wrap
projection distance. Now that distance is increased to help preserving
more detail on hard surface edges.

Reviewed By: pablodp606

Differential Revision: https://developer.blender.org/D6204
This commit is contained in:
Leha 2020-10-15 18:48:18 +02:00 committed by Pablo Dobarro
parent e7ab802ab0
commit 0fed1bea65
5 changed files with 9 additions and 5 deletions

@ -1 +1 @@
Subproject commit 07106b588381ef26604934482a6151d9bc26437e
Subproject commit 8f5a0e027f131104974763d30db36b1a9ffae16a

@ -1 +1 @@
Subproject commit feca8c5289794a70bdd375be76fc4bc59d83c96b
Subproject commit 8ad9de7c1e1022dee907ddce78f4c357111fc09e

@ -1 +1 @@
Subproject commit f2f4a8b3bfa36ee49f7bdb3a1acb40ef4b39ee3a
Subproject commit 26a8b2eadc7abb2a30fac50eb5505aa24daf5785

View File

@ -1548,7 +1548,11 @@ void BKE_shrinkwrap_remesh_target_project(Mesh *src_me, Mesh *target_me, Object
ssmd.shrinkMode = MOD_SHRINKWRAP_ON_SURFACE;
ssmd.shrinkOpts = MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR | MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR;
ssmd.keepDist = 0.0f;
ssmd.projLimit = target_me->remesh_voxel_size;
/* Tolerance value to prevent artifacts on sharp edges of a mesh.
* This constant and based on experimenting with different values. */
const float projLimitTolerance = 5.0f;
ssmd.projLimit = target_me->remesh_voxel_size * projLimitTolerance;
float(*vertexCos)[3] = BKE_mesh_vert_coords_alloc(src_me, &totvert);

@ -1 +1 @@
Subproject commit 2afbb8ec472cac5102eb239f57b006f8c9387685
Subproject commit 7011d02c292ac1c91a5c9cc1a075ea2727982cee