diff options
Diffstat (limited to 'source/blender/blenkernel/BKE_volume.h')
-rw-r--r-- | source/blender/blenkernel/BKE_volume.h | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/source/blender/blenkernel/BKE_volume.h b/source/blender/blenkernel/BKE_volume.h index 5fe0d54c2cf..8b42de7303d 100644 --- a/source/blender/blenkernel/BKE_volume.h +++ b/source/blender/blenkernel/BKE_volume.h @@ -88,6 +88,7 @@ const char *BKE_volume_grids_frame_filepath(const struct Volume *volume); const VolumeGrid *BKE_volume_grid_get_for_read(const struct Volume *volume, int grid_index); VolumeGrid *BKE_volume_grid_get_for_write(struct Volume *volume, int grid_index); const VolumeGrid *BKE_volume_grid_active_get_for_read(const struct Volume *volume); +/* Tries to find a grid with the given name. Make sure that the volume has been loaded. */ const VolumeGrid *BKE_volume_grid_find_for_read(const struct Volume *volume, const char *name); /* Grid @@ -115,9 +116,13 @@ void BKE_volume_grid_unload(const struct Volume *volume, const struct VolumeGrid bool BKE_volume_grid_is_loaded(const struct VolumeGrid *grid); /* Metadata */ + const char *BKE_volume_grid_name(const struct VolumeGrid *grid); VolumeGridType BKE_volume_grid_type(const struct VolumeGrid *grid); int BKE_volume_grid_channels(const struct VolumeGrid *grid); +/** + * Transformation from index space to object space. + */ void BKE_volume_grid_transform_matrix(const struct VolumeGrid *grid, float mat[4][4]); /* Volume Editing @@ -158,8 +163,9 @@ bool BKE_volume_save(const struct Volume *volume, * file or copy shared grids to make them writeable. */ #ifdef __cplusplus -# include "BLI_float3.hh" # include "BLI_float4x4.hh" +# include "BLI_math_vec_types.hh" +# include "BLI_string_ref.hh" bool BKE_volume_min_max(const Volume *volume, blender::float3 &r_min, blender::float3 &r_max); @@ -167,10 +173,19 @@ bool BKE_volume_min_max(const Volume *volume, blender::float3 &r_min, blender::f # include <openvdb/openvdb.h> # include <openvdb/points/PointDataGrid.h> +VolumeGrid *BKE_volume_grid_add_vdb(Volume &volume, + blender::StringRef name, + openvdb::GridBase::Ptr vdb_grid); + bool BKE_volume_grid_bounds(openvdb::GridBase::ConstPtr grid, blender::float3 &r_min, blender::float3 &r_max); +/** + * Return a new grid pointer with only the metadata and transform changed. + * This is useful for instances, where there is a separate transform on top of the original + * grid transform that must be applied for some operations that only take a grid argument. + */ openvdb::GridBase::ConstPtr BKE_volume_grid_shallow_transform(openvdb::GridBase::ConstPtr grid, const blender::float4x4 &transform); @@ -179,7 +194,7 @@ openvdb::GridBase::ConstPtr BKE_volume_grid_openvdb_for_read(const struct Volume const struct VolumeGrid *grid); openvdb::GridBase::Ptr BKE_volume_grid_openvdb_for_write(const struct Volume *volume, struct VolumeGrid *grid, - const bool clear); + bool clear); VolumeGridType BKE_volume_grid_type_openvdb(const openvdb::GridBase &grid); @@ -219,9 +234,7 @@ auto BKE_volume_grid_type_operation(const VolumeGridType grid_type, OpType &&op) } openvdb::GridBase::Ptr BKE_volume_grid_create_with_changed_resolution( - const VolumeGridType grid_type, - const openvdb::GridBase &old_grid, - const float resolution_factor); + const VolumeGridType grid_type, const openvdb::GridBase &old_grid, float resolution_factor); # endif #endif |