[Bf-blender-cvs] [e506b45] fluid-mantaflow: liquid grid pointer exchange functions (lets blender write the inflow to the mantaflow grid)

Sebastián Barschkis noreply at git.blender.org
Mon May 23 23:46:07 CEST 2016


Commit: e506b450e008422252c851086a0d0c5df926238a
Author: Sebastián Barschkis
Date:   Sat May 21 02:17:50 2016 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rBe506b450e008422252c851086a0d0c5df926238a

liquid grid pointer exchange functions (lets blender write the inflow to the mantaflow grid)

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

M	intern/mantaflow/extern/manta_smoke_API.h
M	intern/mantaflow/intern/SMOKE.cpp
M	intern/mantaflow/intern/SMOKE.h
M	intern/mantaflow/intern/manta_smoke_API.cpp

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

diff --git a/intern/mantaflow/extern/manta_smoke_API.h b/intern/mantaflow/extern/manta_smoke_API.h
index e28c9eb..eef9ef2 100644
--- a/intern/mantaflow/extern/manta_smoke_API.h
+++ b/intern/mantaflow/extern/manta_smoke_API.h
@@ -88,6 +88,8 @@ void smoke_ensure_colors(struct SMOKE *smoke, struct SmokeModifierData *smd);
 float *smoke_get_inflow_grid(struct SMOKE *smoke);
 float *smoke_get_fuel_inflow(struct SMOKE *smoke);
 
+float *liquid_get_phi(struct SMOKE *liquid);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/intern/mantaflow/intern/SMOKE.cpp b/intern/mantaflow/intern/SMOKE.cpp
index 3d0e73f..2ffe341 100644
--- a/intern/mantaflow/intern/SMOKE.cpp
+++ b/intern/mantaflow/intern/SMOKE.cpp
@@ -109,12 +109,22 @@ SMOKE::SMOKE(int *res, SmokeModifierData *smd)
 	mTextureU2      = NULL;
 	mTextureV2      = NULL;
 	mTextureW2      = NULL;
+	
+	// Liquids
+	mPhi            = NULL;
 
 	// Only start Mantaflow once. No need to start whenever new SMOKE objected is allocated
 	if (!mantaInitialized)
 		startMantaflow();
 	
 	// Initialize Mantaflow variables in Python
+	// Liquid
+	if (mUsingLiquid) {
+		initLiquid(smd);
+		updatePointers(smd);
+		return;
+	}
+	
 	// Smoke
 	if (mUsingSmoke) {
 		initSetup(smd);
@@ -285,7 +295,13 @@ SMOKE::~SMOKE()
 
 	// Destruction in Python
 	mCommands.clear();
-
+	
+	// Liquid
+	if (mUsingLiquid) {
+		mCommands.push_back(del_liquid_grids);
+		mCommands.push_back(del_liquid_vars);
+	}
+	
 	// Smoke
 	if (mUsingSmoke) {
 		mCommands.push_back(del_base_grids_low);
@@ -351,6 +367,9 @@ SMOKE::~SMOKE()
 		mTextureW2      = NULL;
 	}
 	
+	// Liquid
+	mPhi = NULL;
+	
 	// Reset flags
 	mUsingHeat    = false;
 	mUsingFire    = false;
@@ -648,6 +667,10 @@ void SMOKE::updatePointers(SmokeModifierData *smd)
 {
 	std::cout << "Updating pointers low res" << std::endl;
 
+	if (mUsingLiquid) {
+		mPhi        = (float*)         getGridPointer("phi",         "s");
+	}
+	
 	// Smoke
 	if (mUsingSmoke) {
 		mDensity        = (float*)         getGridPointer("density",     "s");
diff --git a/intern/mantaflow/intern/SMOKE.h b/intern/mantaflow/intern/SMOKE.h
index 40917fd..2487c67 100644
--- a/intern/mantaflow/intern/SMOKE.h
+++ b/intern/mantaflow/intern/SMOKE.h
@@ -106,6 +106,8 @@ public:
 	inline float* getTextureU2() { return mTextureU2; }
 	inline float* getTextureV2() { return mTextureV2; }
 	inline float* getTextureW2() { return mTextureW2; }
+	
+	inline float* getPhi() { return mPhi; }
 
 	static bool mantaInitialized;
 
@@ -172,6 +174,9 @@ private:
 	float* mTextureV2;
 	float* mTextureW2;
 	
+	// Liquids
+	float* mPhi;
+	
 	void initSetup(struct SmokeModifierData *smd);
 	void initSetupHigh(struct SmokeModifierData *smd);
 	void initLiquid(SmokeModifierData *smd);
diff --git a/intern/mantaflow/intern/manta_smoke_API.cpp b/intern/mantaflow/intern/manta_smoke_API.cpp
index cd4f7b4..c356aa4 100644
--- a/intern/mantaflow/intern/manta_smoke_API.cpp
+++ b/intern/mantaflow/intern/manta_smoke_API.cpp
@@ -478,3 +478,8 @@ extern "C" float *smoke_get_fuel_inflow(SMOKE *smoke)
 {
 	return smoke->getFuelInflow();
 }
+
+extern "C" float *liquid_get_phi(SMOKE *liquid)
+{
+	return liquid->getPhi();
+}




More information about the Bf-blender-cvs mailing list