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

Reply via email to