[Bf-blender-cvs] [a847fa4523d] sculpt-mode-features: added rebuild levelset after grid resampling
Martin Felke
noreply at git.blender.org
Sat Apr 13 12:45:12 CEST 2019
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 );
More information about the Bf-blender-cvs
mailing list