[Bf-blender-cvs] [879b71e1798] fluid-mantaflow: minor secondary particle fixes

Sebastián Barschkis noreply at git.blender.org
Mon May 7 17:30:12 CEST 2018


Commit: 879b71e179890f6e0fe7d6d8319e8e9bc303b832
Author: Sebastián Barschkis
Date:   Mon May 7 17:27:11 2018 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rB879b71e179890f6e0fe7d6d8319e8e9bc303b832

minor secondary particle fixes

fixes immediate bake crash and missing tracers

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

M	intern/mantaflow/intern/manta_pp/omp/plugin/sndparticles.cpp
M	intern/mantaflow/intern/manta_pp/tbb/plugin/sndparticles.cpp
M	intern/mantaflow/intern/strings/liquid_script.h

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

diff --git a/intern/mantaflow/intern/manta_pp/omp/plugin/sndparticles.cpp b/intern/mantaflow/intern/manta_pp/omp/plugin/sndparticles.cpp
index 4594595aca3..48fd02c7d8d 100644
--- a/intern/mantaflow/intern/manta_pp/omp/plugin/sndparticles.cpp
+++ b/intern/mantaflow/intern/manta_pp/omp/plugin/sndparticles.cpp
@@ -57,6 +57,10 @@ void adjustSndParts(BasicParticleSystem& parts, FlagGrid& flags, LevelsetGrid& p
 		Vec3 p1 = parts.getPos(idx);
 		Vec3i p1i = toVec3i(p1);
 
+		// Kill parts at invalid positions
+		if (p1i.x < 0 || p1i.y < 0 || p1i.z < 0) { parts.kill(idx); continue; }
+		if (p1i.x > flags.getSizeX()-1 || p1i.y > flags.getSizeY()-1 || p1i.z > flags.getSizeZ()-1) { parts.kill(idx); continue; }
+
 		// Try to save float / tracer particle by pushing it into the valid region
 		Real phiv = phi.getInterpolated( parts.getPos(idx) );
 		if (( parts.getStatus(idx) & ParticleBase::PFOAM && (phiv > FLOAT_THRESH || phiv < -FLOAT_THRESH)) ||
diff --git a/intern/mantaflow/intern/manta_pp/tbb/plugin/sndparticles.cpp b/intern/mantaflow/intern/manta_pp/tbb/plugin/sndparticles.cpp
index 4594595aca3..48fd02c7d8d 100644
--- a/intern/mantaflow/intern/manta_pp/tbb/plugin/sndparticles.cpp
+++ b/intern/mantaflow/intern/manta_pp/tbb/plugin/sndparticles.cpp
@@ -57,6 +57,10 @@ void adjustSndParts(BasicParticleSystem& parts, FlagGrid& flags, LevelsetGrid& p
 		Vec3 p1 = parts.getPos(idx);
 		Vec3i p1i = toVec3i(p1);
 
+		// Kill parts at invalid positions
+		if (p1i.x < 0 || p1i.y < 0 || p1i.z < 0) { parts.kill(idx); continue; }
+		if (p1i.x > flags.getSizeX()-1 || p1i.y > flags.getSizeY()-1 || p1i.z > flags.getSizeZ()-1) { parts.kill(idx); continue; }
+
 		// Try to save float / tracer particle by pushing it into the valid region
 		Real phiv = phi.getInterpolated( parts.getPos(idx) );
 		if (( parts.getStatus(idx) & ParticleBase::PFOAM && (phiv > FLOAT_THRESH || phiv < -FLOAT_THRESH)) ||
diff --git a/intern/mantaflow/intern/strings/liquid_script.h b/intern/mantaflow/intern/strings/liquid_script.h
index 77970baec76..3c586033358 100644
--- a/intern/mantaflow/intern/strings/liquid_script.h
+++ b/intern/mantaflow/intern/strings/liquid_script.h
@@ -80,7 +80,7 @@ pindex_s$ID$     = s$ID$.create(ParticleIndexSystem)\n\
 gpi_s$ID$        = s$ID$.create(IntGrid)\n\
 \n\
 # Keep track of important objects in dict to load them later on\n\
-liquid_data_dict_s$ID$ = dict(phiParts=phiParts_s$ID$, phi=phi_s$ID$, phiTmp=phiTmp_s$ID$)\n\
+liquid_data_dict_s$ID$ = dict(phiParts=phiParts_s$ID$, phi=phi_s$ID$, phiIn=phiIn_s$ID$, phiTmp=phiTmp_s$ID$)\n\
 liquid_flip_dict_s$ID$ = dict(pp=pp_s$ID$, pVel=pVel_pp$ID$)\n";
 
 const std::string liquid_alloc_mesh = "\n\



More information about the Bf-blender-cvs mailing list