[Bf-blender-cvs] [6ed2fe0229c] fluid-mantaflow: added settings for snd particle type vector
Sebastián Barschkis
noreply at git.blender.org
Sat Jul 15 02:20:16 CEST 2017
Commit: 6ed2fe0229c12d2b72f80ab9dc96d441d6eb40cb
Author: Sebastián Barschkis
Date: Wed Jul 12 22:09:21 2017 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rB6ed2fe0229c12d2b72f80ab9dc96d441d6eb40cb
added settings for snd particle type vector
this extra vector stores snd particle types: drop, float, bubble, tracer
===================================================================
M intern/mantaflow/extern/manta_fluid_API.h
M intern/mantaflow/intern/FLUID.cpp
M intern/mantaflow/intern/FLUID.h
M intern/mantaflow/intern/manta_fluid_API.cpp
M intern/mantaflow/intern/strings/liquid_script.h
M release/scripts/startup/bl_ui/properties_physics_smoke.py
M source/blender/blenkernel/intern/dynamicpaint.c
M source/blender/blenkernel/intern/particle_system.c
M source/blender/blenkernel/intern/pointcache.c
===================================================================
diff --git a/intern/mantaflow/extern/manta_fluid_API.h b/intern/mantaflow/extern/manta_fluid_API.h
index 812634a9f94..1365d278f80 100644
--- a/intern/mantaflow/extern/manta_fluid_API.h
+++ b/intern/mantaflow/extern/manta_fluid_API.h
@@ -45,7 +45,7 @@ void smoke_step(struct FLUID *smoke, int framenr);
void smoke_dissolve(struct FLUID *smoke, int speed, int log);
void smoke_dissolve_wavelet(struct FLUID *smoke, int speed, int log);
void smoke_export(struct FLUID *smoke, float *dt, float *dx, float **dens, float **react, float **flame, float **fuel, float **heat, float **vx, float **vy, float **vz, float **r, float **g, float **b, int **obstacles);
-void liquid_export(struct FLUID *liquid, float **phi, float **pp, float **pvel, float **ppSnd, float **pvelSnd);
+void liquid_export(struct FLUID *liquid, float **phi, float **pp, float **pvel, float **ppSnd, float **pvelSnd, int **ptypeSnd);
void smoke_turbulence_export(struct FLUID *smoke, float **dens, float **react, float **flame, float **fuel, float **r, float **g, float **b , float **tcu, float **tcv, float **tcw, float **tcu2, float **tcv2, float **tcw2);
float *smoke_get_density(struct FLUID *smoke);
float *smoke_get_fuel(struct FLUID *smoke);
@@ -143,12 +143,14 @@ float liquid_get_flip_particle_velocity_z_at(struct FLUID *liquid, int i);
float liquid_get_snd_particle_velocity_x_at(struct FLUID *liquid, int i);
float liquid_get_snd_particle_velocity_y_at(struct FLUID *liquid, int i);
float liquid_get_snd_particle_velocity_z_at(struct FLUID *liquid, int i);
+int liquid_get_snd_particle_type_at(struct FLUID *liquid, int i);
void liquid_set_flip_particle_data(struct FLUID* liquid, float* buffer, int numParts);
void liquid_set_snd_particle_data(struct FLUID* liquid, float* buffer, int numParts);
void liquid_set_flip_particle_velocity(struct FLUID* liquid, float* buffer, int numParts);
void liquid_set_snd_particle_velocity(struct FLUID* liquid, float* buffer, int numParts);
+void liquid_set_snd_particle_type(struct FLUID* liquid, int* buffer, int numParts);
// Fluids in general
int *fluid_get_num_obstacle(struct FLUID *fluid);
diff --git a/intern/mantaflow/intern/FLUID.cpp b/intern/mantaflow/intern/FLUID.cpp
index 86cac7b52d3..9d1c14a37e1 100644
--- a/intern/mantaflow/intern/FLUID.cpp
+++ b/intern/mantaflow/intern/FLUID.cpp
@@ -131,6 +131,7 @@ FLUID::FLUID(int *res, SmokeModifierData *smd) : mCurrentID(++solverID)
mFlipParticleVelocity = NULL;
mSndParticleData = NULL;
mSndParticleVelocity = NULL;
+ mSndParticleType = NULL;
// Only start Mantaflow once. No need to start whenever new FLUID objected is allocated
if (!mantaInitialized)
@@ -488,6 +489,7 @@ FLUID::~FLUID()
mFlipParticleVelocity = NULL;
mSndParticleData = NULL;
mSndParticleVelocity = NULL;
+ mSndParticleType = NULL;
// Reset flags
mUsingHeat = false;
@@ -1094,9 +1096,10 @@ void FLUID::updatePointers()
mPhi = (float*) getDataPointer("phi" + solver_ext, solver);
mFlipParticleData = (std::vector<pData>*) getDataPointer("pp" + solver_ext, solver);
- mFlipParticleVelocity = (std::vector<pVel>*) getDataPointer("pVel" + parts_ext, parts);
+ mFlipParticleVelocity = (std::vector<pVel>*) getDataPointer("pVel" + parts_ext, parts);
mSndParticleData = (std::vector<pData>*) getDataPointer("ppSnd" + solver_ext, solver);
- mSndParticleVelocity = (std::vector<pVel>*) getDataPointer("pVelSnd" + parts_ext, parts);
+ mSndParticleVelocity = (std::vector<pVel>*) getDataPointer("pVelSnd" + parts_ext, parts);
+ mSndParticleType = (std::vector<int>*) getDataPointer("pTypeSnd" + parts_ext, parts);
}
// Smoke
@@ -1214,6 +1217,16 @@ void FLUID::setSndParticleVelocity(float* buffer, int numParts)
}
}
+void FLUID::setSndParticleType(int* buffer, int numParts)
+{
+ mSndParticleType->resize(numParts);
+ int* bufferPType = buffer;
+ for (std::vector<int>::iterator it = mSndParticleType->begin(); it != mSndParticleType->end(); ++it) {
+ *it = *bufferPType;
+ bufferPType++;
+ }
+}
+
void FLUID::saveMesh(char *filename)
{
std::string path(filename);
diff --git a/intern/mantaflow/intern/FLUID.h b/intern/mantaflow/intern/FLUID.h
index d6d08be28d8..0b3d4b262bb 100644
--- a/intern/mantaflow/intern/FLUID.h
+++ b/intern/mantaflow/intern/FLUID.h
@@ -177,11 +177,14 @@ public:
inline float getSndParticleVelocityYAt(int i) { return (mSndParticleVelocity) ? mSndParticleVelocity->at(i).pos[1] : 0.f; }
inline float getSndParticleVelocityZAt(int i) { return (mSndParticleVelocity) ? mSndParticleVelocity->at(i).pos[2] : 0.f; }
+ inline int getSndParticleTypeAt(int i) { return (mSndParticleType) ? mSndParticleType->at(i) : -1; }
+
inline float* getFlipParticleData() { return (mFlipParticleData) ? (float*) &mFlipParticleData->front() : NULL; }
inline float* getSndParticleData() { return (mSndParticleData) ? (float*) &mSndParticleData->front() : NULL; }
inline float* getFlipParticleVelocity() { return (mFlipParticleVelocity) ? (float*) &mFlipParticleVelocity->front() : NULL; }
- inline float* getSndParticleVelocity() { return (mSndParticleVelocity) ? (float*) &mSndParticleVelocity->front() : NULL; }
+ inline float* getSndParticleVelocity() { return (mSndParticleVelocity) ? (float*) &mSndParticleVelocity->front() : NULL; }
+ inline int* getSndParticleType() { return (mSndParticleType) ? (int*) &mSndParticleType->front() : NULL; }
inline int getNumFlipParticles() { return (mFlipParticleData) ? mFlipParticleData->size() : 0; }
inline int getNumSndParticles() { return (mSndParticleData) ? mSndParticleData->size() : 0; }
@@ -194,6 +197,7 @@ public:
void setFlipParticleVelocity(float* buffer, int numParts);
void setSndParticleVelocity(float* buffer, int numParts);
+ void setSndParticleType(int* buffer, int numParts);
private:
// simulation constants
@@ -286,6 +290,7 @@ private:
std::vector<pData>* mSndParticleData;
std::vector<pVel>* mSndParticleVelocity;
+ std::vector<int>* mSndParticleType;
void initDomain(struct SmokeModifierData *smd);
void initDomainHigh(struct SmokeModifierData *smd);
diff --git a/intern/mantaflow/intern/manta_fluid_API.cpp b/intern/mantaflow/intern/manta_fluid_API.cpp
index 0e6b0619f77..c075851aea9 100644
--- a/intern/mantaflow/intern/manta_fluid_API.cpp
+++ b/intern/mantaflow/intern/manta_fluid_API.cpp
@@ -160,7 +160,7 @@ extern "C" void smoke_export(FLUID *smoke, float *dt, float *dx, float **dens, f
*dx = 1; //dummy value, not needed for smoke
}
-extern "C" void liquid_export(FLUID *liquid, float **phi, float **pp, float **pvel, float **ppSnd, float **pvelSnd)
+extern "C" void liquid_export(FLUID *liquid, float **phi, float **pp, float **pvel, float **ppSnd, float **pvelSnd, int **ptypeSnd)
{
if (phi)
*phi = liquid->getPhi();
@@ -172,6 +172,8 @@ extern "C" void liquid_export(FLUID *liquid, float **phi, float **pp, float **pv
*ppSnd = liquid->getSndParticleData();
if (pvelSnd)
*pvelSnd = liquid->getSndParticleVelocity();
+ if (ptypeSnd)
+ *ptypeSnd = liquid->getSndParticleType();
}
extern "C" void smoke_turbulence_export(FLUID *smoke, float **dens, float **react, float **flame, float **fuel,
@@ -719,6 +721,11 @@ extern "C" float liquid_get_snd_particle_velocity_z_at(FLUID *liquid, int i)
return liquid->getSndParticleVelocityZAt(i);
}
+extern "C" int liquid_get_snd_particle_type_at(FLUID *liquid, int i)
+{
+ return liquid->getSndParticleTypeAt(i);
+}
+
extern "C" void liquid_update_mesh_data(FLUID *liquid, char* filename)
{
liquid->updateMeshData(filename);
@@ -751,6 +758,11 @@ extern "C" void liquid_set_snd_particle_velocity(FLUID* liquid, float* buffer, i
liquid->setSndParticleVelocity(buffer, numParts);
}
+extern "C" void liquid_set_snd_particle_type(FLUID* liquid, int* buffer, int numParts)
+{
+ liquid->setSndParticleType(buffer, numParts);
+}
+
extern "C" float *fluid_get_inflow(FLUID* fluid)
{
return fluid->getInflow();
diff --git a/intern/mantaflow/intern/strings/liquid_script.h b/intern/mantaflow/intern/strings/liquid_script.h
index 15f1b40db44..69c0f3b26a8 100644
--- a/intern/mantaflow/intern/strings/liquid_script.h
+++ b/intern/mantaflow/intern/strings/liquid_script.h
@@ -101,6 +101,7 @@ pp_s$ID$ = s$ID$.create(BasicParticleSystem)\n\
ppSnd_s$ID$ = s$ID$.create(BasicParticleSystem)\n\
pVel_pp$ID$ = pp_s$ID$.create(PdataVec3)\n\
pVelSnd_pp$ID$ = ppSnd_s$ID$.create(PdataVec3)\n\
+pTypeSnd_pp$ID$ = ppSnd_s$ID$.create(PdataInt)\n\
mesh_s$ID$ = s$ID$.create(Mesh)\n\
\n\
# Acceleration data for particle nbs\n\
@@ -412,6 +413,7 @@ if 'pp_s$ID$' in globals() : del pp_s$ID$\n\
if 'ppSnd_s$ID$' in globals() : del ppSnd_s$ID$\n\
if 'pVel_pp$ID$' in globals() : del pVel_pp$ID$\n\
if 'pVelSnd_pp$ID$' in globals() : del pVelSnd_pp$ID$\n\
+if 'pTypeSnd_pp$ID$' in globals() : del pTypeSnd_pp$ID$\n\
if 'mesh_s$ID$' in globals() : del mesh_s$ID$\n\
if 'pindex_s$ID$' in globals() : del pindex_s$ID$\n\
if 'gpi_s$ID$' in globals() : del gpi_s$ID$\n\
diff --git a/release/scripts/startup/bl_ui/properties_physics_smoke.py b/release/scripts/startup/bl_ui/properties_physics_smoke.py
index 313a0c3c436..28182fb7bd9 100644
--- a/release/scripts/startup/bl_ui/properties_physics_smoke.py
+++ b/release/scripts/startup/bl_ui/properties_physics_smoke.py
@@ -362,7 +362,7 @@ class PHYSICS_PT_smoke_particles(PhysicButtonsPanel, Panel):
col.enabled = not domain.point_cache.is_baked
col.prop(domain, "use_flip_particles", text="FLIP")
col.prop(domain, "use_drop_particles", text="Drop")
- #col.prop(domain, "use_float_particles", text="Floats")
+ col.prop(domain, "use_float_particles", text="Float")
#col.prop(domain, "use_tracer_particles", text="Tracer")
col = split.column()
diff --git a/source/blender/blenkernel/intern/dynamicpaint.c b/source/blender/blenkernel/intern/dynamicpaint.c
index 98470c92b88..bb298a13cd4 100644
--- a/source/blender/blenkernel/intern/dynamicpaint.c
+++ b/source/blender/blenkernel/intern/dynamicpaint.c
@@ -5847,7 +5847,7 @@ static int dynamicPaint_doStep(Scene *scene, Object *ob, DynamicPaintSurface *su
/* Particl
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list