27#include "RNA_prototypes.hh"
37# include <openvdb/tools/GridTransformer.h>
38# include <openvdb/tools/VolumeToMesh.h>
129 if (vmmd->
object ==
nullptr) {
150 if (volume_grid ==
nullptr) {
155 blender::bke::VolumeTreeAccessToken tree_token;
156 const openvdb::GridBase &local_grid = volume_grid->grid(tree_token);
158 openvdb::math::Transform::Ptr
transform = local_grid.transform().copy();
159 transform->postMult(openvdb::Mat4d(vmmd->
object->object_to_world().base_ptr()));
160 openvdb::Mat4d imat = openvdb::Mat4d(ctx->
object->world_to_object().base_ptr());
162 imat.setCol(3, openvdb::Vec4d(0, 0, 0, 1));
166 openvdb::GridBase::ConstPtr transformed_grid = local_grid.copyGridReplacingTransform(
transform);
177 Mesh *mesh = bke::volume_to_mesh(
179 if (mesh ==
nullptr) {
196 N_(
"Volume to Mesh"),
197 "VolumeToMeshModifierData",
199 &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(*)(void *user_data, Object *ob, ID **idpoin, LibraryForeachIDCallbackFlag cb_flag) IDWalkFunc
void BKE_modifier_copydata_generic(const ModifierData *md, ModifierData *md_dst, int flag)
@ eModifierTypeFlag_AcceptsMesh
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, blender::StringRef name)
char * STRNCPY(char(&dst)[N], const char *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
Object is a sort of wrapper for general info.
static void init_data(ModifierData *md)
static void panel_register(ARegionType *region_type)
static void panel_draw(const bContext *, Panel *panel)
static void foreach_ID_link(ModifierData *md, Object *ob, IDWalkFunc walk, void *user_data)
static Mesh * modify_mesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
PanelType * modifier_panel_register(ARegionType *region_type, ModifierType type, PanelDrawFn draw)
PointerRNA * modifier_panel_get_property_pointers(Panel *panel, PointerRNA *r_ob_ptr)
void modifier_error_message_draw(uiLayout *layout, PointerRNA *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)
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
static void update_depsgraph(tGraphSliderOp *gso)
void mesh_smooth_set(Mesh &mesh, bool use_smooth, bool keep_sharp_edges=false)
MatBase< float, 4, 4 > float4x4
VecBase< float, 3 > float3
VolumeToMeshResolutionMode mode
union blender::bke::VolumeToMeshResolution::@103176042355372060356022076152214323072307172372 settings
uiLayout & column(bool align)
void use_property_split_set(bool value)