Revision: 17509
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17509
Author:   nicholasbishop
Date:     2008-11-20 04:33:49 +0100 (Thu, 20 Nov 2008)

Log Message:
-----------
Starting to merge some work related to fixing tangent calculation.

* Removed some unused static functions
* Added a vert_edge map to complement the ones for faces

Modified Paths:
--------------
    branches/soc-2008-nicholasbishop/source/blender/blenkernel/BKE_multires.h
    
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c

Modified: 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/BKE_multires.h
===================================================================
--- branches/soc-2008-nicholasbishop/source/blender/blenkernel/BKE_multires.h   
2008-11-20 00:34:24 UTC (rev 17508)
+++ branches/soc-2008-nicholasbishop/source/blender/blenkernel/BKE_multires.h   
2008-11-20 03:33:49 UTC (rev 17509)
@@ -45,6 +45,8 @@
 
 void create_vert_face_map(ListBase **map, IndexNode **mem, const struct MFace 
*mface,
                          const int totvert, const int totface);
+void create_vert_edge_map(ListBase **map, IndexNode **mem, const struct MEdge 
*medge,
+                         const int totvert, const int totedge);
 
 /* MultiresDM */
 struct Mesh *MultiresDM_get_mesh(struct DerivedMesh *dm);
@@ -53,6 +55,7 @@
 void *MultiresDM_get_orco(struct DerivedMesh *);
 struct MVert *MultiresDM_get_subco(struct DerivedMesh *);
 struct ListBase *MultiresDM_get_vert_face_map(struct DerivedMesh *);
+struct ListBase *MultiresDM_get_vert_edge_map(struct DerivedMesh *);
 int MultiresDM_get_totlvl(struct DerivedMesh *);
 int MultiresDM_get_lvl(struct DerivedMesh *);
 void MultiresDM_set_update(struct DerivedMesh *, void (*)(struct 
DerivedMesh*));

Modified: 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/cdderivedmesh.c
   2008-11-20 00:34:24 UTC (rev 17508)
+++ 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/cdderivedmesh.c
   2008-11-20 03:33:49 UTC (rev 17509)
@@ -1162,8 +1162,8 @@
 
        float (*norm)[3];
 
-       ListBase *vert_face_map;
-       IndexNode *vert_face_map_mem;
+       ListBase *vert_face_map, *vert_edge_map;
+       IndexNode *vert_face_map_mem, *vert_edge_map_mem;
 
        Mesh *me;
        int flags;
@@ -1187,6 +1187,10 @@
                        MEM_freeN(mrdm->vert_face_map);
                if(mrdm->vert_face_map_mem)
                        MEM_freeN(mrdm->vert_face_map_mem);
+               if(mrdm->vert_edge_map)
+                       MEM_freeN(mrdm->vert_edge_map);
+               if(mrdm->vert_edge_map_mem)
+                       MEM_freeN(mrdm->vert_edge_map_mem);
                MEM_freeN(mrdm);
        }
 }
@@ -1326,6 +1330,17 @@
        return mrdm->vert_face_map;
 }
 
+ListBase *MultiresDM_get_vert_edge_map(DerivedMesh *dm)
+{
+       MultiresDM *mrdm = (MultiresDM*)dm;
+
+       if(!mrdm->vert_edge_map)
+               create_vert_edge_map(&mrdm->vert_edge_map, 
&mrdm->vert_edge_map_mem, mrdm->me->medge,
+                                    mrdm->me->totvert, mrdm->me->totedge);
+
+       return mrdm->vert_edge_map;
+}
+
 int *MultiresDM_get_flags(DerivedMesh *dm)
 {
        return &((MultiresDM*)dm)->flags;

Modified: 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c
===================================================================
--- 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c    
    2008-11-20 00:34:24 UTC (rev 17508)
+++ 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c    
    2008-11-20 03:33:49 UTC (rev 17509)
@@ -74,6 +74,24 @@
        }
 }
 
+void create_vert_edge_map(ListBase **map, IndexNode **mem, const MEdge *medge, 
const int totvert, const int totedge)
+{
+       int i, j;
+       IndexNode *node = NULL;
+ 
+       (*map) = MEM_callocN(sizeof(ListBase) * totvert, "vert edge map");
+       (*mem) = MEM_callocN(sizeof(IndexNode) * totedge * 2, "vert edge map 
mem");
+       node = *mem;
+       
+       /* Find the users */
+       for(i = 0; i < totedge; ++i){
+               for(j = 0; j < 2; ++j, ++node) {
+                       node->index = i;
+                       BLI_addtail(&(*map)[((unsigned 
int*)(&medge[i].v1))[j]], node);
+               }
+       }
+}
+
 /* MULTIRES MODIFIER */
 static const int multires_max_levels = 13;
 static const int multires_quad_tot[] = {4, 9, 25, 81, 289, 1089, 4225, 16641, 
66049, 263169, 1050625, 4198401, 16785409};
@@ -211,28 +229,6 @@
        VecMulf(out, d ? 0.25 : 1.0 / 3.0);
 }
 
-static void calc_norm(float *norm, float *a, float *b, float *c, float *d)
-{
-       if(d)
-               CalcNormFloat4(a, b, c, d, norm);
-       else
-               CalcNormFloat(a, b, c, norm);
-}
-
-static void calc_face_ts_mat(float out[][3], float *v1, float *v2, float *v3, 
float *v4)
-{
-       float center[3], norm[3];
-
-       face_center(center, v1, v2, v3, v4);
-       calc_norm(norm, v1, v2, v3, v4);
-       calc_ts_mat(out, center, v1, norm);
-}
-
-static void calc_face_ts_mat_dm(float out[][3], float (*orco)[3], MFace *f)
-{
-       calc_face_ts_mat(out, orco[f->v1], orco[f->v2], orco[f->v3], (f->v4 ? 
orco[f->v4] : NULL));
-}
-
 static void calc_face_ts_partial(float center[3], float target[3], float 
norm[][3], float (*orco)[3], MFace *f)
 {
        face_center(center, orco[f->v1], orco[f->v2], orco[f->v3], (f->v4 ? 
orco[f->v4] : NULL));


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to