[Bf-blender-cvs] [128a601] fluid-mantaflow: added normalization for liquid inflow (needed for mantaflow)
Sebastián Barschkis
noreply at git.blender.org
Fri Jul 22 21:05:44 CEST 2016
Commit: 128a60137df6e1e1d85b18e7e482510a1d30eeee
Author: Sebastián Barschkis
Date: Sat Jul 16 13:20:15 2016 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rB128a60137df6e1e1d85b18e7e482510a1d30eeee
added normalization for liquid inflow (needed for mantaflow)
===================================================================
M source/blender/blenkernel/intern/smoke.c
===================================================================
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index f74857e..a26be8d 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -1511,7 +1511,7 @@ static void emit_from_particles(
static void sample_derivedmesh(
SmokeFlowSettings *sfs,
- const MVert *mvert, const MLoop *mloop, const MLoopTri *mlooptri, const MLoopUV *mloopuv,
+ const MVert *mvert, const MLoop *mloop, const MLoopTri *mlooptri, const MLoopUV *mloopuv, const float cell_size[3],
float *influence_map, float *velocity_map, float *inflow_map, int index, const int base_res[3], float flow_center[3],
BVHTreeFromMesh *treeData, const float ray_start[3], const float *vert_vel,
bool has_velocity, int defgrp_index, MDeformVert *dvert,
@@ -1558,7 +1558,7 @@ static void sample_derivedmesh(
/* Calculate map which indicates whether point is inside a mesh or not */
int i, hit_index;
float dot;
- float min_dist_pos, min_dist_neg, min_dist_combined; // for xyz axis in pos and neg direction and when combining 6 axis
+ float min_dist_pos, min_dist_neg, min_dist_combined, min_dist_combined_normalized; // for xyz axis in pos and neg direction and when combining 6 axis
float hit_dists[6] = {0.0f};
float ray_dirs[6][3] = {{1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 1.0f},
{-1.0f, 0.0f, 0.0f}, {0.0f, -1.0f, 0.0f}, {0.0f, 0.0f, -1.0f}};
@@ -1587,10 +1587,11 @@ static void sample_derivedmesh(
min_dist_pos = MIN3(hit_dists[0], hit_dists[1], hit_dists[2]);
min_dist_neg = MIN3(hit_dists[3], hit_dists[4], hit_dists[5]);
min_dist_combined = MIN2(min_dist_pos, min_dist_neg);
+ min_dist_combined_normalized = min_dist_combined / cell_size[0]; // TODO (sebbas): also consider cell_size[1] and cell_size[2] ?!
/* If distance is still undetermined (=9999) use default manta value (=0.5) instead (outside emission map value is also 0.5)
* Otherwise use computed distance. inflow_map is either 1.0 or -1.0. Multiplied with dist_comb we have mesh dist from out- and inside */
- inflow_map[index] *= (min_dist_combined == 9999) ? 0.5 : min_dist_combined; // TODO (sebbas): Better value for 0.5?
+ inflow_map[index] *= (min_dist_combined == 9999) ? 0.5 : min_dist_combined_normalized; // TODO (sebbas): Better value for 0.5?
/*****************************************************/
@@ -1730,7 +1731,7 @@ static void emit_from_derivedmesh_task_cb(void *userdata, const int z)
const float ray_start[3] = {((float)lx) + 0.5f, ((float)ly) + 0.5f, ((float)lz) + 0.5f};
sample_derivedmesh(
- data->sfs, data->mvert, data->mloop, data->mlooptri, data->mloopuv,
+ data->sfs, data->mvert, data->mloop, data->mlooptri, data->mloopuv, data->sds->cell_size,
em->influence, em->velocity, em->inflow, index, data->sds->base_res, data->flow_center,
data->tree, ray_start, data->vert_vel, data->has_velocity, data->defgrp_index, data->dvert,
(float)lx, (float)ly, (float)lz);
@@ -1748,7 +1749,7 @@ static void emit_from_derivedmesh_task_cb(void *userdata, const int z)
const float ray_start[3] = {lx + 0.5f * data->hr, ly + 0.5f * data->hr, lz + 0.5f * data->hr};
sample_derivedmesh(
- data->sfs, data->mvert, data->mloop, data->mlooptri, data->mloopuv,
+ data->sfs, data->mvert, data->mloop, data->mlooptri, data->mloopuv, data->sds->cell_size,
em->influence_high, NULL, em->inflow_high, index, data->sds->base_res, data->flow_center,
data->tree, ray_start, data->vert_vel, data->has_velocity, data->defgrp_index, data->dvert,
/* x,y,z needs to be always lowres */
More information about the Bf-blender-cvs
mailing list