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:
authorWybren van Keulen <wybren>2018-09-19 11:55:49 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-09-19 21:17:04 +0300
commit104fb1fb76b187e24c6c277f43ed61190db5be26 (patch)
tree23e34c4a7546c8e3b2dd3e9ad6ca05eecb9d6f48 /source/blender/alembic
parenta5101e4da8d81161482106d8d8d46ae49be6e18c (diff)
Fix T53745: Alembic exported with vertex colors not readable by other software.
Most other software expects to read indexed vertex colors, so write indices along with the colors as we already do for UVs. Differential Revision: https://developer.blender.org/D3704
Diffstat (limited to 'source/blender/alembic')
-rw-r--r--source/blender/alembic/intern/abc_customdata.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/source/blender/alembic/intern/abc_customdata.cc b/source/blender/alembic/intern/abc_customdata.cc
index f2ae1c831d1..424475dc61b 100644
--- a/source/blender/alembic/intern/abc_customdata.cc
+++ b/source/blender/alembic/intern/abc_customdata.cc
@@ -185,7 +185,11 @@ static void write_mcol(const OCompoundProperty &prop, const CDStreamConfig &conf
MLoop *mloops = config.mloop;
MCol *cfaces = static_cast<MCol *>(data);
- std::vector<Imath::C4f> buffer(config.totvert);
+ std::vector<Imath::C4f> buffer;
+ std::vector<uint32_t> indices;
+
+ buffer.reserve(config.totvert);
+ indices.reserve(config.totvert);
Imath::C4f col;
@@ -203,7 +207,8 @@ static void write_mcol(const OCompoundProperty &prop, const CDStreamConfig &conf
col[2] = cface->g * cscale;
col[3] = cface->b * cscale;
- buffer[mloop->v] = col;
+ buffer.push_back(col);
+ indices.push_back(buffer.size() - 1);
}
}
@@ -211,6 +216,7 @@ static void write_mcol(const OCompoundProperty &prop, const CDStreamConfig &conf
OC4fGeomParam::Sample sample(
C4fArraySample(&buffer.front(), buffer.size()),
+ UInt32ArraySample(&indices.front(), indices.size()),
kVertexScope);
param.set(sample);