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:
authorSybren A. Stüvel <sybren@stuvel.eu>2017-10-29 15:55:42 +0300
committerSybren A. Stüvel <sybren@stuvel.eu>2017-10-29 16:36:10 +0300
commit0012d54a70ac1dcd83531a32d1fe3ab017034e4b (patch)
treed154aed0f4be4cdded2d8905621d734628df9493 /source/blender/alembic/intern/abc_mesh.cc
parentab2d1f61a8e94650b8cb20a588b5c9ce27c13431 (diff)
Alembic import: fixed mesh corruption when changing topology
When the mesh changed topology but kept the vertex count the same, it would result in a corrupt mesh. By checking the face & loop counts too, this has become less likely. I've checked IPolyMeshSchema::isConstant(), but it returns true even when we see that the mesh changed topology.
Diffstat (limited to 'source/blender/alembic/intern/abc_mesh.cc')
-rw-r--r--source/blender/alembic/intern/abc_mesh.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/alembic/intern/abc_mesh.cc b/source/blender/alembic/intern/abc_mesh.cc
index 6545ced8e4a..36b134f8b0c 100644
--- a/source/blender/alembic/intern/abc_mesh.cc
+++ b/source/blender/alembic/intern/abc_mesh.cc
@@ -1082,7 +1082,10 @@ DerivedMesh *AbcMeshReader::read_derivedmesh(DerivedMesh *dm,
ImportSettings settings;
settings.read_flag |= read_flag;
- if (dm->getNumVerts(dm) != positions->size()) {
+ bool topology_changed = positions->size() != dm->getNumVerts(dm) ||
+ face_counts->size() != dm->getNumPolys(dm) ||
+ face_indices->size() != dm->getNumLoops(dm);
+ if (topology_changed) {
new_dm = CDDM_from_template(dm,
positions->size(),
0,