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:
Diffstat (limited to 'release/scripts/startup/bl_operators/object_quick_effects.py')
-rw-r--r--release/scripts/startup/bl_operators/object_quick_effects.py233
1 files changed, 0 insertions, 233 deletions
diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py
index 414855c7e35..39a0ad31625 100644
--- a/release/scripts/startup/bl_operators/object_quick_effects.py
+++ b/release/scripts/startup/bl_operators/object_quick_effects.py
@@ -47,239 +47,6 @@ def object_ensure_material(obj, mat_name):
return mat
-class QuickFur(Operator):
- bl_idname = "object.quick_fur"
- bl_label = "Quick Fur"
- bl_options = {'REGISTER', 'UNDO'}
-
- density = EnumProperty(
- name="Fur Density",
- items=(('LIGHT', "Light", ""),
- ('MEDIUM', "Medium", ""),
- ('HEAVY', "Heavy", "")),
- default='MEDIUM',
- )
- view_percentage = IntProperty(
- name="View %",
- min=1, max=100,
- soft_min=1, soft_max=100,
- default=10,
- )
- length = FloatProperty(
- name="Length",
- min=0.001, max=100,
- soft_min=0.01, soft_max=10,
- default=0.1,
- )
-
- def execute(self, context):
- fake_context = context.copy()
- mesh_objects = [obj for obj in context.selected_objects
- if obj.type == 'MESH' and obj.mode == 'OBJECT']
-
- if not mesh_objects:
- self.report({'ERROR'}, "Select at least one mesh object")
- return {'CANCELLED'}
-
- mat = bpy.data.materials.new("Fur Material")
- mat.strand.tip_size = 0.25
- mat.strand.blend_distance = 0.5
-
- for obj in mesh_objects:
- fake_context["object"] = obj
- bpy.ops.object.particle_system_add(fake_context)
-
- psys = obj.particle_systems[-1]
- psys.settings.type = 'HAIR'
-
- if self.density == 'LIGHT':
- psys.settings.count = 100
- elif self.density == 'MEDIUM':
- psys.settings.count = 1000
- elif self.density == 'HEAVY':
- psys.settings.count = 10000
-
- psys.settings.child_nbr = self.view_percentage
- psys.settings.hair_length = self.length
- psys.settings.use_strand_primitive = True
- psys.settings.use_hair_bspline = True
- psys.settings.child_type = 'INTERPOLATED'
-
- obj.data.materials.append(mat)
- psys.settings.material = len(obj.data.materials)
-
- return {'FINISHED'}
-
-
-class QuickExplode(Operator):
- bl_idname = "object.quick_explode"
- bl_label = "Quick Explode"
- bl_options = {'REGISTER', 'UNDO'}
-
- style = EnumProperty(
- name="Explode Style",
- items=(('EXPLODE', "Explode", ""),
- ('BLEND', "Blend", "")),
- default='EXPLODE',
- )
- amount = IntProperty(
- name="Amount of pieces",
- min=2, max=10000,
- soft_min=2, soft_max=10000,
- default=100,
- )
- frame_duration = IntProperty(
- name="Duration",
- min=1, max=300000,
- soft_min=1, soft_max=10000,
- default=50,
- )
-
- frame_start = IntProperty(
- name="Start Frame",
- min=1, max=300000,
- soft_min=1, soft_max=10000,
- default=1,
- )
- frame_end = IntProperty(
- name="End Frame",
- min=1, max=300000,
- soft_min=1, soft_max=10000,
- default=10,
- )
-
- velocity = FloatProperty(
- name="Outwards Velocity",
- min=0, max=300000,
- soft_min=0, soft_max=10,
- default=1,
- )
-
- fade = BoolProperty(
- name="Fade",
- description="Fade the pieces over time",
- default=True,
- )
-
- def execute(self, context):
- fake_context = context.copy()
- obj_act = context.active_object
-
- if obj_act is None or obj_act.type != 'MESH':
- self.report({'ERROR'}, "Active object is not a mesh")
- return {'CANCELLED'}
-
- mesh_objects = [obj for obj in context.selected_objects
- if obj.type == 'MESH' and obj != obj_act]
- mesh_objects.insert(0, obj_act)
-
- if self.style == 'BLEND' and len(mesh_objects) != 2:
- self.report({'ERROR'}, "Select two mesh objects")
- self.style = 'EXPLODE'
- return {'CANCELLED'}
- elif not mesh_objects:
- self.report({'ERROR'}, "Select at least one mesh object")
- return {'CANCELLED'}
-
- for obj in mesh_objects:
- if obj.particle_systems:
- self.report({'ERROR'},
- "Object %r already has a "
- "particle system" % obj.name)
-
- return {'CANCELLED'}
-
- if self.fade:
- tex = bpy.data.textures.new("Explode fade", 'BLEND')
- tex.use_color_ramp = True
-
- if self.style == 'BLEND':
- tex.color_ramp.elements[0].position = 0.333
- tex.color_ramp.elements[1].position = 0.666
-
- tex.color_ramp.elements[0].color[3] = 1.0
- tex.color_ramp.elements[1].color[3] = 0.0
-
- if self.style == 'BLEND':
- from_obj = mesh_objects[1]
- to_obj = mesh_objects[0]
-
- for obj in mesh_objects:
- fake_context["object"] = obj
- bpy.ops.object.particle_system_add(fake_context)
-
- settings = obj.particle_systems[-1].settings
- settings.count = self.amount
- settings.frame_start = self.frame_start
- settings.frame_end = self.frame_end - self.frame_duration
- settings.lifetime = self.frame_duration
- settings.normal_factor = self.velocity
- settings.render_type = 'NONE'
-
- explode = obj.modifiers.new(name='Explode', type='EXPLODE')
- explode.use_edge_cut = True
-
- if self.fade:
- explode.show_dead = False
- uv = obj.data.uv_textures.new("Explode fade")
- explode.particle_uv = uv.name
-
- mat = object_ensure_material(obj, "Explode Fade")
-
- mat.use_transparency = True
- mat.use_transparent_shadows = True
- mat.alpha = 0.0
- mat.specular_alpha = 0.0
-
- tex_slot = mat.texture_slots.add()
-
- tex_slot.texture = tex
- tex_slot.texture_coords = 'UV'
- tex_slot.uv_layer = uv.name
-
- tex_slot.use_map_alpha = True
-
- if self.style == 'BLEND':
- if obj == to_obj:
- tex_slot.alpha_factor = -1.0
- elem = tex.color_ramp.elements[1]
- else:
- elem = tex.color_ramp.elements[0]
- # Keep already defined alpha!
- elem.color[:3] = mat.diffuse_color
- else:
- tex_slot.use_map_color_diffuse = False
-
- if self.style == 'BLEND':
- settings.physics_type = 'KEYED'
- settings.use_emit_random = False
- settings.rotation_mode = 'NOR'
-
- psys = obj.particle_systems[-1]
-
- fake_context["particle_system"] = obj.particle_systems[-1]
- bpy.ops.particle.new_target(fake_context)
- bpy.ops.particle.new_target(fake_context)
-
- if obj == from_obj:
- psys.targets[1].object = to_obj
- else:
- psys.targets[0].object = from_obj
- settings.normal_factor = -self.velocity
- explode.show_unborn = False
- explode.show_dead = True
- else:
- settings.factor_random = self.velocity
- settings.angular_velocity_factor = self.velocity / 10.0
-
- return {'FINISHED'}
-
- def invoke(self, context, event):
- self.frame_start = context.scene.frame_current
- self.frame_end = self.frame_start + self.frame_duration
- return self.execute(context)
-
-
def obj_bb_minmax(obj, min_co, max_co):
for i in range(0, 8):
bb_vec = obj.matrix_world * Vector(obj.bound_box[i])