Presets for hair dynamics.

This is necessary because the hair dynamics settings are not part of the
ParticleSettings datablock, but part of the convoluted cloth modifier
inside the particle system struct. In the future this will be recoded
properly, but in the meantime presets provide a simple an unobtrusive
way to have reusable dynamics settings for hair.

Conflicts:
	release/scripts/startup/bl_ui/properties_particle.py
This commit is contained in:
Lukas Tönne 2014-12-19 14:56:02 +01:00
parent db2ac79fc7
commit bb76e96339
3 changed files with 60 additions and 0 deletions

@ -0,0 +1,17 @@
import bpy
psys = bpy.context.particle_system
cloth = bpy.context.particle_system.cloth
settings = bpy.context.particle_system.cloth.settings
collision = bpy.context.particle_system.cloth.collision_settings
settings.quality = 5
settings.mass = 0.30000001192092896
settings.bending_stiffness = 0.5
psys.settings.bending_random = 0.0
settings.bending_damping = 0.5
settings.air_damping = 1.0
settings.internal_friction = 0.0
settings.density_target = 0.0
settings.density_strength = 0.0
settings.voxel_cell_size = 0.10000000149011612
settings.pin_stiffness = 0.0

@ -365,6 +365,36 @@ class AddPresetFluid(AddPresetBase, Operator):
preset_subdir = "fluid"
class AddPresetHairDynamics(AddPresetBase, Operator):
"""Add or remove a Hair Dynamics Preset"""
bl_idname = "particle.hair_dynamics_preset_add"
bl_label = "Add Hair Dynamics Preset"
preset_menu = "PARTICLE_MT_hair_dynamics_presets"
preset_defines = [
"psys = bpy.context.particle_system",
"cloth = bpy.context.particle_system.cloth",
"settings = bpy.context.particle_system.cloth.settings",
"collision = bpy.context.particle_system.cloth.collision_settings",
]
preset_subdir = "hair_dynamics"
preset_values = [
"settings.quality",
"settings.mass",
"settings.bending_stiffness",
"psys.settings.bending_random",
"settings.bending_damping",
"settings.air_damping",
"settings.internal_friction",
"settings.density_target",
"settings.density_strength",
"settings.voxel_cell_size",
"settings.pin_stiffness",
]
class AddPresetSunSky(AddPresetBase, Operator):
"""Add or remove a Sky & Atmosphere Preset"""
bl_idname = "lamp.sunsky_preset_add"

@ -63,6 +63,14 @@ def particle_get_settings(context):
return None
class PARTICLE_MT_hair_dynamics_presets(Menu):
bl_label = "Hair Dynamics Presets"
preset_subdir = "hair_dynamics"
preset_operator = "script.execute_preset"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
draw = Menu.draw_preset
class ParticleButtonsPanel():
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
@ -308,6 +316,11 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel):
layout.enabled = psys.use_hair_dynamics and psys.point_cache.is_baked is False
row = layout.row(align=True)
row.menu("PARTICLE_MT_hair_dynamics_presets", text=bpy.types.PARTICLE_MT_hair_dynamics_presets.bl_label)
row.operator("particle.hair_dynamics_preset_add", text="", icon='ZOOMIN')
row.operator("particle.hair_dynamics_preset_add", text="", icon='ZOOMOUT').remove_active = True
split = layout.column()
col = split.column()