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
This commit is contained in:
Martin Felke 2017-12-20 10:30:39 +01:00 committed by Sybren A. Stüvel
parent 94a3ee56c7
commit b1a036861d
Notes: blender-bot 2023-02-14 07:53:51 +01:00
Referenced by issue #53683, 2.79a release
Referenced by issue #53572, Alembic - Broken UVs after export and test re-import
Referenced by issue #50227, Alembic uv export/load issue
1 changed files with 4 additions and 2 deletions

View File

@ -235,17 +235,19 @@ static void read_uvs(const CDStreamConfig &config, void *data,
MPoly *mpolys = config.mpoly;
MLoopUV *mloopuvs = static_cast<MLoopUV *>(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];
}