Revision: 42105
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42105
Author: ender79
Date: 2011-11-23 20:44:04 +0000 (Wed, 23 Nov 2011)
Log Message:
-----------
r42101 causes problems. reverting and instead make correct CD_ORIGINDEX for
tesselated faces to fix the problem.
Revision Links:
--------------
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42101
Modified Paths:
--------------
branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
Modified:
branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
2011-11-23 19:05:52 UTC (rev 42104)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
2011-11-23 20:44:04 UTC (rev 42105)
@@ -686,7 +686,7 @@
MCol *realcol = dm->getTessFaceDataArray(dm, CD_TEXTURE_MCOL);
float *nors= dm->getTessFaceDataArray(dm, CD_NORMAL);
MTFace *tf = DM_get_tessface_data_layer(dm, CD_MTFACE);
- int i, j, orig, *index = DM_get_tessface_data_layer(dm, CD_POLYINDEX);
+ int i, j, orig, *index = DM_get_tessface_data_layer(dm, CD_ORIGINDEX);
int startFace = 0, lastFlag = 0xdeadbeef;
MCol *mcol = dm->getTessFaceDataArray(dm, CD_WEIGHT_MCOL);
if(!mcol)
@@ -878,7 +878,7 @@
MFace *mf = cddm->mface;
MCol *mc;
float *nors= DM_get_tessface_data_layer(dm, CD_NORMAL);
- int i, orig, *index = DM_get_tessface_data_layer(dm, CD_POLYINDEX);
+ int i, orig, *index = DM_get_tessface_data_layer(dm, CD_ORIGINDEX);
mc = DM_get_tessface_data_layer(dm, CD_ID_MCOL);
if(!mc)
@@ -1105,7 +1105,7 @@
/* MTFace *tf = dm->getTessFaceDataArray(dm, CD_MTFACE); */ /* UNUSED */
float (*nors)[3] = dm->getTessFaceDataArray(dm, CD_NORMAL);
int a, b, dodraw, matnr, new_matnr;
- int orig, *index = dm->getTessFaceDataArray(dm, CD_POLYINDEX);
+ int orig, *index = dm->getTessFaceDataArray(dm, CD_ORIGINDEX);
cdDM_update_normals_from_pbvh(dm);
@@ -1401,7 +1401,7 @@
MFace *mf = cddm->mface;
float (*nors)[3] = dm->getTessFaceDataArray(dm, CD_NORMAL);
int a, matnr, new_matnr;
- int orig, *index = dm->getTessFaceDataArray(dm, CD_POLYINDEX);
+ int orig, *index = dm->getTessFaceDataArray(dm, CD_ORIGINDEX);
cdDM_update_normals_from_pbvh(dm);
@@ -1587,7 +1587,12 @@
dm->numFaceData = mesh_recalcTesselation(&dm->faceData, &dm->loopData,
&dm->polyData, cddm->mvert, dm->numFaceData, dm->numLoopData,
dm->numPolyData);
-
+
+ if (!CustomData_get_layer(&dm->faceData, CD_ORIGINDEX)) {
+ int *polyIndex = CustomData_get_layer(&dm->faceData,
CD_POLYINDEX);
+ CustomData_add_layer(&dm->faceData, CD_ORIGINDEX, CD_REFERENCE,
polyIndex, dm->numFaceData);
+ }
+
cddm->mface = CustomData_get_layer(&dm->faceData, CD_MFACE);
}
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
2011-11-23 19:05:52 UTC (rev 42104)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
2011-11-23 20:44:04 UTC (rev 42105)
@@ -2388,8 +2388,14 @@
totface = k;
CustomData_add_layer(fdata, CD_MFACE, CD_ASSIGN, mface, totface);
+
+ /* CD_POLYINDEX will contain an array of indices from tessfaces to the
polygons
+ they are directly tesselated from */
CustomData_add_layer(fdata, CD_POLYINDEX, CD_ASSIGN, polyIndex,
totface);
if (origIndex) {
+ /* If polys had a CD_ORIGINDEX layer, then the tesselated faces
will get this
+ layer as well, pointing to polys from the original mesh (not
the polys
+ that just got tesselated) */
CustomData_add_layer(fdata, CD_ORIGINDEX, CD_ASSIGN, origIndex,
totface);
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs