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:
authorJanne Karhu <jhkarh@gmail.com>2011-01-07 14:24:34 +0300
committerJanne Karhu <jhkarh@gmail.com>2011-01-07 14:24:34 +0300
commit29efbf8a04c66a6c0e71c63140185a603d4e684b (patch)
tree49905b40499e2bde748e52d7aa735c9dd98e9e97 /release
parent7ad97b04b7faf4640d953b8c6066b88b9154ba89 (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.py86
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):