diff options
author | Thomas Dinges <blender@dingto.org> | 2009-06-06 20:18:19 +0400 |
---|---|---|
committer | Thomas Dinges <blender@dingto.org> | 2009-06-06 20:18:19 +0400 |
commit | 895d76dab5b8e140a8b1bc15ce5417c2a8c97871 (patch) | |
tree | e36bcaeb37215322021b0ab375bfc2c782d05d9d /release/ui/buttons_particle.py | |
parent | 9d8fa4f959ff704e113d70ed713d1b8aec0ef014 (diff) |
2.5 Interface:
* Added a constraint tab in the buttons window.
* Added more sequencer buttons (effect strips).
Note: Sequencer buttons will go into the sequencer itself (n-key Panel) later.
* Particle button tweaks by William Reynish. Thanks!
* Some RNA fixes and new properties.
Diffstat (limited to 'release/ui/buttons_particle.py')
-rw-r--r-- | release/ui/buttons_particle.py | 325 |
1 files changed, 164 insertions, 161 deletions
diff --git a/release/ui/buttons_particle.py b/release/ui/buttons_particle.py index 693b737e1aa..505114e3ac5 100644 --- a/release/ui/buttons_particle.py +++ b/release/ui/buttons_particle.py @@ -43,8 +43,8 @@ class PARTICLE_PT_particles(ParticleButtonsPanel): row = layout.row() row.enabled = particle_panel_enabled(psys) - row.itemR(part, "type") - row.itemR(psys, "seed") + row.itemR(part, "type", expand=True) + row = layout.row() if part.type=='HAIR': @@ -74,7 +74,7 @@ class PARTICLE_PT_emission(ParticleButtonsPanel): row = layout.row() #col.itemL(text="TODO: Rate instead of amount") row.itemR(part, "amount") - row.itemL(text="") + row.itemR(psys, "seed") split = layout.split() @@ -86,6 +86,27 @@ class PARTICLE_PT_emission(ParticleButtonsPanel): col.itemR(part, "lifetime") col.itemR(part, "random_lifetime", slider=True) + layout.row().itemL(text="Emit From:") + + row = layout.row() + row.itemR(part, "emit_from", expand=True) + row = layout.row() + row.itemR(part, "trand") + if part.distribution!='GRID': + row.itemR(part, "even_distribution") + + if part.emit_from=='FACE' or part.emit_from=='VOLUME': + row = layout.row() + row.itemR(part, "distribution", expand=True) + + row = layout.row() + + if part.distribution=='JIT': + row.itemR(part, "userjit", text="Particles/Face") + row.itemR(part, "jitter_factor", text="Jittering Amount", slider=True) + elif part.distribution=='GRID': + row.itemR(part, "grid_resolution") + class PARTICLE_PT_cache(ParticleButtonsPanel): __idname__= "PARTICLE_PT_cache" __label__ = "Cache" @@ -111,11 +132,10 @@ class PARTICLE_PT_cache(ParticleButtonsPanel): row.itemR(cache, "end_frame") #layout.row().itemL(text="No simulation frames in disk cache.") - - + class PARTICLE_PT_initial(ParticleButtonsPanel): __idname__= "PARTICLE_PT_initial" - __label__ = "Initial values" + __label__ = "Velocity" def draw(self, context): layout = self.layout @@ -125,82 +145,55 @@ class PARTICLE_PT_initial(ParticleButtonsPanel): layout.enabled = particle_panel_enabled(psys) - layout.row().itemL(text="Location from:") - - box = layout.box() - row = box.row() - row.itemR(part, "trand") - - col = row.column() - col.row().itemR(part, "emit_from", expand=True) - - if part.emit_from=='FACE' or part.emit_from=='VOLUME': - row = box.row() - - if part.distribution!='GRID': - row.itemR(part, "even_distribution") - else: - row.itemL(text="") - - row.itemR(part, "distribution", expand=True) - - row = box.row() - - if part.distribution=='JIT': - row.itemR(part, "userjit", text="Particles/Face") - row.itemR(part, "jitter_factor", text="Jittering Amount", slider=True) - elif part.distribution=='GRID': - row.itemR(part, "grid_resolution") - #layout.row().itemL(text="") - layout.row().itemL(text="Velocity:") - box = layout.box() - row = box.row() - col = row.column() - col.itemR(part, "normal_factor") + layout.row().itemL(text="Direction:") + + split = layout.split() + + sub = split.column() + sub.itemR(part, "normal_factor") if part.emit_from=='PARTICLE': - col.itemR(part, "particle_factor") + sub.itemR(part, "particle_factor") else: - col.itemR(part, "object_factor", slider=True) - col.itemR(part, "random_factor") + sub.itemR(part, "object_factor", slider=True) + sub.itemR(part, "random_factor") + sub.itemR(part, "tangent_factor") + sub.itemR(part, "tangent_phase", slider=True) - col = row.column(align=True) - col.itemL(text="TODO:") - col.itemL(text="Object aligned") - col.itemL(text="direction: X, Y, Z") + sub = split.column() + sub.itemL(text="TODO:") + sub.itemL(text="Object aligned") + sub.itemL(text="direction: X, Y, Z") - row = box.row() - col = row.column(align=True) - col.itemR(part, "tangent_factor") - col.itemR(part, "tangent_phase", slider=True) - - col = row.column(align=True) if part.type=='REACTOR': - col.itemR(part, "reactor_factor") - col.itemR(part, "reaction_shape", slider=True) + sub.itemR(part, "reactor_factor") + sub.itemR(part, "reaction_shape", slider=True) else: - col.itemL(text="") + sub.itemL(text="") layout.row().itemL(text="Rotation:") - box = layout.box() - box.row().itemR(part, "rotation_dynamic") - - row = box.row() - col = row.column(align=True) - col.itemR(part, "rotation_mode", text="") - col.itemR(part, "random_rotation_factor", slider=True) - col = row.column(align=True) - col.itemR(part, "phase_factor", slider=True) - col.itemR(part, "random_phase_factor", text="Random", slider=True) - + split = layout.split() + + sub = split.column() - layout.row().itemL(text="Angular velocity:") + sub.itemR(part, "rotation_mode", text="Axis") + split = layout.split() + + sub = split.column() + sub.itemR(part, "rotation_dynamic") + sub.itemR(part, "random_rotation_factor", slider=True) + sub = split.column() + sub.itemR(part, "phase_factor", slider=True) + sub.itemR(part, "random_phase_factor", text="Random", slider=True) - box = layout.box() - row = box.row() - row.itemR(part, "angular_velocity_mode", expand=True) - row.itemR(part, "angular_velocity_factor", text="") + layout.row().itemL(text="Angular velocity:") + layout.row().itemR(part, "angular_velocity_mode", expand=True) + split = layout.split() + + sub = split.column() + + sub.itemR(part, "angular_velocity_factor", text="") class PARTICLE_PT_physics(ParticleButtonsPanel): __idname__= "PARTICLE_PT_physics" @@ -213,56 +206,50 @@ class PARTICLE_PT_physics(ParticleButtonsPanel): part = psys.settings layout.enabled = layout.enabled = particle_panel_enabled(psys) - - layout.itemR(part, "effector_group") - - layout.itemL(text="General:") - box = layout.box() - row = box.row() - col = row.column(align=True) - col.itemR(part, "particle_size") - col.itemR(part, "random_size", slider=True) - col = row.column(align=True) - col.itemR(part, "mass") - col.itemR(part, "sizemass", text="Multiply mass with size") - - layout.row().itemL(text="") - + row = layout.row() - row.itemL(text="Physics Type:") row.itemR(part, "physics_type", expand=True) - if part.physics_type != 'NO': - box = layout.box() - row = box.row() + layout.itemR(part, "effector_group") - if part.physics_type == 'NEWTON': - row.itemR(part, "integrator") - row = box.row() + row = layout.row() col = row.column(align=True) - col.itemL(text="Forces:") - col.itemR(part, "brownian_factor") - col.itemR(part, "drag_factor", slider=True) - col.itemR(part, "damp_factor", slider=True) + col.itemR(part, "particle_size") + col.itemR(part, "random_size", slider=True) + col = row.column(align=True) + col.itemR(part, "mass") + col.itemR(part, "sizemass", text="Multiply mass with size") + + split = layout.split() + + sub = split.column() + + if part.physics_type == 'NEWTON': + + sub.itemL(text="Forces:") + sub.itemR(part, "brownian_factor") + sub.itemR(part, "drag_factor", slider=True) + sub.itemR(part, "damp_factor", slider=True) + sub.itemR(part, "integrator") + sub = split.column() + sub.itemR(part, "acceleration") - row.column().itemR(part, "acceleration") elif part.physics_type == 'KEYED': - row.itemR(psys, "keyed_first") + sub.itemR(psys, "keyed_first") if psys.keyed_first==True: - row.itemR(psys, "timed_keys", text="Key timing") + sub.itemR(psys, "timed_keys", text="Key timing") else: - row.itemR(part, "keyed_time") - - row = box.row() - row.itemL(text="Next key from object:") - row.itemR(psys, "keyed_object", text="") - row.itemR(psys, "keyed_particle_system") + sub.itemR(part, "keyed_time") + sub = split.column() + sub.itemL(text="Next key from object:") + sub.itemR(psys, "keyed_object", text="") + sub.itemR(psys, "keyed_particle_system") if part.physics_type=='NEWTON' or part.physics_type=='BOIDS': - row = box.row() - row.itemR(part, "size_deflect") - row.itemR(part, "die_on_collision") - row.itemR(part, "sticky") + + sub.itemR(part, "size_deflect") + sub.itemR(part, "die_on_collision") + sub.itemR(part, "sticky") class PARTICLE_PT_render(ParticleButtonsPanel): __idname__= "PARTICLE_PT_render" @@ -277,24 +264,29 @@ class PARTICLE_PT_render(ParticleButtonsPanel): psys = context.particle_system part = psys.settings - row = layout.row() - row.itemR(part, "material") - col = row.column() - col.itemR(part, "emitter"); - col.itemR(part, "parent"); - col = row.column() - col.itemR(part, "unborn"); - col.itemR(part, "died"); + layout.itemR(part, "material") + + split = layout.split() + + sub = split.column() + sub.itemR(part, "emitter"); + sub.itemR(part, "parent"); + sub = split.column() + sub.itemR(part, "unborn"); + sub.itemR(part, "died"); row = layout.row() row.itemR(part, "ren_as", expand=True) - row = layout.row(align=True) + split = layout.split() + + sub = split.column() if part.ren_as == 'LINE': - row.itemR(part, "line_length_tail") - row.itemR(part, "line_length_head") - row.itemR(part, "velocity_length") + sub.itemR(part, "line_length_tail") + sub.itemR(part, "line_length_head") + sub = split.column() + sub.itemR(part, "velocity_length") elif part.ren_as == 'PATH': if (part.type!='HAIR' and psys.point_cache.baked==False): @@ -302,14 +294,23 @@ class PARTICLE_PT_render(ParticleButtonsPanel): box.itemL(text="Baked or keyed particles needed for correct rendering.") return - row.itemR(part, "hair_bspline") - row.itemR(part, "render_step", text="Steps") - - row = layout.row() - row.itemR(part, "abs_length") - col = row.column(align=True) - col.itemR(part, "absolute_length") - col.itemR(part, "random_length", slider=True) + sub.itemR(part, "render_strand") + colsub = sub.column() + colsub.active = part.render_strand == False + colsub.itemR(part, "render_adaptive") + colsub = sub.column() + colsub.active = part.render_adaptive or part.render_strand == True + colsub.itemR(part, "adaptive_angle") + colsub = sub.column() + colsub.active = part.render_adaptive == True and part.render_strand == False + colsub.itemR(part, "adaptive_pix") + sub.itemR(part, "hair_bspline") + sub.itemR(part, "render_step", text="Steps") + sub = split.column() + sub.itemL(text="Length:") + sub.itemR(part, "abs_length", text="Absolute") + sub.itemR(part, "absolute_length", text="Maximum") + sub.itemR(part, "random_length", text="Random", slider=True) #row = layout.row() #row.itemR(part, "timed_path") @@ -320,18 +321,18 @@ class PARTICLE_PT_render(ParticleButtonsPanel): row = layout.row() col = row.column() - col.itemR(part, "render_strand") - subrow = col.row() - subrow.active = part.render_strand == False - subrow.itemR(part, "render_adaptive") - col = row.column(align=True) - subrow = col.row() - subrow.active = part.render_adaptive or part.render_strand == True - subrow.itemR(part, "adaptive_angle") - subrow = col.row() - subrow.active = part.render_adaptive == True and part.render_strand == False - subrow.itemR(part, "adaptive_pix") + +# subrow = col.row() +# subrow.active = part.render_strand == False +# subrow.itemR(part, "render_adaptive") +# col = row.column(align=True) +# subrow = col.row() +# subrow.active = part.render_adaptive or part.render_strand == True +# subrow.itemR(part, "adaptive_angle") +# subrow = col.row() +# subrow.active = part.render_adaptive == True and part.render_strand == False +# subrow.itemR(part, "adaptive_pix") if part.type=='HAIR' and part.render_strand==True and part.child_type=='FACES': layout.itemR(part, "enable_simplify") @@ -349,21 +350,24 @@ class PARTICLE_PT_render(ParticleButtonsPanel): elif part.ren_as == 'OBJECT': - row.itemR(part, "dupli_object") + #sub = split.column() + sub.itemR(part, "dupli_object") elif part.ren_as == 'GROUP': + sub.itemR(part, "dupli_group") split = layout.split() - col = split.column() - row = col.row() - row.itemR(part, "whole_group") - subcol = row.column() - subcol.active = part.whole_group == False - subcol.itemR(part, "rand_group") - split.column().itemR(part, "dupli_group", text="") + sub = split.column() + sub.itemR(part, "whole_group") + sub = split.column() + colsub = sub.column() + colsub.active = part.whole_group == False + colsub.itemR(part, "rand_group") + elif part.ren_as == 'BILLBOARD': - row.itemL(text="Align:") - row.itemR(part, "billboard_lock", text="Lock") + sub.itemL(text="Align:") + row = layout.row() row.itemR(part, "billboard_align", expand=True) + row.itemR(part, "billboard_lock", text="Lock") row = layout.row() row.itemR(part, "billboard_object") @@ -393,7 +397,7 @@ class PARTICLE_PT_render(ParticleButtonsPanel): class PARTICLE_PT_draw(ParticleButtonsPanel): __idname__= "PARTICLE_PT_draw" - __label__ = "Draw" + __label__ = "Display" def poll(self, context): return (context.particle_system != None) @@ -442,7 +446,6 @@ class PARTICLE_PT_draw(ParticleButtonsPanel): subcol.active = part.material_color==False #subcol.itemL(text="color") #subcol.itemL(text="Override material color") - class PARTICLE_PT_children(ParticleButtonsPanel): __idname__= "PARTICLE_PT_children" @@ -462,7 +465,7 @@ class PARTICLE_PT_children(ParticleButtonsPanel): row = layout.row() col = row.column(align=True) - col.itemR(part, "child_nbr", text="Draw") + col.itemR(part, "child_nbr", text="Display") col.itemR(part, "rendered_child_nbr", text="Render") col = row.column(align=True) @@ -503,13 +506,14 @@ class PARTICLE_PT_children(ParticleButtonsPanel): layout.row().itemL(text="Kink:") layout.row().itemR(part, "kink", expand=True) - row = layout.row() - row.itemR(part, "kink_amplitude") - row.itemR(part, "kink_frequency") - row.itemR(part, "kink_shape", slider=True) - - + split = layout.split() + sub = split.column() + sub.itemR(part, "kink_amplitude") + sub.itemR(part, "kink_frequency") + sub = split.column() + sub.itemR(part, "kink_shape", slider=True) + class PARTICLE_PT_vertexgroups(ParticleButtonsPanel): __idname__= "PARTICLE_PT_vertexgroups" __label__ = "Vertexgroups" @@ -583,5 +587,4 @@ bpy.types.register(PARTICLE_PT_physics) bpy.types.register(PARTICLE_PT_render) bpy.types.register(PARTICLE_PT_draw) bpy.types.register(PARTICLE_PT_children) -bpy.types.register(PARTICLE_PT_vertexgroups) - +bpy.types.register(PARTICLE_PT_vertexgroups)
\ No newline at end of file |