[Bf-blender-cvs] [104fb1fb76b] master: Fix T53745: Alembic exported with vertex colors not readable by other software.

Wybren van Keulen noreply at git.blender.org
Wed Sep 19 20:17:32 CEST 2018


Commit: 104fb1fb76b187e24c6c277f43ed61190db5be26
Author: Wybren van Keulen
Date:   Wed Sep 19 10:55:49 2018 +0200
Branches: master
https://developer.blender.org/rB104fb1fb76b187e24c6c277f43ed61190db5be26

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

===================================================================

M	source/blender/alembic/intern/abc_customdata.cc

===================================================================

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



More information about the Bf-blender-cvs mailing list