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

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.shrinkMode = MOD_SHRINKWRAP_ON_SURFACE;
ssmd.shrinkOpts = MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR | MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR; ssmd.shrinkOpts = MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR | MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR;
ssmd.keepDist = 0.0f; 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); float(*vertexCos)[3] = BKE_mesh_vert_coords_alloc(src_me, &totvert);