[Bf-blender-cvs] [f4cf8193cbd] sculpt-mode-features: Changes to intern/openvdb
Pablo Dobarro
noreply at git.blender.org
Wed Jul 31 16:05:07 CEST 2019
Commit: f4cf8193cbdb43312e8d229ca9aa0f871f765ee1
Author: Pablo Dobarro
Date: Wed Jul 31 16:06:15 2019 +0200
Branches: sculpt-mode-features
https://developer.blender.org/rBf4cf8193cbdb43312e8d229ca9aa0f871f765ee1
Changes to intern/openvdb
===================================================================
M intern/openvdb/intern/openvdb_level_set.cc
M intern/openvdb/intern/openvdb_level_set.h
M intern/openvdb/intern/openvdb_transform.cc
M intern/openvdb/intern/openvdb_transform.h
M intern/openvdb/openvdb_capi.cc
M intern/openvdb/openvdb_capi.h
M release/scripts/startup/bl_ui/properties_data_modifier.py
M source/blender/makesdna/DNA_modifier_types.h
M source/blender/makesrna/intern/rna_modifier.c
M source/blender/modifiers/intern/MOD_remesh.c
===================================================================
diff --git a/intern/openvdb/intern/openvdb_level_set.cc b/intern/openvdb/intern/openvdb_level_set.cc
index ac4a041c193..fbfb0bf2280 100644
--- a/intern/openvdb/intern/openvdb_level_set.cc
+++ b/intern/openvdb/intern/openvdb_level_set.cc
@@ -32,34 +32,32 @@ OpenVDBLevelSet::~OpenVDBLevelSet()
{
}
-void OpenVDBLevelSet::OpenVDB_mesh_to_level_set(const float *vertices,
- const unsigned int *faces,
- const unsigned int totvertices,
- const unsigned int totfaces,
- openvdb::math::Transform::Ptr xform)
+void OpenVDBLevelSet::mesh_to_level_set(const float *vertices,
+ const unsigned int *faces,
+ const unsigned int totvertices,
+ const unsigned int totfaces,
+ openvdb::math::Transform::Ptr &xform)
{
- std::vector<openvdb::Vec3s> points;
- std::vector<openvdb::Vec3I> triangles;
+ std::vector<openvdb::Vec3s> points(totvertices);
+ std::vector<openvdb::Vec3I> triangles(totfaces);
std::vector<openvdb::Vec4I> quads;
for (unsigned int i = 0; i < totvertices; i++) {
- openvdb::Vec3s v(vertices[i * 3], vertices[i * 3 + 1], vertices[i * 3 + 2]);
- points.push_back(v);
+ points[i] = openvdb::Vec3s(vertices[i * 3], vertices[i * 3 + 1], vertices[i * 3 + 2]);
}
for (unsigned int i = 0; i < totfaces; i++) {
- openvdb::Vec3I f(faces[i * 3], faces[i * 3 + 1], faces[i * 3 + 2]);
- triangles.push_back(f);
+ triangles[i] = openvdb::Vec3I(faces[i * 3], faces[i * 3 + 1], faces[i * 3 + 2]);
}
this->grid = openvdb::tools::meshToLevelSet<openvdb::FloatGrid>(
*xform, points, triangles, quads, 1);
}
-void OpenVDBLevelSet::OpenVDB_volume_to_mesh(OpenVDBVolumeToMeshData *mesh,
- const double isovalue,
- const double adaptivity,
- const bool relax_disoriented_triangles)
+void OpenVDBLevelSet::volume_to_mesh(OpenVDBVolumeToMeshData *mesh,
+ const double isovalue,
+ const double adaptivity,
+ const bool relax_disoriented_triangles)
{
std::vector<openvdb::Vec3s> out_points;
std::vector<openvdb::Vec4I> out_quads;
@@ -85,37 +83,37 @@ void OpenVDBLevelSet::OpenVDB_volume_to_mesh(OpenVDBVolumeToMeshData *mesh,
mesh->tottriangles = out_tris.size();
mesh->totquads = out_quads.size();
- for (unsigned int i = 0; i < out_points.size(); i++) {
+ for (size_t i = 0; i < out_points.size(); i++) {
mesh->vertices[i * 3] = out_points[i].x();
mesh->vertices[i * 3 + 1] = out_points[i].y();
mesh->vertices[i * 3 + 2] = out_points[i].z();
}
- for (unsigned int i = 0; i < out_quads.size(); i++) {
+ for (size_t i = 0; i < out_quads.size(); i++) {
mesh->quads[i * 4] = out_quads[i].x();
mesh->quads[i * 4 + 1] = out_quads[i].y();
mesh->quads[i * 4 + 2] = out_quads[i].z();
mesh->quads[i * 4 + 3] = out_quads[i].w();
}
- for (unsigned int i = 0; i < out_tris.size(); i++) {
+ for (size_t i = 0; i < out_tris.size(); i++) {
mesh->triangles[i * 3] = out_tris[i].x();
mesh->triangles[i * 3 + 1] = out_tris[i].y();
mesh->triangles[i * 3 + 2] = out_tris[i].z();
}
}
-void OpenVDBLevelSet::OpenVDB_level_set_filter(OpenVDBLevelSet_FilterType filter_type,
- int width,
- int iterations,
- int filter_bias)
+void OpenVDBLevelSet::filter(OpenVDBLevelSet_FilterType filter_type,
+ int width,
+ float distance,
+ OpenVDBLevelSet_FilterBias filter_bias)
{
if (!this->grid) {
return;
}
- if (this->grid && this->grid->getGridClass() != openvdb::GRID_LEVEL_SET) {
+ if (this->grid->getGridClass() != openvdb::GRID_LEVEL_SET) {
return;
}
@@ -138,42 +136,39 @@ void OpenVDBLevelSet::OpenVDB_level_set_filter(OpenVDBLevelSet_FilterType filter
filter.laplacian();
break;
case OPENVDB_LEVELSET_FILTER_DILATE:
- filter.offset(-iterations / 100.0);
+ filter.offset(-distance);
break;
case OPENVDB_LEVELSET_FILTER_ERODE:
- filter.offset(iterations / 100.0);
+ filter.offset(distance);
break;
}
}
-openvdb::FloatGrid::Ptr OpenVDBLevelSet::OpenVDB_CSG_operation(
- openvdb::FloatGrid::Ptr gridA,
- openvdb::FloatGrid::Ptr gridB,
+openvdb::FloatGrid::Ptr OpenVDBLevelSet::CSG_operation_apply(
+ openvdb::FloatGrid::Ptr &gridA,
+ openvdb::FloatGrid::Ptr &gridB,
OpenVDBLevelSet_CSGOperation operation)
{
- openvdb::FloatGrid::Ptr gridA_copy = gridA; //->deepCopy();
- openvdb::FloatGrid::Ptr gridB_copy = gridB; //->deepCopy();
-
switch (operation) {
case OPENVDB_LEVELSET_CSG_UNION:
- openvdb::tools::csgUnion(*gridA_copy, *gridB_copy);
+ openvdb::tools::csgUnion(*gridA, *gridB);
break;
case OPENVDB_LEVELSET_CSG_DIFFERENCE:
- openvdb::tools::csgDifference(*gridA_copy, *gridB_copy);
+ openvdb::tools::csgDifference(*gridA, *gridB);
break;
case OPENVDB_LEVELSET_CSG_INTERSECTION:
- openvdb::tools::csgIntersection(*gridA_copy, *gridB_copy);
+ openvdb::tools::csgIntersection(*gridA, *gridB);
break;
}
- return gridA_copy;
+ return gridA;
}
-openvdb::FloatGrid::Ptr OpenVDBLevelSet::OpenVDB_level_set_get_grid()
+openvdb::FloatGrid::Ptr &OpenVDBLevelSet::get_grid()
{
return this->grid;
}
-void OpenVDBLevelSet::OpenVDB_level_set_set_grid(openvdb::FloatGrid::Ptr grid)
+void OpenVDBLevelSet::set_grid(openvdb::FloatGrid::Ptr grid)
{
this->grid = grid;
}
diff --git a/intern/openvdb/intern/openvdb_level_set.h b/intern/openvdb/intern/openvdb_level_set.h
index 01d1b8e538a..279f1665e55 100644
--- a/intern/openvdb/intern/openvdb_level_set.h
+++ b/intern/openvdb/intern/openvdb_level_set.h
@@ -35,40 +35,26 @@ struct OpenVDBLevelSet {
public:
OpenVDBLevelSet();
~OpenVDBLevelSet();
- openvdb::FloatGrid::Ptr OpenVDB_level_set_get_grid();
- void OpenVDB_level_set_set_grid(openvdb::FloatGrid::Ptr);
- void OpenVDB_mesh_to_level_set(const float *vertices,
- const unsigned int *faces,
- const unsigned int totvertices,
- const unsigned int totfaces,
- const double voxel_size);
+ openvdb::FloatGrid::Ptr &get_grid();
+ void set_grid(openvdb::FloatGrid::Ptr);
- void OpenVDB_mesh_to_level_set(const float *vertices,
- const unsigned int *faces,
- const unsigned int totvertices,
- const unsigned int totfaces,
- openvdb::math::Transform::Ptr transform);
+ void mesh_to_level_set(const float *vertices,
+ const unsigned int *faces,
+ const unsigned int totvertices,
+ const unsigned int totfaces,
+ openvdb::math::Transform::Ptr &transform);
- void OpenVDB_volume_to_mesh(float *vertices,
- unsigned int *quads,
- unsigned int *triangles,
- unsigned int *totvertices,
- unsigned int *totfaces,
- unsigned int *tottriangles,
- const double isovalue,
- const double adaptivity,
- const bool relax_disoriented_triangles);
- void OpenVDB_volume_to_mesh(struct OpenVDBVolumeToMeshData *mesh,
- const double isovalue,
- const double adaptivity,
- const bool relax_disoriented_triangles);
- void OpenVDB_level_set_filter(OpenVDBLevelSet_FilterType filter_type,
- int width,
- int iterations,
- int filter_bias);
- openvdb::FloatGrid::Ptr OpenVDB_CSG_operation(openvdb::FloatGrid::Ptr gridA,
- openvdb::FloatGrid::Ptr gridB,
- OpenVDBLevelSet_CSGOperation operation);
+ void volume_to_mesh(struct OpenVDBVolumeToMeshData *mesh,
+ const double isovalue,
+ const double adaptivity,
+ const bool relax_disoriented_triangles);
+ void filter(OpenVDBLevelSet_FilterType filter_type,
+ int width,
+ float distance,
+ OpenVDBLevelSet_FilterBias filter_bias);
+ openvdb::FloatGrid::Ptr CSG_operation_apply(openvdb::FloatGrid::Ptr &gridA,
+ openvdb::FloatGrid::Ptr &gridB,
+ OpenVDBLevelSet_CSGOperation operation);
};
#endif /* __OPENVDB_LEVEL_SET_H__ */
diff --git a/intern/openvdb/intern/openvdb_transform.cc b/intern/openvdb/intern/openvdb_transform.cc
index 5fbd2c298b1..70bb280d417 100644
--- a/intern/openvdb/intern/openvdb_transform.cc
+++ b/intern/openvdb/intern/openvdb_transform.cc
@@ -27,17 +27,17 @@ OpenVDBTransform::~OpenVDBTransform()
{
}
-void OpenVDBTransform::OpenVDB_transform_create_linear_transform(double voxel_size)
+void OpenVDBTransform::create_linear_transform(double voxel_size)
{
this->transform = openvdb::math::Transform::createLinearTransform(voxel_size);
}
-openvdb::math::Transform::Ptr OpenVDBTransform::OpenVDB_transform_get_transform()
+openvdb::math::Transform::Ptr &OpenVDBTransform::get_transform()
{
return this->transform;
}
-void OpenVDBTransform::OpenVDB_transform_set_transform(openvdb::math::Transform::Ptr tr
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list