[Bf-blender-cvs] [c98a82b7d5c] fluid-mantaflow: Mantaflow: Fixed issues raised in part 11 of the review (D3861)

Sebastián Barschkis noreply at git.blender.org
Wed Dec 11 12:36:16 CET 2019


Commit: c98a82b7d5c73654302b538d03902793d5ab1ab5
Author: Sebastián Barschkis
Date:   Wed Dec 11 12:36:06 2019 +0100
Branches: fluid-mantaflow
https://developer.blender.org/rBc98a82b7d5c73654302b538d03902793d5ab1ab5

Mantaflow: Fixed issues raised in part 11 of the review (D3861)

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

M	source/blender/blenkernel/intern/manta.c

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

diff --git a/source/blender/blenkernel/intern/manta.c b/source/blender/blenkernel/intern/manta.c
index c3f6e69c4f5..f0bfce569e8 100644
--- a/source/blender/blenkernel/intern/manta.c
+++ b/source/blender/blenkernel/intern/manta.c
@@ -400,7 +400,7 @@ static void manta_pos_to_cell(MantaDomainSettings *mds, float pos[3])
   pos[2] *= 1.0f / mds->cell_size[2];
 }
 
-/* set domain transformations and base resolution from object mesh */
+/* Set domain transformations and base resolution from object mesh. */
 static void manta_set_domain_from_mesh(MantaDomainSettings *mds,
                                        Object *ob,
                                        Mesh *me,
@@ -415,31 +415,23 @@ static void manta_set_domain_from_mesh(MantaDomainSettings *mds,
 
   res = mds->maxres;
 
-  // get BB of domain
+  /* Set minimum and maximum coordinates of BB. */
   for (i = 0; i < me->totvert; i++) {
-    // min BB
-    min[0] = MIN2(min[0], verts[i].co[0]);
-    min[1] = MIN2(min[1], verts[i].co[1]);
-    min[2] = MIN2(min[2], verts[i].co[2]);
-
-    // max BB
-    max[0] = MAX2(max[0], verts[i].co[0]);
-    max[1] = MAX2(max[1], verts[i].co[1]);
-    max[2] = MAX2(max[2], verts[i].co[2]);
+    minmax_v3v3_v3(min, max, verts[i].co);
   }
 
-  /* set domain bounds */
+  /* Set domain bounds. */
   copy_v3_v3(mds->p0, min);
   copy_v3_v3(mds->p1, max);
   mds->dx = 1.0f / res;
 
-  /* calculate domain dimensions */
+  /* Calculate domain dimensions. */
   sub_v3_v3v3(size, max, min);
   if (init_resolution) {
     zero_v3_int(mds->base_res);
     copy_v3_v3(mds->cell_size, size);
   }
-  /* apply object scale */
+  /* Apply object scale. */
   for (i = 0; i < 3; i++) {
     size[i] = fabsf(size[i] * ob->scale[i]);
   }
@@ -448,13 +440,13 @@ static void manta_set_domain_from_mesh(MantaDomainSettings *mds,
 
   invert_m4_m4(mds->imat, ob->obmat);
 
-  // prevent crash when initializing a plane as domain
+  /* Prevent crash when initializing a plane as domain. */
   if (!init_resolution || (size[0] < FLT_EPSILON) || (size[1] < FLT_EPSILON) ||
       (size[2] < FLT_EPSILON)) {
     return;
   }
 
-  /* define grid resolutions from longest domain side */
+  /* Define grid resolutions from longest domain side. */
   if (size[0] >= MAX2(size[1], size[2])) {
     scale = res / size[0];
     mds->scale = size[0] / fabsf(ob->scale[0]);
@@ -477,7 +469,7 @@ static void manta_set_domain_from_mesh(MantaDomainSettings *mds,
     mds->base_res[2] = res;
   }
 
-  /* set cell size */
+  /* Set cell size. */
   mds->cell_size[0] /= (float)mds->base_res[0];
   mds->cell_size[1] /= (float)mds->base_res[1];
   mds->cell_size[2] /= (float)mds->base_res[2];
@@ -488,25 +480,23 @@ static void manta_set_domain_gravity(Scene *scene, MantaDomainSettings *mds)
   float gravity[3] = {0.0f, 0.0f, -1.0f};
   float gravity_mag;
 
-  /* use global gravity if enabled */
+  /* Use global gravity if enabled. */
   if (scene->physics_settings.flag & PHYS_GLOBAL_GRAVITY) {
     copy_v3_v3(gravity, scene->physics_settings.gravity);
-    /* map default value to 1.0 */
+    /* Map default value to 1.0. */
     mul_v3_fl(gravity, 1.0f / 9.810f);
 
-    /* convert gravity to domain space */
+    /* Convert gravity to domain space. */
     gravity_mag = len_v3(gravity);
     mul_mat3_m4_v3(mds->imat, gravity);
     normalize_v3(gravity);
     mul_v3_fl(gravity, gravity_mag);
 
-    mds->gravity[0] = gravity[0];
-    mds->gravity[1] = gravity[1];
-    mds->gravity[2] = gravity[2];
+    copy_v3_v3(mds->gravity, gravity);
   }
 }
 
-static int mantaModifier_init(
+static bool mantaModifier_init(
     MantaModifierData *mmd, Depsgraph *depsgraph, Object *ob, Scene *scene, Mesh *me)
 {
   int scene_framenr = (int)DEG_get_ctime(depsgraph);
@@ -514,11 +504,11 @@ static int mantaModifier_init(
   if ((mmd->type & MOD_MANTA_TYPE_DOMAIN) && mmd->domain && !mmd->domain->fluid) {
     MantaDomainSettings *mds = mmd->domain;
     int res[3];
-    /* set domain dimensions from mesh */
+    /* Set domain dimensions from mesh. */
     manta_set_domain_from_mesh(mds, ob, me, true);
-    /* set domain gravity */
+    /* Set domain gravity. */
     manta_set_domain_gravity(scene, mds);
-    /* reset domain values */
+    /* Reset domain values. */
     zero_v3_int(mds->shift);
     zero_v3(mds->shift_f);
     add_v3_fl(mds->shift_f, 0.5f);
@@ -526,10 +516,10 @@ static int mantaModifier_init(
     mul_m4_v3(ob->obmat, mds->prev_loc);
     copy_m4_m4(mds->obmat, ob->obmat);
 
-    /* set resolutions */
+    /* Set resolutions. */
     if (mmd->domain->type == FLUID_DOMAIN_TYPE_GAS &&
         mmd->domain->flags & FLUID_DOMAIN_USE_ADAPTIVE_DOMAIN) {
-      res[0] = res[1] = res[2] = 1; /* use minimum res for adaptive init */
+      res[0] = res[1] = res[2] = 1; /* Use minimum res for adaptive init. */
     }
     else {
       copy_v3_v3_int(res, mds->base_res);
@@ -539,36 +529,36 @@ static int mantaModifier_init(
     mds->res_min[0] = mds->res_min[1] = mds->res_min[2] = 0;
     copy_v3_v3_int(mds->res_max, res);
 
-    /* set time, frame length = 0.1 is at 25fps */
+    /* Set time, frame length = 0.1 is at 25fps. */
     float fps = scene->r.frs_sec / scene->r.frs_sec_base;
     mds->frame_length = DT_DEFAULT * (25.0f / fps) * mds->time_scale;
-    /* initially dt is equal to frame length (dt can change with adaptive-time stepping though) */
+    /* Initially dt is equal to frame length (dt can change with adaptive-time stepping though). */
     mds->dt = mds->frame_length;
     mds->time_per_frame = 0;
     mds->time_total = (scene_framenr - 1) * mds->frame_length;
 
-    /* allocate fluid */
+    /* Allocate fluid. */
     BKE_manta_reallocate_fluid(mds, mds->res, 0);
 
     mmd->time = scene_framenr;
 
-    return 1;
+    return true;
   }
   else if (mmd->type & MOD_MANTA_TYPE_FLOW) {
     if (!mmd->flow) {
       mantaModifier_createType(mmd);
     }
     mmd->time = scene_framenr;
-    return 1;
+    return true;
   }
   else if (mmd->type & MOD_MANTA_TYPE_EFFEC) {
     if (!mmd->effec) {
       mantaModifier_createType(mmd);
     }
     mmd->time = scene_framenr;
-    return 1;
+    return true;
   }
-  return 0;
+  return false;
 }
 
 static void mantaModifier_freeDomain(MantaModifierData *mmd)
@@ -625,7 +615,7 @@ static void mantaModifier_freeFlow(MantaModifierData *mmd)
   }
 }
 
-static void mantaModifier_freeCollision(MantaModifierData *mmd)
+static void mantaModifier_freeEffector(MantaModifierData *mmd)
 {
   if (mmd->effec) {
     if (mmd->effec->mesh) {
@@ -692,249 +682,251 @@ void mantaModifier_free(MantaModifierData *mmd)
   if (mmd) {
     mantaModifier_freeDomain(mmd);
     mantaModifier_freeFlow(mmd);
-    mantaModifier_freeCollision(mmd);
+    mantaModifier_freeEffector(mmd);
   }
 }
 
 void mantaModifier_createType(struct MantaModifierData *mmd)
 {
-  if (mmd) {
-    if (mmd->type & MOD_MANTA_TYPE_DOMAIN) {
-      if (mmd->domain) {
-        mantaModifier_freeDomain(mmd);
-      }
+  if (!mmd) {
+    return;
+  }
 
-      /* domain object data */
-      mmd->domain = MEM_callocN(sizeof(MantaDomainSettings), "MantaDomain");
-      mmd->domain->mmd = mmd;
-      mmd->domain->effector_weights = BKE_effector_add_weights(NULL);
-      mmd->domain->fluid = NULL;
-      mmd->domain->fluid_mutex = BLI_rw_mutex_alloc();
-      mmd->domain->eff_group = NULL;
-      mmd->domain->fluid_group = NULL;
-      mmd->domain->coll_group = NULL;
-
-      /* adaptive domain options */
-      mmd->domain->adapt_margin = 4;
-      mmd->domain->adapt_res = 0;
-      mmd->domain->adapt_threshold = 0.02f;
-
-      /* fluid domain options */
-      mmd->domain->maxres = 64;
-      mmd->domain->solver_res = 3;
-      mmd->domain->border_collisions = 0;  // open domain
-      mmd->domain->flags = FLUID_DOMAIN_USE_DISSOLVE_LOG | FLUID_DOMAIN_USE_ADAPTIVE_TIME;
-      mmd->domain->gravity[0] = 0.0f;
-      mmd->domain->gravity[1] = 0.0f;
-      mmd->domain->gravity[2] = -1.0f;
-      mmd->domain->active_fields = 0;
-      mmd->domain->type = FLUID_DOMAIN_TYPE_GAS;
-      mmd->domain->boundary_width = 1;
-
-      /* smoke domain options */
-      mmd->domain->alpha = 1.0f;
-      mmd->domain->beta = 1.0f;
-      mmd->domain->diss_speed = 5;
-      mmd->domain->vorticity = 0;
-      mmd->domain->active_color[0] = 0.0f;
-      mmd->domain->active_color[1] = 0.0f;
-      mmd->domain->active_color[2] = 0.0f;
-      mmd->domain->highres_sampling = SM_HRES_FULLSAMPLE;
-
-      /* flame options */
-      mmd->domain->burning_rate = 0.75f;
-      mmd->domain->flame_smoke = 1.0f;
-      mmd->domain->flame_vorticity = 0.5f;
-      mmd->domain->flame_ignition = 1.5f;
-      mmd->domain->flame_max_temp = 3.0f;
-      mmd->domain->flame_smoke_color[0] = 0.7f;
-      mmd->domain->flame_smoke_color[1] = 0.7f;
-      mmd->domain->flame_smoke_color[2] = 0.7f;
-
-      /* noise options */
-      mmd->domain->noise_strength = 1.0;
-      mmd->domain->noise_pos_scale = 2.0f;
-      mmd->domain->noise_time_anim = 0.1f;
-      mmd->domain->noise_scale = 2;
-      mmd->domain->noise_type = FLUID_NOISE_TYPE_WAVELET;
-
-      /* liquid domain options */
-      mmd->domain->simulation_method = FLUID_DOMAIN_METHOD_FLIP;
-      mmd->domain->flip_ratio = 0.97f;
-      mmd->domain->particle_randomness = 0.1f;
-      mmd->domain->particle_number = 2;
-      mmd->domain->particle_minimum = 8;
-      mmd->domain->particle_maximum = 16;
-      mmd->domain->particle_radius = 1.5f;
-      mmd->domain->particle_band_width = 3.0f;
-      mmd->domain->fractions_threshold = 0.05f;
-
-      /* diffusion options*/
-      mmd->domain->surface_tension = 0.0f;
-      mmd->domain->viscosity_base = 1.0f;
-      mmd->domain->viscosity_exponent = 6.0f;
-      mmd->domain->domain_size = 0.5f;
-
-      /* mesh options */
-      mmd->domain->mesh_velocities = NULL;
-      mmd->domain->mesh_concave_upper = 3.5f;
-      mmd->domain->mesh_concave_lower = 0.4f;
-      mmd->domain->mesh_particle_radius = 2.0;
-      mmd->domain->mesh_smoothen_pos = 1;
-      mmd->domain->mesh_smoothen_neg = 1;
-      mmd->domain->mesh_scale = 2;
-      mmd->domain->totvert = 0;
-      mmd->domain->mesh_generator = FLUID_DOMAIN_MESH_IMPROVED;
-
-      /* secondary particle options */
-      mmd->domain->

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list