Commit: 00157066bfa3db0c6a4fcfecdfe97797d5b42960 Author: Roman Pogribnyi Date: Sun Sep 21 14:43:00 2014 +0200 Branches: soc-2014-fluid https://developer.blender.org/rB00157066bfa3db0c6a4fcfecdfe97797d5b42960
reverting to old smoke style, simpleplume scenario for debug =================================================================== M intern/smoke/intern/scenarios/smoke.h M source/blender/blenkernel/intern/pointcache.c M source/blender/blenkernel/intern/smoke.c =================================================================== diff --git a/intern/smoke/intern/scenarios/smoke.h b/intern/smoke/intern/scenarios/smoke.h index 294252a..3b7debd 100644 --- a/intern/smoke/intern/scenarios/smoke.h +++ b/intern/smoke/intern/scenarios/smoke.h @@ -2,7 +2,37 @@ using namespace std; const string smoke_clean = ""; -const string smoke_setup_low ="from manta import * \n\ +const string smoke_setup_low ="import os, shutil, math, sys \n\ +from manta import *\n\ +\n\ +# solver params\n\ +res = $RES$\n\ +gs = vec3($RESX$, $RESY$, $RESZ$)\n\ +s = FluidSolver(name='main', gridSize = gs)\n\ +s.timestep = 1.0\n\ +timings = Timings()\n\ +\n\ +# prepare grids\n\ +flags = s.create(FlagGrid)\n\ +vel = s.create(MACGrid)\n\ +density = s.create(RealGrid)\n\ +pressure = s.create(RealGrid)\n\ +\n\ +# noise field\n\ +noise = s.create(NoiseField, loadFromFile=True)\n\ +noise.posScale = vec3(45)\n\ +noise.clamp = True\n\ +noise.clampNeg = 0\n\ +noise.clampPos = 1\n\ +noise.valScale = 1\n\ +noise.valOffset = 0.75\n\ +noise.timeAnim = 0.2\n\ +\n\ +flags.initDomain()\n\ +flags.fillGrid()\n\ +\n\ +source = s.create(Cylinder, center=gs*vec3(0.5,0.1,0.5), radius=res*0.14, z=gs*vec3(0, 0.02, 0))\n"; +/*"from manta import * \n\ import os, shutil, math, sys \n\ def transform_back(obj, gs):\n\ obj.scale(gs/2)\n\ @@ -33,7 +63,7 @@ vel = s.create(MACGrid) \n\ density = s.create(RealGrid) \n\ pressure = s.create(RealGrid) \n\ forces = s.create(MACGrid)\n\ -"; +";*/ const string smoke_setup_high = "xl_gs = vec3($HRESX$, $HRESY$, $HRESZ$) \n\ xl = Solver(name = 'larger', gridSize = xl_gs, dim = solver_dim) \n\ @@ -69,30 +99,43 @@ if $USE_WAVELETS$ and $UPRES$ > 0:\n\ "; const string smoke_step_low = "def sim_step(t):\n\ - density.save('den%04d_start.txt' % t) \n\ - forces.load('manta_forces.uni')\n\ - if (t>=0 and t<75):\n\ - if noise.valScale > 0.:\n\ - densityInflowMeshNoise( flags=flags, density=density, noise=noise, mesh=source, scale=3, sigma=0.5 )\n\ - else:\n\ - densityInflowMesh(flags=flags, density=density, mesh=source, value=1)\n\ - applyInflow=True\n\ - density.save('den%04d_1.txt' % t) \n\ - addForceField(flags=flags, vel=vel,force=forces)\n\ - density.save('den%04d_2.txt' % t) \n\ - advectSemiLagrange(flags=flags, vel=vel, grid=density, order=$ADVECT_ORDER$) \n\ - advectSemiLagrange(flags=flags, vel=vel, grid=vel, order=$ADVECT_ORDER$) \n\ - density.save('den%04d_3.txt' % t) \n\ - setWallBcs(flags=flags, vel=vel) \n\ - addBuoyancy(density=density, vel=vel, gravity=vec3($BUYO_X$,$BUYO_Y$,$BUYO_Z$), flags=flags) \n\ - solvePressure(flags=flags, vel=vel, pressure=pressure, useResNorm=True, openBound='xXyYzZ', cgMaxIterFac=1, cgAccuracy=0.01) \n\ - setWallBcs(flags=flags, vel=vel) \n\ - print(\"Writing Grid to \" + str($DENSITY_MEM$) + \" with size\" + str($DENSITY_SIZE$))\n\ - density.save('den%04d_end.txt' % t) \n\ - density.writeGridToMemory(memLoc = \"$DENSITY_MEM$\",sizeAllowed = \"$DENSITY_SIZE$\") \n\ + if t<100:\n\ + densityInflow(flags=flags, density=density, noise=noise, shape=source, scale=1, sigma=0.5)\n\ + advectSemiLagrange(flags=flags, vel=vel, grid=density, order=2)\n\ + advectSemiLagrange(flags=flags, vel=vel, grid=vel , order=2, strength=1.0)\n\ + setWallBcs(flags=flags, vel=vel) \n\ + addBuoyancy(density=density, vel=vel, gravity=vec3(0,-6e-4,0), flags=flags)\n\ + solvePressure(flags=flags, vel=vel, pressure=pressure, useResNorm=True)\n\ + setWallBcs(flags=flags, vel=vel)\n\ + #density.save('den%04d.uni' % t)\n\ density.save('den%04d_temp.uni' % t) \n\ os.rename('den%04d_temp.uni' % t, 'den%04d.uni' % t) \n\ - s.step()\n"; + s.step()"; +//"def sim_step(t):\n\ +// density.save('den%04d_start.txt' % t) \n\ +// forces.load('manta_forces.uni')\n\ +// if (t>=0 and t<75):\n\ +// if noise.valScale > 0.:\n\ +// densityInflowMeshNoise( flags=flags, density=density, noise=noise, mesh=source, scale=3, sigma=0.5 )\n\ +// else:\n\ +// densityInflowMesh(flags=flags, density=density, mesh=source, value=1)\n\ +// applyInflow=True\n\ +// density.save('den%04d_1.txt' % t) \n\ +// addForceField(flags=flags, vel=vel,force=forces)\n\ +// density.save('den%04d_2.txt' % t) \n\ +// advectSemiLagrange(flags=flags, vel=vel, grid=density, order=$ADVECT_ORDER$) \n\ +// advectSemiLagrange(flags=flags, vel=vel, grid=vel, order=$ADVECT_ORDER$) \n\ +// density.save('den%04d_3.txt' % t) \n\ +// setWallBcs(flags=flags, vel=vel) \n\ +// addBuoyancy(density=density, vel=vel, gravity=vec3($BUYO_X$,$BUYO_Y$,$BUYO_Z$), flags=flags) \n\ +// solvePressure(flags=flags, vel=vel, pressure=pressure, useResNorm=True, openBound='xXyYzZ', cgMaxIterFac=1, cgAccuracy=0.01) \n\ +// setWallBcs(flags=flags, vel=vel) \n\ +// print(\"Writing Grid to \" + str($DENSITY_MEM$) + \" with size\" + str($DENSITY_SIZE$))\n\ +// density.save('den%04d_end.txt' % t) \n\ +// #density.writeGridToMemory(memLoc = \"$DENSITY_MEM$\",sizeAllowed = \"$DENSITY_SIZE$\") \n\ +// density.save('den%04d_temp.uni' % t) \n\ +// os.rename('den%04d_temp.uni' % t, 'den%04d.uni' % t) \n\ +// s.step()\n"; const string smoke_step_high = " interpolateMACGrid( source=vel, target=xl_vel ) \n\ sStr = 1.0 * wltStrength \n\ diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index 6fbc7aa..17c7534 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -609,12 +609,12 @@ static int ptcache_smoke_write(PTCacheFile *pf, void *smoke_v) ptcache_file_compressed_write(pf, (unsigned char *)sds->shadow, in_len, out, mode); - writeArrToFile("sh.txt", sds->shadow, res); - + /* writeArrToFile("sh.txt", sds->shadow, res); + */ ptcache_file_compressed_write(pf, (unsigned char *)dens, in_len, out, mode); - writeArrToFile("dens.txt", dens, res); - + /* writeArrToFile("dens.txt", dens, res); +*/ if (fluid_fields & SM_ACTIVE_HEAT) { ptcache_file_compressed_write(pf, (unsigned char *)heat, in_len, out, mode); ptcache_file_compressed_write(pf, (unsigned char *)heatold, in_len, out, mode); @@ -631,16 +631,16 @@ static int ptcache_smoke_write(PTCacheFile *pf, void *smoke_v) } ptcache_file_compressed_write(pf, (unsigned char *)vx, in_len, out, mode); - writeArrToFile("vx.txt", vx, res); - +/* writeArrToFile("vx.txt", vx, res); +*/ ptcache_file_compressed_write(pf, (unsigned char *)vy, in_len, out, mode); - writeArrToFile("vy.txt", vx, res); - +/* writeArrToFile("vy.txt", vx, res); +*/ ptcache_file_compressed_write(pf, (unsigned char *)vz, in_len, out, mode); - writeArrToFile("vz.txt", vx, res); - +/* writeArrToFile("vz.txt", vx, res); +*/ ptcache_file_compressed_write(pf, (unsigned char *)obstacles, (unsigned int)res, out, mode); ptcache_file_write(pf, &dt, 1, sizeof(float)); ptcache_file_write(pf, &dx, 1, sizeof(float)); diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c index 1bf6b40..fe17f21 100644 --- a/source/blender/blenkernel/intern/smoke.c +++ b/source/blender/blenkernel/intern/smoke.c @@ -2798,38 +2798,35 @@ static void smokeModifier_process(SmokeModifierData *smd, Scene *scene, Object * // simulate the actual smoke (c++ code in intern/smoke) // DG: interesting commenting this line + deactivating loading of noise files - if (framenr != startframe) - { - if (sds->flags & MOD_SMOKE_DISSOLVE) { - /* low res dissolve */ - smoke_dissolve(sds->fluid, sds->diss_speed, sds->flags & MOD_SMOKE_DISSOLVE_LOG); - /* high res dissolve */ - if (sds->wt) { - smoke_dissolve_wavelet(sds->wt, sds->diss_speed, sds->flags & MOD_SMOKE_DISSOLVE_LOG); - } - - } - //Step itself - if(smd->domain->flags & MOD_SMOKE_USE_MANTA){ /*load manta sim data into fluid object*/ - + if(framenr != startframe && smd->domain->flags & MOD_SMOKE_USE_MANTA) /*load manta sim data into fluid object*/ + { /*PR: Uncomment when adding simulation from timeline*/ -// smoke_mantaflow_sim_step(scene,smd); + /*smoke_mantaflow_sim_step(scene,smd);*/ const char *density_name_format = "./den%04d.uni"; const char *wavelets_name_format = "./densityXl_%04d.uni"; char buff[100]; sprintf(buff, density_name_format, scene->r.cfra); bool read_density = smoke_mantaflow_read(smd->domain, buff, 0); bool read_wavelets = 1; - if (smd->domain->flags & MOD_SMOKE_HIGHRES){ + if (smd->domain->flags & MOD_SMOKE_HIGHRES) + { /*highdres*/ sprintf(buff, wavelets_name_format, scene->r.cfra); read_wavelets = smoke_mantaflow_read(smd->domain, buff, 1); } + }else{ + if (framenr != startframe){ + if (sds->flags & MOD_SMOKE_DISSOLVE) { + /* low res dissolve */ + smoke_dissolve(sds->fluid, sds->diss_speed, sds->flags & MOD_SMOKE_DISSOLVE_LOG); + /* high res dissolve */ + if (sds->wt) { + smoke_dissolve_wavelet(sds->wt, sds->diss_speed, sds->flags & MOD_SMOKE_DISSOLVE_LOG); + } + } + step(scene, ob, smd, dm, scene->r.frs_sec / scene->r.frs_sec_base, for_render); + } } - else{ - step(scene, ob, smd, dm, scene->r.frs_sec / scene->r.frs_sec_base, for_render); - } - } // create shadows before writing cache so they get stored smoke_calc_transparency(sds, scene); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs