Cleanup: Replace modifyVolume with modifyGeometrySet
This allows us to remove a callback from the modifier type info struct. In the future the these modifiers might just be replaced by nodes internally anyway, but in the meantime it's nice to unify the handling of evaluated geometry a bit. Differential Revision: https://developer.blender.org/D11080
This commit is contained in:
parent
a7bda03516
commit
e032ca2e25
Notes:
blender-bot
2023-02-14 06:46:23 +01:00
Referenced by commit a58592885c
, Cleanup: Remove modifier type hair callback
|
@ -380,6 +380,8 @@ struct GeometrySet {
|
|||
void replace_mesh(Mesh *mesh, GeometryOwnershipType ownership = GeometryOwnershipType::Owned);
|
||||
void replace_pointcloud(PointCloud *pointcloud,
|
||||
GeometryOwnershipType ownership = GeometryOwnershipType::Owned);
|
||||
void replace_volume(Volume *volume,
|
||||
GeometryOwnershipType ownership = GeometryOwnershipType::Owned);
|
||||
};
|
||||
|
||||
/** A geometry component that can store a mesh. */
|
||||
|
|
|
@ -258,10 +258,6 @@ typedef struct ModifierTypeInfo {
|
|||
const struct ModifierEvalContext *ctx,
|
||||
struct GeometrySet *geometry_set);
|
||||
|
||||
struct Volume *(*modifyVolume)(struct ModifierData *md,
|
||||
const struct ModifierEvalContext *ctx,
|
||||
struct Volume *volume);
|
||||
|
||||
/********************* Optional functions *********************/
|
||||
|
||||
/**
|
||||
|
|
|
@ -306,6 +306,13 @@ void GeometrySet::replace_pointcloud(PointCloud *pointcloud, GeometryOwnershipTy
|
|||
pointcloud_component.replace(pointcloud, ownership);
|
||||
}
|
||||
|
||||
/* Clear the existing volume and replace with the given one. */
|
||||
void GeometrySet::replace_volume(Volume *volume, GeometryOwnershipType ownership)
|
||||
{
|
||||
VolumeComponent &volume_component = this->get_component_for_write<VolumeComponent>();
|
||||
volume_component.replace(volume, ownership);
|
||||
}
|
||||
|
||||
/* Returns a mutable mesh or null. No ownership is transferred. */
|
||||
Mesh *GeometrySet::get_mesh_for_write()
|
||||
{
|
||||
|
|
|
@ -1332,12 +1332,9 @@ bool BKE_object_support_modifier_type_check(const Object *ob, int modifier_type)
|
|||
if (ob->type == OB_HAIR) {
|
||||
return (mti->modifyHair != NULL) || (mti->flags & eModifierTypeFlag_AcceptsVertexCosOnly);
|
||||
}
|
||||
if (ob->type == OB_POINTCLOUD) {
|
||||
if (ELEM(ob->type, OB_POINTCLOUD, OB_VOLUME)) {
|
||||
return (mti->modifyGeometrySet != NULL);
|
||||
}
|
||||
if (ob->type == OB_VOLUME) {
|
||||
return (mti->modifyVolume != NULL) || (mti->modifyGeometrySet != NULL);
|
||||
}
|
||||
if (ELEM(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_LATTICE)) {
|
||||
if (ob->type == OB_LATTICE && (mti->flags & eModifierTypeFlag_AcceptsVertexCosOnly) == 0) {
|
||||
return false;
|
||||
|
|
|
@ -1007,7 +1007,6 @@ static void volume_update_simplify_level(Volume *volume, const Depsgraph *depsgr
|
|||
static void volume_evaluate_modifiers(struct Depsgraph *depsgraph,
|
||||
struct Scene *scene,
|
||||
Object *object,
|
||||
Volume *volume_input,
|
||||
GeometrySet &geometry_set)
|
||||
{
|
||||
/* Modifier evaluation modes. */
|
||||
|
@ -1033,18 +1032,6 @@ static void volume_evaluate_modifiers(struct Depsgraph *depsgraph,
|
|||
if (mti->modifyGeometrySet) {
|
||||
mti->modifyGeometrySet(md, &mectx, &geometry_set);
|
||||
}
|
||||
else if (mti->modifyVolume) {
|
||||
VolumeComponent &volume_component = geometry_set.get_component_for_write<VolumeComponent>();
|
||||
Volume *volume_old = volume_component.get_for_write();
|
||||
if (volume_old == nullptr) {
|
||||
volume_old = BKE_volume_new_for_eval(volume_input);
|
||||
volume_component.replace(volume_old);
|
||||
}
|
||||
Volume *volume_new = mti->modifyVolume(md, &mectx, volume_old);
|
||||
if (volume_new != volume_old) {
|
||||
volume_component.replace(volume_new);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1095,9 +1082,8 @@ void BKE_volume_data_update(struct Depsgraph *depsgraph, struct Scene *scene, Ob
|
|||
/* Evaluate modifiers. */
|
||||
Volume *volume = (Volume *)object->data;
|
||||
GeometrySet geometry_set;
|
||||
VolumeComponent &volume_component = geometry_set.get_component_for_write<VolumeComponent>();
|
||||
volume_component.replace(volume, GeometryOwnershipType::ReadOnly);
|
||||
volume_evaluate_modifiers(depsgraph, scene, object, volume, geometry_set);
|
||||
geometry_set.replace_volume(volume, GeometryOwnershipType::ReadOnly);
|
||||
volume_evaluate_modifiers(depsgraph, scene, object, geometry_set);
|
||||
|
||||
Volume *volume_eval = take_volume_ownership_from_geometry_set(geometry_set);
|
||||
|
||||
|
|
|
@ -296,7 +296,6 @@ ModifierTypeInfo modifierType_Armature = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -1021,7 +1021,6 @@ ModifierTypeInfo modifierType_Array = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -448,7 +448,6 @@ ModifierTypeInfo modifierType_Bevel = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
/* freeData */ freeData,
|
||||
|
|
|
@ -635,7 +635,6 @@ ModifierTypeInfo modifierType_Boolean = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ nullptr,
|
||||
/* modifyGeometrySet */ nullptr,
|
||||
/* modifyVolume */ nullptr,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -347,7 +347,6 @@ ModifierTypeInfo modifierType_Build = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -591,7 +591,6 @@ ModifierTypeInfo modifierType_Cast = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -311,7 +311,6 @@ ModifierTypeInfo modifierType_Cloth = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -317,7 +317,6 @@ ModifierTypeInfo modifierType_Collision = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -852,7 +852,6 @@ ModifierTypeInfo modifierType_CorrectiveSmooth = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -236,7 +236,6 @@ ModifierTypeInfo modifierType_Curve = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -495,7 +495,6 @@ ModifierTypeInfo modifierType_DataTransfer = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -300,7 +300,6 @@ ModifierTypeInfo modifierType_Decimate = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -507,7 +507,6 @@ ModifierTypeInfo modifierType_Displace = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -221,7 +221,6 @@ ModifierTypeInfo modifierType_DynamicPaint = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -187,7 +187,6 @@ ModifierTypeInfo modifierType_EdgeSplit = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -1255,7 +1255,6 @@ ModifierTypeInfo modifierType_Explode = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -239,7 +239,6 @@ ModifierTypeInfo modifierType_Fluid = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -574,7 +574,6 @@ ModifierTypeInfo modifierType_Hook = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -889,7 +889,6 @@ ModifierTypeInfo modifierType_LaplacianDeform = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -635,7 +635,6 @@ ModifierTypeInfo modifierType_LaplacianSmooth = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ init_data,
|
||||
/* requiredDataMask */ required_data_mask,
|
||||
|
|
|
@ -193,7 +193,6 @@ ModifierTypeInfo modifierType_Lattice = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -463,7 +463,6 @@ ModifierTypeInfo modifierType_Mask = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ nullptr,
|
||||
/* modifyGeometrySet */ nullptr,
|
||||
/* modifyVolume */ nullptr,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
#include <vector>
|
||||
|
||||
#include "BKE_geometry_set.hh"
|
||||
#include "BKE_lib_query.h"
|
||||
#include "BKE_mesh_runtime.h"
|
||||
#include "BKE_mesh_wrapper.h"
|
||||
|
@ -204,7 +205,9 @@ static float compute_voxel_size(const ModifierEvalContext *ctx,
|
|||
}
|
||||
#endif
|
||||
|
||||
static Volume *modifyVolume(ModifierData *md, const ModifierEvalContext *ctx, Volume *input_volume)
|
||||
static Volume *mesh_to_volume(ModifierData *md,
|
||||
const ModifierEvalContext *ctx,
|
||||
Volume *input_volume)
|
||||
{
|
||||
#ifdef WITH_OPENVDB
|
||||
using namespace blender;
|
||||
|
@ -278,6 +281,17 @@ static Volume *modifyVolume(ModifierData *md, const ModifierEvalContext *ctx, Vo
|
|||
#endif
|
||||
}
|
||||
|
||||
static void modifyGeometrySet(ModifierData *md,
|
||||
const ModifierEvalContext *ctx,
|
||||
GeometrySet *geometry_set)
|
||||
{
|
||||
Volume *input_volume = geometry_set->get_volume_for_write();
|
||||
Volume *result_volume = mesh_to_volume(md, ctx, input_volume);
|
||||
if (result_volume != input_volume) {
|
||||
geometry_set->replace_volume(result_volume);
|
||||
}
|
||||
}
|
||||
|
||||
ModifierTypeInfo modifierType_MeshToVolume = {
|
||||
/* name */ "Mesh to Volume",
|
||||
/* structName */ "MeshToVolumeModifierData",
|
||||
|
@ -295,8 +309,7 @@ ModifierTypeInfo modifierType_MeshToVolume = {
|
|||
/* deformMatricesEM */ nullptr,
|
||||
/* modifyMesh */ nullptr,
|
||||
/* modifyHair */ nullptr,
|
||||
/* modifyGeometrySet */ nullptr,
|
||||
/* modifyVolume */ modifyVolume,
|
||||
/* modifyGeometrySet */ modifyGeometrySet,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ nullptr,
|
||||
|
|
|
@ -389,7 +389,6 @@ ModifierTypeInfo modifierType_MeshCache = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -644,7 +644,6 @@ ModifierTypeInfo modifierType_MeshDeform = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -271,7 +271,6 @@ ModifierTypeInfo modifierType_MeshSequenceCache = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -239,7 +239,6 @@ ModifierTypeInfo modifierType_Mirror = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -520,7 +520,6 @@ ModifierTypeInfo modifierType_Multires = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -1591,7 +1591,6 @@ ModifierTypeInfo modifierType_Nodes = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ nullptr,
|
||||
/* modifyGeometrySet */ modifyGeometrySet,
|
||||
/* modifyVolume */ nullptr,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -60,7 +60,6 @@ ModifierTypeInfo modifierType_None = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ NULL,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -805,7 +805,6 @@ ModifierTypeInfo modifierType_NormalEdit = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -737,7 +737,6 @@ ModifierTypeInfo modifierType_Ocean = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -679,7 +679,6 @@ ModifierTypeInfo modifierType_ParticleInstance = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -337,7 +337,6 @@ ModifierTypeInfo modifierType_ParticleSystem = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -301,7 +301,6 @@ ModifierTypeInfo modifierType_Remesh = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -1258,7 +1258,6 @@ ModifierTypeInfo modifierType_Screw = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -141,7 +141,6 @@ ModifierTypeInfo modifierType_ShapeKey = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ NULL,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -293,7 +293,6 @@ ModifierTypeInfo modifierType_Shrinkwrap = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -600,7 +600,6 @@ ModifierTypeInfo modifierType_SimpleDeform = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -2044,7 +2044,6 @@ ModifierTypeInfo modifierType_Skin = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -286,7 +286,6 @@ ModifierTypeInfo modifierType_Smooth = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -120,7 +120,6 @@ ModifierTypeInfo modifierType_Softbody = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ NULL,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -276,7 +276,6 @@ ModifierTypeInfo modifierType_Solidify = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -509,7 +509,6 @@ ModifierTypeInfo modifierType_Subsurf = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -241,7 +241,6 @@ ModifierTypeInfo modifierType_Surface = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -1646,7 +1646,6 @@ ModifierTypeInfo modifierType_SurfaceDeform = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -178,7 +178,6 @@ ModifierTypeInfo modifierType_Triangulate = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL, // requiredDataMask,
|
||||
|
|
|
@ -385,7 +385,6 @@ ModifierTypeInfo modifierType_UVProject = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -342,7 +342,6 @@ ModifierTypeInfo modifierType_UVWarp = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
* \ingroup modifiers
|
||||
*/
|
||||
|
||||
#include "BKE_geometry_set.hh"
|
||||
#include "BKE_lib_query.h"
|
||||
#include "BKE_mesh_runtime.h"
|
||||
#include "BKE_modifier.h"
|
||||
|
@ -284,7 +285,7 @@ struct DisplaceGridOp {
|
|||
|
||||
#endif
|
||||
|
||||
static Volume *modifyVolume(ModifierData *md, const ModifierEvalContext *ctx, Volume *volume)
|
||||
static void displace_volume(ModifierData *md, const ModifierEvalContext *ctx, Volume *volume)
|
||||
{
|
||||
#ifdef WITH_OPENVDB
|
||||
VolumeDisplaceModifierData *vdmd = reinterpret_cast<VolumeDisplaceModifierData *>(md);
|
||||
|
@ -303,14 +304,22 @@ static Volume *modifyVolume(ModifierData *md, const ModifierEvalContext *ctx, Vo
|
|||
BKE_volume_grid_type_operation(grid_type, displace_grid_op);
|
||||
}
|
||||
|
||||
return volume;
|
||||
#else
|
||||
UNUSED_VARS(md, ctx);
|
||||
BKE_modifier_set_error(ctx->object, md, "Compiled without OpenVDB");
|
||||
return volume;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void modifyGeometrySet(ModifierData *md,
|
||||
const ModifierEvalContext *ctx,
|
||||
GeometrySet *geometry_set)
|
||||
{
|
||||
Volume *input_volume = geometry_set->get_volume_for_write();
|
||||
if (input_volume != nullptr) {
|
||||
displace_volume(md, ctx, input_volume);
|
||||
}
|
||||
}
|
||||
|
||||
ModifierTypeInfo modifierType_VolumeDisplace = {
|
||||
/* name */ "Volume Displace",
|
||||
/* structName */ "VolumeDisplaceModifierData",
|
||||
|
@ -328,8 +337,7 @@ ModifierTypeInfo modifierType_VolumeDisplace = {
|
|||
/* deformMatricesEM */ nullptr,
|
||||
/* modifyMesh */ nullptr,
|
||||
/* modifyHair */ nullptr,
|
||||
/* modifyGeometrySet */ nullptr,
|
||||
/* modifyVolume */ modifyVolume,
|
||||
/* modifyGeometrySet */ modifyGeometrySet,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ nullptr,
|
||||
|
|
|
@ -223,7 +223,6 @@ ModifierTypeInfo modifierType_VolumeToMesh = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ nullptr,
|
||||
/* modifyGeometrySet */ nullptr,
|
||||
/* modifyVolume */ nullptr,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ nullptr,
|
||||
|
|
|
@ -539,7 +539,6 @@ ModifierTypeInfo modifierType_Warp = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -492,7 +492,6 @@ ModifierTypeInfo modifierType_Wave = {
|
|||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -764,7 +764,6 @@ ModifierTypeInfo modifierType_WeightedNormal = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -428,7 +428,6 @@ ModifierTypeInfo modifierType_WeightVGEdit = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -514,7 +514,6 @@ ModifierTypeInfo modifierType_WeightVGMix = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -768,7 +768,6 @@ ModifierTypeInfo modifierType_WeightVGProximity = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -2053,7 +2053,6 @@ ModifierTypeInfo modifierType_Weld = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -196,7 +196,6 @@ ModifierTypeInfo modifierType_Wireframe = {
|
|||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyGeometrySet */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
Loading…
Reference in New Issue