34 struct VolumeGridVector;
58 struct VolumeGridVector *grids,
59 const char *filepath);
147 const struct Main *bmain,
149 const char *filepath);
167 # include <openvdb/openvdb.h>
168 # include <openvdb/points/PointDataGrid.h>
170 bool BKE_volume_grid_bounds(openvdb::GridBase::ConstPtr grid,
174 openvdb::GridBase::ConstPtr BKE_volume_grid_shallow_transform(openvdb::GridBase::ConstPtr grid,
177 openvdb::GridBase::ConstPtr BKE_volume_grid_openvdb_for_metadata(
const struct VolumeGrid *grid);
178 openvdb::GridBase::ConstPtr BKE_volume_grid_openvdb_for_read(
const struct Volume *volume,
180 openvdb::GridBase::Ptr BKE_volume_grid_openvdb_for_write(
const struct Volume *volume,
184 VolumeGridType BKE_volume_grid_type_openvdb(
const openvdb::GridBase &grid);
186 template<
typename OpType>
187 auto BKE_volume_grid_type_operation(
const VolumeGridType grid_type, OpType &&op)
191 return op.template operator()<openvdb::FloatGrid>();
193 return op.template operator()<openvdb::Vec3fGrid>();
195 return op.template operator()<openvdb::BoolGrid>();
197 return op.template operator()<openvdb::DoubleGrid>();
199 return op.template operator()<openvdb::Int32Grid>();
201 return op.template operator()<openvdb::Int64Grid>();
203 return op.template operator()<openvdb::Vec3IGrid>();
205 return op.template operator()<openvdb::Vec3dGrid>();
207 return op.template operator()<openvdb::StringGrid>();
209 return op.template operator()<openvdb::MaskGrid>();
211 return op.template operator()<openvdb::points::PointDataGrid>();
218 return op.template operator()<openvdb::FloatGrid>();
221 openvdb::GridBase::Ptr BKE_volume_grid_create_with_changed_resolution(
223 const openvdb::GridBase &old_grid,
224 const 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)
@ BKE_VOLUME_BATCH_DIRTY_ALL
const char * BKE_volume_grids_frame_filepath(const struct Volume *volume)
int BKE_volume_grid_channels(const struct VolumeGrid *grid)
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)
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_is_loaded(const struct Volume *volume)
void * BKE_volume_add(struct Main *bmain, const char *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)
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
const Depsgraph * depsgraph
static void clear(Message *msg)
bool BKE_volume_min_max(const Volume *volume, float3 &r_min, float3 &r_max)