20 struct VolumeGridVector;
44 struct VolumeGridVector *grids,
45 const char *filepath);
148 const struct Main *bmain,
150 const char *filepath);
169 # include <openvdb/openvdb.h>
170 # include <openvdb/points/PointDataGrid.h>
176 bool BKE_volume_grid_bounds(openvdb::GridBase::ConstPtr grid,
185 openvdb::GridBase::ConstPtr BKE_volume_grid_shallow_transform(openvdb::GridBase::ConstPtr grid,
188 openvdb::GridBase::ConstPtr BKE_volume_grid_openvdb_for_metadata(
const struct VolumeGrid *grid);
189 openvdb::GridBase::ConstPtr BKE_volume_grid_openvdb_for_read(
const struct Volume *volume,
196 void BKE_volume_grid_clear_tree(openvdb::GridBase &grid);
198 VolumeGridType BKE_volume_grid_type_openvdb(
const openvdb::GridBase &grid);
200 template<
typename OpType>
201 auto BKE_volume_grid_type_operation(
const VolumeGridType grid_type, OpType &&op)
205 return op.template operator()<openvdb::FloatGrid>();
207 return op.template operator()<openvdb::Vec3fGrid>();
209 return op.template operator()<openvdb::BoolGrid>();
211 return op.template operator()<openvdb::DoubleGrid>();
213 return op.template operator()<openvdb::Int32Grid>();
215 return op.template operator()<openvdb::Int64Grid>();
217 return op.template operator()<openvdb::Vec3IGrid>();
219 return op.template operator()<openvdb::Vec3dGrid>();
221 return op.template operator()<openvdb::MaskGrid>();
223 return op.template operator()<openvdb::points::PointDataGrid>();
230 return op.template operator()<openvdb::FloatGrid>();
234 const VolumeGridType grid_type,
const openvdb::GridBase &old_grid,
float resolution_factor);
void(* BKE_volume_batch_cache_dirty_tag_cb)(struct Volume *volume, int mode)
void BKE_volume_init_grids(struct Volume *volume)
struct VolumeGrid * BKE_volume_grid_add(struct Volume *volume, const char *name, VolumeGridType type)
const VolumeGrid * BKE_volume_grid_get_for_read(const struct Volume *volume, int grid_index)
VolumeGridType BKE_volume_grid_type(const struct VolumeGrid *grid)
void BKE_volume_batch_cache_free(struct Volume *volume)
@ VOLUME_GRID_VECTOR_FLOAT
@ VOLUME_GRID_VECTOR_DOUBLE
struct BoundBox * BKE_volume_boundbox_get(struct Object *ob)
VolumeGrid * BKE_volume_grid_get_for_write(struct Volume *volume, int grid_index)
void BKE_volume_grid_transform_matrix(const struct VolumeGrid *grid, float mat[4][4])
int BKE_volume_simplify_level(const struct Depsgraph *depsgraph)
const VolumeGrid * BKE_volume_grid_find_for_read(const struct Volume *volume, const char *name)
void BKE_volume_unload(struct Volume *volume)
void BKE_volume_batch_cache_dirty_tag(struct Volume *volume, int mode)
bool BKE_volume_save(const struct Volume *volume, const struct Main *bmain, struct ReportList *reports, const char *filepath)
void BKE_volume_grid_remove(struct Volume *volume, struct VolumeGrid *grid)
void BKE_volume_grids_backup_restore(struct Volume *volume, struct VolumeGridVector *grids, const char *filepath)
void BKE_volume_eval_geometry(struct Depsgraph *depsgraph, struct Volume *volume)
const char * BKE_volume_grids_frame_filepath(const struct Volume *volume)
int BKE_volume_grid_channels(const struct VolumeGrid *grid)
void BKE_volume_grid_transform_matrix_set(struct VolumeGrid *volume_grid, const float mat[4][4])
void BKE_volumes_init(void)
void BKE_volume_grid_unload(const struct Volume *volume, const struct VolumeGrid *grid)
void BKE_volume_data_update(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object)
bool BKE_volume_grid_is_loaded(const struct VolumeGrid *grid)
const char * BKE_volume_grid_name(const struct VolumeGrid *grid)
struct Volume * BKE_volume_new_for_eval(const struct Volume *volume_src)
float BKE_volume_simplify_factor(const struct Depsgraph *depsgraph)
void(* BKE_volume_batch_cache_free_cb)(struct Volume *volume)
bool BKE_volume_is_points_only(const struct Volume *volume)
int BKE_volume_num_grids(const struct Volume *volume)
@ BKE_VOLUME_BATCH_DIRTY_ALL
struct Volume * BKE_volume_copy_for_eval(struct Volume *volume_src, bool reference)
const VolumeGrid * BKE_volume_grid_active_get_for_read(const struct Volume *volume)
const char * BKE_volume_grids_error_msg(const struct Volume *volume)
bool BKE_volume_grid_determinant_valid(double determinant)
bool BKE_volume_is_loaded(const struct Volume *volume)
void * BKE_volume_add(struct Main *bmain, const char *name)
bool BKE_volume_set_velocity_grid_by_name(struct Volume *volume, const char *base_name)
bool BKE_volume_grid_load(const struct Volume *volume, const struct VolumeGrid *grid)
bool BKE_volume_load(const struct Volume *volume, const struct Main *bmain)
bool BKE_volume_is_y_up(const struct Volume *volume)
#define BLI_assert_msg(a, msg)
struct Depsgraph Depsgraph
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
btScalar determinant() const
Return the determinant of the matrix.
const Depsgraph * depsgraph
SyclQueue void void size_t num_bytes void
static void clear(Message *msg)
bool BKE_volume_min_max(const Volume *volume, float3 &r_min, float3 &r_max)