[Bf-blender-cvs] [4cc7265] fluid-mantaflow: changed new manta smoke api a bit

Sebastián Barschkis noreply at git.blender.org
Thu Mar 17 19:10:54 CET 2016


Commit: 4cc72652c4dd83c8c1a3990a3d6cba84b43175e2
Author: Sebastián Barschkis
Date:   Sat Mar 12 12:51:11 2016 +0100
Branches: fluid-mantaflow
https://developer.blender.org/rB4cc72652c4dd83c8c1a3990a3d6cba84b43175e2

changed new manta smoke api a bit

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

M	intern/mantaflow/extern/manta_smoke_API.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 e86fa95..feebf87 100644
--- a/intern/mantaflow/extern/manta_smoke_API.h
+++ b/intern/mantaflow/extern/manta_smoke_API.h
@@ -28,25 +28,26 @@
  */
 
 
-#ifndef SMOKE_API_H_
-#define SMOKE_API_H_
+#ifndef MANTA_SMOKE_API_H_
+#define MANTA_SMOKE_API_H_
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+struct MANTA;
+
 int *smoke_get_manta_flags(struct MANTA *manta);
-struct MANTA *smoke_init(int *res, float dx, float dtdef, int use_heat, int use_fire, int use_colors, struct SmokeModifierData *smd);
+struct MANTA *smoke_init(int *res, struct SmokeModifierData *smd);
 void smoke_free(struct MANTA *manta);
 size_t smoke_get_index(int x, int max_x, int y, int max_y, int z /*, int max_z */);
 size_t smoke_get_index2d(int x, int max_x, int y /*, int max_y, int z, int max_z */);
-void smoke_manta_export(SmokeModifierData *smd);
-void smoke_step(struct MANTA *manta, float gravity[3], float dtSubdiv);
-void smoke_initBlenderRNA(SmokeDomainSettings *sds);
-static void data_dissolve(float *density, float *heat, float *r, float *g, float *b, int total_cells, int speed, int log);
+void smoke_manta_export(struct SmokeModifierData *smd);
+void smoke_step(struct MANTA *manta, SmokeModifierData *smd);
 void smoke_dissolve(struct MANTA *manta, int speed, int log);
-void smoke_export(struct MANTA *manta, float *dt, float *dx, float **dens, float **react, float **flame, float **fuel, float **heat, 
-							 float **manta_inflow, float **vx, float **vy, float **vz, float **r, float **g, float **b, unsigned char **obstacles);
+void smoke_dissolve_wavelet(struct MANTA *manta, int speed, int log);
+void smoke_export(struct MANTA *manta, float *dt, float *dx, float **dens, float **react, float **flame, float **fuel, float **heat, float **manta_inflow, float **vx, float **vy, float **vz, float **r, float **g, float **b, unsigned char **obstacles);
+void smoke_turbulence_export(struct MANTA *manta, float **dens, float **react, float **flame, float **fuel, float **r, float **g, float **b , float **tcu, float **tcv, float **tcw);
 float *smoke_get_density(struct MANTA *manta);
 float *smoke_get_fuel(struct MANTA *manta);
 float *smoke_get_react(struct MANTA *manta);
@@ -55,36 +56,36 @@ float *smoke_get_velocity_x(struct MANTA *manta);
 float *smoke_get_velocity_y(struct MANTA *manta);
 float *smoke_get_velocity_z(struct MANTA *manta);
 float *smoke_get_force_x(struct MANTA *manta);
-float *smoke_get_force_y(struct MANTA *manta)
+float *smoke_get_force_y(struct MANTA *manta);
 float *smoke_get_force_z(struct MANTA *manta);
 float *smoke_get_flame(struct MANTA *manta);
 float *smoke_get_color_r(struct MANTA *manta);
 float *smoke_get_color_g(struct MANTA *manta);
 float *smoke_get_color_b(struct MANTA *manta);
 void smoke_get_rgba(struct MANTA *manta, float *data, int sequential);
-void smoke_high_get_rgba(struct MANTA *manta, float *data, int sequential);
+void smoke_turbulence_get_rgba(struct MANTA *manta, float *data, int sequential);
 void smoke_get_rgba_from_density(struct MANTA *manta, float color[3], float *data, int sequential);
-void smoke_high_get_rgba_from_density(struct MANTA *manta, float color[3], float *data, int sequential);
-float *smoke_high_get_density(struct MANTA *manta);
-float *smoke_high_get_fuel(struct MANTA *manta);
-float *smoke_high_get_react(struct MANTA *manta);
-float *smoke_high_get_color_r(struct MANTA *manta);
-float *smoke_high_get_color_g(struct MANTA *manta);
-float *smoke_high_get_color_b(struct MANTA *manta);
-float *smoke_high_get_flame(struct MANTA *manta);
-void smoke_high_get_res(struct MANTA *manta, int *res);
-int smoke_high_get_cells(struct MANTA *manta);
+void smoke_turbulence_get_rgba_from_density(struct MANTA *manta, float color[3], float *data, int sequential);
+float *smoke_turbulence_get_density(struct MANTA *manta);
+float *smoke_turbulence_get_fuel(struct MANTA *manta);
+float *smoke_turbulence_get_react(struct MANTA *manta);
+float *smoke_turbulence_get_color_r(struct MANTA *manta);
+float *smoke_turbulence_get_color_g(struct MANTA *manta);
+float *smoke_turbulence_get_color_b(struct MANTA *manta);
+float *smoke_turbulence_get_flame(struct MANTA *manta);
+void smoke_turbulence_get_res(struct MANTA *manta, int *res);
+int smoke_turbulence_get_cells(struct MANTA *manta);
 unsigned char *smoke_get_obstacle(struct MANTA *manta);
 void smoke_get_ob_velocity(struct MANTA *manta, float **x, float **y, float **z);
 void flame_get_spectrum(unsigned char *spec, int width, float t1, float t2);
 int smoke_has_heat(struct MANTA *manta);
 int smoke_has_fuel(struct MANTA *manta);
 int smoke_has_colors(struct MANTA *manta);
-int smoke_high_has_fuel(struct MANTA *manta);
-int smoke_high_has_colors(struct MANTA *manta);
-void smoke_ensure_heat(struct MANTA *manta);
-void smoke_ensure_fire(struct MANTA *manta);
-void smoke_ensure_colors(struct MANTA *manta, float init_r, float init_g, float init_b);
+int smoke_turbulence_has_fuel(struct MANTA *manta);
+int smoke_turbulence_has_colors(struct MANTA *manta);
+void smoke_ensure_heat(struct MANTA *manta, struct SmokeModifierData *smd);
+void smoke_ensure_fire(struct MANTA *manta, struct SmokeModifierData *smd);
+void smoke_ensure_colors(struct MANTA *manta, struct SmokeModifierData *smd);
 float *smoke_get_inflow_grid(struct MANTA *manta);
 float *smoke_get_fuel_inflow(struct MANTA *manta);
 
@@ -92,4 +93,4 @@ float *smoke_get_fuel_inflow(struct MANTA *manta);
 }
 #endif
 
-#endif /* SMOKE_API_H_ */
+#endif /* MANTA_SMOKE_API_H_ */
diff --git a/intern/mantaflow/intern/manta_smoke_API.cpp b/intern/mantaflow/intern/manta_smoke_API.cpp
index 214bc35..f19119b 100644
--- a/intern/mantaflow/intern/manta_smoke_API.cpp
+++ b/intern/mantaflow/intern/manta_smoke_API.cpp
@@ -27,22 +27,21 @@
  *  \ingroup mantaflow
  */
 
+#include "MANTA.h"
 #include "spectrum.h"
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
-#include "MANTA.h"
-#include "vectorbase.h" /* mantaflow */
-#include "smoke_API.h"  /* to ensure valid prototypes */
+#include "manta_smoke_API.h"
 
 extern "C" int *smoke_get_manta_flags(struct MANTA *manta) {
 	return manta->_manta_flags;
 }
 
-extern "C" MANTA *smoke_init(int *res, float dx, float dtdef, int use_heat, int use_fire, int use_colors, struct SmokeModifierData *smd)
+extern "C" MANTA *smoke_init(int *res, struct SmokeModifierData *smd)
 {
-	MANTA *manta = new MANTA(res, dx, dtdef, use_heat, use_fire, use_colors, smd);
+	MANTA *manta = new MANTA(res, smd);
 	return manta;
 }
 
@@ -65,18 +64,14 @@ extern "C" size_t smoke_get_index2d(int x, int max_x, int y /*, int max_y, int z
 extern "C" void smoke_manta_export(SmokeModifierData *smd)
 {
 	if (!smd) return;
-	MANTA::manta_export_script(smd);
-	MANTA::manta_export_grids(smd);
-}
-
-extern "C" void smoke_step(MANTA *manta, float gravity[3], float dtSubdiv)
-{
-	manta->step();
+	MANTA *manta = smd->domain->fluid;
+	manta->export_script(smd);
+	manta->export_grids(smd);
 }
 
-extern "C" void smoke_initBlenderRNA(SmokeDomainSettings *sds)
+extern "C" void smoke_step(MANTA *manta, SmokeModifierData *smd)
 {
-	manta->initBlenderRNA(sds);
+	manta->step(smd);
 }
 
 static void data_dissolve(float *density, float *heat, float *r, float *g, float *b, int total_cells, int speed, int log)
@@ -139,6 +134,11 @@ extern "C" void smoke_dissolve(MANTA *manta, int speed, int log)
 	data_dissolve(manta->_density, manta->_heat, manta->_color_r, manta->_color_g, manta->_color_b, manta->_totalCells, speed, log);
 }
 
+extern "C" void smoke_dissolve_wavelet(MANTA *manta, int speed, int log)
+{
+	data_dissolve(manta->_densityBig, 0, manta->_color_rBig, manta->_color_gBig, manta->_color_bBig, manta->_totalCellsBig, speed, log);
+}
+
 extern "C" void smoke_export(MANTA *manta, float *dt, float *dx, float **dens, float **react, float **flame, float **fuel, float **heat, 
 							 float **manta_inflow, float **vx, float **vy, float **vz, float **r, float **g, float **b, unsigned char **obstacles)
 {
@@ -163,8 +163,32 @@ extern "C" void smoke_export(MANTA *manta, float *dt, float *dx, float **dens, f
 	if(b)
 		*b = manta->_color_b;
 	*obstacles = manta->_obstacles;
-	*dt = manta->_dt;
-	*dx = manta->_dx;
+	*dt = 1; //dummy value, not here needed for manta
+	*dx = 1; //dummy value, not here needed for manta
+}
+
+extern "C" void smoke_turbulence_export(MANTA *manta, float **dens, float **react, float **flame, float **fuel,
+                                        float **r, float **g, float **b , float **tcu, float **tcv, float **tcw)
+{
+	if (!manta && !manta->_using_highres)
+		return;
+
+	*dens = manta->_densityBig;
+	if(fuel)
+		*fuel = manta->_fuelBig;
+	if(react)
+		*react = manta->_reactBig;
+	if(flame)
+		*flame = manta->_flameBig;
+	if(r)
+		*r = manta->_color_rBig;
+	if(g)
+		*g = manta->_color_gBig;
+	if(b)
+		*b = manta->_color_bBig;
+	*tcu = manta->_tcU;
+	*tcv = manta->_tcV;
+	*tcw = manta->_tcW;
 }
 
 extern "C" float *smoke_get_density(MANTA *manta)
@@ -268,7 +292,7 @@ extern "C" void smoke_get_rgba(MANTA *manta, float *data, int sequential)
 	get_rgba(manta->_color_r, manta->_color_g, manta->_color_b, manta->_density, manta->_totalCells, data, sequential);
 }
 
-extern "C" void smoke_high_get_rgba(MANTA *manta, float *data, int sequential)
+extern "C" void smoke_turbulence_get_rgba(MANTA *manta, float *data, int sequential)
 {
 	get_rgba(manta->_color_rBig, manta->_color_gBig, manta->_color_bBig, manta->_densityBig, manta->_totalCellsBig, data, sequential);
 }
@@ -305,49 +329,49 @@ extern "C" void smoke_get_rgba_from_density(MANTA *manta, float color[3], float
 	get_rgba_from_density(color, manta->_density, manta->_totalCells, data, sequential);
 }
 
-extern "C" void smoke_high_get_rgba_from_density(MANTA *manta, float color[3], float *data, int sequential)
+extern "C" void smoke_turbulence_get_rgba_from_density(MANTA *manta, float color[3], float *data, int sequential)
 {
 	get_rgba_from_density(color, manta->_densityBig, manta->_totalCellsBig, data, sequential);
 }
 
-extern "C" float *smoke_high_get_density(MANTA *manta)
+extern "C" float *smoke_turbulence_get_density(MANTA *manta)
 {
-	return manta ? manta->getDensityBig() : NULL;
+	

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list