diff options
author | Wybren van Keulen <wybren> | 2018-09-19 11:55:49 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-09-19 21:17:04 +0300 |
commit | 104fb1fb76b187e24c6c277f43ed61190db5be26 (patch) | |
tree | 23e34c4a7546c8e3b2dd3e9ad6ca05eecb9d6f48 /source/blender/alembic/intern/abc_customdata.cc | |
parent | a5101e4da8d81161482106d8d8d46ae49be6e18c (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/intern/abc_customdata.cc')
-rw-r--r-- | source/blender/alembic/intern/abc_customdata.cc | 10 |
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); |