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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to