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
This commit is contained in:
Wybren van Keulen 2018-09-19 10:55:49 +02:00 committed by Brecht Van Lommel
parent a5101e4da8
commit 104fb1fb76
Notes: blender-bot 2023-02-14 06:17:02 +01:00
Referenced by issue #56877, Masking: Enabling Motion Blur overrides the Feather Falloff
Referenced by issue #53745, Blender writes .abc color information wrong
1 changed files with 8 additions and 2 deletions

View File

@ -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);