[Bf-blender-cvs] [2ea7dab] fluid-mantaflow: border collisions now work for smoke AND liquids

Sebastián Barschkis noreply at git.blender.org
Tue Aug 9 15:24:36 CEST 2016


Commit: 2ea7dab100efed8d02a19f27e40198fb539dac39
Author: Sebastián Barschkis
Date:   Tue Aug 9 15:23:51 2016 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rB2ea7dab100efed8d02a19f27e40198fb539dac39

border collisions now work for smoke AND liquids

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

M	intern/mantaflow/intern/SMOKE.cpp
M	intern/mantaflow/intern/strings/liquid_script.h
M	intern/mantaflow/intern/strings/shared_script.h
M	release/scripts/startup/bl_operators/object_quick_effects.py

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

diff --git a/intern/mantaflow/intern/SMOKE.cpp b/intern/mantaflow/intern/SMOKE.cpp
index 9313e69..88b3ab6 100644
--- a/intern/mantaflow/intern/SMOKE.cpp
+++ b/intern/mantaflow/intern/SMOKE.cpp
@@ -292,7 +292,7 @@ void SMOKE::initLiquid(SmokeModifierData *smd)
 		std::string tmpString = alloc_liquid
 			+ fluid_variables
 			+ liquid_variables
-//			+ prep_domain_low
+			+ prep_domain_low
 			+ init_phi
 			+ save_mesh
 			+ save_liquid_data
diff --git a/intern/mantaflow/intern/strings/liquid_script.h b/intern/mantaflow/intern/strings/liquid_script.h
index aced190..2094d31 100644
--- a/intern/mantaflow/intern/strings/liquid_script.h
+++ b/intern/mantaflow/intern/strings/liquid_script.h
@@ -75,7 +75,6 @@ pindex     = s.create(ParticleIndexSystem)\n\
 gpi        = s.create(IntGrid)\n";
 
 const std::string init_phi = "\n\
-flags.initDomain(boundaryWidth=0)\n\
 phi.initFromFlags(flags)\n\
 phiInit.initFromFlags(flags)\n";
 
@@ -116,17 +115,20 @@ def liquid_step():\n\
     # Advect particles and grid phi\n\
     # Note: Grid velocities are extrapolated at the end of each step\n\
     pp.advectInGrid(flags=flags, vel=vel, integrationMode=IntRK4, deleteInObstacle=False )\n\
-    advectSemiLagrange(flags=flags, vel=vel, grid=phi, order=1)\n\
-    flags.updateFromLevelset(phi)\n\
+    advectSemiLagrange(flags=flags, vel=vel, grid=phi, order=1, openBounds=doOpen, boundaryWidth=boundaryWidth)\n\
     \n\
     # Advect grid velocity\n\
     if narrowBand:\n\
-        advectSemiLagrange(flags=flags, vel=vel, grid=vel, order=2)\n\
+        advectSemiLagrange(flags=flags, vel=vel, grid=vel, order=2, openBounds=doOpen, boundaryWidth=boundaryWidth)\n\
     \n\
     # Create level set of particles\n\
     gridParticleIndex( parts=pp , flags=flags, indexSys=pindex, index=gpi )\n\
     unionParticleLevelset( pp, pindex, flags, gpi, phiParts )\n\
     \n\
+    if doOpen:\n\
+        resetOutflow(flags=flags, phi=phi, parts=pp, index=gpi, indexSys=pindex)\n\
+    flags.updateFromLevelset(phi)\n\
+    \n\
     if narrowBand:\n\
         # Combine level set of particles with grid level set\n\
         phi.addConst(1.); # shrink slightly\n\
@@ -170,7 +172,7 @@ def liquid_step():\n\
     # Resample particles\n\
     pVel.setSource( vel, isMAC=True ) # Set source grids for resampling, used in adjustNumber!\n\
     if narrowBand:\n\
-        phi.setBoundNeumann(0) # make sure no particles are placed at outer boundary\n\
+        phi.setBoundNeumann(boundaryWidth) # make sure no particles are placed at outer boundary\n\
         adjustNumber( parts=pp, vel=vel, flags=flags, minParticles=1*minParticles, maxParticles=2*minParticles, phi=phi, narrowBand=narrowBandWidth )\n\
     else:\n\
         adjustNumber( parts=pp, vel=vel, flags=flags, minParticles=1*minParticles, maxParticles=2*minParticles, phi=phi )\n\
diff --git a/intern/mantaflow/intern/strings/shared_script.h b/intern/mantaflow/intern/strings/shared_script.h
index 99c617c..f3801b6 100644
--- a/intern/mantaflow/intern/strings/shared_script.h
+++ b/intern/mantaflow/intern/strings/shared_script.h
@@ -73,7 +73,7 @@ xl.cfl         = s.cfl\n";
 const std::string fluid_variables = "\n\
 doOpen          = $DO_OPEN$\n\
 boundConditions = '$BOUNDCONDITIONS$'\n\
-boundaryWidth   = 1\n";
+boundaryWidth   = 0\n";
 
 const std::string prep_domain_low = "\n\
 # prepare domain low\n\
diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py
index d31e819..07fedb2 100644
--- a/release/scripts/startup/bl_operators/object_quick_effects.py
+++ b/release/scripts/startup/bl_operators/object_quick_effects.py
@@ -692,6 +692,7 @@ class QuickLiquid(Operator):
         bpy.ops.object.modifier_add(type='SMOKE')
         obj.modifiers[-1].smoke_type = 'DOMAIN'
         obj.modifiers[-1].domain_settings.smoke_domain_type = 'LIQUID'
+        obj.modifiers[-1].domain_settings.collision_extents = 'BORDERCLOSED'
 
         # set correct cache file format for liquid
         obj.modifiers[-1].domain_settings.cache_file_format = 'OBJECT'




More information about the Bf-blender-cvs mailing list