Multires: Add utility to create deformed base mesh
The new function will use original object as a starting point and apply all enabled deformation modifiers prior to the multires.
This commit is contained in:
@@ -90,9 +90,18 @@ int multires_get_level(const struct Scene *scene,
|
||||
const struct MultiresModifierData *mmd,
|
||||
bool render,
|
||||
bool ignore_simplify);
|
||||
|
||||
/* Creates mesh with multires modifier applied on current object's deform mesh. */
|
||||
struct Mesh *BKE_multires_create_mesh(struct Depsgraph *depsgraph,
|
||||
struct Object *object,
|
||||
struct MultiresModifierData *mmd);
|
||||
|
||||
/* Creates mesh with all deform modifiers leading the multires one applied.
|
||||
* NOTE: The modifiers will be re-evaluated. */
|
||||
struct Mesh *BKE_multires_create_deformed_base_mesh(struct Depsgraph *depsgraph,
|
||||
struct Object *object,
|
||||
struct MultiresModifierData *mmd);
|
||||
|
||||
void multiresModifier_del_levels(struct MultiresModifierData *mmd,
|
||||
struct Scene *scene,
|
||||
struct Object *object,
|
||||
|
||||
@@ -293,6 +293,25 @@ Mesh *BKE_multires_create_mesh(struct Depsgraph *depsgraph,
|
||||
return result;
|
||||
}
|
||||
|
||||
Mesh *BKE_multires_create_deformed_base_mesh(struct Depsgraph *depsgraph,
|
||||
Object *object,
|
||||
MultiresModifierData *mmd)
|
||||
{
|
||||
Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
|
||||
Object *object_eval = DEG_get_evaluated_object(depsgraph, object);
|
||||
|
||||
const int mmd_index = BLI_findindex(&object->modifiers, &mmd->modifier);
|
||||
BLI_assert(mmd_index != -1);
|
||||
|
||||
Object object_for_eval = *object_eval;
|
||||
object_for_eval.data = object->data;
|
||||
|
||||
Mesh *base_mesh = mesh_create_eval_final_view_index(
|
||||
depsgraph, scene_eval, object, &CD_MASK_BAREMESH, mmd_index - 1);
|
||||
|
||||
return base_mesh;
|
||||
}
|
||||
|
||||
MultiresModifierData *find_multires_modifier_before(Scene *scene, ModifierData *lastmd)
|
||||
{
|
||||
ModifierData *md;
|
||||
|
||||
Reference in New Issue
Block a user