[Bf-blender-cvs] [803e5a9] fluid-mantaflow: read blender values in processBurn and cleaned up fire plugin

Sebastián Barschkis noreply at git.blender.org
Thu Jan 28 12:36:38 CET 2016


Commit: 803e5a9adefaef68e8481a6bb042b0ec513b8ed7
Author: Sebastián Barschkis
Date:   Wed Sep 9 14:32:10 2015 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rB803e5a9adefaef68e8481a6bb042b0ec513b8ed7

read blender values in processBurn and cleaned up fire plugin

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

M	intern/smoke/intern/FLUID_3D.cpp
M	intern/smoke/intern/MANTA.cpp
M	intern/smoke/intern/WTURBULENCE.cpp
M	intern/smoke/intern/WTURBULENCE.h
M	intern/smoke/intern/scenarios/smoke.h
M	intern/smoke/intern/smoke_API.cpp
M	source/blender/python/manta_full/source/plugin/fire.cpp
M	source/blender/python/manta_pp/plugin/fire.cpp

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

diff --git a/intern/smoke/intern/FLUID_3D.cpp b/intern/smoke/intern/FLUID_3D.cpp
index dfb18d1..1def80e 100644
--- a/intern/smoke/intern/FLUID_3D.cpp
+++ b/intern/smoke/intern/FLUID_3D.cpp
@@ -783,8 +783,16 @@ void FLUID_3D::processBurn(float *fuel, float *smoke, float *react, float *heat,
 {
 	// Need to make sure that color grids are initialized as they are needed in processBurn
 	initColors(0.0f, 0.0f, 0.0f);
-	
+
 	PyGILState_STATE gilstate = PyGILState_Ensure();
+	stringstream ss;
+	ss << "burning_rate = " << *_burning_rate << endl;
+	ss << "flame_smoke = " << *_flame_smoke << endl;
+	ss << "ignition_temp = " << *_ignition_temp << endl;
+	ss << "max_temp = " << *_max_temp << endl;
+	ss << "dt = " << _dt << endl;
+	ss << "flame_smoke_color = vec3(" << _flame_smoke_color[0] << "," << _flame_smoke_color[1] << "," << _flame_smoke_color[2] << ")" << endl;
+	PyRun_SimpleString(ss.str().c_str());
 	PyRun_SimpleString(fire_process_burn_low.c_str());
 	PyGILState_Release(gilstate);
 	Manta_API::updatePointers(this);
diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index 6697ef0..b99e7fd 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -445,11 +445,9 @@ std::string Manta_API::getRealValue( const std::string& varName, SmokeModifierDa
 	else if (varName == "HRESY")
 		if (is2D){	ss << smd->domain->wt->getResBig()[2];}
 		else{ 		ss << smd->domain->wt->getResBig()[1];}
-
 	else if (varName == "HRESZ")
 		if (is2D){	ss << 1;}
 		else{ 		ss << smd->domain->wt->getResBig()[2];}
-
 	else if (varName == "TIMESTEP")
 		ss << smd->domain->time_scale * 0.1f;
 	else if (varName == "XL_TIMESTEP")
@@ -499,6 +497,22 @@ std::string Manta_API::getRealValue( const std::string& varName, SmokeModifierDa
 		ss << smd->domain->wt->_densityBig;
 	else if (varName == "XL_DENSITY_SIZE")
 		ss << sizeof(float) * smd->domain->wt->_xResBig * smd->domain->wt->_yResBig * smd->domain->wt->_zResBig;
+	else if (varName == "BURNING_RATE")
+		ss << smd->domain->fluid->_burning_rate;
+	else if (varName == "FLAME_SMOKE")
+		ss << smd->domain->fluid->_flame_smoke;
+	else if (varName == "IGNITION_TEMP")
+		ss << smd->domain->fluid->_ignition_temp;
+	else if (varName == "MAX_TEMP")
+		ss << smd->domain->fluid->_max_temp;
+	else if (varName == "DT")
+		ss << smd->domain->fluid->_dt;
+	else if (varName == "FLAME_SMOKE_COLOR_X")
+		ss << smd->domain->fluid->_flame_smoke_color[0];
+	else if (varName == "FLAME_SMOKE_COLOR_Y")
+		ss << smd->domain->fluid->_flame_smoke_color[1];
+	else if (varName == "FLAME_SMOKE_COLOR_Z")
+		ss << smd->domain->fluid->_flame_smoke_color[2];
 	else 
 		cout<< "ERROR: Unknown option:"<< varName <<endl; 
 	return ss.str();
diff --git a/intern/smoke/intern/WTURBULENCE.cpp b/intern/smoke/intern/WTURBULENCE.cpp
index 9a7b276..fbed3d7 100644
--- a/intern/smoke/intern/WTURBULENCE.cpp
+++ b/intern/smoke/intern/WTURBULENCE.cpp
@@ -1250,9 +1250,6 @@ WTURBULENCE::WTURBULENCE(int xResSm, int yResSm, int zResSm, int amplify, int no
 		_densityBigOld[i] = 0.;
 	}
 	
-	/*heat*/
-	initHeat();
-	
 	/* fire */
 	_flameBig = _fuelBig = _fuelBigOld = NULL;
 	_reactBig = _reactBigOld = NULL;
@@ -1324,14 +1321,6 @@ WTURBULENCE::~WTURBULENCE()
 	delete[] _noiseTile;
 }
 
-// Added heat grid as processBurn in smoke.h needs an initialized heat grid
-void WTURBULENCE::initHeat()
-{
-	PyGILState_STATE gilstate = PyGILState_Ensure();
-	PyRun_SimpleString(smoke_init_heat_high.c_str());
-	PyGILState_Release(gilstate);
-}
-
 void WTURBULENCE::initColors(float init_r, float init_g, float init_b)
 {
 	if (!_color_rBig) {
@@ -1417,12 +1406,20 @@ Vec3 WTURBULENCE::WVelocity(Vec3 p)
 Vec3 WTURBULENCE::WVelocityWithJacobian(Vec3 p, float* xUnwarped, float* yUnwarped, float* zUnwarped)
 {return Vec3(0.);}
 
-void WTURBULENCE::processBurn()
+void WTURBULENCE::processBurn(float *burningRate, float *flameSmoke, float *ignitionTemp, float *maxTemp, float dt, float *flameSmokeColor)
 {
 	// Need to make sure that color grids are initialized as they are needed in processBurn
 	initColors(0.0f, 0.0f, 0.0f);
-	
+
 	PyGILState_STATE gilstate = PyGILState_Ensure();
+	stringstream ss;
+	ss << "burning_rate = " << *burningRate << endl;
+	ss << "flame_smoke = " << *flameSmoke << endl;
+	ss << "ignition_temp = " << *ignitionTemp << endl;
+	ss << "max_temp = " << *maxTemp << endl;
+	ss << "dt = " << dt << endl;
+	ss << "flame_smoke_color = vec3(" << flameSmokeColor[0] << "," << flameSmokeColor[1] << "," << flameSmokeColor[2] << ")" << endl;
+	PyRun_SimpleString(ss.str().c_str());
 	PyRun_SimpleString(fire_process_burn_high.c_str());
 	PyGILState_Release(gilstate);
 	Manta_API::updateHighResPointers(this);
diff --git a/intern/smoke/intern/WTURBULENCE.h b/intern/smoke/intern/WTURBULENCE.h
index 2054ca5..ca9a54e 100644
--- a/intern/smoke/intern/WTURBULENCE.h
+++ b/intern/smoke/intern/WTURBULENCE.h
@@ -147,11 +147,8 @@ struct WTURBULENCE
 		void computeEigenvalues(float *_eigMin, float *_eigMax);
 		void decomposeEnergy(float *energy, float *_highFreqEnergy);
 	
-		void processBurn(); // Mantaflow
+		void processBurn(float *burningRate, float *flameSmoke, float *ignitionTemp, float *maxTemp, float dt, float *flameSmokeColor); // Mantaflow
 		void updateFlame(); // Mantaflow
-		void initHeat(); // Mantaflow
-
-
 };
 
 #endif // WTURBULENCE_H
diff --git a/intern/smoke/intern/scenarios/smoke.h b/intern/smoke/intern/scenarios/smoke.h
index 13feb76..ab2c72c 100644
--- a/intern/smoke/intern/scenarios/smoke.h
+++ b/intern/smoke/intern/scenarios/smoke.h
@@ -124,10 +124,6 @@ const string smoke_init_heat_low = "print(\"Initializing heat lowres\")\n\
 heat_low = s.create(RealGrid)\n\
 manta_using_heat = True\n";
 
-const string smoke_init_heat_high = "print(\"Initializing heat highres\")\n\
-heat_high = xl.create(RealGrid)\n\
-manta_using_heat = True\n";
-
 const string smoke_init_fire_low = "print(\"Initializing fire lowres\")\n\
 flame_low = s.create(RealGrid)\n\
 fuel_low = s.create(RealGrid)\n\
@@ -140,6 +136,14 @@ fuel_high = xl.create(RealGrid)\n\
 react_high = xl.create(RealGrid)\n\
 manta_using_fire = True\n";
 
+const string manta_setup_fire_params = "\n\
+burning_rate = $BURNING_RATE$\n\
+flame_smoke = $FLAME_SMOKE$\n\
+ignition_temp = $IGNITION_TEMP$\n\
+max_temp = $MAX_TEMP$\n\
+dt = $DT$\n\
+flame_smoke_color = vec3($FLAME_SMOKE_COLOR_X$, $FLAME_SMOKE_COLOR_Y$, $FLAME_SMOKE_COLOR_Z$)";
+
 const string smoke_del_colors_high = "\n\
 del color_r_high \n\
 del color_g_high \n\
@@ -155,10 +159,10 @@ forces.save(os.path.join('$MANTA_EXPORT_PATH$','forces.uni'))\n\
 print('Grids exported')";
 
 const string fire_process_burn_low = "\n\
-processBurn(fuel=fuel_low, density=density, react=react_low, heat=heat_low, red=color_r_low, green=color_g_low, blue=color_b_low)";
+processBurn(fuel=fuel_low, density=density, react=react_low, red=color_r_low, green=color_g_low, blue=color_b_low, heat=heat_low, burningRate=burning_rate, flameSmoke=flame_smoke, ignitionTemp=ignition_temp, maxTemp=max_temp, dt=dt, flameSmokeColor=flame_smoke_color)";
 
 const string fire_process_burn_high = "\n\
-processBurn(fuel=fuel_high, density=xl_density, react=react_high, heat=heat_high, red=color_r_high, green=color_g_high, blue=color_b_high)";
+processBurn(fuel=fuel_high, density=xl_density, react=react_high, red=color_r_high, green=color_g_high, blue=color_b_high, burningRate=burning_rate, flameSmoke=flame_smoke, ignitionTemp=ignition_temp, maxTemp=max_temp, dt=dt, flameSmokeColor=flame_smoke_color)";
 
 const string fire_update_flame_low = "\n\
 updateFlame(react=react_low, flame=flame_low)";
diff --git a/intern/smoke/intern/smoke_API.cpp b/intern/smoke/intern/smoke_API.cpp
index c22dd8c..3636788 100644
--- a/intern/smoke/intern/smoke_API.cpp
+++ b/intern/smoke/intern/smoke_API.cpp
@@ -117,7 +117,7 @@ extern "C" void smoke_turbulence_step(WTURBULENCE *wt, FLUID_3D *fluid)
 extern "C" void smoke_turbulence_step(WTURBULENCE *wt, FLUID_3D *fluid)
 {
 	if (wt->_fuelBig) {
-		wt->processBurn();
+		wt->processBurn(fluid->_burning_rate, fluid->_flame_smoke, fluid->_ignition_temp, fluid->_max_temp, fluid->_dt, fluid->_flame_smoke_color);
 	}
 	wt->stepTurbulenceFull(fluid->_dt/fluid->_dx, fluid->_xVelocity, fluid->_yVelocity, fluid->_zVelocity, fluid->_obstacles);
 
diff --git a/source/blender/python/manta_full/source/plugin/fire.cpp b/source/blender/python/manta_full/source/plugin/fire.cpp
index 21f85ad..eb0e7f0 100644
--- a/source/blender/python/manta_full/source/plugin/fire.cpp
+++ b/source/blender/python/manta_full/source/plugin/fire.cpp
@@ -11,59 +11,34 @@
  *
  ******************************************************************************/
 
-#include <stdio.h>
-#include <float.h>
-#include "vectorbase.h"
+#include "general.h"
 #include "grid.h"
-#include "levelset.h"
+#include "vectorbase.h"
 
 using namespace std;
 
 namespace Manta {
-	
-// default domain values
-const Real burningRate = 0.75;
-const Real flameSmoke = 1.0;
-const Real flameVorticity = 0.5;
-const Real ignitionPoint = 1.25;
-const Real tempMax = 1.75;
-const Vec3 flameSmokeColor = Vec3(0.7f, 0.7f, 0.7f);
-
-// default flow values
-const Real flowDensity = 1.0;
-const Real flowFuelAmount = 1.0;
-const Real flowTemp = 1.0;
-const Real flowVolumeDensity = 0.0;
-const Real flowSurfaceDistance = 1.5;
-const Vec3 flowColor = Vec3(0.7f, 0.7f, 0.7f);
-	
-// other default values
-const Real dtDefault = 0.1;
-const Real fps = 24.0;
-const int absoluteFlow = 1;
-const bool withSmoke = true;
-const bool withFire = true;
 
 KERNEL (bnd=1)
 void KnProcessBurn(Grid<Real>& fuel,
 				   Grid<Real>& density,
 				   Grid<Real>& react,
-				   Grid<Real>& heat,
 				   Grid<Real>& red,
 				   Grid<Real>& green,
 				   Grid<Real>& blue,
-				   float burningRate,
-				   float flameSmoke,
-				   float ignitionPoint,
-				   float tempMax,
-				   float dt,
+				   Grid<Real>* heat,
+				   Real burningRate,
+				   Real flameSmoke,
+				   Real ignitionTemp,
+				   Real maxTemp,
+				   Real dt,
 				   Vec3 flameSmokeColor)
 {
 	// Save initial values
-	float origFuel = fuel(i,j,k);
-	float origSmoke = density(i,j,k);
-	float smokeEmit = 0.0f;
-	float flame = 0.0f;
+	Real origFuel = fuel(i,j,k);
+	Real origSmoke = density(i,j,k);
+	Real s

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list