31 #include "RNA_prototypes.h"
41 # include <openvdb/tools/GridTransformer.h>
42 # include <openvdb/tools/VolumeToMesh.h>
110 uiItemR(
col,
ptr,
"use_smooth_shade", 0,
nullptr, ICON_NONE);
132 if (vmmd->
object ==
nullptr) {
151 if (volume_grid ==
nullptr) {
156 const openvdb::GridBase::ConstPtr local_grid = BKE_volume_grid_openvdb_for_read(volume,
161 openvdb::Mat4d imat = openvdb::Mat4d((
float *)ctx->
object->
imat);
163 imat.setCol(3, openvdb::Vec4d(0, 0, 0, 1));
167 openvdb::GridBase::ConstPtr transformed_grid = local_grid->copyGridReplacingTransform(
transform);
178 Mesh *
mesh = blender::bke::volume_to_mesh(
180 if (
mesh ==
nullptr) {
198 N_(
"Volume to Mesh"),
199 "VolumeToMeshModifierData",
201 &RNA_VolumeToMeshModifier,
void BKE_mesh_copy_parameters_for_eval(struct Mesh *me_dst, const struct Mesh *me_src)
void BKE_mesh_smooth_flag_set(struct Mesh *me, bool use_smooth)
struct Mesh * BKE_mesh_new_nomain(int verts_len, int edges_len, int tessface_len, int loops_len, int polys_len)
void(* IDWalkFunc)(void *userData, struct Object *ob, struct ID **idpoin, int cb_flag)
@ eModifierTypeFlag_AcceptsMesh
void BKE_modifier_copydata_generic(const struct ModifierData *md, struct ModifierData *md_dst, int flag)
@ eModifierTypeType_Constructive
void BKE_modifier_set_error(const struct Object *ob, struct ModifierData *md, const char *format,...) ATTR_PRINTF_FORMAT(3
const VolumeGrid * BKE_volume_grid_find_for_read(const struct Volume *volume, const char *name)
bool BKE_volume_load(const struct Volume *volume, const struct Main *bmain)
void DEG_add_object_relation(struct DepsNodeHandle *node_handle, struct Object *object, eDepsObjectComponentType component, const char *description)
void DEG_add_modifier_to_transform_relation(struct DepsNodeHandle *node_handle, const char *description)
struct Main * DEG_get_bmain(const Depsgraph *graph)
@ eModifierType_VolumeToMesh
@ VOLUME_TO_MESH_USE_SMOOTH_SHADE
VolumeToMeshResolutionMode
@ VOLUME_TO_MESH_RESOLUTION_MODE_VOXEL_SIZE
@ VOLUME_TO_MESH_RESOLUTION_MODE_GRID
@ VOLUME_TO_MESH_RESOLUTION_MODE_VOXEL_AMOUNT
struct VolumeToMeshModifierData VolumeToMeshModifierData
Object is a sort of wrapper for general info.
PointerRNA * modifier_panel_get_property_pointers(Panel *panel, PointerRNA *r_ob_ptr)
void modifier_panel_end(uiLayout *layout, PointerRNA *ptr)
PanelType * modifier_panel_register(ARegionType *region_type, ModifierType type, PanelDrawFn draw)
static Mesh * modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *input_mesh)
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
static Mesh * create_empty_mesh(const Mesh *input_mesh)
static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
ModifierTypeInfo modifierType_VolumeToMesh
static void panel_draw(const bContext *UNUSED(C), Panel *panel)
static void initData(ModifierData *md)
static void panelRegister(ARegionType *region_type)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
vec_base< float, 3 > float3
struct Depsgraph * depsgraph
struct DepsNodeHandle * node
union blender::bke::VolumeToMeshResolution::@78 settings
VolumeToMeshResolutionMode mode