[Bf-blender-cvs] [34cb963] fluid-mantaflow: added gravity field and clean up UI a bit
Sebastián Barschkis
noreply at git.blender.org
Fri Aug 19 18:56:14 CEST 2016
Commit: 34cb963bf3f9d62fbc5fc5c1ad4d9ffa5ec2d62d
Author: Sebastián Barschkis
Date: Fri Aug 19 14:06:50 2016 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rB34cb963bf3f9d62fbc5fc5c1ad4d9ffa5ec2d62d
added gravity field and clean up UI a bit
===================================================================
M release/scripts/startup/bl_ui/properties_physics_smoke.py
M source/blender/blenkernel/intern/smoke.c
M source/blender/makesrna/intern/rna_smoke.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_physics_smoke.py b/release/scripts/startup/bl_ui/properties_physics_smoke.py
index 75fa457..5ac88cf 100644
--- a/release/scripts/startup/bl_ui/properties_physics_smoke.py
+++ b/release/scripts/startup/bl_ui/properties_physics_smoke.py
@@ -49,6 +49,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
md = context.smoke
ob = context.object
+ scene = context.scene
layout.prop(md, "smoke_type", expand=True)
@@ -66,9 +67,18 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
col.label(text="Time:")
col.prop(domain, "time_scale", text="Scale")
- col = split.column()
col.label(text="Border Collisions:")
col.prop(domain, "collision_extents", text="")
+
+ col = split.column()
+ if scene.use_gravity:
+ col.label(text="Use Scene Gravity", icon='SCENE_DATA')
+ sub = col.column()
+ sub.enabled = False
+ sub.prop(domain, "gravity", text="")
+ else:
+ col.label(text="Gravity:")
+ col.prop(domain, "gravity", text="")
if domain.smoke_domain_type in {'GAS'}:
split = layout.split()
@@ -79,26 +89,17 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
col.prop(domain, "alpha")
col.prop(domain, "beta", text="Temp. Diff.")
col.prop(domain, "vorticity")
-
- col = split.column(align=True)
- col.label()
col.prop(domain, "use_dissolve_smoke", text="Dissolve")
sub = col.column()
sub.active = domain.use_dissolve_smoke
sub.prop(domain, "dissolve_speed", text="Time")
sub.prop(domain, "use_dissolve_smoke_log", text="Slow")
- split = layout.split()
- split.enabled = not domain.point_cache.is_baked
-
col = split.column(align=True)
col.label(text="Fire:")
col.prop(domain, "burning_rate")
col.prop(domain, "flame_smoke")
col.prop(domain, "flame_vorticity")
-
- col = split.column(align=True)
- col.label()
col.prop(domain, "flame_ignition")
col.prop(domain, "flame_max_temp")
col.prop(domain, "flame_smoke_color")
@@ -119,27 +120,40 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
flow = md.flow_settings
layout.prop(flow, "smoke_flow_type", expand=False)
- layout.prop(flow, "smoke_flow_behavior", expand=False)
split = layout.split()
-
- col = split.column()
- if flow.smoke_flow_type in {'SMOKE', 'BOTH', 'FIRE'}:
- col.label(text="Initial Values:")
- col.prop(flow, "use_absolute")
- if flow.smoke_flow_type in {'SMOKE', 'BOTH'}:
- col.prop(flow, "density")
- col.prop(flow, "temperature")
- col.prop(flow, "smoke_color")
- if flow.smoke_flow_type in {'FIRE', 'BOTH'}:
- col.prop(flow, "fuel_amount")
-
col = split.column()
+
col.label(text="Sampling:")
- if flow.smoke_flow_behavior == 'INFLOW':
- col.prop(flow, "use_inflow")
col.prop(flow, "subframes")
+ col = split.column()
+
+ col.label(text="Flow behavior:")
+ col.prop(flow, "smoke_flow_behavior", expand=False, text="")
+
+ if not flow.smoke_flow_behavior == 'OUTFLOW':
+
+ split = layout.split()
+ col = split.column()
+
+ if flow.smoke_flow_type in {'SMOKE', 'BOTH', 'FIRE'}:
+ col.label(text="Initial Values:")
+ if flow.smoke_flow_type in {'SMOKE', 'BOTH'}:
+ col.prop(flow, "density")
+ col.prop(flow, "temperature")
+ if flow.smoke_flow_type in {'FIRE', 'BOTH'}:
+ col.prop(flow, "fuel_amount")
+
+ col = split.column()
+
+ if flow.smoke_flow_behavior in {'INFLOW', 'GEOMETRY'}:
+ col.prop(flow, "use_inflow")
+ if flow.smoke_flow_type in {'SMOKE', 'BOTH', 'FIRE'}:
+ col.prop(flow, "use_absolute")
+ if flow.smoke_flow_type in {'SMOKE', 'BOTH'}:
+ col.prop(flow, "smoke_color")
+
elif md.smoke_type == 'COLLISION':
coll = md.coll_settings
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index 516afe3..a90e5a4 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -302,17 +302,17 @@ static void smoke_set_domain_gravity(Scene *scene, SmokeDomainSettings *sds)
copy_v3_v3(gravity, scene->physics_settings.gravity);
/* map default value to 1.0 */
mul_v3_fl(gravity, 1.0f / 9.810f);
- }
-
- /* convert gravity to domain space */
- gravity_mag = len_v3(gravity);
- mul_mat3_m4_v3(sds->imat, gravity);
- normalize_v3(gravity);
- mul_v3_fl(gravity, gravity_mag);
+
+ /* convert gravity to domain space */
+ gravity_mag = len_v3(gravity);
+ mul_mat3_m4_v3(sds->imat, gravity);
+ normalize_v3(gravity);
+ mul_v3_fl(gravity, gravity_mag);
- sds->gravity[0] = gravity[0];
- sds->gravity[1] = gravity[1];
- sds->gravity[2] = gravity[2];
+ sds->gravity[0] = gravity[0];
+ sds->gravity[1] = gravity[1];
+ sds->gravity[2] = gravity[2];
+ }
}
static int smokeModifier_init(SmokeModifierData *smd, Object *ob, Scene *scene, DerivedMesh *dm)
@@ -323,6 +323,8 @@ static int smokeModifier_init(SmokeModifierData *smd, Object *ob, Scene *scene,
int res[3];
/* set domain dimensions from derivedmesh */
smoke_set_domain_from_derivedmesh(sds, ob, dm, true);
+ /* set domain gravity */
+ smoke_set_domain_gravity(scene, sds);
/* reset domain values */
zero_v3_int(sds->shift);
zero_v3(sds->shift_f);
@@ -560,10 +562,6 @@ void smokeModifier_createType(struct SmokeModifierData *smd)
smd->domain->noise = MOD_SMOKE_NOISEWAVE;
smd->domain->diss_speed = 5;
smd->domain->active_fields = 0;
-
- smd->domain->gravity[0] = 0.0;
- smd->domain->gravity[1] = 0.0;
- smd->domain->gravity[2] = -9.81;;
smd->domain->adapt_margin = 4;
smd->domain->adapt_res = 0;
@@ -588,11 +586,15 @@ void smokeModifier_createType(struct SmokeModifierData *smd)
smd->domain->render_display_mode = SM_VIEWPORT_FINAL;
smd->domain->type = MOD_SMOKE_DOMAIN_TYPE_GAS;
+#ifdef WITH_MANTA
+ smd->domain->gravity[0] = 0.0f;
+ smd->domain->gravity[1] = 0.0f;
+ smd->domain->gravity[2] = -1.0f;
+
/* liquid */
smd->domain->particle_randomness = 0.1f;
smd->domain->particle_number = 2;
-#ifdef WITH_MANTA
/*mantaflow settings*/
smd->domain->manta_solver_res = 3;
smd->domain->noise_pos_scale = 2.0f;
@@ -695,6 +697,13 @@ void smokeModifier_copy(struct SmokeModifierData *smd, struct SmokeModifierData
tsmd->domain->flame_max_temp = smd->domain->flame_max_temp;
#ifdef WITH_MANTA
+ tsmd->domain->gravity[0] = smd->domain->gravity[0];
+ tsmd->domain->gravity[1] = smd->domain->gravity[1];
+ tsmd->domain->gravity[2] = smd->domain->gravity[2];
+
+ tsmd->domain->particle_randomness = smd->domain->particle_randomness;
+ tsmd->domain->particle_number = smd->domain->particle_number;
+
tsmd->domain->manta_solver_res = smd->domain->manta_solver_res;
tsmd->domain->noise_pos_scale = smd->domain->noise_pos_scale;
tsmd->domain->noise_time_anim = smd->domain->noise_time_anim;
diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c
index 733c23d..28c90b2 100644
--- a/source/blender/makesrna/intern/rna_smoke.c
+++ b/source/blender/makesrna/intern/rna_smoke.c
@@ -824,6 +824,13 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna)
RNA_def_property_ui_range(prop, 1, 3, 2, -1);
RNA_def_property_ui_text(prop, "Discretization", "Particle number factor (higher value results in more particles)");
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Smoke_resetCache");
+
+ prop = RNA_def_property(srna, "gravity", PROP_FLOAT, PROP_ACCELERATION);
+ RNA_def_property_float_sdna(prop, NULL, "gravity");
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_range(prop, -1000.1, 1000.1);
+ RNA_def_property_ui_text(prop, "Gravity", "Gravity in X, Y and Z direction");
+ RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Smoke_resetCache");
}
static void rna_def_smoke_flow_settings(BlenderRNA *brna)
@@ -970,7 +977,7 @@ static void rna_def_smoke_flow_settings(BlenderRNA *brna)
prop = RNA_def_property(srna, "use_inflow", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_FLOW_USE_INFLOW);
- RNA_def_property_ui_text(prop, "Use inflow", "Control when to apply inflow");
+ RNA_def_property_ui_text(prop, "Enabled", "Control when to apply inflow");
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Smoke_reset");
prop = RNA_def_property(srna, "subframes", PROP_INT, PROP_NONE);
More information about the Bf-blender-cvs
mailing list