diff options
-rw-r--r-- | source/blender/blenkernel/intern/mesh.c | 14 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.cc | 5 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_ocean.c | 6 |
3 files changed, 5 insertions, 20 deletions
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 4a3eb6adcf6..449c2f86b04 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -584,18 +584,6 @@ static void mesh_ensure_cdlayers_primary(Mesh *mesh, bool do_tessface) if (do_tessface && !CustomData_get_layer(&mesh->fdata, CD_MFACE)) CustomData_add_layer(&mesh->fdata, CD_MFACE, CD_CALLOC, NULL, mesh->totface); } -static void mesh_ensure_cdlayers_origindex(Mesh *mesh, bool do_tessface) -{ - if (!CustomData_get_layer(&mesh->vdata, CD_ORIGINDEX)) - CustomData_add_layer(&mesh->vdata, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totvert); - if (!CustomData_get_layer(&mesh->edata, CD_ORIGINDEX)) - CustomData_add_layer(&mesh->edata, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totedge); - if (!CustomData_get_layer(&mesh->pdata, CD_ORIGINDEX)) - CustomData_add_layer(&mesh->pdata, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totpoly); - - if (do_tessface && !CustomData_get_layer(&mesh->fdata, CD_ORIGINDEX)) - CustomData_add_layer(&mesh->fdata, CD_ORIGINDEX, CD_CALLOC, NULL, mesh->totface); -} Mesh *BKE_mesh_new_nomain(int verts_len, int edges_len, int tessface_len, int loops_len, int polys_len) { @@ -619,7 +607,6 @@ Mesh *BKE_mesh_new_nomain(int verts_len, int edges_len, int tessface_len, int lo mesh->totpoly = polys_len; mesh_ensure_cdlayers_primary(mesh, true); - mesh_ensure_cdlayers_origindex(mesh, true); BKE_mesh_update_customdata_pointers(mesh, false); return mesh; @@ -662,7 +649,6 @@ static Mesh *mesh_new_nomain_from_template_ex( /* The destination mesh should at least have valid primary CD layers, * even in cases where the source mesh does not. */ mesh_ensure_cdlayers_primary(me_dst, do_tessface); - mesh_ensure_cdlayers_origindex(me_dst, false); BKE_mesh_update_customdata_pointers(me_dst, false); return me_dst; diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 33850181f60..f0c1dc8ffc3 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -931,6 +931,11 @@ void DepsgraphRelationBuilder::build_object_parent(Object *object) * so we onl;y hook up to transform channel here. */ add_relation(parent_geometry_key, ob_key, "Parent"); } + + /* Dupliverts uses original vertex index. */ + if (parent->transflag & OB_DUPLIVERTS) { + add_customdata_mask(parent, DEGCustomDataMeshMasks::MaskVert(CD_MASK_ORIGINDEX)); + } } void DepsgraphRelationBuilder::build_object_pointcache(Object *object) diff --git a/source/blender/modifiers/intern/MOD_ocean.c b/source/blender/modifiers/intern/MOD_ocean.c index b14e6d64ab0..5e2183030db 100644 --- a/source/blender/modifiers/intern/MOD_ocean.c +++ b/source/blender/modifiers/intern/MOD_ocean.c @@ -176,7 +176,6 @@ typedef struct GenerateOceanGeometryData { MVert *mverts; MPoly *mpolys; MLoop *mloops; - int *origindex; MLoopUV *mloopuvs; int res_x, res_y; @@ -230,9 +229,6 @@ static void generate_ocean_geometry_polygons( mp->totloop = 4; mp->flag |= ME_SMOOTH; - - /* generated geometry does not map to original faces */ - gogd->origindex[fi] = ORIGINDEX_NONE; } } @@ -299,8 +295,6 @@ static Mesh *generate_ocean_geometry(OceanModifierData *omd) gogd.mpolys = result->mpoly; gogd.mloops = result->mloop; - gogd.origindex = CustomData_get_layer(&result->pdata, CD_ORIGINDEX); - ParallelRangeSettings settings; BLI_parallel_range_settings_defaults(&settings); settings.use_threading = use_threading; |