Commit: a167cb75ceccb8c87d835b258153886fad9cceab
Author: Sebastián Barschkis
Date:   Sat Jan 9 21:37:23 2016 +0100
Branches: fluid-mantaflow
https://developer.blender.org/rBa167cb75ceccb8c87d835b258153886fad9cceab

wavelet fixes and refactored smoke.h

===================================================================

M       intern/smoke/intern/FLUID_3D.cpp
M       intern/smoke/intern/MANTA.cpp
M       intern/smoke/intern/WTURBULENCE.cpp
M       intern/smoke/intern/scenarios/smoke.h

===================================================================

diff --git a/intern/smoke/intern/FLUID_3D.cpp b/intern/smoke/intern/FLUID_3D.cpp
index 86f4f2c..e25b34d 100644
--- a/intern/smoke/intern/FLUID_3D.cpp
+++ b/intern/smoke/intern/FLUID_3D.cpp
@@ -606,6 +606,7 @@ _xRes(res[0]), _yRes(res[1]), _zRes(res[2]), _res(0.0f)
        std::string setup_script =
                manta_import +
                solver_setup_low +
+               uv_setup +
                alloc_base_grids_low +
                noise_low +
                prep_domain_low +
diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index 09d80e1..ae130b6 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -424,7 +424,7 @@ std::string Manta_API::get_real_value( const std::string& 
varName, SmokeModifier
        if (varName == "UVS_CNT")
                ss << smd->domain->manta_uvs_num ;
        else if (varName == "UPRES")
-               ss << smd->domain->amplify+1;
+               ss << smd->domain->amplify; //ss << smd->domain->amplify+1;
        else if (varName == "WLT_STR")
                ss << smd->domain->strength ;
        else if (varName == "RES")
@@ -718,17 +718,17 @@ void Manta_API::update_pointers(FLUID_3D *fluid)
        fluid->_fuel_inflow = (float* 
)pointer_from_string(get_grid_pointer("fuel_inflow", "s"));
        if (fluid-> manta_resoution == 2) {return;}
        if (fluid->using_colors) {
-               fluid->_color_r = (float* 
)pointer_from_string(get_grid_pointer("color_r_low", "s"));
-               fluid->_color_g = (float* 
)pointer_from_string(get_grid_pointer("color_g_low", "s"));
-               fluid->_color_b = (float* 
)pointer_from_string(get_grid_pointer("color_b_low", "s"));
+               fluid->_color_r = (float* 
)pointer_from_string(get_grid_pointer("color_r", "s"));
+               fluid->_color_g = (float* 
)pointer_from_string(get_grid_pointer("color_g", "s"));
+               fluid->_color_b = (float* 
)pointer_from_string(get_grid_pointer("color_b", "s"));
        }
        if (fluid->using_heat) {
-               fluid->_heat = (float* 
)pointer_from_string(get_grid_pointer("heat_low", "s"));
+               fluid->_heat = (float* 
)pointer_from_string(get_grid_pointer("heat", "s"));
        }
        if (fluid->using_fire) {
-               fluid->_flame = (float* 
)pointer_from_string(get_grid_pointer("flame_low", "s"));
-               fluid->_fuel = (float* 
)pointer_from_string(get_grid_pointer("fuel_low", "s"));
-               fluid->_react = (float* 
)pointer_from_string(get_grid_pointer("react_low", "s"));
+               fluid->_flame = (float* 
)pointer_from_string(get_grid_pointer("flame", "s"));
+               fluid->_fuel = (float* 
)pointer_from_string(get_grid_pointer("fuel", "s"));
+               fluid->_react = (float* 
)pointer_from_string(get_grid_pointer("react", "s"));
        }
        fluid->_xVelocity = (float* 
)pointer_from_string(get_grid_pointer("x_vel", "s"));
        fluid->_yVelocity = (float* 
)pointer_from_string(get_grid_pointer("y_vel", "s"));
@@ -740,14 +740,14 @@ void Manta_API::update_high_res_pointers(WTURBULENCE *wt)
        cout << "Updating pointers high res" << endl;
        wt->_densityBig = (float* 
)pointer_from_string(get_grid_pointer("xl_density", "xl"));;
        if (wt->using_colors) {
-               wt->_color_rBig = (float* 
)pointer_from_string(get_grid_pointer("color_r_high", "xl"));
-               wt->_color_gBig = (float* 
)pointer_from_string(get_grid_pointer("color_g_high", "xl"));
-               wt->_color_bBig = (float* 
)pointer_from_string(get_grid_pointer("color_b_high", "xl"));
+               wt->_color_rBig = (float* 
)pointer_from_string(get_grid_pointer("xl_color_r", "xl"));
+               wt->_color_gBig = (float* 
)pointer_from_string(get_grid_pointer("xl_color_g", "xl"));
+               wt->_color_bBig = (float* 
)pointer_from_string(get_grid_pointer("xl_color_b", "xl"));
        }
        if (wt->using_fire) {
-               wt->_flameBig = (float* 
)pointer_from_string(get_grid_pointer("flame_high", "xl"));
-               wt->_fuelBig = (float* 
)pointer_from_string(get_grid_pointer("fuel_high", "xl"));
-               wt->_reactBig = (float* 
)pointer_from_string(get_grid_pointer("react_high", "xl"));
+               wt->_flameBig = (float* 
)pointer_from_string(get_grid_pointer("xl_flame", "xl"));
+               wt->_fuelBig = (float* 
)pointer_from_string(get_grid_pointer("xl_fuel", "xl"));
+               wt->_reactBig = (float* 
)pointer_from_string(get_grid_pointer("xl_react", "xl"));
        }
 }
 
diff --git a/intern/smoke/intern/WTURBULENCE.cpp 
b/intern/smoke/intern/WTURBULENCE.cpp
index 758b65b..ff7553a 100644
--- a/intern/smoke/intern/WTURBULENCE.cpp
+++ b/intern/smoke/intern/WTURBULENCE.cpp
@@ -1266,6 +1266,7 @@ WTURBULENCE::WTURBULENCE(int xResSm, int yResSm, int 
zResSm, int amplify, int no
                alloc_base_grids_high +
                noise_high +
                prep_domain_high +
+               flags +
                wavelet_turbulence_noise +
                smoke_step_high;
        std::string final_script = Manta_API::parse_script(setup_script, 
sds->smd);
@@ -1283,30 +1284,30 @@ WTURBULENCE::WTURBULENCE(int xResSm, int yResSm, int 
zResSm, int amplify, int no
                initColors(0.0f, 0.0f, 0.0f);
        }
 
-//     // allocate & init texture coordinates
-//     _tcU = new float[_totalCellsSm];
-//     _tcV = new float[_totalCellsSm];
-//     _tcW = new float[_totalCellsSm];
-//     _tcTemp = new float[_totalCellsSm];
-//     
-//     // map all 
-//     const float dx = 1.0f/(float)(_resSm[0]);
-//     const float dy = 1.0f/(float)(_resSm[1]);
-//     const float dz = 1.0f/(float)(_resSm[2]);
-//     int index = 0;
-//     for (int z = 0; z < _zResSm; z++) 
-//             for (int y = 0; y < _yResSm; y++) 
-//                     for (int x = 0; x < _xResSm; x++, index++)
-//                     {
-//                             _tcU[index] = x*dx;
-//                             _tcV[index] = y*dy;
-//                             _tcW[index] = z*dz;
-//                             _tcTemp[index] = 0.;
-//                     }
-//     
-//     // noise tiles
-//     _noiseTile = new float[noiseTileSize * noiseTileSize * noiseTileSize];
-//     setNoise(noisetype, noisefile_path);
+       // allocate & init texture coordinates
+       _tcU = new float[_totalCellsSm];
+       _tcV = new float[_totalCellsSm];
+       _tcW = new float[_totalCellsSm];
+       _tcTemp = new float[_totalCellsSm];
+       
+       // map all 
+       const float dx = 1.0f/(float)(_resSm[0]);
+       const float dy = 1.0f/(float)(_resSm[1]);
+       const float dz = 1.0f/(float)(_resSm[2]);
+       int index = 0;
+       for (int z = 0; z < _zResSm; z++) 
+               for (int y = 0; y < _yResSm; y++) 
+                       for (int x = 0; x < _xResSm; x++, index++)
+                       {
+                               _tcU[index] = x*dx;
+                               _tcV[index] = y*dy;
+                               _tcW[index] = z*dz;
+                               _tcTemp[index] = 0.;
+                       }
+       
+       // noise tiles
+       _noiseTile = new float[noiseTileSize * noiseTileSize * noiseTileSize];
+       setNoise(noisetype, noisefile_path);
        
        Manta_API::update_high_res_pointers(this);
 }
@@ -1325,19 +1326,19 @@ WTURBULENCE::~WTURBULENCE()
        PyGILState_Release(gilstate);
        
        delete[] _densityBig;
-       delete[] _densityBigOld;
+//     delete[] _densityBigOld;
        if (_flameBig) delete[] _flameBig;
        if (_fuelBig) delete[] _fuelBig;
-       if (_fuelBigOld) delete[] _fuelBigOld;
+//     if (_fuelBigOld) delete[] _fuelBigOld;
        if (_reactBig) delete[] _reactBig;
-       if (_reactBigOld) delete[] _reactBigOld;
+//     if (_reactBigOld) delete[] _reactBigOld;
        
        if (_color_rBig) delete[] _color_rBig;
-       if (_color_rBigOld) delete[] _color_rBigOld;
+//     if (_color_rBigOld) delete[] _color_rBigOld;
        if (_color_gBig) delete[] _color_gBig;
-       if (_color_gBigOld) delete[] _color_gBigOld;
+//     if (_color_gBigOld) delete[] _color_gBigOld;
        if (_color_bBig) delete[] _color_bBig;
-       if (_color_bBigOld) delete[] _color_bBigOld;
+//     if (_color_bBigOld) delete[] _color_bBigOld;
        
        delete[] _tcU;
        delete[] _tcV;
@@ -1380,7 +1381,9 @@ void WTURBULENCE::setNoise(int type, const char 
*noisefile_path)
 {}
 
 void WTURBULENCE::initBlenderRNA(float *strength)
-{}
+{
+       _strength = strength;
+}
 
 void WTURBULENCE::stepTurbulenceReadable(float dt, float* xvel, float* yvel, 
float* zvel, unsigned char *obstacles)
 {
diff --git a/intern/smoke/intern/scenarios/smoke.h 
b/intern/smoke/intern/scenarios/smoke.h
index dceeccf..4c133b3 100644
--- a/intern/smoke/intern/scenarios/smoke.h
+++ b/intern/smoke/intern/scenarios/smoke.h
@@ -16,6 +16,14 @@ using_fire = $USING_FIRE$\n\
 low_flags_updated = False\n\
 using_wavelets = $USE_WAVELETS$\n";
 
+const string uv_setup = "\n\
+# create the array of uv grids\n\
+uv = []\n\
+for i in range(uvs):\n\
+  uvGrid = s.create(VecGrid)\n\
+  uv.append(uvGrid)\n\
+  resetUvGrid(uv[i])\n";
+
 //////////////////////////////////////////////////////////////////////
 // LOW RESOLUTION SETUP
 //////////////////////////////////////////////////////////////////////
@@ -32,7 +40,8 @@ if dim == 2:\n\
 s = FluidSolver(name='main', gridSize=gs, dim=dim)\n\
 s.timestep = $TIMESTEP$\n\
 timings = Timings()\n\
-vorticity = $VORTICITY$\n";
+vorticity = $VORTICITY$\n\
+uvs = $UVS_CNT$\n";
 
 const string alloc_base_grids_low = "\n\
 # prepare grids low\n\
@@ -43,6 +52,7 @@ y_vel = s.create(RealGrid)\n\
 z_vel = s.create(RealGrid)\n\
 density = s.create(LevelsetGrid)\n\
 pressure = s.create(RealGrid)\n\
+energy = s.create(RealGrid)\n\
 forces = s.create(MACGrid)\n\
 inflow_grid = s.create(LevelsetGrid)\n\
 fuel_inflow = s.create(LevelsetGrid)\n";
@@ -76,7 +86,6 @@ if dim == 2:\n\
   xl_gs.z = 1\n\
 xl = Solver(name = 'larger', gridSize = xl_gs)\n\
 xl.timestep = $XL_TIMESTEP$\n\
-uvs = $UVS_CNT$\n\
 wltStrength = $WLT_STR$\n\
 octaves = 0\n\
 if(upres>0):\n\
@@ -109,11 +118,12 @@ xl_flags.initDomain()\n\
 xl_flags.fillGrid()\n";
 
 const string wavelet_turbulence_noise = "\n\
-# wavelet turbulence noise\n\
-xl_wltnoise = xl.create(NoiseField, loadFromFile=True)\n\
-xl_wltnoise.posScale = vec3( int(1.0*xl_gs.x) ) * 0.5\n\
-xl_wltnoise.posScale = xl_wltnoise.posScale * 0.5\n\
-xl_wltnoise.timeAnim = 0.1 \n";
+# wavelet turbulence noise field\n\
+xl_wltnoise = s.create(NoiseField, loadFromFile=True)\n\
+xl_wltnoise.posScale = vec3( int(1.0*gs.x) ) * 0.5\n\
+xl_wltnoise.timeAnim = 0.1\n\
+if(upres>0):\n\
+  xl_wltnoise.posScale = xl_wltnoise.posScale * (1./upres)\n";
 
 //////////////////////////////////////////////////////////////////////
 // ADDITIONAL GRIDS
@@ -121,49 +131,49 @@ xl_wltnoise.timeAnim = 0.1 \n";
 
 const string alloc_colors_low = "\n\
 print('Allocating colors low')\n\
-color_r_low = s.create(RealGrid)\n\
-color_g_low = s.create(RealGrid)\n\
-color_b_low = s.create(RealGrid)\n";
+color_r = s.create(RealGrid)\n\
+color_g = s.create(RealGrid)\n\
+color_b = s.create(RealGrid)\n";
 
 const string alloc_colors_high = "\n\
 print('Allocating colors high')\n\
-color_r_high = xl.create(RealGrid)\n\
-color_g_high = xl.create(RealGrid)\n\
-color_b_high = xl.create(RealGrid)\n";
+xl_color_r = xl.create(RealGrid)\n\
+xl_color_g = xl.create(RealGrid)\n\
+xl_color_b = xl.create(RealGrid)\n";
 
 const string init_colors_low = "\n\
 print('Initializi

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to