29#include "RNA_prototypes.hh"
38# include <openvdb/tools/GridTransformer.h>
39# include <openvdb/tools/VolumeToMesh.h>
130 if (vmmd->
object ==
nullptr) {
151 if (volume_grid ==
nullptr) {
156 blender::bke::VolumeTreeAccessToken tree_token;
157 const openvdb::GridBase &local_grid = volume_grid->grid(tree_token);
159 openvdb::math::Transform::Ptr transform = local_grid.transform().copy();
160 transform->postMult(openvdb::Mat4d(vmmd->
object->object_to_world().base_ptr()));
161 openvdb::Mat4d imat = openvdb::Mat4d(ctx->
object->world_to_object().base_ptr());
163 imat.setCol(3, openvdb::Vec4d(0, 0, 0, 1));
164 transform->postMult(imat);
167 openvdb::GridBase::ConstPtr transformed_grid = local_grid.copyGridReplacingTransform(transform);
178 Mesh *mesh = bke::volume_to_mesh(
180 if (mesh ==
nullptr) {
197 N_(
"Volume to Mesh"),
198 "VolumeToMeshModifierData",
200 &RNA_VolumeToMeshModifier,
void BKE_mesh_copy_parameters_for_eval(Mesh *me_dst, const Mesh *me_src)
Mesh * BKE_mesh_new_nomain(int verts_num, int edges_num, int faces_num, int corners_num)
void BKE_modifier_copydata_generic(const ModifierData *md, ModifierData *md_dst, int flag)
@ eModifierTypeFlag_AcceptsMesh
void(*)(void *user_data, Object *ob, ID **idpoin, int cb_flag) IDWalkFunc
void BKE_modifier_set_error(const Object *ob, ModifierData *md, const char *format,...) ATTR_PRINTF_FORMAT(3
bool BKE_volume_load(const Volume *volume, const Main *bmain)
const blender::bke::VolumeGridData * BKE_volume_grid_find(const Volume *volume, const char *name)
#define STRNCPY(dst, src)
void DEG_add_depends_on_transform_relation(DepsNodeHandle *node_handle, const char *description)
void DEG_add_object_relation(DepsNodeHandle *node_handle, Object *object, eDepsObjectComponentType component, const char *description)
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.
void modifier_panel_end(uiLayout *layout, PointerRNA *ptr)
PanelType * modifier_panel_register(ARegionType *region_type, ModifierType type, PanelDrawFn draw)
PointerRNA * modifier_panel_get_property_pointers(Panel *panel, PointerRNA *r_ob_ptr)
static void init_data(ModifierData *md)
static void panel_register(ARegionType *region_type)
static Mesh * create_empty_mesh(const Mesh *input_mesh)
ModifierTypeInfo modifierType_VolumeToMesh
static void panel_draw(const bContext *, Panel *panel)
static void foreach_ID_link(ModifierData *md, Object *ob, IDWalkFunc walk, void *user_data)
static void update_depsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
static Mesh * modify_mesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *input_mesh)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, eUI_Item_Flag flag, const char *name, int icon)
union blender::bke::VolumeToMeshResolution::@73 settings
VolumeToMeshResolutionMode mode