[Bf-blender-cvs] [c6a3009b15d] sculpt-mode-features: Merge branch 'master' into sculpt-mode-features

Pablo Dobarro noreply at git.blender.org
Fri May 31 16:11:13 CEST 2019


Commit: c6a3009b15dcb6601aa7843839f84e56c3feac13
Author: Pablo Dobarro
Date:   Fri May 31 16:02:26 2019 +0200
Branches: sculpt-mode-features
https://developer.blender.org/rBc6a3009b15dcb6601aa7843839f84e56c3feac13

Merge branch 'master' into sculpt-mode-features

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



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

diff --cc source/blender/editors/sculpt_paint/sculpt_intern.h
index e6932cc35e4,b29ca1b4dd7..2c34112dd9e
--- a/source/blender/editors/sculpt_paint/sculpt_intern.h
+++ b/source/blender/editors/sculpt_paint/sculpt_intern.h
@@@ -33,9 -32,8 +33,10 @@@
  #include "BLI_threads.h"
  
  #include "BKE_pbvh.h"
 +#include "BKE_mesh.h"
 +#include "BKE_paint.h"
  
+ struct Main;
  struct KeyBlock;
  struct Object;
  struct SculptOrigVertData;
diff --cc source/blender/modifiers/intern/MOD_remesh.c
index 8edb0ef7b0c,23da1ec2754..1703a545fb9
--- a/source/blender/modifiers/intern/MOD_remesh.c
+++ b/source/blender/modifiers/intern/MOD_remesh.c
@@@ -282,95 -144,11 +283,96 @@@ static Mesh *applyModifier(ModifierDat
  
    rmd = (RemeshModifierData *)md;
  
 +  if (rmd->mode == MOD_REMESH_QUAD) {
 +#  ifdef WITH_QEX
 +    Object *ob_orig = DEG_get_original_object(ctx->object);
 +    RemeshModifierData *rmd_orig = (RemeshModifierData *)modifiers_findByName(ob_orig, md->name);
 +
 +    if (((rmd->flag & MOD_REMESH_LIVE_REMESH) == 0)) {
 +      // access mesh cache on ORIGINAL object, cow should not copy / free this over and over again
 +      if (rmd_orig->mesh_cached) {
 +        return copy_mesh(rmd_orig->mesh_cached);
 +      }
 +    }
 +
 +    result = BKE_remesh_quad(
 +        mesh, rmd->gradient_size, rmd->stiffness, rmd->iter, rmd->flag & MOD_REMESH_DIRECT_ROUND);
 +
 +    if (result) {
 +      // update cache
 +      if (rmd_orig->mesh_cached) {
 +        BKE_mesh_free(rmd_orig->mesh_cached);
 +        rmd_orig->mesh_cached = NULL;
 +      }
 +
 +      // save a copy
 +      rmd_orig->mesh_cached = copy_mesh(result);
 +    }
 +
 +    return result;
 +#  else
 +    modifier_setError((ModifierData *)rmd, "Built without QEx support, cant execute quad remesh");
 +    return mesh;
 +#  endif
 +  }
 +  else if (rmd->mode == MOD_REMESH_VOXEL) {
 +#  if defined WITH_OPENVDB
 +    CSGVolume_Object *vcob;
 +    struct OpenVDBLevelSet *level_set;
 +
 +    Object *ob_orig = DEG_get_original_object(ctx->object);
 +    RemeshModifierData *rmd_orig = (RemeshModifierData *)modifiers_findByName(ob_orig, md->name);
 +
 +    if (((rmd->flag & MOD_REMESH_LIVE_REMESH) == 0)) {
 +      // access mesh cache on ORIGINAL object, cow should not copy / free this over and over again
 +      if (rmd_orig->mesh_cached) {
 +        return copy_mesh(rmd_orig->mesh_cached);
 +      }
 +    }
 +
 +    if (rmd->voxel_size > 0.0f) {
 +
 +      struct OpenVDBTransform *xform = OpenVDBTransform_create();
 +      OpenVDBTransform_create_linear_transform(xform, rmd->voxel_size);
 +      level_set = BKE_remesh_voxel_ovdb_mesh_to_level_set_create(mesh, xform);
 +      OpenVDBTransform_free(xform);
 +
 +      for (vcob = rmd->csg_operands.first; vcob; vcob = vcob->next) {
 +        if (vcob->object && (vcob->flag & MOD_REMESH_CSG_OBJECT_ENABLED)) {
 +          level_set = csgOperation(level_set, vcob, ctx->object, rmd);
 +        }
 +      }
 +
 +      result = voxel_remesh(rmd, mesh, level_set);
 +
 +      if (result) {
 +        // update cache
 +        if (rmd_orig->mesh_cached) {
 +          BKE_mesh_free(rmd_orig->mesh_cached);
 +          rmd_orig->mesh_cached = NULL;
 +        }
 +
 +        // save a copy
 +        rmd_orig->mesh_cached = copy_mesh(result);
 +      }
 +
 +      return result;
 +    }
 +    else {
 +      return mesh;
 +    }
 +#  else
 +    modifier_setError((ModifierData *)rmd,
 +                      "Built without OpenVDB support, cant execute voxel remesh");
 +    return mesh;
 +#  endif
 +  }
 +
    init_dualcon_mesh(&input, mesh);
  
-   if (rmd->flag & MOD_REMESH_FLOOD_FILL)
+   if (rmd->flag & MOD_REMESH_FLOOD_FILL) {
      flags |= DUALCON_FLOOD_FILL;
+   }
  
    switch (rmd->mode) {
      case MOD_REMESH_CENTROID:



More information about the Bf-blender-cvs mailing list