Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/mantaflow')
-rw-r--r--intern/mantaflow/extern/manta_fluid_API.h4
-rw-r--r--intern/mantaflow/intern/MANTA_main.cpp8
-rw-r--r--intern/mantaflow/intern/MANTA_main.h8
-rw-r--r--intern/mantaflow/intern/manta_fluid_API.cpp4
-rw-r--r--intern/mantaflow/intern/strings/fluid_script.h16
-rw-r--r--intern/mantaflow/intern/strings/smoke_script.h7
6 files changed, 31 insertions, 16 deletions
diff --git a/intern/mantaflow/extern/manta_fluid_API.h b/intern/mantaflow/extern/manta_fluid_API.h
index aff3a54501c..691a98f9063 100644
--- a/intern/mantaflow/extern/manta_fluid_API.h
+++ b/intern/mantaflow/extern/manta_fluid_API.h
@@ -85,8 +85,8 @@ float *manta_get_force_x(struct MANTA *fluid);
float *manta_get_force_y(struct MANTA *fluid);
float *manta_get_force_z(struct MANTA *fluid);
float *manta_get_phiguide_in(struct MANTA *fluid);
-int *manta_get_num_obstacle(struct MANTA *fluid);
-int *manta_get_num_guide(struct MANTA *fluid);
+float *manta_get_num_obstacle(struct MANTA *fluid);
+float *manta_get_num_guide(struct MANTA *fluid);
int manta_get_res_x(struct MANTA *fluid);
int manta_get_res_y(struct MANTA *fluid);
int manta_get_res_z(struct MANTA *fluid);
diff --git a/intern/mantaflow/intern/MANTA_main.cpp b/intern/mantaflow/intern/MANTA_main.cpp
index 52d40407e0d..fc309c76b30 100644
--- a/intern/mantaflow/intern/MANTA_main.cpp
+++ b/intern/mantaflow/intern/MANTA_main.cpp
@@ -2522,10 +2522,6 @@ void MANTA::updatePointers()
std::vector<std::tuple<int **, std::string, std::string, bool>> mantaIntObjects;
mantaIntObjects.push_back(std::make_tuple(&mObstacle, "flags" + solver_ext, func, true));
- mantaIntObjects.push_back(
- std::make_tuple(&mNumObstacle, "numObs" + solver_ext, func, mUsingObstacle));
- mantaIntObjects.push_back(
- std::make_tuple(&mNumGuide, "numGuides" + solver_ext, func, mUsingGuiding));
std::vector<std::tuple<float **, std::string, std::string, bool>> mantaFloatObjects;
mantaFloatObjects.push_back(std::make_tuple(&mPhiIn, "phiIn" + solver_ext, func, true));
@@ -2559,6 +2555,10 @@ void MANTA::updatePointers()
std::make_tuple(&mInVelocityY, "y_invel" + solver_ext, func, mUsingInvel));
mantaFloatObjects.push_back(
std::make_tuple(&mInVelocityZ, "z_invel" + solver_ext, func, mUsingInvel));
+ mantaFloatObjects.push_back(
+ std::make_tuple(&mNumObstacle, "numObs" + solver_ext, func, mUsingObstacle));
+ mantaFloatObjects.push_back(
+ std::make_tuple(&mNumGuide, "numGuides" + solver_ext, func, mUsingGuiding));
mantaFloatObjects.push_back(std::make_tuple(&mPhi, "phi" + solver_ext, func, mUsingLiquid));
diff --git a/intern/mantaflow/intern/MANTA_main.h b/intern/mantaflow/intern/MANTA_main.h
index 1c18cb8affa..d45f30c9acf 100644
--- a/intern/mantaflow/intern/MANTA_main.h
+++ b/intern/mantaflow/intern/MANTA_main.h
@@ -248,11 +248,11 @@ struct MANTA {
{
return mObstacle;
}
- inline int *getNumObstacle()
+ inline float *getNumObstacle()
{
return mNumObstacle;
}
- inline int *getNumGuide()
+ inline float *getNumGuide()
{
return mNumGuide;
}
@@ -765,8 +765,8 @@ struct MANTA {
float *mForceY;
float *mForceZ;
int *mObstacle;
- int *mNumObstacle;
- int *mNumGuide;
+ float *mNumObstacle;
+ float *mNumGuide;
// Smoke grids
float *mDensity;
diff --git a/intern/mantaflow/intern/manta_fluid_API.cpp b/intern/mantaflow/intern/manta_fluid_API.cpp
index 240bbd77085..4c9b5a93fc3 100644
--- a/intern/mantaflow/intern/manta_fluid_API.cpp
+++ b/intern/mantaflow/intern/manta_fluid_API.cpp
@@ -292,11 +292,11 @@ float *manta_get_phiguide_in(MANTA *fluid)
return fluid->getPhiGuideIn();
}
-int *manta_get_num_obstacle(MANTA *fluid)
+float *manta_get_num_obstacle(MANTA *fluid)
{
return fluid->getNumObstacle();
}
-int *manta_get_num_guide(MANTA *fluid)
+float *manta_get_num_guide(MANTA *fluid)
{
return fluid->getNumGuide();
}
diff --git a/intern/mantaflow/intern/strings/fluid_script.h b/intern/mantaflow/intern/strings/fluid_script.h
index 565b942c582..b7d3a5a195e 100644
--- a/intern/mantaflow/intern/strings/fluid_script.h
+++ b/intern/mantaflow/intern/strings/fluid_script.h
@@ -243,7 +243,7 @@ fluid_data_dict_s$ID$ = dict(vel=vel_s$ID$, phiObs=phiObs_s$ID$, phiIn=phiIn_s$I
const std::string fluid_alloc_obstacle =
"\n\
mantaMsg('Allocating obstacle data')\n\
-numObs_s$ID$ = s$ID$.create(IntGrid)\n\
+numObs_s$ID$ = s$ID$.create(RealGrid)\n\
phiObsIn_s$ID$ = s$ID$.create(LevelsetGrid)\n\
obvel_s$ID$ = s$ID$.create(MACGrid)\n\
obvelC_s$ID$ = s$ID$.create(Vec3Grid)\n\
@@ -259,7 +259,7 @@ const std::string fluid_alloc_guiding =
mantaMsg('Allocating guiding data')\n\
velT_s$ID$ = s$ID$.create(MACGrid)\n\
weightGuide_s$ID$ = s$ID$.create(RealGrid)\n\
-numGuides_s$ID$ = s$ID$.create(IntGrid)\n\
+numGuides_s$ID$ = s$ID$.create(RealGrid)\n\
phiGuideIn_s$ID$ = s$ID$.create(LevelsetGrid)\n\
guidevelC_s$ID$ = s$ID$.create(Vec3Grid)\n\
x_guidevel_s$ID$ = s$ID$.create(RealGrid)\n\
@@ -324,9 +324,15 @@ def fluid_pre_step_$ID$():\n\
\n\
# translate obvels (world space) to grid space\n\
if using_obstacle_s$ID$:\n\
+ # Average out velocities from multiple obstacle objects at one cell\n\
+ x_obvel_s$ID$.safeDivide(numObs_s$ID$)\n\
+ y_obvel_s$ID$.safeDivide(numObs_s$ID$)\n\
+ z_obvel_s$ID$.safeDivide(numObs_s$ID$)\n\
+ \n\
x_obvel_s$ID$.multConst(toMantaUnitsFac_s$ID$)\n\
y_obvel_s$ID$.multConst(toMantaUnitsFac_s$ID$)\n\
z_obvel_s$ID$.multConst(toMantaUnitsFac_s$ID$)\n\
+ \n\
copyRealToVec3(sourceX=x_obvel_s$ID$, sourceY=y_obvel_s$ID$, sourceZ=z_obvel_s$ID$, target=obvelC_s$ID$)\n\
\n\
# translate invels (world space) to grid space\n\
@@ -572,9 +578,15 @@ def bake_guiding_process_$ID$(framenr, format_guiding, path_guiding):\n\
if framenr>1:\n\
fluid_load_guiding_$ID$(path_guiding, framenr-1, format_guiding)\n\
\n\
+ # Average out velocities from multiple guiding objects at one cell\n\
+ x_guidevel_s$ID$.safeDivide(numGuides_s$ID$)\n\
+ y_guidevel_s$ID$.safeDivide(numGuides_s$ID$)\n\
+ z_guidevel_s$ID$.safeDivide(numGuides_s$ID$)\n\
+ \n\
x_guidevel_s$ID$.multConst(Real(toMantaUnitsFac_s$ID$))\n\
y_guidevel_s$ID$.multConst(Real(toMantaUnitsFac_s$ID$))\n\
z_guidevel_s$ID$.multConst(Real(toMantaUnitsFac_s$ID$))\n\
+ \n\
copyRealToVec3(sourceX=x_guidevel_s$ID$, sourceY=y_guidevel_s$ID$, sourceZ=z_guidevel_s$ID$, target=guidevelC_s$ID$)\n\
\n\
mantaMsg('Extrapolating guiding velocity')\n\
diff --git a/intern/mantaflow/intern/strings/smoke_script.h b/intern/mantaflow/intern/strings/smoke_script.h
index 186f56c0707..3445bd56481 100644
--- a/intern/mantaflow/intern/strings/smoke_script.h
+++ b/intern/mantaflow/intern/strings/smoke_script.h
@@ -371,6 +371,9 @@ def smoke_step_$ID$():\n\
extrapolateVec3Simple(vel=obvelC_s$ID$, phi=phiObsIn_s$ID$, distance=3, inside=False)\n\
resampleVec3ToMac(source=obvelC_s$ID$, target=obvel_s$ID$)\n\
\n\
+ # Cells inside obstacle should not contain any density, fire, etc.\n\
+ resetInObstacle(flags=flags_s$ID$, density=density_s$ID$, vel=vel_s$ID$, heat=heat_s$ID$, fuel=fuel_s$ID$, flame=flame_s$ID$, red=color_r_s$ID$, green=color_g_s$ID$, blue=color_b_s$ID$)\n\
+ \n\
# add initial velocity\n\
if using_invel_s$ID$:\n\
resampleVec3ToMac(source=invelC_s$ID$, target=invel_s$ID$)\n\
@@ -388,7 +391,7 @@ def smoke_step_$ID$():\n\
\n\
def process_burn_$ID$():\n\
mantaMsg('Process burn')\n\
- processBurn(fuel=fuel_s$ID$, density=density_s$ID$, react=react_s$ID$, red=color_r_s$ID$ if using_colors_s$ID$ else None, green=color_g_s$ID$ if using_colors_s$ID$ else None, blue=color_b_s$ID$ if using_colors_s$ID$ else None, heat=heat_s$ID$ if using_heat_s$ID$ else None, burningRate=burningRate_s$ID$, flameSmoke=flameSmoke_s$ID$, ignitionTemp=ignitionTemp_s$ID$, maxTemp=maxTemp_s$ID$, flameSmokeColor=flameSmokeColor_s$ID$)\n\
+ processBurn(fuel=fuel_s$ID$, density=density_s$ID$, react=react_s$ID$, red=color_r_s$ID$, green=color_g_s$ID$, blue=color_b_s$ID$, heat=heat_s$ID$, burningRate=burningRate_s$ID$, flameSmoke=flameSmoke_s$ID$, ignitionTemp=ignitionTemp_s$ID$, maxTemp=maxTemp_s$ID$, flameSmokeColor=flameSmokeColor_s$ID$)\n\
\n\
def update_flame_$ID$():\n\
mantaMsg('Update flame')\n\
@@ -503,7 +506,7 @@ def step_noise_$ID$():\n\
\n\
def process_burn_noise_$ID$():\n\
mantaMsg('Process burn noise')\n\
- processBurn(fuel=fuel_sn$ID$, density=density_sn$ID$, react=react_sn$ID$, red=color_r_sn$ID$ if using_colors_s$ID$ else None, green=color_g_sn$ID$ if using_colors_s$ID$ else None, blue=color_b_sn$ID$ if using_colors_s$ID$ else None, burningRate=burningRate_s$ID$, flameSmoke=flameSmoke_s$ID$, ignitionTemp=ignitionTemp_s$ID$, maxTemp=maxTemp_s$ID$, flameSmokeColor=flameSmokeColor_s$ID$)\n\
+ processBurn(fuel=fuel_sn$ID$, density=density_sn$ID$, react=react_sn$ID$, red=color_r_sn$ID$, green=color_g_sn$ID$, blue=color_b_sn$ID$, burningRate=burningRate_s$ID$, flameSmoke=flameSmoke_s$ID$, ignitionTemp=ignitionTemp_s$ID$, maxTemp=maxTemp_s$ID$, flameSmokeColor=flameSmokeColor_s$ID$)\n\
\n\
def update_flame_noise_$ID$():\n\
mantaMsg('Update flame noise')\n\