[Bf-blender-cvs] [4cb76ba] fluid-mantaflow: added high res liquid inflow grid (the one manta uses to create the mesh)

Sebastián Barschkis noreply at git.blender.org
Thu Jun 9 00:08:18 CEST 2016


Commit: 4cb76badeceef33cbdd20ddfdd4691295cfc47c8
Author: Sebastián Barschkis
Date:   Thu Jun 9 00:05:25 2016 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rB4cb76badeceef33cbdd20ddfdd4691295cfc47c8

added high res liquid inflow grid (the one manta uses to create the mesh)

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

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

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

diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index 95e829b..bc6aced 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -1069,6 +1069,7 @@ typedef struct EmissionMap {
 	float *influence_high;
 	float *velocity;
 	float* inflow;
+	float* inflow_high;
 	int min[3], max[3], res[3];
 	int hmin[3], hmax[3], hres[3];
 	int total_cells, valid;
@@ -1145,6 +1146,7 @@ static void em_allocateData(EmissionMap *em, bool use_velocity, int hires_mul)
 		}
 
 		em->influence_high = MEM_callocN(sizeof(float) * total_cells_high, "smoke_flow_influence_high");
+		em->inflow_high = MEM_callocN(sizeof(float) * total_cells_high, "liquid_inflow_map_high");
 	}
 	em->valid = 1;
 }
@@ -1159,6 +1161,8 @@ static void em_freeData(EmissionMap *em)
 		MEM_freeN(em->velocity);
 	if (em->inflow)
 		MEM_freeN(em->inflow);
+	if (em->inflow_high)
+		MEM_freeN(em->inflow_high);
 }
 
 static void em_combineMaps(EmissionMap *output, EmissionMap *em2, int hires_multiplier, int additive, float sample_size)
@@ -1719,10 +1723,9 @@ static void emit_from_derivedmesh_task_cb(void *userdata, const int z)
 				                      x - data->min[0], data->res[0], y - data->min[1], data->res[1], z - data->min[2]);
 				const float ray_start[3] = {lx + 0.5f * data->hr, ly + 0.5f * data->hr, lz + 0.5f * data->hr};
 
-				// TODO (sebbas) inflow map highres?
 				sample_derivedmesh(
 				        data->sfs, data->mvert, data->mloop, data->mlooptri, data->mloopuv,
-				        em->influence_high, NULL, NULL, index, data->sds->base_res, data->flow_center,
+				        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 */
 				        lx, ly, lz);
@@ -2467,6 +2470,7 @@ static void update_flowsfluids(Scene *scene, Object *ob, SmokeDomainSettings *sd
 				float *bigcolor_r = smoke_turbulence_get_color_r(sds->fluid);
 				float *bigcolor_g = smoke_turbulence_get_color_g(sds->fluid);
 				float *bigcolor_b = smoke_turbulence_get_color_b(sds->fluid);
+				float *bigphi = liquid_turbulence_get_phi(sds->fluid);
 #endif
 				float *heat = smoke_get_heat(sds->fluid);
 				float *velocity_x = smoke_get_velocity_x(sds->fluid);
@@ -2480,6 +2484,7 @@ static void update_flowsfluids(Scene *scene, Object *ob, SmokeDomainSettings *sd
 				float *emission_map = em->influence;
 				float *emission_map_high = em->influence_high;
 				float* inflow_map = em->inflow;
+				float* inflow_map_high = em->inflow_high;
 
 				int ii, jj, kk, gx, gy, gz, ex, ey, ez, dx, dy, dz, block_size;
 				size_t e_index, d_index, index_big;
@@ -2600,7 +2605,7 @@ static void update_flowsfluids(Scene *scene, Object *ob, SmokeDomainSettings *sd
 											}
 											else { // inflow
 												// TODO (sebbas) inflow map highres?
-												apply_inflow_fields(sfs, interpolated_value, 1, index_big, bigdensity, NULL, bigfuel, bigreact, bigcolor_r, bigcolor_g, bigcolor_b, NULL);
+												apply_inflow_fields(sfs, interpolated_value, inflow_map_high[index_big], index_big, bigdensity, NULL, bigfuel, bigreact, bigcolor_r, bigcolor_g, bigcolor_b, bigphi);
 											}
 										} // hires loop
 							}  // bigdensity




More information about the Bf-blender-cvs mailing list