diff options
author | Janne Karhu <jhkarh@gmail.com> | 2011-01-07 14:24:34 +0300 |
---|---|---|
committer | Janne Karhu <jhkarh@gmail.com> | 2011-01-07 14:24:34 +0300 |
commit | 29efbf8a04c66a6c0e71c63140185a603d4e684b (patch) | |
tree | 49905b40499e2bde748e52d7aa735c9dd98e9e97 /release | |
parent | 7ad97b04b7faf4640d953b8c6066b88b9154ba89 (diff) |
New hair child options:
* Renamed children to "simple" and "interpolated" as this is
easier to explain and more descriptive than "from particles"
and "from faces".
* Also shuffled the child ui around a bit to make it clearer.
* Child seed parameter allows to change the seed for children
independent of the main seed value.
* Long hair mode for interpolated children:
- Making even haircuts was impossible before as the child
strand lengths were even, but their root coordinates were
not similar in relation to the parent strands.
- The "long hair" option uses the tips of the parent strands
to calculate the child strand tips.
* Hair parting options:
- Hair parting can now be calculated dynamically on the fly
when in 2.49 there was a cumbersome way of using emitter mesh
seams to define parting lines.
- For long hair parting can be created by a tip distance/root
distance threshold. For example setting the minimum threshold
to 2.0 creates partings between children belonging to parents
with tip distance of three times the root distance
((1+2)*root distance).
- For short hair the parting thresholds are used as angles
between the root directions.
* New kink parameters:
- Kink flatness calculates kink into a shape that would have
been achieved with an actual curling iron.
- Kink amplitude clump determines how much the main clump value
effects the kink amplitude.
- The beginning of kink is now smoothed to make the hair look
more natural close to the roots.
* Some bugs fixed along the way too:
- Child parent's were not determined correctly in some cases.
- Children didn't always look correct in particle mode.
- Changing child parameters caused actual particles to be
recalculated.
* Also cleaned up some deprecated code.
All in all there should be no real changes to how old files look
(except perhaps a bit better!), but the new options should make
hair/fur creation a bit more enjoyable. I'll try to make a video
demonstrating the new stuff shortly.
Diffstat (limited to 'release')
-rw-r--r-- | release/scripts/ui/properties_particle.py | 86 |
1 files changed, 51 insertions, 35 deletions
diff --git a/release/scripts/ui/properties_particle.py b/release/scripts/ui/properties_particle.py index ebc24df225b..2c5cfeaca63 100644 --- a/release/scripts/ui/properties_particle.py +++ b/release/scripts/ui/properties_particle.py @@ -739,7 +739,7 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel): row = layout.row() col = row.column() - if part.type == 'HAIR' and part.use_strand_primitive == True and part.child_type == 'FACES': + if part.type == 'HAIR' and part.use_strand_primitive == True and part.child_type == 'INTERPOLATED': layout.prop(part, "use_simplify") if part.use_simplify == True: row = layout.row() @@ -925,60 +925,76 @@ class PARTICLE_PT_children(ParticleButtonsPanel, bpy.types.Panel): col.prop(part, "child_nbr", text="Display") col.prop(part, "rendered_child_count", text="Render") - col = row.column(align=True) - - if part.child_type == 'FACES': + if part.child_type == 'INTERPOLATED': + col = row.column() + col.prop(psys, "child_seed", text="Seed") col.prop(part, "virtual_parents", slider=True) + col.prop(part, "create_long_hair_children") else: - col.prop(part, "child_radius", text="Radius") - col.prop(part, "child_roundness", text="Roundness", slider=True) - col = row.column(align=True) col.prop(part, "child_size", text="Size") col.prop(part, "child_size_random", text="Random") - layout.row().label(text="Effects:") - - row = layout.row() - - col = row.column(align=True) - col.prop(part, "clump_factor", slider=True) - col.prop(part, "clump_shape", slider=True) + split = layout.split() - col = row.column(align=True) - col.prop(part, "roughness_endpoint") - col.prop(part, "roughness_end_shape") + col = split.column() + col.label(text="Effects:") - row = layout.row() + sub = col.column(align=True) + sub.prop(part, "clump_factor", slider=True) + sub.prop(part, "clump_shape", slider=True) + + sub = col.column(align=True) + sub.prop(part, "child_length", slider=True) + sub.prop(part, "child_length_threshold", slider=True) + + if part.child_type == 'SIMPLE': + sub = col.column(align=True) + sub.prop(part, "child_radius", text="Radius") + sub.prop(part, "child_roundness", text="Roundness", slider=True) + sub.prop(psys, "child_seed", text="Seed") + elif part.virtual_parents > 0.0: + sub = col.column(align=True) + sub.label(text="Parting not") + sub.label(text="available with") + sub.label(text="virtual parents.") + else: + sub = col.column(align=True) + sub.prop(part, "child_parting_factor", text="Parting", slider=True) + sub.prop(part, "child_parting_min", text="Min") + sub.prop(part, "child_parting_max", text="Max") - col = row.column(align=True) - col.prop(part, "roughness_1") - col.prop(part, "roughness_1_size") + col = split.column() + col.label(text="Roughness:") - col = row.column(align=True) - col.prop(part, "roughness_2") - col.prop(part, "roughness_2_size") - col.prop(part, "roughness_2_threshold", slider=True) + sub = col.column(align=True) + sub.prop(part, "roughness_1", text="Uniform") + sub.prop(part, "roughness_1_size", text="Size") - row = layout.row() - col = row.column(align=True) - col.prop(part, "child_length", slider=True) - col.prop(part, "child_length_threshold", slider=True) + sub = col.column(align=True) + sub.prop(part, "roughness_endpoint", "Endpoint") + sub.prop(part, "roughness_end_shape") - col = row.column(align=True) - col.label(text="Space reserved for") - col.label(text="hair parting controls") + sub = col.column(align=True) + sub.prop(part, "roughness_2", text="Random") + sub.prop(part, "roughness_2_size", text="Size") + sub.prop(part, "roughness_2_threshold", slider=True) layout.row().label(text="Kink:") layout.row().prop(part, "kink", expand=True) split = layout.split() + split.active = part.kink != 'NO' col = split.column() - col.prop(part, "kink_amplitude") - col.prop(part, "kink_frequency") + sub = col.column(align=True) + sub.prop(part, "kink_amplitude") + sub.prop(part, "kink_amplitude_clump", text="Clump", slider=True) + col.prop(part, "kink_flat", slider=True) col = split.column() - col.prop(part, "kink_shape", slider=True) + sub = col.column(align=True) + sub.prop(part, "kink_frequency") + sub.prop(part, "kink_shape", slider=True) class PARTICLE_PT_field_weights(ParticleButtonsPanel, bpy.types.Panel): |