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:
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
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue