34#include "RNA_prototypes.hh"
110 if (object_to_convert ==
nullptr) {
114 if (mesh ==
nullptr) {
122 const float4x4 mesh_to_own_object_space_transform = ctx->
object->world_to_object() *
123 object_to_convert->object_to_world();
139 const float voxel_size = geometry::volume_compute_voxel_size(
141 [&]() { return *mesh->bounds_min_max(); },
144 mesh_to_own_object_space_transform);
148 if (input_volume ==
nullptr) {
156 geometry::fog_volume_grid_add_from_mesh(volume,
158 mesh->vert_positions(),
159 mesh->corner_verts(),
161 mesh_to_own_object_space_transform,
181 if (result_volume != input_volume) {
188 N_(
"Mesh to Volume"),
189 "MeshToVolumeModifierData",
191 &RNA_MeshToVolumeModifier,
void * BKE_id_new_nomain(short type, const char *name)
void BKE_mesh_wrapper_ensure_mdata(Mesh *mesh)
void(*)(void *user_data, Object *ob, ID **idpoin, LibraryForeachIDCallbackFlag cb_flag) IDWalkFunc
Mesh * BKE_modifier_get_evaluated_mesh_from_evaluated_object(Object *ob_eval)
void BKE_modifier_copydata_generic(const ModifierData *md, ModifierData *md_dst, int flag)
void BKE_modifier_set_error(const Object *ob, ModifierData *md, const char *format,...) ATTR_PRINTF_FORMAT(3
Volume * BKE_volume_new_for_eval(const Volume *volume_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)
@ eModifierType_MeshToVolume
MeshToVolumeModifierResolutionMode
@ MESH_TO_VOLUME_RESOLUTION_MODE_VOXEL_SIZE
@ MESH_TO_VOLUME_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 void init_data(ModifierData *md)
static void panel_register(ARegionType *region_type)
ModifierTypeInfo modifierType_MeshToVolume
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 void modify_geometry_set(ModifierData *md, const ModifierEvalContext *ctx, blender::bke::GeometrySet *geometry_set)
static Volume * mesh_to_volume(ModifierData *md, const ModifierEvalContext *ctx, Volume *input_volume)
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)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
static void update_depsgraph(tGraphSliderOp *gso)
float interior_band_width
void replace_volume(Volume *volume, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
Volume * get_volume_for_write()
union blender::geometry::MeshToVolumeResolution::@105134362166201155314016300371237357251110235066 settings
MeshToVolumeModifierResolutionMode mode
uiLayout & column(bool align)
void prop(PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRef > name_opt, int icon, std::optional< blender::StringRef > placeholder=std::nullopt)