Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/openvdb/openvdb_capi.h')
-rw-r--r--intern/openvdb/openvdb_capi.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/intern/openvdb/openvdb_capi.h b/intern/openvdb/openvdb_capi.h
index 236bceea3e2..826481bde34 100644
--- a/intern/openvdb/openvdb_capi.h
+++ b/intern/openvdb/openvdb_capi.h
@@ -24,12 +24,80 @@
extern "C" {
#endif
+/* Level Set Filters */
+typedef enum OpenVDBLevelSet_FilterType {
+ OPENVDB_LEVELSET_FILTER_NONE = 0,
+ OPENVDB_LEVELSET_FILTER_GAUSSIAN = 1,
+ OPENVDB_LEVELSET_FILTER_MEAN = 2,
+ OPENVDB_LEVELSET_FILTER_MEDIAN = 3,
+ OPENVDB_LEVELSET_FILTER_MEAN_CURVATURE = 4,
+ OPENVDB_LEVELSET_FILTER_LAPLACIAN = 5,
+ OPENVDB_LEVELSET_FILTER_DILATE = 6,
+ OPENVDB_LEVELSET_FILTER_ERODE = 7,
+} OpenVDBLevelSet_FilterType;
+
+typedef enum OpenVDBLevelSet_FilterBias {
+ OPENVDB_LEVELSET_FIRST_BIAS = 0,
+ OPENVDB_LEVELSET_SECOND_BIAS,
+ OPENVDB_LEVELSET_THIRD_BIAS,
+ OPENVDB_LEVELSET_WENO5_BIAS,
+ OPENVDB_LEVELSET_HJWENO5_BIAS,
+} OpenVDBLevelSet_FilterBias;
+
+/* Level Set CSG Operations */
+typedef enum OpenVDBLevelSet_CSGOperation {
+ OPENVDB_LEVELSET_CSG_UNION = 0,
+ OPENVDB_LEVELSET_CSG_DIFFERENCE = 1,
+ OPENVDB_LEVELSET_CSG_INTERSECTION = 2,
+} OpenVDBLevelSet_CSGOperation;
+
+typedef enum OpenVDBLevelSet_GridSampler {
+ OPENVDB_LEVELSET_GRIDSAMPLER_NONE = 0,
+ OPENVDB_LEVELSET_GRIDSAMPLER_POINT = 1,
+ OPENVDB_LEVELSET_GRIDSAMPLER_BOX = 2,
+ OPENVDB_LEVELSET_GRIDSAMPLER_QUADRATIC = 3,
+} OpenVDBLevelSet_Gridsampler;
+
struct OpenVDBReader;
struct OpenVDBWriter;
+struct OpenVDBTransform;
+struct OpenVDBLevelSet;
struct OpenVDBFloatGrid;
struct OpenVDBIntGrid;
struct OpenVDBVectorGrid;
+struct OpenVDBVolumeToMeshData {
+ int tottriangles;
+ int totquads;
+ int totvertices;
+
+ float *vertices;
+ unsigned int *quads;
+ unsigned int *triangles;
+};
+
+struct OpenVDBRemeshData {
+ float *verts;
+ unsigned int *faces;
+ int totfaces;
+ int totverts;
+
+ float *out_verts;
+ unsigned int *out_faces;
+ unsigned int *out_tris;
+ int out_totverts;
+ int out_totfaces;
+ int out_tottris;
+ int filter_type;
+ enum OpenVDBLevelSet_FilterType filter_bias;
+ enum OpenVDBLevelSet_FilterBias filter_width; /* Parameter for gaussian, median, mean*/
+
+ float voxel_size;
+ float isovalue;
+ float adaptivity;
+ int relax_disoriented_triangles;
+};
+
int OpenVDB_getVersionHex(void);
enum {
@@ -112,6 +180,45 @@ void OpenVDBReader_get_meta_mat4(struct OpenVDBReader *reader,
const char *name,
float value[4][4]);
+struct OpenVDBTransform *OpenVDBTransform_create(void);
+void OpenVDBTransform_free(struct OpenVDBTransform *transform);
+void OpenVDBTransform_create_linear_transform(struct OpenVDBTransform *transform,
+ double voxel_size);
+
+struct OpenVDBLevelSet *OpenVDBLevelSet_create(bool initGrid, struct OpenVDBTransform *xform);
+void OpenVDBLevelSet_free(struct OpenVDBLevelSet *level_set);
+void OpenVDBLevelSet_mesh_to_level_set(struct OpenVDBLevelSet *level_set,
+ const float *vertices,
+ const unsigned int *faces,
+ const unsigned int totvertices,
+ const unsigned int totfaces,
+ struct OpenVDBTransform *xform);
+void OpenVDBLevelSet_mesh_to_level_set_transform(struct OpenVDBLevelSet *level_set,
+ const float *vertices,
+ const unsigned int *faces,
+ const unsigned int totvertices,
+ const unsigned int totfaces,
+ struct OpenVDBTransform *transform);
+void OpenVDBLevelSet_volume_to_mesh(struct OpenVDBLevelSet *level_set,
+ struct OpenVDBVolumeToMeshData *mesh,
+ const double isovalue,
+ const double adaptivity,
+ const bool relax_disoriented_triangles);
+void OpenVDBLevelSet_filter(struct OpenVDBLevelSet *level_set,
+ OpenVDBLevelSet_FilterType filter_type,
+ int width,
+ float distance,
+ OpenVDBLevelSet_FilterBias bias);
+void OpenVDBLevelSet_CSG_operation(struct OpenVDBLevelSet *out,
+ struct OpenVDBLevelSet *gridA,
+ struct OpenVDBLevelSet *gridB,
+ OpenVDBLevelSet_CSGOperation operation);
+
+struct OpenVDBLevelSet *OpenVDBLevelSet_transform_and_resample(struct OpenVDBLevelSet *level_setA,
+ struct OpenVDBLevelSet *level_setB,
+ char sampler,
+ float isolevel);
+
#ifdef __cplusplus
}
#endif