[Bf-blender-cvs] [64afd42] fluid-mantaflow: improved high resolution step for liquids - using phiparts in high res mode as well now

Sebastián Barschkis noreply at git.blender.org
Wed Sep 14 11:55:51 CEST 2016


Commit: 64afd4263c73d3767d5e0e0ab3c6084a5419d3d4
Author: Sebastián Barschkis
Date:   Tue Sep 6 14:12:57 2016 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rB64afd4263c73d3767d5e0e0ab3c6084a5419d3d4

improved high resolution step for liquids - using phiparts in high res mode as well now

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

M	intern/mantaflow/intern/strings/liquid_script.h

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

diff --git a/intern/mantaflow/intern/strings/liquid_script.h b/intern/mantaflow/intern/strings/liquid_script.h
index ddcd2ab..59ce1b8 100644
--- a/intern/mantaflow/intern/strings/liquid_script.h
+++ b/intern/mantaflow/intern/strings/liquid_script.h
@@ -110,10 +110,11 @@ z_force    = s.create(RealGrid)\n";
 
 const std::string liquid_alloc_high = "\n\
 mantaMsg('Liquid alloc high')\n\
-xl_flags   = xl.create(FlagGrid)\n\
-xl_phi     = xl.create(LevelsetGrid)\n\
-xl_pp      = xl.create(BasicParticleSystem)\n\
-xl_mesh    = xl.create(Mesh)\n\
+xl_flags    = xl.create(FlagGrid)\n\
+xl_phiParts = xl.create(LevelsetGrid)\n\
+xl_phi      = xl.create(LevelsetGrid)\n\
+xl_pp       = xl.create(BasicParticleSystem)\n\
+xl_mesh     = xl.create(Mesh)\n\
 \n\
 # Acceleration data for particle nbs\n\
 xl_pindex  = xl.create(ParticleIndexSystem)\n\
@@ -146,7 +147,6 @@ def manta_step(start_frame):\n\
         mantaMsg('Low step / s.frame: ' + str(s.frame))\n\
         liquid_step()\n\
         \n\
-        # TODO (sebbas)\n\
         if using_highres:\n\
             xl.timestep = s.timestep\n\
             mantaMsg('High step / s.frame: ' + str(s.frame))\n\
@@ -170,6 +170,10 @@ def liquid_step():\n\
     if narrowBand:\n\
         advectSemiLagrange(flags=flags, vel=vel, grid=vel, order=2, openBounds=doOpen, boundaryWidth=boundaryWidth)\n\
     \n\
+	# Keep an original copy of interpolated phi grid for later use in (optional) high-res step\n\
+    if using_highres:\n\
+        interpolateGrid(target=xl_phi, source=phi)\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\
@@ -231,8 +235,8 @@ def liquid_step():\n\
         adjustNumber(parts=pp, vel=vel, flags=flags, minParticles=1*minParticles, maxParticles=2*minParticles, phi=phi, radiusFactor=radiusFactor)\n\
     \n\
     # TODO (sebbas): HACK - saving particle system for highres step\n\
-    #if using_highres:\n\
-        #pp.save('/tmp/partfile.uni')\n\
+    if using_highres:\n\
+        pp.save('/tmp/partfile.uni')\n\
     \n\
     # reset inflow grid\n\
     phiInit.setConst(0.5)\n\
@@ -243,23 +247,17 @@ def liquid_step():\n\
 const std::string liquid_step_high = "\n\
 def liquid_step_high():\n\
     mantaMsg('Liquid step high')\n\
-    xl_phi.setBound(value=0., boundaryWidth=1)\n\
+    #xl_phi.setBound(value=0., boundaryWidth=1)\n\
     xl_pp.load('/tmp/partfile.uni')\n\
     \n\
     # create surface\n\
     gridParticleIndex( parts=xl_pp , flags=xl_flags, indexSys=xl_pindex, index=xl_gpi )\n\
-    unionParticleLevelset( xl_pp, xl_pindex, xl_flags, xl_gpi, xl_phi , xl_radiusFactor )\n\
-    #averagedParticleLevelset( xl_pp, xl_pindex, xl_flags, xl_gpi, xl_phi , xl_radiusFactor , 1, 1 )\n\
-    \n\
-    xl_phi.setBound(value=0., boundaryWidth=1)\n\
-    xl_phi.createMesh(xl_mesh)\n\
-    \n\
-    # beautify mesh, too slow right now!\n\
-    #subdivideMesh(mesh=xl_mesh, minAngle=0.01, minLength=scale, maxLength=3*scale, cutTubes=False)\n\
-    # perform smoothing\n\
-    #for iters in range(10):\n\
-        #smoothMesh(mesh=xl_mesh, strength=1e-3, steps=10)\n\
-        #subdivideMesh(mesh=xl_mesh, minAngle=0.01, minLength=scale, maxLength=3*scale, cutTubes=True)\n";
+    #unionParticleLevelset( xl_pp, xl_pindex, xl_flags, xl_gpi, xl_phi , radiusFactor ) # faster, but not as smooth\n\
+    averagedParticleLevelset( xl_pp, xl_pindex, xl_flags, xl_gpi, xl_phiParts, radiusFactor , 1, 1 )\n\
+    xl_phi.join(xl_phiParts)\n\
+    \n\
+    #xl_phi.setBound(value=0., boundaryWidth=1)\n\
+    xl_phi.createMesh(xl_mesh)\n";
 
 //////////////////////////////////////////////////////////////////////
 // IMPORT / EXPORT
@@ -296,6 +294,7 @@ const std::string liquid_import_high = "\n\
 def load_liquid_data_high(path):\n\
     xl_flags.load(path + str('xl_flags.uni'))\n\
     \n\
+    xl_phiParts.load(path + str('xl_phiParts.uni'))\n\
     xl_phi.load(path + str('xl_phi.uni'))\n\
     \n\
     xl_pp.load(path + str('xl_pp.uni'))\n";
@@ -323,6 +322,7 @@ const std::string liquid_export_high = "\n\
 def save_liquid_data_high(path):\n\
     xl_flags.save(path + str('xl_flags.uni'))\n\
     \n\
+    xl_phiParts.save(path + str('xl_phiParts.uni'))\n\
     xl_phi.save(path + str('xl_phi.uni'))\n\
     \n\
     xl_pp.save(path + str('xl_pp.uni'))\n";
@@ -361,12 +361,13 @@ if 'z_force'    in globals() : del z_force\n";
 
 const std::string liquid_delete_grids_high = "\n\
 mantaMsg('Deleting highres grids, mesh, particlesystem')\n\
-if 'xl_flags'   in globals() : del xl_flags\n\
-if 'xl_phi'     in globals() : del xl_phi\n\
-if 'xl_pp'      in globals() : del xl_pp\n\
-if 'xl_mesh'    in globals() : del xl_mesh\n\
-if 'xl_pindex'  in globals() : del xl_pindex\n\
-if 'xl_gpi'     in globals() : del xl_gpi\n";
+if 'xl_flags'    in globals() : del xl_flags\n\
+if 'xl_phiParts' in globals() : del xl_phiParts\n\
+if 'xl_phi'      in globals() : del xl_phi\n\
+if 'xl_pp'       in globals() : del xl_pp\n\
+if 'xl_mesh'     in globals() : del xl_mesh\n\
+if 'xl_pindex'   in globals() : del xl_pindex\n\
+if 'xl_gpi'      in globals() : del xl_gpi\n";
 
 const std::string liquid_delete_variables_low = "\n\
 mantaMsg('Deleting lowres liquid variables')\n\




More information about the Bf-blender-cvs mailing list