Revision: 47920 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47920 Author: genscher Date: 2012-06-14 21:45:41 +0000 (Thu, 14 Jun 2012) Log Message: ----------- - Fix moving obstacles: Velocity near the border of moving obstacles was set to zero. - Fix drawing of obstacles: Did not draw all obstacle cells
Modified Paths: -------------- branches/smoke2/intern/smoke/intern/FLUID_3D_SOLVERS.cpp branches/smoke2/source/blender/blenkernel/intern/smoke.c branches/smoke2/source/blender/editors/space_view3d/drawvolume.c Modified: branches/smoke2/intern/smoke/intern/FLUID_3D_SOLVERS.cpp =================================================================== --- branches/smoke2/intern/smoke/intern/FLUID_3D_SOLVERS.cpp 2012-06-14 20:15:55 UTC (rev 47919) +++ branches/smoke2/intern/smoke/intern/FLUID_3D_SOLVERS.cpp 2012-06-14 21:45:41 UTC (rev 47920) @@ -323,7 +323,7 @@ // i = i + 1 i++; } - cout << i << " iterations converged to " << sqrt(maxR) << endl; + // cout << i << " iterations converged to " << sqrt(maxR) << endl; if (_h) delete[] _h; if (_Precond) delete[] _Precond; Modified: branches/smoke2/source/blender/blenkernel/intern/smoke.c =================================================================== --- branches/smoke2/source/blender/blenkernel/intern/smoke.c 2012-06-14 20:15:55 UTC (rev 47919) +++ branches/smoke2/source/blender/blenkernel/intern/smoke.c 2012-06-14 21:45:41 UTC (rev 47920) @@ -103,7 +103,7 @@ { QueryPerformanceCounter ( &liCurrentTime ); } -static double UNUSED_FUNCTION(tval)( void ) +static double tval( void ) { return ((double)( (liCurrentTime.QuadPart - liStartTime.QuadPart)* (double)1000.0/(double)liFrequency.QuadPart )); } @@ -631,8 +631,6 @@ static void obstacles_from_derivedmesh(Object *coll_ob, SmokeDomainSettings *sds, SmokeCollSettings *scs, unsigned char *obstacle_map, float *velocityX, float *velocityY, float *velocityZ, float dt) { - printf("obstacles_from_derivedmesh\n"); - if (!scs->dm) return; { DerivedMesh *dm = NULL; @@ -642,12 +640,15 @@ BVHTreeFromMesh treeData = {0}; int numverts, i, z; int *res = sds->res; + float *density = smoke_get_density(sds->fluid); - float surface_distance = 0.5f + FLT_EPSILON; + float surface_distance = 0.6; float *vert_vel = NULL; int has_velocity = 0; + tstart(); + dm = CDDM_copy(scs->dm); CDDM_calc_normals(dm); mvert = dm->getVertArray(dm); @@ -655,9 +656,10 @@ numverts = dm->getNumVerts(dm); dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT); - printf("obstacles_from_derivedmesh with DM\n"); - // DG TODO + // if(scs->type > SM_COLL_STATIC) + // if line above is used, the code is in trouble if the object moves but is declared as "does not move" + // if (sfs->flags & MOD_SMOKE_FLOW_INITVELOCITY) { vert_vel = MEM_callocN(sizeof(float) * numverts * 3, "smoke_obs_velocity"); @@ -755,9 +757,11 @@ } /* tag obstacle cells */ - obstacle_map[index] = 1 | 8; + obstacle_map[index] = 1; + density[index] = 0.0f; - // DEBUG printf("added obstacle\n"); + if(has_velocity) + obstacle_map[index] |= 8; } } } @@ -768,6 +772,9 @@ if (vert_vel) MEM_freeN(vert_vel); + tend(); + printf ( "Time: %f\n\n", ( float ) tval() ); + } } @@ -793,14 +800,16 @@ // TODO: delete old obstacle flags for(z = 0; z < sds->res[0] * sds->res[1] * sds->res[2]; z++) { - //if(obstacles[z]) - // { +#if 0 + if(obstacles[z]) + { // density[z] = 0; - //velxOrig[z] = 0; - //velyOrig[z] = 0; - //velzOrig[z] = 0; - //} + velxOrig[z] = 0; + velyOrig[z] = 0; + velzOrig[z] = 0; + } +#endif if(obstacles[z] & 8) // Do not delete static obstacles { @@ -832,6 +841,17 @@ if(collobjs) MEM_freeN(collobjs); + + /* obstacle cells should not contain any velocity from the smoke simulation */ + for(z = 0; z < sds->res[0] * sds->res[1] * sds->res[2]; z++) + { + if(obstacles[z]) + { + velxOrig[z] = 0; + velyOrig[z] = 0; + velzOrig[z] = 0; + } + } } static void update_flowsfluids(Scene *scene, Object *ob, SmokeDomainSettings *sds, float time) @@ -1281,8 +1301,6 @@ smd->coll->dm = CDDM_copy(dm); DM_ensure_tessface(smd->coll->dm); - - printf("Collision: Created dm!\n"); } if(scene->r.cfra > smd->time) @@ -1354,7 +1372,7 @@ if (framenr != scene->r.cfra) return; - tstart(); + // tstart(); smoke_calc_domain(scene, ob, smd); @@ -1406,7 +1424,7 @@ if(framenr != startframe) BKE_ptcache_write(&pid, framenr); - tend(); + //tend(); // printf ( "Frame: %d, Time: %f\n\n", (int)smd->time, ( float ) tval() ); } } Modified: branches/smoke2/source/blender/editors/space_view3d/drawvolume.c =================================================================== --- branches/smoke2/source/blender/editors/space_view3d/drawvolume.c 2012-06-14 20:15:55 UTC (rev 47919) +++ branches/smoke2/source/blender/editors/space_view3d/drawvolume.c 2012-06-14 21:45:41 UTC (rev 47920) @@ -507,7 +507,8 @@ float *min = domain->p0; float cell_size = domain->dx * domain->scale; - float step_size = ((float)MAX3(res[0], res[1], res[2]))/16.f; + //float step_size = ((float)MAX3(res[0], res[1], res[2]))/16.f; + float step_size = 1.0f; for (x=0; x<res[0]; x+=step_size) for (y=0; y<res[1]; y+=step_size) _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs