[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55020] trunk/blender/source/blender/ collada: Collada: Added ngon support to Vertex Color exporter

Gaia Clary gaia.clary at machinimatrix.org
Mon Mar 4 14:12:56 CET 2013


Revision: 55020
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55020
Author:   gaiaclary
Date:     2013-03-04 13:12:56 +0000 (Mon, 04 Mar 2013)
Log Message:
-----------
Collada: Added ngon support to Vertex Color exporter

Modified Paths:
--------------
    trunk/blender/source/blender/collada/EffectExporter.cpp
    trunk/blender/source/blender/collada/GeometryExporter.cpp
    trunk/blender/source/blender/collada/MeshImporter.cpp

Modified: trunk/blender/source/blender/collada/EffectExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/EffectExporter.cpp	2013-03-04 12:58:36 UTC (rev 55019)
+++ trunk/blender/source/blender/collada/EffectExporter.cpp	2013-03-04 13:12:56 UTC (rev 55020)
@@ -323,10 +323,10 @@
 			{
 				if (me->pdata.layers[i].type == CD_MTEXPOLY) {
 					MTexPoly *txface = (MTexPoly *)me->pdata.layers[i].data;
-					MFace *mface = me->mface;
-					for (int j = 0; j < me->totpoly; j++, mface++, txface++) {
+					MPoly *mpoly = me->mpoly;
+					for (int j = 0; j < me->totpoly; j++, mpoly++, txface++) {
 
-						Material *mat = give_current_material(ob, mface->mat_nr + 1);
+						Material *mat = give_current_material(ob, mpoly->mat_nr + 1);
 						if (mat != ma) 
 							continue;
 

Modified: trunk/blender/source/blender/collada/GeometryExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/GeometryExporter.cpp	2013-03-04 12:58:36 UTC (rev 55019)
+++ trunk/blender/source/blender/collada/GeometryExporter.cpp	2013-03-04 13:12:56 UTC (rev 55020)
@@ -439,19 +439,14 @@
 
 void GeometryExporter::createVertexColorSource(std::string geom_id, Mesh *me)
 {
-	if (!CustomData_has_layer(&me->fdata, CD_MCOL))
+	if (!CustomData_has_layer(&me->ldata, CD_MLOOPCOL))
 		return;
 
-	MFace *f;
-	int totcolor = 0, i, j;
 
-	for (i = 0, f = me->mface; i < me->totface; i++, f++)
-		totcolor += f->v4 ? 4 : 3;
-
 	COLLADASW::FloatSourceF source(mSW);
 	source.setId(getIdBySemantics(geom_id, COLLADASW::InputSemantic::COLOR));
 	source.setArrayId(getIdBySemantics(geom_id, COLLADASW::InputSemantic::COLOR) + ARRAY_ID_SUFFIX);
-	source.setAccessorCount(totcolor);
+	source.setAccessorCount(me->totloop);
 	source.setAccessorStride(3);
 
 	COLLADASW::SourceBase::ParameterNameList &param = source.getParameterNameList();
@@ -461,14 +456,21 @@
 
 	source.prepareToAppendValues();
 
-	int index = CustomData_get_active_layer_index(&me->fdata, CD_MCOL);
+	int index = CustomData_get_active_layer_index(&me->ldata, CD_MLOOPCOL);
+	MCol *mcol = (MCol *)me->ldata.layers[index].data;
 
-	MCol *mcol = (MCol *)me->fdata.layers[index].data;
-	MCol *c = mcol;
-
-	for (i = 0, f = me->mface; i < me->totface; i++, c += 4, f++)
-		for (j = 0; j < (f->v4 ? 4 : 3); j++)
-			source.appendValues(c[j].b / 255.0f, c[j].g / 255.0f, c[j].r / 255.0f);
+	MPoly *mpoly;
+	int i;
+	for (i = 0, mpoly = me->mpoly; i < me->totpoly; i++, mpoly++) {
+		MCol *color = mcol + mpoly->loopstart;
+		for (int j = 0; j < mpoly->totloop; j++, color++) {
+			source.appendValues(
+					color->b / 255.0f,
+					color->g / 255.0f,
+					color->r / 255.0f 
+			);
+		}
+	}
 	
 	source.finish();
 }

Modified: trunk/blender/source/blender/collada/MeshImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/MeshImporter.cpp	2013-03-04 12:58:36 UTC (rev 55019)
+++ trunk/blender/source/blender/collada/MeshImporter.cpp	2013-03-04 13:12:56 UTC (rev 55020)
@@ -555,7 +555,7 @@
 
 		int collada_meshtype = mp->getPrimitiveType();
 		
-		// since we cannot set mpoly->mat_nr here, we store a portion of me->mface in Primitive
+		// since we cannot set mpoly->mat_nr here, we store a portion of me->mpoly in Primitive
 		Primitive prim = {mpoly, 0};
 		COLLADAFW::IndexListArray& index_list_array = mp->getUVCoordIndicesArray();
 




More information about the Bf-blender-cvs mailing list