[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24547] branches/soc-2009-chingachgook/ source/blender/collada/DocumentImporter.cpp: COLLADA: triangles created by polygon tesselation now get correct winding order (i. e.
Arystanbek Dyussenov
arystan.d at gmail.com
Fri Nov 13 16:36:46 CET 2009
Revision: 24547
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24547
Author: kazanbas
Date: 2009-11-13 16:36:46 +0100 (Fri, 13 Nov 2009)
Log Message:
-----------
COLLADA: triangles created by polygon tesselation now get correct winding order (i.e. no flipping). Thanks Joseph for the algorithm!
Modified Paths:
--------------
branches/soc-2009-chingachgook/source/blender/collada/DocumentImporter.cpp
Modified: branches/soc-2009-chingachgook/source/blender/collada/DocumentImporter.cpp
===================================================================
--- branches/soc-2009-chingachgook/source/blender/collada/DocumentImporter.cpp 2009-11-13 13:06:26 UTC (rev 24546)
+++ branches/soc-2009-chingachgook/source/blender/collada/DocumentImporter.cpp 2009-11-13 15:36:46 UTC (rev 24547)
@@ -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