[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23257] branches/bmesh/blender/source/ blender: mirror modifier with mirrorob set works properly (I hope) again
Joseph Eagar
joeedh at gmail.com
Tue Sep 15 20:51:35 CEST 2009
Revision: 23257
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23257
Author: joeedh
Date: 2009-09-15 20:51:33 +0200 (Tue, 15 Sep 2009)
Log Message:
-----------
mirror modifier with mirrorob set works properly (I hope) again
Modified Paths:
--------------
branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h
branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
branches/bmesh/blender/source/blender/blenlib/intern/BLI_cellalloc.c
Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h 2009-09-15 18:01:18 UTC (rev 23256)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h 2009-09-15 18:51:33 UTC (rev 23257)
@@ -250,7 +250,7 @@
#define BM_INLINE static inline __attribute((always_inline))
#endif
-#define BMEMSET(mem, val, size) {int _i; char *_c = mem; for (_i=0; _i<size; _i++) *_c++ = val;}
+#define BMEMSET(mem, val, size) {unsigned int _i; char *_c = (char*) mem; for (_i=0; _i<size; _i++) *_c++ = val;}
#endif
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c 2009-09-15 18:01:18 UTC (rev 23256)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c 2009-09-15 18:51:33 UTC (rev 23257)
@@ -121,12 +121,11 @@
BMVert *v, **vtable, **verts=NULL;
BMEdge *e, **etable, **edges=NULL;
BMFace *f;
- BMIter liter, iter;
+ BMIter liter;
V_DECLARE(verts);
V_DECLARE(edges);
- void *tmp;
int numTex, numCol;
- int i, j, k, tot, totvert, totedge, totface;
+ int i, j, k, totvert, totedge, totface;
if (em) bm = em->bm;
else bm = BM_Make_Mesh(allocsize);
@@ -285,12 +284,10 @@
float final_offset[4][4];
float tmp_mat[4][4];
float length = amd->length;
- int count = amd->count;
- int numVerts, numEdges, numFaces;
- int maxVerts, maxEdges, maxFaces;
+ int count = amd->count, maxVerts;
int finalVerts, finalEdges, finalFaces;
int *indexMap = NULL;
- DerivedMesh *result, *start_cap = NULL, *end_cap = NULL;
+ DerivedMesh *start_cap = NULL, *end_cap = NULL;
MVert *src_mvert;
/* need to avoid infinite recursion here */
@@ -411,7 +408,6 @@
if (j == 0) {
BMOperator findop;
BMOIter oiter;
- BMIter iter;
BMVert *v, *v2;
BMHeader *h;
@@ -516,14 +512,14 @@
DerivedMesh *result, *cddm;
BMEditMesh *em;
BMesh *bm;
- BMOIter siter1, siter2;
+ BMOIter siter1;
BMOperator op;
- BMVert *v1, *v2;
+ BMVert *v1;
int vector_size=0, a, b;
bDeformGroup *def, *defb;
bDeformGroup **vector_def = NULL;
float mtx[4][4], imtx[4][4];
- int i, j;
+ int j;
cddm = dm; //copying shouldn't be necassary here, as all modifiers return CDDM's
em = CDDM_To_BMesh(dm, NULL);
@@ -546,15 +542,27 @@
}
if (mmd->mirror_ob) {
- float obinv[4][4];
+ float mtx2[4][4], vec[3];
- Mat4Invert(obinv, mmd->mirror_ob->obmat);
- Mat4MulMat4(mtx, ob->obmat, obinv);
- Mat4Invert(imtx, mtx);
+ Mat4Invert(mtx2, mmd->mirror_ob->obmat);
+ Mat4Ortho(mtx2);
+ Mat4MulMat4(imtx, ob->obmat, mtx2);
+ Mat4Invert(mtx, imtx);
+
+ /*this math here is probably stupid beyond all reason*/
+ VECCOPY(vec, mtx[3]);
+ VecMulf(vec, -1.0f);
+
+ Mat4One(imtx);
+ imtx[axis][axis] = -1.0f;
+ Mat4MulMat4(mtx2, imtx, mtx);
+
+ Mat4One(imtx);
+ VECCOPY(imtx[3], vec);
+ Mat4MulMat4(mtx, imtx, mtx2);
} else {
Mat4One(mtx);
- mtx[axis][axis] = -1;
- Mat4Invert(imtx, mtx);
+ mtx[axis][axis] = -1.0f;
}
BMO_InitOpf(bm, &op, "mirror geom=%avef mat=%m4 mergedist=%f axis=%d",
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c 2009-09-15 18:01:18 UTC (rev 23256)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c 2009-09-15 18:51:33 UTC (rev 23257)
@@ -565,7 +565,7 @@
double curt = PIL_check_seconds_timer();
cgdm = getCCGDerivedMesh(ss, drawInteriorEdges, useSubsurfUv, dm);
- result = CDDM_copy(cgdm, 0);
+ result = CDDM_copy(cgdm, 1);
printf("subsurf conversion time: %.6lf\n", PIL_check_seconds_timer() - curt);
Modified: branches/bmesh/blender/source/blender/blenlib/intern/BLI_cellalloc.c
===================================================================
--- branches/bmesh/blender/source/blender/blenlib/intern/BLI_cellalloc.c 2009-09-15 18:01:18 UTC (rev 23256)
+++ branches/bmesh/blender/source/blender/blenlib/intern/BLI_cellalloc.c 2009-09-15 18:51:33 UTC (rev 23257)
@@ -62,11 +62,16 @@
int idcheck;
} MemHeader;
+//#define USE_GUARDEDALLOC
+
void *BLI_cellalloc_malloc(long size, char *tag)
{
MemHeader *memh;
int slot = size + sizeof(MemHeader);
-
+
+#ifdef USE_GUARDEDALLOC
+ return MEM_mallocN(size, tag);
+#endif
if (!slot)
return NULL;
@@ -115,6 +120,10 @@
MemHeader *memh = mem;
int slot;
+#ifdef USE_GUARDEDALLOC
+ MEM_freeN(mem);
+ return;
+#endif
if (!memh)
return;
More information about the Bf-blender-cvs
mailing list