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:
-rw-r--r--source/blender/blenkernel/intern/mesh.c14
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc5
-rw-r--r--source/blender/modifiers/intern/MOD_ocean.c6
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;