[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34687] trunk/blender: Hair ui simplification:

Janne Karhu jhkarh at gmail.com
Mon Feb 7 12:43:35 CET 2011


Revision: 34687
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34687
Author:   jhk
Date:     2011-02-07 11:43:33 +0000 (Mon, 07 Feb 2011)
Log Message:
-----------
Hair ui simplification:
* There were a lot of settings in the particle panels that made no sense for simple hair and only cluttered up the ui.
* Now these settings are hidden by default unless "advanced" hair options are shown.
* Without advanced options the particle velocity controls are replaced by a simple "hair length" value, which actually corresponds to the grown hair length in blender units.
* Some hair effector options that are actually very useful were not shown in ui. These are now found in the "field weights" panel.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/properties_particle.py
    trunk/blender/source/blender/blenkernel/intern/particle.c
    trunk/blender/source/blender/makesdna/DNA_particle_types.h
    trunk/blender/source/blender/makesrna/intern/rna_particle.c

Modified: trunk/blender/release/scripts/ui/properties_particle.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_particle.py	2011-02-07 11:42:49 UTC (rev 34686)
+++ trunk/blender/release/scripts/ui/properties_particle.py	2011-02-07 11:43:33 UTC (rev 34687)
@@ -128,6 +128,7 @@
                         row = split.row()
                         row.enabled = particle_panel_enabled(context, psys)
                         row.prop(part, "regrow_hair")
+                        row.prop(part, "use_advanced_hair")
                     row = split.row()
                     row.enabled = particle_panel_enabled(context, psys)
                     row.prop(part, "hair_step")
@@ -173,6 +174,10 @@
         row.active = part.distribution != 'GRID'
         row.prop(part, "count")
 
+        if part.type == 'HAIR' and not part.use_advanced_hair:
+            row.prop(part, "hair_length")
+            return
+            
         if part.type != 'HAIR':
             split = layout.split()
 
@@ -303,6 +308,8 @@
     def poll(cls, context):
         if particle_panel_poll(PARTICLE_PT_velocity, context):
             psys = context.particle_system
+            if psys.settings.type == 'HAIR' and not psys.settings.use_advanced_hair:
+                return False
             return psys.settings.physics_type != 'BOIDS' and not psys.point_cache.use_external
         else:
             return False
@@ -351,6 +358,8 @@
     def poll(cls, context):
         if particle_panel_poll(PARTICLE_PT_rotation, context):
             psys = context.particle_system
+            if psys.settings.type == 'HAIR' and not psys.settings.use_advanced_hair:
+                return False
             return psys.settings.physics_type != 'BOIDS' and not psys.point_cache.use_external
         else:
             return False
@@ -393,7 +402,10 @@
     @classmethod
     def poll(cls, context):
         if particle_panel_poll(PARTICLE_PT_physics, context):
-            return not context.particle_system.point_cache.use_external
+            psys = context.particle_system
+            if psys.settings.type == 'HAIR' and not psys.settings.use_advanced_hair:
+                return False
+            return not psys.point_cache.use_external
         else:
             return False
 
@@ -1032,7 +1044,11 @@
         effector_weights_ui(self, context, part.effector_weights)
 
         if part.type == 'HAIR':
-            self.layout.prop(part.effector_weights, "apply_to_hair_growing")
+            row = self.layout.row()
+            row.prop(part.effector_weights, "apply_to_hair_growing")
+            row.prop(part, "apply_effector_to_children")
+            row = self.layout.row()
+            row.prop(part, "effect_hair", slider=True)
 
 
 class PARTICLE_PT_force_fields(ParticleButtonsPanel, bpy.types.Panel):

Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c	2011-02-07 11:42:49 UTC (rev 34686)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c	2011-02-07 11:43:33 UTC (rev 34687)
@@ -3473,7 +3473,7 @@
 	part->bb_uv_split=1;
 	part->bb_align=PART_BB_VIEW;
 	part->bb_split_offset=PART_BB_OFF_LINEAR;
-	part->flag=PART_EDISTR|PART_TRAND;
+	part->flag=PART_EDISTR|PART_TRAND|PART_HIDE_ADVANCED_HAIR;
 
 	part->sta= 1.0;
 	part->end= 200.0;

Modified: trunk/blender/source/blender/makesdna/DNA_particle_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_particle_types.h	2011-02-07 11:42:49 UTC (rev 34686)
+++ trunk/blender/source/blender/makesdna/DNA_particle_types.h	2011-02-07 11:43:33 UTC (rev 34687)
@@ -304,7 +304,7 @@
 #define PART_ROT_DYN		(1<<14)	/* dynamic rotation */
 #define PART_SIZEMASS		(1<<16)
 
-//#define PART_HAIR_GRAVITY	(1<<15)
+#define PART_HIDE_ADVANCED_HAIR	(1<<15)
 
 //#define PART_ABS_TIME		(1<<17)
 //#define PART_GLOB_TIME		(1<<18)

Modified: trunk/blender/source/blender/makesrna/intern/rna_particle.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_particle.c	2011-02-07 11:42:49 UTC (rev 34686)
+++ trunk/blender/source/blender/makesrna/intern/rna_particle.c	2011-02-07 11:43:33 UTC (rev 34687)
@@ -387,6 +387,18 @@
 	settings->end = value;
 }
 
+static void rna_PartSetting_hairlength_set(struct PointerRNA *ptr, float value)
+{
+	ParticleSettings *settings = (ParticleSettings*)ptr->data;
+	settings->normfac = value / 4.f;
+}
+
+static float rna_PartSetting_hairlength_get(struct PointerRNA *ptr)
+{
+	ParticleSettings *settings = (ParticleSettings*)ptr->data;
+	return settings->normfac * 4.f;
+}
+
 static void rna_PartSetting_linelentail_set(struct PointerRNA *ptr, float value)
 {
 	ParticleSettings *settings = (ParticleSettings*)ptr->data;
@@ -1277,6 +1289,12 @@
 	RNA_def_property_ui_text(prop, "Mass from Size", "Multiply mass by particle size");
 	RNA_def_property_update(prop, 0, "rna_Particle_reset");
 
+	prop= RNA_def_property(srna, "use_advanced_hair", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", PART_HIDE_ADVANCED_HAIR);
+	RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+	RNA_def_property_ui_text(prop, "Advanced", "Use full physics calculations for growing hair");
+	RNA_def_property_update(prop, 0, "rna_Particle_reset");
+
 	prop= RNA_def_property(srna, "lock_boids_to_surface", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_BOIDS_2D);
 	RNA_def_property_ui_text(prop, "Boids 2D", "Constrain boids to a surface");
@@ -1294,7 +1312,7 @@
 
 	prop= RNA_def_property(srna, "apply_effector_to_children", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_CHILD_EFFECT);
-	RNA_def_property_ui_text(prop, "Children", "Apply effectors to children");
+	RNA_def_property_ui_text(prop, "Effect Children", "Apply effectors to children");
 	RNA_def_property_update(prop, 0, "rna_Particle_redo");
 
 	prop= RNA_def_property(srna, "create_long_hair_children", PROP_BOOLEAN, PROP_NONE);
@@ -1776,6 +1794,13 @@
 	RNA_def_property_ui_text(prop, "Random Phase", "Randomize rotation phase");
 	RNA_def_property_update(prop, 0, "rna_Particle_reset");
 
+	prop= RNA_def_property(srna, "hair_length", PROP_FLOAT, PROP_NONE);
+	RNA_def_property_float_funcs(prop, "rna_PartSetting_hairlength_get", "rna_PartSetting_hairlength_set", NULL);
+	RNA_def_property_range(prop, 0.0f, 1000.0f);
+	RNA_def_property_ui_range(prop, 0.0f, 10.0f, 1, 3);
+	RNA_def_property_ui_text(prop, "Hair Length", "Length of the hair");
+	RNA_def_property_update(prop, 0, "rna_Particle_reset");
+
 	/* physical properties */
 	prop= RNA_def_property(srna, "mass", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_range(prop, 0.001f, 100000.0f);




More information about the Bf-blender-cvs mailing list