[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18403] branches/blender2.5/blender/source /blender: 2.5
Ton Roosendaal
ton at blender.org
Wed Jan 7 17:05:57 CET 2009
Revision: 18403
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18403
Author: ton
Date: 2009-01-07 17:05:55 +0100 (Wed, 07 Jan 2009)
Log Message:
-----------
2.5
More globals discovered; lattice deform stored static
deform array and a matrix. Tsk!
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/blenkernel/BKE_lattice.h
branches/blender2.5/blender/source/blender/blenkernel/intern/anim.c
branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c
branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c
branches/blender2.5/blender/source/blender/blenkernel/intern/particle.c
branches/blender2.5/blender/source/blender/blenkernel/intern/particle_system.c
branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
branches/blender2.5/blender/source/blender/makesdna/DNA_lattice_types.h
branches/blender2.5/blender/source/blender/render/intern/source/convertblender.c
Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_lattice.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_lattice.h 2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_lattice.h 2009-01-07 16:05:55 UTC (rev 18403)
@@ -47,9 +47,11 @@
void free_lattice(struct Lattice *lt);
void make_local_lattice(struct Lattice *lt);
void calc_lat_fudu(int flag, int res, float *fu, float *du);
+
void init_latt_deform(struct Object *oblatt, struct Object *ob);
-void calc_latt_deform(float *co, float weight);
-void end_latt_deform(void);
+void calc_latt_deform(struct Object *, float *co, float weight);
+void end_latt_deform(struct Object *);
+
int object_deform_mball(struct Object *ob);
void outside_lattice(struct Lattice *lt);
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/anim.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/anim.c 2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/anim.c 2009-01-07 16:05:55 UTC (rev 18403)
@@ -946,8 +946,8 @@
MEM_freeN(obcopylist);
if(psys->lattice) {
- end_latt_deform();
- psys->lattice = 0;
+ end_latt_deform(psys->lattice);
+ psys->lattice = NULL;
}
}
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c 2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c 2009-01-07 16:05:55 UTC (rev 18403)
@@ -74,7 +74,6 @@
//XXX #include "BIF_editdeform.h"
Lattice *editLatt=0;
-static float *latticedata=0, latmat[4][4];
void calc_lat_fudu(int flag, int res, float *fu, float *du)
{
@@ -303,23 +302,23 @@
if(lt->editlatt) lt= lt->editlatt;
bp = lt->def;
- fp= latticedata= MEM_mallocN(sizeof(float)*3*lt->pntsu*lt->pntsv*lt->pntsw, "latticedata");
+ fp= lt->latticedata= MEM_mallocN(sizeof(float)*3*lt->pntsu*lt->pntsv*lt->pntsw, "latticedata");
/* for example with a particle system: ob==0 */
- if(ob==0) {
+ if(ob==NULL) {
/* in deformspace, calc matrix */
- Mat4Invert(latmat, oblatt->obmat);
+ Mat4Invert(lt->latmat, oblatt->obmat);
/* back: put in deform array */
- Mat4Invert(imat, latmat);
+ Mat4Invert(imat, lt->latmat);
}
else {
/* in deformspace, calc matrix */
Mat4Invert(imat, oblatt->obmat);
- Mat4MulMat4(latmat, ob->obmat, imat);
+ Mat4MulMat4(lt->latmat, ob->obmat, imat);
/* back: put in deform array */
- Mat4Invert(imat, latmat);
+ Mat4Invert(imat, lt->latmat);
}
for(w=0,fw=lt->fw; w<lt->pntsw; w++,fw+=lt->dw) {
@@ -341,19 +340,20 @@
}
}
-void calc_latt_deform(float *co, float weight)
+void calc_latt_deform(Object *ob, float *co, float weight)
{
- Lattice *lt;
+ Lattice *lt= ob->data;
float u, v, w, tu[4], tv[4], tw[4];
float *fpw, *fpv, *fpu, vec[3];
int ui, vi, wi, uu, vv, ww;
- if(latticedata==0) return;
+ if(lt->editlatt) lt= lt->editlatt;
+ if(lt->latticedata==NULL) return;
/* co is in local coords, treat with latmat */
VECCOPY(vec, co);
- Mat4MulVecfl(latmat, vec);
+ Mat4MulVecfl(lt->latmat, vec);
/* u v w coords */
@@ -395,10 +395,10 @@
if(w!=0.0) {
if(ww>0) {
- if(ww<lt->pntsw) fpw= latticedata + 3*ww*lt->pntsu*lt->pntsv;
- else fpw= latticedata + 3*(lt->pntsw-1)*lt->pntsu*lt->pntsv;
+ if(ww<lt->pntsw) fpw= lt->latticedata + 3*ww*lt->pntsu*lt->pntsv;
+ else fpw= lt->latticedata + 3*(lt->pntsw-1)*lt->pntsu*lt->pntsv;
}
- else fpw= latticedata;
+ else fpw= lt->latticedata;
for(vv= vi-1; vv<=vi+2; vv++) {
v= w*tv[vv-vi+1];
@@ -431,11 +431,15 @@
}
}
-void end_latt_deform()
+void end_latt_deform(Object *ob)
{
-
- MEM_freeN(latticedata);
- latticedata= 0;
+ Lattice *lt= ob->data;
+
+ if(lt->editlatt) lt= lt->editlatt;
+
+ if(lt->latticedata)
+ MEM_freeN(lt->latticedata);
+ lt->latticedata= NULL;
}
/* calculations is in local space of deformed object
@@ -767,17 +771,17 @@
if(dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
for(j = 0; j < dvert->totweight; j++) {
if (dvert->dw[j].def_nr == index) {
- calc_latt_deform(vertexCos[a], dvert->dw[j].weight);
+ calc_latt_deform(laOb, vertexCos[a], dvert->dw[j].weight);
}
}
}
}
} else {
for(a = 0; a < numVerts; a++) {
- calc_latt_deform(vertexCos[a], 1.0f);
+ calc_latt_deform(laOb, vertexCos[a], 1.0f);
}
}
- end_latt_deform();
+ end_latt_deform(laOb);
}
int object_deform_mball(Object *ob)
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c 2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c 2009-01-07 16:05:55 UTC (rev 18403)
@@ -6491,8 +6491,8 @@
CDDM_calc_normals(result);
if(psys->lattice){
- end_latt_deform();
- psys->lattice=0;
+ end_latt_deform(psys->lattice);
+ psys->lattice= NULL;
}
return result;
@@ -7267,8 +7267,8 @@
CDDM_calc_normals(explode);
if(psmd->psys->lattice){
- end_latt_deform();
- psmd->psys->lattice=0;
+ end_latt_deform(psmd->psys->lattice);
+ psmd->psys->lattice= NULL;
}
return explode;
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/particle.c 2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/particle.c 2009-01-07 16:05:55 UTC (rev 18403)
@@ -2584,7 +2584,7 @@
/* apply lattice */
if(psys->lattice && edit==0)
- calc_latt_deform(ca->co, 1.0f);
+ calc_latt_deform(psys->lattice, ca->co, 1.0f);
/* figure out rotation */
@@ -2664,8 +2664,8 @@
psys->totcached = totpart;
if(psys && psys->lattice){
- end_latt_deform();
- psys->lattice=0;
+ end_latt_deform(psys->lattice);
+ psys->lattice= NULL;
}
if(vg_effector)
@@ -3473,7 +3473,7 @@
}
if(psys->lattice && edit==0)
- calc_latt_deform(state->co,1.0f);
+ calc_latt_deform(psys->lattice, state->co,1.0f);
}
}
}
@@ -3696,7 +3696,7 @@
do_clump(state,key1,t,part->clumpfac,part->clumppow,1.0);
if(psys->lattice)
- calc_latt_deform(state->co,1.0f);
+ calc_latt_deform(psys->lattice, state->co,1.0f);
}
else{
if (pa) { /* TODO PARTICLE - should this ever be NULL? - Campbell */
@@ -3748,7 +3748,7 @@
}
if(psys->lattice)
- calc_latt_deform(state->co,1.0f);
+ calc_latt_deform(psys->lattice, state->co,1.0f);
}
}
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/particle_system.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/particle_system.c 2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/particle_system.c 2009-01-07 16:05:55 UTC (rev 18403)
@@ -1495,8 +1495,8 @@
MEM_freeN(ctx->vg_roughe);
if(ctx->psys->lattice){
- end_latt_deform();
- ctx->psys->lattice=0;
+ end_latt_deform(ctx->psys->lattice);
+ ctx->psys->lattice= NULL;
}
/* distribution */
@@ -2629,8 +2629,8 @@
}
if(epsys->lattice){
- end_latt_deform();
- epsys->lattice=0;
+ end_latt_deform(epsys->lattice);
+ epsys->lattice= NULL;
}
}
}
@@ -4254,8 +4254,8 @@
}
if(psys->lattice){
- end_latt_deform();
- psys->lattice=0;
+ end_latt_deform(psys->lattice);
+ psys->lattice= NULL;
}
if(pa->r_rot[0] > disp)
@@ -4630,8 +4630,8 @@
if(vg_size) MEM_freeN(vg_size);
if(psys->lattice){
- end_latt_deform();
- psys->lattice=0;
+ end_latt_deform(psys->lattice);
+ psys->lattice= NULL;
}
}
Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c 2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c 2009-01-07 16:05:55 UTC (rev 18403)
@@ -3480,8 +3480,8 @@
psys->flag &= ~PSYS_DRAWING;
if(psys->lattice){
- end_latt_deform();
- psys->lattice=0;
+ end_latt_deform(psys->lattice);
+ psys->lattice= NULL;
}
wmLoadMatrix(v3d->viewmat);
Modified: branches/blender2.5/blender/source/blender/makesdna/DNA_lattice_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesdna/DNA_lattice_types.h 2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/makesdna/DNA_lattice_types.h 2009-01-07 16:05:55 UTC (rev 18403)
@@ -53,6 +53,10 @@
struct MDeformVert *dvert;
+ /* used while deforming, always free and NULL after use */
+ float *latticedata;
+ float latmat[4][4];
+
struct Lattice *editlatt;
} Lattice;
Modified: branches/blender2.5/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- branches/blender2.5/blender/source/blender/render/intern/source/convertblender.c 2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/render/intern/source/convertblender.c 2009-01-07 16:05:55 UTC (rev 18403)
@@ -2043,8 +2043,8 @@
psys->flag &= ~PSYS_DRAWING;
if(psys->lattice){
- end_latt_deform();
- psys->lattice=0;
+ end_latt_deform(psys->lattice);
+ psys->lattice= NULL;
}
if(path && (ma->mode_l & MA_TANGENT_STR)==0)
More information about the Bf-blender-cvs
mailing list