Objects: add infrastructure for hair, pointcloud, volume modifiers
There is no user visible difference in standard builds, as there are no volume modifiers yet. When using WITH_NEW_OBJECT_TYPES some deform only modifiers are now available for hair and pointcloud objects. Differential Revision: https://developer.blender.org/D7141
This commit is contained in:
parent
dfe22c2900
commit
aa09a46fd7
|
@ -100,7 +100,7 @@ typedef enum {
|
|||
|
||||
/* For modifiers that use CD_PREVIEW_MCOL for preview. */
|
||||
eModifierTypeFlag_UsesPreview = (1 << 9),
|
||||
eModifierTypeFlag_AcceptsLattice = (1 << 10),
|
||||
eModifierTypeFlag_AcceptsVertexCosOnly = (1 << 10),
|
||||
} ModifierTypeFlag;
|
||||
|
||||
/* IMPORTANT! Keep ObjectWalkFunc and IDWalkFunc signatures compatible. */
|
||||
|
@ -211,18 +211,28 @@ typedef struct ModifierTypeInfo {
|
|||
|
||||
/********************* Non-deform modifier functions *********************/
|
||||
|
||||
/* For non-deform types: apply the modifier and return a mesh object.
|
||||
/* For non-deform types: apply the modifier and return a mesh datablock.
|
||||
*
|
||||
* The mesh argument should always be non-NULL; the modifier
|
||||
* should read the object data from the mesh object instead of the
|
||||
* actual object data.
|
||||
* The mesh argument should always be non-NULL; the modifier should use the
|
||||
* passed in mesh datablock rather than object->data, as it contains the mesh
|
||||
* with modifier applied up to this point.
|
||||
*
|
||||
* The modifier may reuse the mesh argument (i.e. return it in
|
||||
* modified form), but must not release it.
|
||||
* The modifier may modify and return the mesh argument, but must not free it
|
||||
* and must ensure any referenced data layers are converted to non-referenced
|
||||
* before modification.
|
||||
*/
|
||||
struct Mesh *(*applyModifier)(struct ModifierData *md,
|
||||
const struct ModifierEvalContext *ctx,
|
||||
struct Mesh *mesh);
|
||||
struct Mesh *(*modifyMesh)(struct ModifierData *md,
|
||||
const struct ModifierEvalContext *ctx,
|
||||
struct Mesh *mesh);
|
||||
struct Hair *(*modifyHair)(struct ModifierData *md,
|
||||
const struct ModifierEvalContext *ctx,
|
||||
struct Hair *hair);
|
||||
struct PointCloud *(*modifyPointCloud)(struct ModifierData *md,
|
||||
const struct ModifierEvalContext *ctx,
|
||||
struct PointCloud *pointcloud);
|
||||
struct Volume *(*modifyVolume)(struct ModifierData *md,
|
||||
const struct ModifierEvalContext *ctx,
|
||||
struct Volume *volume);
|
||||
|
||||
/********************* Optional functions *********************/
|
||||
|
||||
|
@ -450,9 +460,9 @@ struct ModifierData *modifier_get_evaluated(struct Depsgraph *depsgraph,
|
|||
|
||||
/* wrappers for modifier callbacks that ensure valid normals */
|
||||
|
||||
struct Mesh *modwrap_applyModifier(ModifierData *md,
|
||||
const struct ModifierEvalContext *ctx,
|
||||
struct Mesh *me);
|
||||
struct Mesh *modwrap_modifyMesh(ModifierData *md,
|
||||
const struct ModifierEvalContext *ctx,
|
||||
struct Mesh *me);
|
||||
|
||||
void modwrap_deformVerts(ModifierData *md,
|
||||
const struct ModifierEvalContext *ctx,
|
||||
|
|
|
@ -907,10 +907,10 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph,
|
|||
const bool sculpt_dyntopo = (sculpt_mode && ob->sculpt->bm) && !use_render;
|
||||
|
||||
/* Modifier evaluation contexts for different types of modifiers. */
|
||||
ModifierApplyFlag app_render = use_render ? MOD_APPLY_RENDER : 0;
|
||||
ModifierApplyFlag app_cache = use_cache ? MOD_APPLY_USECACHE : 0;
|
||||
const ModifierEvalContext mectx = {depsgraph, ob, app_render | app_cache};
|
||||
const ModifierEvalContext mectx_orco = {depsgraph, ob, app_render | MOD_APPLY_ORCO};
|
||||
ModifierApplyFlag apply_render = use_render ? MOD_APPLY_RENDER : 0;
|
||||
ModifierApplyFlag apply_cache = use_cache ? MOD_APPLY_USECACHE : 0;
|
||||
const ModifierEvalContext mectx = {depsgraph, ob, apply_render | apply_cache};
|
||||
const ModifierEvalContext mectx_orco = {depsgraph, ob, apply_render | MOD_APPLY_ORCO};
|
||||
|
||||
/* Get effective list of modifiers to execute. Some effects like shape keys
|
||||
* are added as virtual modifiers before the user created modifiers. */
|
||||
|
@ -1176,7 +1176,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph,
|
|||
}
|
||||
}
|
||||
|
||||
Mesh *mesh_next = modwrap_applyModifier(md, &mectx, mesh_final);
|
||||
Mesh *mesh_next = modwrap_modifyMesh(md, &mectx, mesh_final);
|
||||
ASSERT_IS_VALID_MESH(mesh_next);
|
||||
|
||||
if (mesh_next) {
|
||||
|
@ -1212,7 +1212,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph,
|
|||
CustomData_MeshMasks_update(&temp_cddata_masks, &nextmask);
|
||||
mesh_set_only_copy(mesh_orco, &temp_cddata_masks);
|
||||
|
||||
mesh_next = modwrap_applyModifier(md, &mectx_orco, mesh_orco);
|
||||
mesh_next = modwrap_modifyMesh(md, &mectx_orco, mesh_orco);
|
||||
ASSERT_IS_VALID_MESH(mesh_next);
|
||||
|
||||
if (mesh_next) {
|
||||
|
@ -1238,7 +1238,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph,
|
|||
nextmask.pmask |= CD_MASK_ORIGINDEX;
|
||||
mesh_set_only_copy(mesh_orco_cloth, &nextmask);
|
||||
|
||||
mesh_next = modwrap_applyModifier(md, &mectx_orco, mesh_orco_cloth);
|
||||
mesh_next = modwrap_modifyMesh(md, &mectx_orco, mesh_orco_cloth);
|
||||
ASSERT_IS_VALID_MESH(mesh_next);
|
||||
|
||||
if (mesh_next) {
|
||||
|
@ -1595,7 +1595,7 @@ static void editbmesh_calc_modifiers(struct Depsgraph *depsgraph,
|
|||
mask.pmask |= CD_MASK_ORIGINDEX;
|
||||
mesh_set_only_copy(mesh_orco, &mask);
|
||||
|
||||
Mesh *mesh_next = modwrap_applyModifier(md, &mectx_orco, mesh_orco);
|
||||
Mesh *mesh_next = modwrap_modifyMesh(md, &mectx_orco, mesh_orco);
|
||||
ASSERT_IS_VALID_MESH(mesh_next);
|
||||
|
||||
if (mesh_next) {
|
||||
|
@ -1626,7 +1626,7 @@ static void editbmesh_calc_modifiers(struct Depsgraph *depsgraph,
|
|||
}
|
||||
}
|
||||
|
||||
Mesh *mesh_next = modwrap_applyModifier(md, &mectx, mesh_final);
|
||||
Mesh *mesh_next = modwrap_modifyMesh(md, &mectx, mesh_final);
|
||||
ASSERT_IS_VALID_MESH(mesh_next);
|
||||
|
||||
if (mesh_next) {
|
||||
|
|
|
@ -857,7 +857,7 @@ static void curve_calc_modifiers_pre(
|
|||
Curve *cu = ob->data;
|
||||
int numElems = 0, numVerts = 0;
|
||||
const bool editmode = (!for_render && (cu->editnurb || cu->editfont));
|
||||
ModifierApplyFlag app_flag = 0;
|
||||
ModifierApplyFlag apply_flag = 0;
|
||||
float(*deformedVerts)[3] = NULL;
|
||||
float *keyVerts = NULL;
|
||||
int required_mode;
|
||||
|
@ -865,17 +865,17 @@ static void curve_calc_modifiers_pre(
|
|||
modifiers_clearErrors(ob);
|
||||
|
||||
if (editmode) {
|
||||
app_flag |= MOD_APPLY_USECACHE;
|
||||
apply_flag |= MOD_APPLY_USECACHE;
|
||||
}
|
||||
if (for_render) {
|
||||
app_flag |= MOD_APPLY_RENDER;
|
||||
apply_flag |= MOD_APPLY_RENDER;
|
||||
required_mode = eModifierMode_Render;
|
||||
}
|
||||
else {
|
||||
required_mode = eModifierMode_Realtime;
|
||||
}
|
||||
|
||||
const ModifierEvalContext mectx = {depsgraph, ob, app_flag};
|
||||
const ModifierEvalContext mectx = {depsgraph, ob, apply_flag};
|
||||
|
||||
pretessellatePoint = curve_get_tessellate_point(scene, ob, for_render, editmode);
|
||||
|
||||
|
@ -985,10 +985,10 @@ static void curve_calc_modifiers_post(Depsgraph *depsgraph,
|
|||
Mesh *modified = NULL, *mesh_applied;
|
||||
float(*vertCos)[3] = NULL;
|
||||
int useCache = !for_render;
|
||||
ModifierApplyFlag app_flag = 0;
|
||||
ModifierApplyFlag apply_flag = 0;
|
||||
|
||||
if (for_render) {
|
||||
app_flag |= MOD_APPLY_RENDER;
|
||||
apply_flag |= MOD_APPLY_RENDER;
|
||||
required_mode = eModifierMode_Render;
|
||||
}
|
||||
else {
|
||||
|
@ -996,9 +996,9 @@ static void curve_calc_modifiers_post(Depsgraph *depsgraph,
|
|||
}
|
||||
|
||||
const ModifierEvalContext mectx_deform = {
|
||||
depsgraph, ob, editmode ? app_flag | MOD_APPLY_USECACHE : app_flag};
|
||||
depsgraph, ob, editmode ? apply_flag | MOD_APPLY_USECACHE : apply_flag};
|
||||
const ModifierEvalContext mectx_apply = {
|
||||
depsgraph, ob, useCache ? app_flag | MOD_APPLY_USECACHE : app_flag};
|
||||
depsgraph, ob, useCache ? apply_flag | MOD_APPLY_USECACHE : apply_flag};
|
||||
|
||||
pretessellatePoint = curve_get_tessellate_point(scene, ob, for_render, editmode);
|
||||
|
||||
|
@ -1095,7 +1095,7 @@ static void curve_calc_modifiers_post(Depsgraph *depsgraph,
|
|||
if (need_normal) {
|
||||
BKE_mesh_ensure_normals(modified);
|
||||
}
|
||||
mesh_applied = mti->applyModifier(md, &mectx_apply, modified);
|
||||
mesh_applied = mti->modifyMesh(md, &mectx_apply, modified);
|
||||
|
||||
if (mesh_applied) {
|
||||
/* Modifier returned a new derived mesh */
|
||||
|
|
|
@ -247,12 +247,65 @@ Hair *BKE_hair_copy_for_eval(Hair *hair_src, bool reference)
|
|||
return result;
|
||||
}
|
||||
|
||||
static Hair *hair_evaluate_modifiers(struct Depsgraph *UNUSED(depsgraph),
|
||||
struct Scene *UNUSED(scene),
|
||||
Object *UNUSED(object),
|
||||
static Hair *hair_evaluate_modifiers(struct Depsgraph *depsgraph,
|
||||
struct Scene *scene,
|
||||
Object *object,
|
||||
Hair *hair_input)
|
||||
{
|
||||
return hair_input;
|
||||
Hair *hair = hair_input;
|
||||
|
||||
/* Modifier evaluation modes. */
|
||||
const bool use_render = (DEG_get_mode(depsgraph) == DAG_EVAL_RENDER);
|
||||
const int required_mode = use_render ? eModifierMode_Render : eModifierMode_Realtime;
|
||||
ModifierApplyFlag apply_flag = use_render ? MOD_APPLY_RENDER : MOD_APPLY_USECACHE;
|
||||
const ModifierEvalContext mectx = {depsgraph, object, apply_flag};
|
||||
|
||||
/* Get effective list of modifiers to execute. Some effects like shape keys
|
||||
* are added as virtual modifiers before the user created modifiers. */
|
||||
VirtualModifierData virtualModifierData;
|
||||
ModifierData *md = modifiers_getVirtualModifierList(object, &virtualModifierData);
|
||||
|
||||
/* Evaluate modifiers. */
|
||||
for (; md; md = md->next) {
|
||||
const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
|
||||
|
||||
if (!modifier_isEnabled(scene, md, required_mode)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((mti->type == eModifierTypeType_OnlyDeform) &&
|
||||
(mti->flags & eModifierTypeFlag_AcceptsVertexCosOnly)) {
|
||||
/* Ensure we are not modifying the input. */
|
||||
if (hair == hair_input) {
|
||||
hair = BKE_hair_copy_for_eval(hair, true);
|
||||
}
|
||||
|
||||
/* Ensure we are not overwriting referenced data. */
|
||||
CustomData_duplicate_referenced_layer(&hair->pdata, CD_LOCATION, hair->totpoint);
|
||||
BKE_hair_update_customdata_pointers(hair);
|
||||
|
||||
/* Created deformed coordinates array on demand. */
|
||||
mti->deformVerts(md, &mectx, NULL, hair->co, hair->totpoint);
|
||||
}
|
||||
else if (mti->modifyHair) {
|
||||
/* Ensure we are not modifying the input. */
|
||||
if (hair == hair_input) {
|
||||
hair = BKE_hair_copy_for_eval(hair, true);
|
||||
}
|
||||
|
||||
Hair *hair_next = mti->modifyHair(md, &mectx, hair);
|
||||
|
||||
if (hair_next && hair_next != hair) {
|
||||
/* If the modifier returned a new hair, release the old one. */
|
||||
if (hair != hair_input) {
|
||||
BKE_id_free(NULL, hair);
|
||||
}
|
||||
hair = hair_next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return hair;
|
||||
}
|
||||
|
||||
void BKE_hair_data_update(struct Depsgraph *depsgraph, struct Scene *scene, Object *object)
|
||||
|
|
|
@ -1134,7 +1134,7 @@ void BKE_lattice_modifiers_calc(struct Depsgraph *depsgraph, Scene *scene, Objec
|
|||
for (; md; md = md->next) {
|
||||
const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
|
||||
|
||||
if (!(mti->flags & eModifierTypeFlag_AcceptsLattice)) {
|
||||
if (!(mti->flags & eModifierTypeFlag_AcceptsVertexCosOnly)) {
|
||||
continue;
|
||||
}
|
||||
if (!(md->mode & eModifierMode_Realtime)) {
|
||||
|
|
|
@ -1353,7 +1353,7 @@ Mesh *BKE_mesh_create_derived_for_modifier(struct Depsgraph *depsgraph,
|
|||
add_shapekey_layers(mesh_temp, me);
|
||||
}
|
||||
|
||||
result = mti->applyModifier(md_eval, &mectx, mesh_temp);
|
||||
result = mti->modifyMesh(md_eval, &mectx, mesh_temp);
|
||||
ASSERT_IS_VALID_MESH(result);
|
||||
|
||||
if (mesh_temp != result) {
|
||||
|
|
|
@ -945,11 +945,9 @@ void modifier_path_init(char *path, int path_maxlen, const char *name)
|
|||
BLI_join_dirfile(path, path_maxlen, G.relbase_valid ? "//" : BKE_tempdir_session(), name);
|
||||
}
|
||||
|
||||
/* wrapper around ModifierTypeInfo.applyModifier that ensures valid normals */
|
||||
/* wrapper around ModifierTypeInfo.modifyMesh that ensures valid normals */
|
||||
|
||||
struct Mesh *modwrap_applyModifier(ModifierData *md,
|
||||
const ModifierEvalContext *ctx,
|
||||
struct Mesh *me)
|
||||
struct Mesh *modwrap_modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, struct Mesh *me)
|
||||
{
|
||||
const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
|
||||
BLI_assert(CustomData_has_layer(&me->pdata, CD_NORMAL) == false);
|
||||
|
@ -957,7 +955,7 @@ struct Mesh *modwrap_applyModifier(ModifierData *md,
|
|||
if (mti->dependsOnNormals && mti->dependsOnNormals(md)) {
|
||||
BKE_mesh_calc_normals(me);
|
||||
}
|
||||
return mti->applyModifier(md, ctx, me);
|
||||
return mti->modifyMesh(md, ctx, me);
|
||||
}
|
||||
|
||||
void modwrap_deformVerts(ModifierData *md,
|
||||
|
|
|
@ -290,7 +290,7 @@ Mesh *BKE_multires_create_mesh(struct Depsgraph *depsgraph,
|
|||
};
|
||||
|
||||
const ModifierTypeInfo *mti = modifierType_getInfo(mmd->modifier.type);
|
||||
Mesh *result = mti->applyModifier(&mmd->modifier, &modifier_ctx, deformed_mesh);
|
||||
Mesh *result = mti->modifyMesh(&mmd->modifier, &modifier_ctx, deformed_mesh);
|
||||
|
||||
if (result == deformed_mesh) {
|
||||
result = BKE_mesh_copy_for_eval(deformed_mesh, true);
|
||||
|
|
|
@ -514,21 +514,31 @@ bool BKE_object_support_modifier_type_check(const Object *ob, int modifier_type)
|
|||
|
||||
mti = modifierType_getInfo(modifier_type);
|
||||
|
||||
/* only geometry objects should be able to get modifiers [#25291] */
|
||||
if (!ELEM(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_LATTICE)) {
|
||||
return false;
|
||||
/* Only geometry objects should be able to get modifiers [#25291] */
|
||||
if (ob->type == OB_HAIR) {
|
||||
return (mti->modifyHair != NULL) || (mti->flags & eModifierTypeFlag_AcceptsVertexCosOnly);
|
||||
}
|
||||
else if (ob->type == OB_POINTCLOUD) {
|
||||
return (mti->modifyPointCloud != NULL) ||
|
||||
(mti->flags & eModifierTypeFlag_AcceptsVertexCosOnly);
|
||||
}
|
||||
else if (ob->type == OB_VOLUME) {
|
||||
return (mti->modifyVolume != NULL);
|
||||
}
|
||||
else 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;
|
||||
}
|
||||
|
||||
if (!((mti->flags & eModifierTypeFlag_AcceptsCVs) ||
|
||||
(ob->type == OB_MESH && (mti->flags & eModifierTypeFlag_AcceptsMesh)))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (ob->type == OB_LATTICE && (mti->flags & eModifierTypeFlag_AcceptsLattice) == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!((mti->flags & eModifierTypeFlag_AcceptsCVs) ||
|
||||
(ob->type == OB_MESH && (mti->flags & eModifierTypeFlag_AcceptsMesh)))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
void BKE_object_link_modifiers(struct Object *ob_dst, const struct Object *ob_src)
|
||||
|
|
|
@ -211,12 +211,65 @@ PointCloud *BKE_pointcloud_copy_for_eval(struct PointCloud *pointcloud_src, bool
|
|||
return result;
|
||||
}
|
||||
|
||||
static PointCloud *pointcloud_evaluate_modifiers(struct Depsgraph *UNUSED(depsgraph),
|
||||
struct Scene *UNUSED(scene),
|
||||
Object *UNUSED(object),
|
||||
static PointCloud *pointcloud_evaluate_modifiers(struct Depsgraph *depsgraph,
|
||||
struct Scene *scene,
|
||||
Object *object,
|
||||
PointCloud *pointcloud_input)
|
||||
{
|
||||
return pointcloud_input;
|
||||
PointCloud *pointcloud = pointcloud_input;
|
||||
|
||||
/* Modifier evaluation modes. */
|
||||
const bool use_render = (DEG_get_mode(depsgraph) == DAG_EVAL_RENDER);
|
||||
const int required_mode = use_render ? eModifierMode_Render : eModifierMode_Realtime;
|
||||
ModifierApplyFlag apply_flag = use_render ? MOD_APPLY_RENDER : MOD_APPLY_USECACHE;
|
||||
const ModifierEvalContext mectx = {depsgraph, object, apply_flag};
|
||||
|
||||
/* Get effective list of modifiers to execute. Some effects like shape keys
|
||||
* are added as virtual modifiers before the user created modifiers. */
|
||||
VirtualModifierData virtualModifierData;
|
||||
ModifierData *md = modifiers_getVirtualModifierList(object, &virtualModifierData);
|
||||
|
||||
/* Evaluate modifiers. */
|
||||
for (; md; md = md->next) {
|
||||
const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
|
||||
|
||||
if (!modifier_isEnabled(scene, md, required_mode)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((mti->type == eModifierTypeType_OnlyDeform) &&
|
||||
(mti->flags & eModifierTypeFlag_AcceptsVertexCosOnly)) {
|
||||
/* Ensure we are not modifying the input. */
|
||||
if (pointcloud == pointcloud_input) {
|
||||
pointcloud = BKE_pointcloud_copy_for_eval(pointcloud, true);
|
||||
}
|
||||
|
||||
/* Ensure we are not overwriting referenced data. */
|
||||
CustomData_duplicate_referenced_layer(&pointcloud->pdata, CD_LOCATION, pointcloud->totpoint);
|
||||
BKE_pointcloud_update_customdata_pointers(pointcloud);
|
||||
|
||||
/* Created deformed coordinates array on demand. */
|
||||
mti->deformVerts(md, &mectx, NULL, pointcloud->co, pointcloud->totpoint);
|
||||
}
|
||||
else if (mti->modifyPointCloud) {
|
||||
/* Ensure we are not modifying the input. */
|
||||
if (pointcloud == pointcloud_input) {
|
||||
pointcloud = BKE_pointcloud_copy_for_eval(pointcloud, true);
|
||||
}
|
||||
|
||||
PointCloud *pointcloud_next = mti->modifyPointCloud(md, &mectx, pointcloud);
|
||||
|
||||
if (pointcloud_next && pointcloud_next != pointcloud) {
|
||||
/* If the modifier returned a new pointcloud, release the old one. */
|
||||
if (pointcloud != pointcloud_input) {
|
||||
BKE_id_free(NULL, pointcloud);
|
||||
}
|
||||
pointcloud = pointcloud_next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return pointcloud;
|
||||
}
|
||||
|
||||
void BKE_pointcloud_data_update(struct Depsgraph *depsgraph, struct Scene *scene, Object *object)
|
||||
|
|
|
@ -795,12 +795,52 @@ bool BKE_volume_is_points_only(const Volume *volume)
|
|||
|
||||
/* Dependency Graph */
|
||||
|
||||
static Volume *volume_evaluate_modifiers(struct Depsgraph *UNUSED(depsgraph),
|
||||
struct Scene *UNUSED(scene),
|
||||
Object *UNUSED(object),
|
||||
static Volume *volume_evaluate_modifiers(struct Depsgraph *depsgraph,
|
||||
struct Scene *scene,
|
||||
Object *object,
|
||||
Volume *volume_input)
|
||||
{
|
||||
return volume_input;
|
||||
Volume *volume = volume_input;
|
||||
|
||||
/* Modifier evaluation modes. */
|
||||
const bool use_render = (DEG_get_mode(depsgraph) == DAG_EVAL_RENDER);
|
||||
const int required_mode = use_render ? eModifierMode_Render : eModifierMode_Realtime;
|
||||
ModifierApplyFlag apply_flag = use_render ? MOD_APPLY_RENDER : MOD_APPLY_USECACHE;
|
||||
const ModifierEvalContext mectx = {depsgraph, object, apply_flag};
|
||||
|
||||
/* Get effective list of modifiers to execute. Some effects like shape keys
|
||||
* are added as virtual modifiers before the user created modifiers. */
|
||||
VirtualModifierData virtualModifierData;
|
||||
ModifierData *md = modifiers_getVirtualModifierList(object, &virtualModifierData);
|
||||
|
||||
/* Evaluate modifiers. */
|
||||
for (; md; md = md->next) {
|
||||
const ModifierTypeInfo *mti = (const ModifierTypeInfo *)modifierType_getInfo(
|
||||
(ModifierType)md->type);
|
||||
|
||||
if (!modifier_isEnabled(scene, md, required_mode)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (mti->modifyVolume) {
|
||||
/* Ensure we are not modifying the input. */
|
||||
if (volume == volume_input) {
|
||||
volume = BKE_volume_copy_for_eval(volume, true);
|
||||
}
|
||||
|
||||
Volume *volume_next = mti->modifyVolume(md, &mectx, volume);
|
||||
|
||||
if (volume_next && volume_next != volume) {
|
||||
/* If the modifier returned a new volume, release the old one. */
|
||||
if (volume != volume_input) {
|
||||
BKE_id_free(NULL, volume);
|
||||
}
|
||||
volume = volume_next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return volume;
|
||||
}
|
||||
|
||||
void BKE_volume_eval_geometry(struct Depsgraph *depsgraph, Volume *volume)
|
||||
|
|
|
@ -244,7 +244,7 @@ ModifierTypeInfo modifierType_Armature = {
|
|||
/* structName */ "ArmatureModifierData",
|
||||
/* structSize */ sizeof(ArmatureModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsLattice |
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ copyData,
|
||||
|
@ -253,7 +253,10 @@ ModifierTypeInfo modifierType_Armature = {
|
|||
/* deformMatrices */ deformMatrices,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ deformMatricesEM,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -761,7 +761,7 @@ static Mesh *arrayModifier_doArray(ArrayModifierData *amd,
|
|||
return result;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
ArrayModifierData *amd = (ArrayModifierData *)md;
|
||||
return arrayModifier_doArray(amd, ctx, mesh);
|
||||
|
@ -807,7 +807,10 @@ ModifierTypeInfo modifierType_Array = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -91,7 +91,7 @@ static void requiredDataMask(Object *UNUSED(ob),
|
|||
/*
|
||||
* This calls the new bevel code (added since 2.64)
|
||||
*/
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
Mesh *result;
|
||||
BMesh *bm;
|
||||
|
@ -275,7 +275,10 @@ ModifierTypeInfo modifierType_Bevel = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
/* freeData */ freeData,
|
||||
|
|
|
@ -153,7 +153,7 @@ static int bm_face_isect_pair(BMFace *f, void *UNUSED(user_data))
|
|||
return BM_elem_flag_test(f, BM_FACE_TAG) ? 1 : 0;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
BooleanModifierData *bmd = (BooleanModifierData *)md;
|
||||
Mesh *result = mesh;
|
||||
|
@ -359,7 +359,10 @@ ModifierTypeInfo modifierType_Boolean = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -55,7 +55,7 @@ static bool dependsOnTime(ModifierData *UNUSED(md))
|
|||
return true;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, struct Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, struct Mesh *mesh)
|
||||
{
|
||||
Mesh *result;
|
||||
BuildModifierData *bmd = (BuildModifierData *)md;
|
||||
|
@ -288,7 +288,10 @@ ModifierTypeInfo modifierType_Build = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -523,7 +523,7 @@ ModifierTypeInfo modifierType_Cast = {
|
|||
/* structName */ "CastModifierData",
|
||||
/* structSize */ sizeof(CastModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsLattice |
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ modifier_copyData_generic,
|
||||
|
@ -532,7 +532,10 @@ ModifierTypeInfo modifierType_Cast = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -267,7 +267,10 @@ ModifierTypeInfo modifierType_Cloth = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -254,7 +254,10 @@ ModifierTypeInfo modifierType_Collision = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -776,7 +776,10 @@ ModifierTypeInfo modifierType_CorrectiveSmooth = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -154,7 +154,7 @@ ModifierTypeInfo modifierType_Curve = {
|
|||
/* structName */ "CurveModifierData",
|
||||
/* structSize */ sizeof(CurveModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsLattice |
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ modifier_copyData_generic,
|
||||
|
@ -163,7 +163,10 @@ ModifierTypeInfo modifierType_Curve = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -156,7 +156,7 @@ static bool isDisabled(const struct Scene *UNUSED(scene),
|
|||
(DT_TYPE_BWEIGHT_VERT | DT_TYPE_BWEIGHT_EDGE | DT_TYPE_CREASE | DT_TYPE_SHARP_EDGE | \
|
||||
DT_TYPE_LNOR | DT_TYPE_SHARP_FACE)
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *me_mod)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *me_mod)
|
||||
{
|
||||
DataTransferModifierData *dtmd = (DataTransferModifierData *)md;
|
||||
struct Scene *scene = DEG_get_evaluated_scene(ctx->depsgraph);
|
||||
|
@ -249,7 +249,10 @@ ModifierTypeInfo modifierType_DataTransfer = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -89,7 +89,7 @@ static void updateFaceCount(const ModifierEvalContext *ctx,
|
|||
}
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *meshData)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *meshData)
|
||||
{
|
||||
DecimateModifierData *dmd = (DecimateModifierData *)md;
|
||||
Mesh *mesh = meshData, *result = NULL;
|
||||
|
@ -228,7 +228,10 @@ ModifierTypeInfo modifierType_Decimate = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -427,7 +427,10 @@ ModifierTypeInfo modifierType_Displace = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -101,7 +101,7 @@ static void requiredDataMask(Object *UNUSED(ob),
|
|||
}
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md;
|
||||
|
||||
|
@ -187,7 +187,10 @@ ModifierTypeInfo modifierType_DynamicPaint = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -113,7 +113,7 @@ static void initData(ModifierData *md)
|
|||
emd->flags = MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh)
|
||||
{
|
||||
Mesh *result;
|
||||
EdgeSplitModifierData *emd = (EdgeSplitModifierData *)md;
|
||||
|
@ -142,7 +142,10 @@ ModifierTypeInfo modifierType_EdgeSplit = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -1123,7 +1123,7 @@ static ParticleSystemModifierData *findPrecedingParticlesystem(Object *ob, Modif
|
|||
}
|
||||
return psmd;
|
||||
}
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
ExplodeModifierData *emd = (ExplodeModifierData *)md;
|
||||
ParticleSystemModifierData *psmd = findPrecedingParticlesystem(ctx->object, md);
|
||||
|
@ -1186,7 +1186,10 @@ ModifierTypeInfo modifierType_Explode = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -101,7 +101,7 @@ static void requiredDataMask(Object *UNUSED(ob),
|
|||
}
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *me)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *me)
|
||||
{
|
||||
#ifndef WITH_FLUID
|
||||
UNUSED_VARS(md, ctx);
|
||||
|
@ -207,7 +207,10 @@ ModifierTypeInfo modifierType_Fluid = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -393,7 +393,7 @@ ModifierTypeInfo modifierType_Hook = {
|
|||
/* structName */ "HookModifierData",
|
||||
/* structSize */ sizeof(HookModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsLattice |
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
/* copyData */ copyData,
|
||||
|
||||
|
@ -401,7 +401,10 @@ ModifierTypeInfo modifierType_Hook = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -814,7 +814,10 @@ ModifierTypeInfo modifierType_LaplacianDeform = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -580,7 +580,10 @@ ModifierTypeInfo modifierType_LaplacianSmooth = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ init_data,
|
||||
/* requiredDataMask */ required_data_mask,
|
||||
|
|
|
@ -137,7 +137,7 @@ ModifierTypeInfo modifierType_Lattice = {
|
|||
/* structName */ "LatticeModifierData",
|
||||
/* structSize */ sizeof(LatticeModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsLattice |
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ modifier_copyData_generic,
|
||||
|
@ -146,7 +146,10 @@ ModifierTypeInfo modifierType_Lattice = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -293,7 +293,7 @@ static void copy_masked_polys_to_new_mesh(const Mesh &src_mesh,
|
|||
* 2. Find edges and polygons only using those vertices.
|
||||
* 3. Create a new mesh that only uses the found vertices, edges and polygons.
|
||||
*/
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
MaskModifierData *mmd = (MaskModifierData *)md;
|
||||
Object *ob = ctx->object;
|
||||
|
@ -401,7 +401,10 @@ ModifierTypeInfo modifierType_Mask = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ NULL,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -292,7 +292,7 @@ ModifierTypeInfo modifierType_MeshCache = {
|
|||
/* structName */ "MeshCacheModifierData",
|
||||
/* structSize */ sizeof(MeshCacheModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsLattice |
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ modifier_copyData_generic,
|
||||
|
@ -301,7 +301,10 @@ ModifierTypeInfo modifierType_MeshCache = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -558,7 +558,7 @@ ModifierTypeInfo modifierType_MeshDeform = {
|
|||
/* structName */ "MeshDeformModifierData",
|
||||
/* structSize */ sizeof(MeshDeformModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsLattice |
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ copyData,
|
||||
|
@ -567,7 +567,10 @@ ModifierTypeInfo modifierType_MeshDeform = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -90,7 +90,7 @@ static bool isDisabled(const struct Scene *UNUSED(scene),
|
|||
return (mcmd->cache_file == NULL) || (mcmd->object_path[0] == '\0');
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
#ifdef WITH_ALEMBIC
|
||||
MeshSeqCacheModifierData *mcmd = (MeshSeqCacheModifierData *)md;
|
||||
|
@ -197,7 +197,10 @@ ModifierTypeInfo modifierType_MeshSequenceCache = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -100,7 +100,7 @@ static Mesh *mirrorModifier__doMirror(MirrorModifierData *mmd,
|
|||
return result;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
Mesh *result;
|
||||
MirrorModifierData *mmd = (MirrorModifierData *)md;
|
||||
|
@ -130,7 +130,10 @@ ModifierTypeInfo modifierType_Mirror = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -172,7 +172,7 @@ static Mesh *multires_as_ccg(MultiresModifierData *mmd,
|
|||
return result;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
Mesh *result = mesh;
|
||||
#if !defined(WITH_OPENSUBDIV)
|
||||
|
@ -286,7 +286,10 @@ ModifierTypeInfo modifierType_Multires = {
|
|||
/* deformMatrices */ deformMatrices,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -51,7 +51,10 @@ ModifierTypeInfo modifierType_None = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ NULL,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -684,7 +684,7 @@ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphConte
|
|||
}
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
return normalEditModifier_do((NormalEditModifierData *)md, ctx, ctx->object, mesh);
|
||||
}
|
||||
|
@ -703,7 +703,10 @@ ModifierTypeInfo modifierType_NormalEdit = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -482,7 +482,7 @@ static Mesh *doOcean(ModifierData *UNUSED(md), const ModifierEvalContext *UNUSED
|
|||
}
|
||||
#endif /* WITH_OCEANSIM */
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
Mesh *result;
|
||||
|
||||
|
@ -509,7 +509,10 @@ ModifierTypeInfo modifierType_Ocean = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -204,7 +204,7 @@ static void store_float_in_vcol(MLoopCol *vcol, float float_value)
|
|||
vcol->a = 1.0f;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
Mesh *result;
|
||||
ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *)md;
|
||||
|
@ -560,7 +560,10 @@ ModifierTypeInfo modifierType_ParticleInstance = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -264,7 +264,10 @@ ModifierTypeInfo modifierType_ParticleSystem = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -136,7 +136,7 @@ static void dualcon_add_quad(void *output_v, const int vert_indices[4])
|
|||
output->curface++;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh)
|
||||
{
|
||||
RemeshModifierData *rmd;
|
||||
DualConOutput *output;
|
||||
|
@ -210,9 +210,9 @@ static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *UNUSED(c
|
|||
|
||||
#else /* !WITH_MOD_REMESH */
|
||||
|
||||
static Mesh *applyModifier(ModifierData *UNUSED(md),
|
||||
const ModifierEvalContext *UNUSED(ctx),
|
||||
Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *UNUSED(md),
|
||||
const ModifierEvalContext *UNUSED(ctx),
|
||||
Mesh *mesh)
|
||||
{
|
||||
return mesh;
|
||||
}
|
||||
|
@ -233,7 +233,10 @@ ModifierTypeInfo modifierType_Remesh = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -178,7 +178,7 @@ static void initData(ModifierData *md)
|
|||
ltmd->merge_dist = 0.01f;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *meshData)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *meshData)
|
||||
{
|
||||
Mesh *mesh = meshData;
|
||||
Mesh *result;
|
||||
|
@ -1171,7 +1171,10 @@ ModifierTypeInfo modifierType_Screw = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -122,7 +122,7 @@ ModifierTypeInfo modifierType_ShapeKey = {
|
|||
/* structName */ "ShapeKeyModifierData",
|
||||
/* structSize */ sizeof(ShapeKeyModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsLattice |
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ NULL,
|
||||
|
@ -131,7 +131,10 @@ ModifierTypeInfo modifierType_ShapeKey = {
|
|||
/* deformMatrices */ deformMatrices,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ deformMatricesEM,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ NULL,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -204,7 +204,7 @@ ModifierTypeInfo modifierType_Shrinkwrap = {
|
|||
/* structSize */ sizeof(ShrinkwrapModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice | eModifierTypeFlag_SupportsEditmode |
|
||||
eModifierTypeFlag_AcceptsVertexCosOnly | eModifierTypeFlag_SupportsEditmode |
|
||||
eModifierTypeFlag_EnableInEditmode,
|
||||
|
||||
/* copyData */ modifier_copyData_generic,
|
||||
|
@ -213,7 +213,10 @@ ModifierTypeInfo modifierType_Shrinkwrap = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -454,7 +454,7 @@ ModifierTypeInfo modifierType_SimpleDeform = {
|
|||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
|
||||
/* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_AcceptsCVs |
|
||||
eModifierTypeFlag_AcceptsLattice | eModifierTypeFlag_SupportsEditmode |
|
||||
eModifierTypeFlag_AcceptsVertexCosOnly | eModifierTypeFlag_SupportsEditmode |
|
||||
eModifierTypeFlag_EnableInEditmode,
|
||||
|
||||
/* copyData */ modifier_copyData_generic,
|
||||
|
@ -463,7 +463,10 @@ ModifierTypeInfo modifierType_SimpleDeform = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -1911,7 +1911,7 @@ static void initData(ModifierData *md)
|
|||
smd->symmetry_axes = MOD_SKIN_SYMM_X;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh)
|
||||
{
|
||||
Mesh *result;
|
||||
|
||||
|
@ -1941,7 +1941,10 @@ ModifierTypeInfo modifierType_Skin = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -237,7 +237,10 @@ ModifierTypeInfo modifierType_Smooth = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -78,7 +78,7 @@ ModifierTypeInfo modifierType_Softbody = {
|
|||
/* structName */ "SoftbodyModifierData",
|
||||
/* structSize */ sizeof(SoftbodyModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsLattice |
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
|
||||
eModifierTypeFlag_RequiresOriginalData | eModifierTypeFlag_Single |
|
||||
eModifierTypeFlag_UsesPointCache,
|
||||
|
||||
|
@ -88,7 +88,10 @@ ModifierTypeInfo modifierType_Softbody = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ NULL,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -70,14 +70,14 @@ static void requiredDataMask(Object *UNUSED(ob),
|
|||
}
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
const SolidifyModifierData *smd = (SolidifyModifierData *)md;
|
||||
switch (smd->mode) {
|
||||
case MOD_SOLIDIFY_MODE_EXTRUDE:
|
||||
return MOD_solidify_extrude_applyModifier(md, ctx, mesh);
|
||||
return MOD_solidify_extrude_modifyMesh(md, ctx, mesh);
|
||||
case MOD_SOLIDIFY_MODE_NONMANIFOLD:
|
||||
return MOD_solidify_nonmanifold_applyModifier(md, ctx, mesh);
|
||||
return MOD_solidify_nonmanifold_modifyMesh(md, ctx, mesh);
|
||||
default:
|
||||
BLI_assert(0);
|
||||
}
|
||||
|
@ -100,7 +100,10 @@ ModifierTypeInfo modifierType_Solidify = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -183,9 +183,7 @@ static void mesh_calc_hq_normal(Mesh *mesh, float (*poly_nors)[3], float (*r_ver
|
|||
/** \name Main Solidify Function
|
||||
* \{ */
|
||||
|
||||
Mesh *MOD_solidify_extrude_applyModifier(ModifierData *md,
|
||||
const ModifierEvalContext *ctx,
|
||||
Mesh *mesh)
|
||||
Mesh *MOD_solidify_extrude_modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
Mesh *result;
|
||||
const SolidifyModifierData *smd = (SolidifyModifierData *)md;
|
||||
|
|
|
@ -132,9 +132,9 @@ static int comp_float_int_pair(const void *a, const void *b)
|
|||
return (int)(x->angle > y->angle) - (int)(x->angle < y->angle);
|
||||
}
|
||||
|
||||
Mesh *MOD_solidify_nonmanifold_applyModifier(ModifierData *md,
|
||||
const ModifierEvalContext *ctx,
|
||||
Mesh *mesh)
|
||||
Mesh *MOD_solidify_nonmanifold_modifyMesh(ModifierData *md,
|
||||
const ModifierEvalContext *ctx,
|
||||
Mesh *mesh)
|
||||
{
|
||||
Mesh *result;
|
||||
const SolidifyModifierData *smd = (SolidifyModifierData *)md;
|
||||
|
|
|
@ -22,13 +22,13 @@
|
|||
#define __MOD_SOLIDIFY_UTIL_H__
|
||||
|
||||
/* MOD_solidify_extrude.c */
|
||||
Mesh *MOD_solidify_extrude_applyModifier(ModifierData *md,
|
||||
const ModifierEvalContext *ctx,
|
||||
Mesh *mesh);
|
||||
Mesh *MOD_solidify_extrude_modifyMesh(ModifierData *md,
|
||||
const ModifierEvalContext *ctx,
|
||||
Mesh *mesh);
|
||||
|
||||
/* MOD_solidify_nonmanifold.c */
|
||||
Mesh *MOD_solidify_nonmanifold_applyModifier(ModifierData *md,
|
||||
const ModifierEvalContext *ctx,
|
||||
Mesh *mesh);
|
||||
Mesh *MOD_solidify_nonmanifold_modifyMesh(ModifierData *md,
|
||||
const ModifierEvalContext *ctx,
|
||||
Mesh *mesh);
|
||||
|
||||
#endif /* __MOD_SOLIDIFY_UTIL_H__ */
|
||||
|
|
|
@ -206,7 +206,7 @@ static SubsurfRuntimeData *subsurf_ensure_runtime(SubsurfModifierData *smd)
|
|||
|
||||
/* Modifier itself. */
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
Mesh *result = mesh;
|
||||
#if !defined(WITH_OPENSUBDIV)
|
||||
|
@ -290,7 +290,10 @@ ModifierTypeInfo modifierType_Subsurf = {
|
|||
/* deformMatrices */ deformMatrices,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -196,7 +196,10 @@ ModifierTypeInfo modifierType_Surface = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
|
@ -1395,7 +1395,10 @@ ModifierTypeInfo modifierType_SurfaceDeform = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -103,7 +103,7 @@ static void initData(ModifierData *md)
|
|||
tmd->min_vertices = 4;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh)
|
||||
{
|
||||
TriangulateModifierData *tmd = (TriangulateModifierData *)md;
|
||||
Mesh *result;
|
||||
|
@ -130,7 +130,10 @@ ModifierTypeInfo modifierType_Triangulate = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL, // requiredDataMask,
|
||||
|
|
|
@ -303,7 +303,7 @@ static Mesh *uvprojectModifier_do(UVProjectModifierData *umd,
|
|||
return mesh;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
Mesh *result;
|
||||
UVProjectModifierData *umd = (UVProjectModifierData *)md;
|
||||
|
@ -327,7 +327,10 @@ ModifierTypeInfo modifierType_UVProject = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -126,7 +126,7 @@ static void uv_warp_compute(void *__restrict userdata,
|
|||
}
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
UVWarpModifierData *umd = (UVWarpModifierData *)md;
|
||||
int numPolys, numLoops;
|
||||
|
@ -259,7 +259,10 @@ ModifierTypeInfo modifierType_UVWarp = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -393,7 +393,7 @@ ModifierTypeInfo modifierType_Warp = {
|
|||
/* structName */ "WarpModifierData",
|
||||
/* structSize */ sizeof(WarpModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsLattice |
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
/* copyData */ copyData,
|
||||
|
||||
|
@ -401,7 +401,10 @@ ModifierTypeInfo modifierType_Warp = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -365,7 +365,7 @@ ModifierTypeInfo modifierType_Wave = {
|
|||
/* structName */ "WaveModifierData",
|
||||
/* structSize */ sizeof(WaveModifierData),
|
||||
/* type */ eModifierTypeType_OnlyDeform,
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsLattice |
|
||||
/* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
|
||||
eModifierTypeFlag_SupportsEditmode,
|
||||
|
||||
/* copyData */ modifier_copyData_generic,
|
||||
|
@ -374,7 +374,10 @@ ModifierTypeInfo modifierType_Wave = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ deformVertsEM,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ NULL,
|
||||
/* modifyMesh */ NULL,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -546,7 +546,7 @@ static void wn_face_with_angle(WeightedNormalModifierData *wnmd, WeightedNormalD
|
|||
apply_weights_vertex_normal(wnmd, wn_data);
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
WeightedNormalModifierData *wnmd = (WeightedNormalModifierData *)md;
|
||||
Object *ob = ctx->object;
|
||||
|
@ -714,7 +714,10 @@ ModifierTypeInfo modifierType_WeightedNormal = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -164,7 +164,7 @@ static bool isDisabled(const struct Scene *UNUSED(scene),
|
|||
return (wmd->defgrp_name[0] == '\0');
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
BLI_assert(mesh != NULL);
|
||||
|
||||
|
@ -315,7 +315,10 @@ ModifierTypeInfo modifierType_WeightVGEdit = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -210,7 +210,7 @@ static bool isDisabled(const struct Scene *UNUSED(scene),
|
|||
return (wmd->defgrp_name_a[0] == '\0');
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
BLI_assert(mesh != NULL);
|
||||
|
||||
|
@ -442,7 +442,10 @@ ModifierTypeInfo modifierType_WeightVGMix = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -410,7 +410,7 @@ static bool isDisabled(const struct Scene *UNUSED(scene),
|
|||
return (wmd->proximity_ob_target == NULL);
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
BLI_assert(mesh != NULL);
|
||||
|
||||
|
@ -642,7 +642,10 @@ ModifierTypeInfo modifierType_WeightVGProximity = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -1902,7 +1902,7 @@ static Mesh *weldModifier_doWeld(WeldModifierData *wmd, const ModifierEvalContex
|
|||
return result;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
|
||||
{
|
||||
WeldModifierData *wmd = (WeldModifierData *)md;
|
||||
return weldModifier_doWeld(wmd, ctx, mesh);
|
||||
|
@ -1944,7 +1944,10 @@ ModifierTypeInfo modifierType_Weld = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
|
@ -99,9 +99,7 @@ static Mesh *WireframeModifier_do(WireframeModifierData *wmd, Object *ob, Mesh *
|
|||
return result;
|
||||
}
|
||||
|
||||
static Mesh *applyModifier(ModifierData *md,
|
||||
const struct ModifierEvalContext *ctx,
|
||||
struct Mesh *mesh)
|
||||
static Mesh *modifyMesh(ModifierData *md, const struct ModifierEvalContext *ctx, struct Mesh *mesh)
|
||||
{
|
||||
return WireframeModifier_do((WireframeModifierData *)md, ctx->object, mesh);
|
||||
}
|
||||
|
@ -119,7 +117,10 @@ ModifierTypeInfo modifierType_Wireframe = {
|
|||
/* deformMatrices */ NULL,
|
||||
/* deformVertsEM */ NULL,
|
||||
/* deformMatricesEM */ NULL,
|
||||
/* applyModifier */ applyModifier,
|
||||
/* modifyMesh */ modifyMesh,
|
||||
/* modifyHair */ NULL,
|
||||
/* modifyPointCloud */ NULL,
|
||||
/* modifyVolume */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ requiredDataMask,
|
||||
|
|
Loading…
Reference in New Issue