Commit: a847fa4523dae102dc9bf24cf91d2b30af7aa3b5
Author: Martin Felke
Date:   Sat Apr 13 12:43:39 2019 +0200
Branches: sculpt-mode-features
https://developer.blender.org/rBa847fa4523dae102dc9bf24cf91d2b30af7aa3b5

added rebuild levelset after grid resampling

but in general, the current grid resampling approach still seems wrong... needs 
more thinking

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

M       intern/openvdb/openvdb_capi.cc
M       intern/openvdb/openvdb_capi.h
M       source/blender/modifiers/intern/MOD_remesh.c

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

diff --git a/intern/openvdb/openvdb_capi.cc b/intern/openvdb/openvdb_capi.cc
index 0d8e178553d..d5ff181c067 100644
--- a/intern/openvdb/openvdb_capi.cc
+++ b/intern/openvdb/openvdb_capi.cc
@@ -306,7 +306,7 @@ void OpenVDBLevelSet_CSG_operation(struct OpenVDBLevelSet 
*out, struct OpenVDBLe
 
 OpenVDBLevelSet* OpenVDBLevelSet_transform_and_resample(struct OpenVDBLevelSet 
*level_setA,
                                                         struct OpenVDBLevelSet 
*level_setB,
-                                                                               
                                char sampler)
+                                                                               
                                char sampler, float isolevel)
 {
        openvdb::FloatGrid::Ptr sourceGrid = 
level_setA->OpenVDB_level_set_get_grid();
        openvdb::FloatGrid::Ptr targetGrid = 
level_setB->OpenVDB_level_set_get_grid()->deepCopy();
@@ -355,6 +355,9 @@ OpenVDBLevelSet* 
OpenVDBLevelSet_transform_and_resample(struct OpenVDBLevelSet *
                break;
        }
 
+       targetGrid = openvdb::tools::levelSetRebuild(*targetGrid, isolevel, 
1.0f);
+       openvdb::tools::pruneLevelSet(targetGrid->tree());
+
        OpenVDBLevelSet* level_set = OpenVDBLevelSet_create(false, NULL);
        level_set->OpenVDB_level_set_set_grid(targetGrid);
 
diff --git a/intern/openvdb/openvdb_capi.h b/intern/openvdb/openvdb_capi.h
index d5e2fd363bc..3e96d072e7a 100644
--- a/intern/openvdb/openvdb_capi.h
+++ b/intern/openvdb/openvdb_capi.h
@@ -182,7 +182,7 @@ void OpenVDBLevelSet_CSG_operation(struct OpenVDBLevelSet 
*out, struct OpenVDBLe
 
 struct OpenVDBLevelSet *OpenVDBLevelSet_transform_and_resample(struct 
OpenVDBLevelSet *level_setA,
                                                         struct OpenVDBLevelSet 
*level_setB,
-                                                        char sampler);
+                                                        char sampler, float 
isolevel);
 
 
 #ifdef __cplusplus
diff --git a/source/blender/modifiers/intern/MOD_remesh.c 
b/source/blender/modifiers/intern/MOD_remesh.c
index e73cf1af6d5..26d8e30e2e1 100644
--- a/source/blender/modifiers/intern/MOD_remesh.c
+++ b/source/blender/modifiers/intern/MOD_remesh.c
@@ -251,7 +251,7 @@ static struct OpenVDBLevelSet* csgOperation(struct 
OpenVDBLevelSet* level_set, C
 
        if (vcob->sampler != OPENVDB_LEVELSET_GRIDSAMPLER_NONE)
        {
-               level_set = OpenVDBLevelSet_transform_and_resample(level_set, 
level_setB, vcob->sampler);
+               level_set = OpenVDBLevelSet_transform_and_resample(level_set, 
level_setB, vcob->sampler, rmd->isovalue);
        }
 
        OpenVDBLevelSet_CSG_operation(level_set, level_set, level_setB, 
(OpenVDBLevelSet_CSGOperation)vcob->operation );

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to