[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24548] trunk/blender/source/blender/ collada/DocumentImporter.cpp: Merge -c 24547 from COLLADA branch ( fix flipping of triangles created by tesselation).

Arystanbek Dyussenov arystan.d at gmail.com
Fri Nov 13 16:48:45 CET 2009


Revision: 24548
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24548
Author:   kazanbas
Date:     2009-11-13 16:48:45 +0100 (Fri, 13 Nov 2009)

Log Message:
-----------
Merge -c 24547 from COLLADA branch (fix flipping of triangles created by tesselation).

Modified Paths:
--------------
    trunk/blender/source/blender/collada/DocumentImporter.cpp

Modified: trunk/blender/source/blender/collada/DocumentImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentImporter.cpp	2009-11-13 15:36:46 UTC (rev 24547)
+++ trunk/blender/source/blender/collada/DocumentImporter.cpp	2009-11-13 15:48:45 UTC (rev 24548)
@@ -85,6 +85,7 @@
 
 #include <string>
 #include <map>
+#include <algorithm> // sort()
 
 #include <math.h>
 #include <float.h>
@@ -1298,9 +1299,16 @@
 			tottri = dl->parts;
 
 			int *index = dl->index;
-			for (i = 0; i < tottri * 3; i++) {
-				tri.push_back(*index);
-				index++;
+			for (i= 0; i < tottri; i++) {
+				int t[3]= {*index, *(index + 1), *(index + 2)};
+
+				std::sort(t, t + 3);
+
+				tri.push_back(t[0]);
+				tri.push_back(t[1]);
+				tri.push_back(t[2]);
+
+				index += 3;
 			}
 		}
 
@@ -1414,6 +1422,8 @@
 						MTFace *mtface = (MTFace*)CustomData_get_layer_n(&me->fdata, CD_MTFACE, k);
 						set_face_uv(&mtface[face_index], uvs, k, *index_list_array[k], index, false);
 					}
+
+					test_index_face(mface, &me->fdata, face_index, 3);
 					
 					index += 3;
 					mface++;
@@ -1432,7 +1442,6 @@
 					if (vcount == 3 || vcount == 4) {
 						
 						set_face_indices(mface, indices, vcount == 4);
-						indices += vcount;						
 						
 						// set mtface for each uv set
 						// it is assumed that all primitives have equal number of UV sets
@@ -1445,7 +1454,6 @@
 
 						test_index_face(mface, &me->fdata, face_index, vcount);
 						
-						index += mface->v4 ? 4 : 3;
 						mface++;
 						face_index++;
 						prim.totface++;
@@ -1483,10 +1491,10 @@
 							face_index++;
 							prim.totface++;
 						}
-						
-						index += vcount;
-						indices += vcount;
 					}
+
+					index += vcount;
+					indices += vcount;
 				}
 			}
 			





More information about the Bf-blender-cvs mailing list