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>2020-03-13 18:13:32 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2020-03-13 18:15:31 +0300
commitde30fda04e8d84a173e929a0f3d9d8c71bcc4bbf (patch)
tree1de36aed8d03074b2066fc1c0486bc3324d93611 /source/blender/blenkernel/intern/subdiv_displacement_multires.c
parent67704cb8aaf70457692eb31328b4ed2bc6c41b62 (diff)
Fix T74686: Loading btx file in multires modifier is not working
Was happening when object does not have CD_MDISPS allocated yet. Need to make sure totdisp and level is specified on CD_MDISPS data prior to loading (as the load expects them to be properly set).
Diffstat (limited to 'source/blender/blenkernel/intern/subdiv_displacement_multires.c')
-rw-r--r--source/blender/blenkernel/intern/subdiv_displacement_multires.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/subdiv_displacement_multires.c b/source/blender/blenkernel/intern/subdiv_displacement_multires.c
index 1f78cf4eb3b..50b2b3c7c46 100644
--- a/source/blender/blenkernel/intern/subdiv_displacement_multires.c
+++ b/source/blender/blenkernel/intern/subdiv_displacement_multires.c
@@ -47,6 +47,7 @@ typedef struct MultiresDisplacementData {
int grid_size;
/* Mesh is used to read external displacement. */
Mesh *mesh;
+ const MultiresModifierData *mmd;
const MPoly *mpoly;
const MDisps *mdisps;
/* Indexed by ptex face index, contains polygon/corner which corresponds
@@ -328,9 +329,7 @@ static int displacement_get_face_corner(MultiresDisplacementData *data,
static void initialize(SubdivDisplacement *displacement)
{
MultiresDisplacementData *data = displacement->user_data;
- Mesh *mesh = data->mesh;
- /* Make sure external displacement is read. */
- CustomData_external_read(&mesh->ldata, &mesh->id, CD_MASK_MDISPS, mesh->totloop);
+ multiresModifier_ensure_external_read(data->mesh, data->mmd);
data->is_initialized = true;
}
@@ -421,6 +420,7 @@ static void displacement_init_data(SubdivDisplacement *displacement,
data->subdiv = subdiv;
data->grid_size = BKE_subdiv_grid_size_from_level(mmd->totlvl);
data->mesh = mesh;
+ data->mmd = mmd;
data->mpoly = mesh->mpoly;
data->mdisps = CustomData_get_layer(&mesh->ldata, CD_MDISPS);
data->face_ptex_offset = BKE_subdiv_face_ptex_offset_get(subdiv);