From b1a036861ddd08c314587666a028a59bfb049e54 Mon Sep 17 00:00:00 2001 From: Martin Felke Date: Wed, 20 Dec 2017 10:30:39 +0100 Subject: Fix T53572: Alembic imports UV maps incorrectly Since in Alembic the loop order seems to be reversed when exporting and importing, and this was the only place where it was not, I was thinking to match this to the convention of reversing the loop order as well. Reviewers: sybren, kevindietrich Tags: #alembic Differential Revision: https://developer.blender.org/D2968 --- source/blender/alembic/intern/abc_customdata.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'source/blender/alembic') diff --git a/source/blender/alembic/intern/abc_customdata.cc b/source/blender/alembic/intern/abc_customdata.cc index d6e7a80d174..8b526616053 100644 --- a/source/blender/alembic/intern/abc_customdata.cc +++ b/source/blender/alembic/intern/abc_customdata.cc @@ -235,17 +235,19 @@ static void read_uvs(const CDStreamConfig &config, void *data, MPoly *mpolys = config.mpoly; MLoopUV *mloopuvs = static_cast(data); - unsigned int uv_index, loop_index; + unsigned int uv_index, loop_index, rev_loop_index; for (int i = 0; i < config.totpoly; ++i) { MPoly &poly = mpolys[i]; + unsigned int rev_loop_offset = poly.loopstart + poly.totloop - 1; for (int f = 0; f < poly.totloop; ++f) { loop_index = poly.loopstart + f; + rev_loop_index = rev_loop_offset - f; uv_index = (*indices)[loop_index]; const Imath::V2f &uv = (*uvs)[uv_index]; - MLoopUV &loopuv = mloopuvs[loop_index]; + MLoopUV &loopuv = mloopuvs[rev_loop_index]; loopuv.uv[0] = uv[0]; loopuv.uv[1] = uv[1]; } -- cgit v1.2.3