[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17509] branches/soc-2008-nicholasbishop/ source/blender/blenkernel: Starting to merge some work related to fixing tangent calculation.
Nicholas Bishop
nicholasbishop at gmail.com
Thu Nov 20 04:33:51 CET 2008
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));
More information about the Bf-blender-cvs
mailing list