Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-08-24 18:00:08 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-08-24 18:00:32 +0300
commitd162be62469a7a7ad341905fe9eeed63c14ed8d5 (patch)
tree8b5881489361e1487d713c9b587392761ab0bd35 /source/blender/blenkernel/intern/subdiv_displacement_multires.c
parent0ba3a1a6863a4b5960933df7d5a12d158da5d0d0 (diff)
Multires: Fix wrong apply deform results when multires has sculpt already
Diffstat (limited to 'source/blender/blenkernel/intern/subdiv_displacement_multires.c')
-rw-r--r--source/blender/blenkernel/intern/subdiv_displacement_multires.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/source/blender/blenkernel/intern/subdiv_displacement_multires.c b/source/blender/blenkernel/intern/subdiv_displacement_multires.c
index 7eb47a70588..1e0e2ae5152 100644
--- a/source/blender/blenkernel/intern/subdiv_displacement_multires.c
+++ b/source/blender/blenkernel/intern/subdiv_displacement_multires.c
@@ -369,10 +369,9 @@ static int count_num_ptex_faces(const Mesh *mesh)
}
static void displacement_data_init_mapping(SubdivDisplacement *displacement,
- const Object *object)
+ const Mesh *mesh)
{
MultiresDisplacementData *data = displacement->user_data;
- const Mesh *mesh = (Mesh *)object->data;
const MPoly *mpoly = mesh->mpoly;
const int num_ptex_faces = count_num_ptex_faces(mesh);
/* Allocate memory. */
@@ -400,15 +399,14 @@ static void displacement_data_init_mapping(SubdivDisplacement *displacement,
}
static void displacement_init_data(SubdivDisplacement *displacement,
- const Object *object,
+ const Mesh *mesh,
const MultiresModifierData *mmd)
{
MultiresDisplacementData *data = displacement->user_data;
- Mesh *mesh = (Mesh *)object->data;
data->grid_size = (1 << (mmd->totlvl - 1)) + 1;
data->mpoly = mesh->mpoly;
data->mdisps = CustomData_get_layer(&mesh->ldata, CD_MDISPS);
- displacement_data_init_mapping(displacement, object);
+ displacement_data_init_mapping(displacement, mesh);
}
static void displacement_init_functions(SubdivDisplacement *displacement)
@@ -419,13 +417,9 @@ static void displacement_init_functions(SubdivDisplacement *displacement)
void BKE_subdiv_displacement_attach_from_multires(
Subdiv *subdiv,
- const Object *object,
+ const Mesh *mesh,
const MultiresModifierData *mmd)
{
- if (object->type != OB_MESH) {
- BLI_assert(!"Should never be called for non-mesh objects");
- return;
- }
/* Make sure we dont' have previously assigned displacement. */
BKE_subdiv_displacement_detach(subdiv);
/* Allocate all required memory. */
@@ -433,7 +427,7 @@ void BKE_subdiv_displacement_attach_from_multires(
"multires displacement");
displacement->user_data = MEM_callocN(sizeof(MultiresDisplacementData),
"multires displacement data");
- displacement_init_data(displacement, object, mmd);
+ displacement_init_data(displacement, mesh, mmd);
displacement_init_functions(displacement);
/* Finish. */
subdiv->displacement_evaluator = displacement;