[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