Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSriharsha Kotcharlakot <k.venkatsriharsha@gmail.com>2020-09-15 18:51:14 +0300
committerSriharsha Kotcharlakot <k.venkatsriharsha@gmail.com>2020-09-15 20:43:01 +0300
commitf137022f9919f4dd315ec6b325a08e1bf5aec6fb (patch)
tree4b15aa230eb100e77b41dfffb8ef5e7501c55db5 /source/blender/blenkernel/intern/fluid.c
parentbedbd8655ed1d331aeaf756874c46dbed93168a1 (diff)
Liquid Simulation Display Options (GSoC 2020)
All the changes made in the branch `soc-2020-fluid-tools` are included in this patch. **Major changes:** === Viewport Display === - //Raw voxel display// or //closest (nearest-neighbor)// interpolation for displaying the underlying voxel data of the simulation grids more clearly. - An option to display //gridlines// when the slicing method is //single//. ==== Grid Display ==== - Visualization for flags, pressure and level-set representation grids with a fixed color coding based on Manta GUI. ==== Vector Display ==== - //**M**arker **A**nd **C**ell// grid visualization options for vector grids like velocity or external forces. - Made vector display options available for external forces. ==== Coloring options for //gridlines// ==== - Range highlighting and cell filtering options for displaying the simulation grid data more precisely. - Color gridlines with flags. - Also, made slicing and interpolation options available for Volume Object. Reviewed By: JacquesLucke, sebbas Differential Revision: https://developer.blender.org/D8705
Diffstat (limited to 'source/blender/blenkernel/intern/fluid.c')
-rw-r--r--source/blender/blenkernel/intern/fluid.c52
1 files changed, 49 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/fluid.c b/source/blender/blenkernel/intern/fluid.c
index df7d308a87c..98488bb46d8 100644
--- a/source/blender/blenkernel/intern/fluid.c
+++ b/source/blender/blenkernel/intern/fluid.c
@@ -4682,6 +4682,30 @@ void BKE_fluid_effector_type_set(Object *UNUSED(object), FluidEffectorSettings *
settings->type = type;
}
+void BKE_fluid_coba_field_sanitize(FluidDomainSettings *settings)
+{
+ /* Based on the domain type, the coba field is defaulted accordingly if the selected field
+ * is unsupported. */
+ const char field = settings->coba_field;
+
+ if (settings->type == FLUID_DOMAIN_TYPE_GAS) {
+ if (field == FLUID_DOMAIN_FIELD_PHI || field == FLUID_DOMAIN_FIELD_PHI_IN ||
+ field == FLUID_DOMAIN_FIELD_PHI_OUT || field == FLUID_DOMAIN_FIELD_PHI_OBSTACLE) {
+ /* Defaulted to density for gas domain. */
+ settings->coba_field = FLUID_DOMAIN_FIELD_DENSITY;
+ }
+ }
+ else if (settings->type == FLUID_DOMAIN_TYPE_LIQUID) {
+ if (field == FLUID_DOMAIN_FIELD_COLOR_R || field == FLUID_DOMAIN_FIELD_COLOR_G ||
+ field == FLUID_DOMAIN_FIELD_COLOR_B || field == FLUID_DOMAIN_FIELD_DENSITY ||
+ field == FLUID_DOMAIN_FIELD_FLAME || field == FLUID_DOMAIN_FIELD_FUEL ||
+ field == FLUID_DOMAIN_FIELD_HEAT) {
+ /* Defaulted to phi for liquid domain. */
+ settings->coba_field = FLUID_DOMAIN_FIELD_PHI;
+ }
+ }
+}
+
/** \} */
/* -------------------------------------------------------------------- */
@@ -4980,19 +5004,32 @@ void BKE_fluid_modifier_create_type_data(struct FluidModifierData *fmd)
fmd->domain->timesteps_maximum = 4;
/* display options */
- fmd->domain->slice_method = FLUID_DOMAIN_SLICE_VIEW_ALIGNED;
fmd->domain->axis_slice_method = AXIS_SLICE_FULL;
fmd->domain->slice_axis = 0;
- fmd->domain->interp_method = 0;
+ fmd->domain->interp_method = FLUID_DISPLAY_INTERP_LINEAR;
fmd->domain->draw_velocity = false;
fmd->domain->slice_per_voxel = 5.0f;
fmd->domain->slice_depth = 0.5f;
fmd->domain->display_thickness = 1.0f;
+ fmd->domain->show_gridlines = false;
fmd->domain->coba = NULL;
+ fmd->domain->grid_scale = 1.0f;
fmd->domain->vector_scale = 1.0f;
fmd->domain->vector_draw_type = VECTOR_DRAW_NEEDLE;
+ fmd->domain->vector_field = FLUID_DOMAIN_VECTOR_FIELD_VELOCITY;
+ fmd->domain->vector_scale_with_magnitude = true;
+ fmd->domain->vector_draw_mac_components = VECTOR_DRAW_MAC_X | VECTOR_DRAW_MAC_Y |
+ VECTOR_DRAW_MAC_Z;
fmd->domain->use_coba = false;
fmd->domain->coba_field = FLUID_DOMAIN_FIELD_DENSITY;
+ fmd->domain->gridlines_color_field = 0;
+ fmd->domain->gridlines_lower_bound = 0.0f;
+ fmd->domain->gridlines_upper_bound = 1.0f;
+ fmd->domain->gridlines_range_color[0] = 1.0f;
+ fmd->domain->gridlines_range_color[1] = 0.0f;
+ fmd->domain->gridlines_range_color[2] = 0.0f;
+ fmd->domain->gridlines_range_color[3] = 1.0f;
+ fmd->domain->gridlines_cell_filter = FLUID_CELL_TYPE_NONE;
/* -- Deprecated / unsed options (below)-- */
@@ -5219,7 +5256,6 @@ void BKE_fluid_modifier_copy(const struct FluidModifierData *fmd,
tfds->timesteps_maximum = fds->timesteps_maximum;
/* display options */
- tfds->slice_method = fds->slice_method;
tfds->axis_slice_method = fds->axis_slice_method;
tfds->slice_axis = fds->slice_axis;
tfds->interp_method = fds->interp_method;
@@ -5227,13 +5263,23 @@ void BKE_fluid_modifier_copy(const struct FluidModifierData *fmd,
tfds->slice_per_voxel = fds->slice_per_voxel;
tfds->slice_depth = fds->slice_depth;
tfds->display_thickness = fds->display_thickness;
+ tfds->show_gridlines = fds->show_gridlines;
if (fds->coba) {
tfds->coba = MEM_dupallocN(fds->coba);
}
tfds->vector_scale = fds->vector_scale;
tfds->vector_draw_type = fds->vector_draw_type;
+ tfds->vector_field = fds->vector_field;
+ tfds->vector_scale_with_magnitude = fds->vector_scale_with_magnitude;
+ tfds->vector_draw_mac_components = fds->vector_draw_mac_components;
tfds->use_coba = fds->use_coba;
tfds->coba_field = fds->coba_field;
+ tfds->grid_scale = fds->grid_scale;
+ tfds->gridlines_color_field = fds->gridlines_color_field;
+ tfds->gridlines_lower_bound = fds->gridlines_lower_bound;
+ tfds->gridlines_upper_bound = fds->gridlines_upper_bound;
+ copy_v4_v4(tfds->gridlines_range_color, fds->gridlines_range_color);
+ tfds->gridlines_cell_filter = fds->gridlines_cell_filter;
/* -- Deprecated / unsed options (below)-- */