[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14078] trunk/blender/source/blender/ render/intern/source/convertblender.c: Temporary bugfix [#8474]: Smaller fluid objects had no velocity assigned for vectorblur usage.
Daniel Genrich
daniel.genrich at gmx.net
Thu Mar 13 02:25:00 CET 2008
Revision: 14078
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14078
Author: genscher
Date: 2008-03-13 02:24:59 +0100 (Thu, 13 Mar 2008)
Log Message:
-----------
Temporary bugfix [#8474]: Smaller fluid objects had no velocity assigned for vectorblur usage. All zero elements now get the average velocity assigned. I tried to fix the real source - but that seems to be somewhere in the fluids code not reachable by me
Modified Paths:
--------------
trunk/blender/source/blender/render/intern/source/convertblender.c
Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c 2008-03-12 22:01:57 UTC (rev 14077)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c 2008-03-13 01:24:59 UTC (rev 14078)
@@ -5172,7 +5172,7 @@
ObjectRen *obr= obi->obr;
Object *fsob= obr->ob;
VertRen *ver= NULL;
- float *speed, div, zco[2];
+ float *speed, div, zco[2], avgvel[4] = {0.0, 0.0, 0.0, 0.0};
float zmulx= re->winx/2, zmuly= re->winy/2, len;
float winsq= re->winx*re->winy, winroot= sqrt(winsq);
int a, j;
@@ -5202,6 +5202,16 @@
else
Mat4CpyMat4(winmat, re->winmat);
+ /* (bad) HACK calculate average velocity */
+ /* better solution would be fixing getVelocityAt() in intern/elbeem/intern/solver_util.cpp
+ so that also small drops/little water volumes return a velocity != 0.
+ But I had no luck in fixing that function - DG */
+ for(a=0; a<obr->totvert; a++) {
+ for(j=0;j<3;j++) avgvel[j] += vverts[a].co[j];
+ }
+ for(j=0;j<3;j++) avgvel[j] /= (float)(obr->totvert);
+
+
for(a=0; a<obr->totvert; a++, vectors+=2) {
if((a & 255)==0)
ver= obr->vertnodes[a>>8].vert;
@@ -5213,6 +5223,14 @@
//fsvec[0] = fsvec[1] = fsvec[2] = fsvec[3] = 0.; fsvec[2] = 2.; // NT fixed test
for(j=0;j<3;j++) fsvec[j] = vverts[a].co[j];
+ /* (bad) HACK insert average velocity if none is there (see previous comment */
+ if(fsvec[0] == fsvec[1] == fsvec[2] == 0.0)
+ {
+ fsvec[0] = avgvel[0];
+ fsvec[1] = avgvel[1];
+ fsvec[2] = avgvel[2];
+ }
+
// transform (=rotate) to cam space
camco[0]= imat[0][0]*fsvec[0] + imat[0][1]*fsvec[1] + imat[0][2]*fsvec[2];
camco[1]= imat[1][0]*fsvec[0] + imat[1][1]*fsvec[1] + imat[1][2]*fsvec[2];
More information about the Bf-blender-cvs
mailing list