From 0012d54a70ac1dcd83531a32d1fe3ab017034e4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Sun, 29 Oct 2017 13:55:42 +0100 Subject: 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. --- source/blender/alembic/intern/abc_mesh.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source/blender/alembic') 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, -- cgit v1.2.3