[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