From 40372e3ac609b26f68a01ba7514c025b8b179429 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Fri, 15 Apr 2011 12:15:02 +0000 Subject: *Bug fixes (script thought there was 32 layers, lol). *Commented out non-manifold check on returned shards, it prevented open meshes to be fractured (e.g. Suzanne). *Enhanced UI of Fracture Group op. --- object_fracture/__init__.py | 2 +- object_fracture/fracture_ops.py | 36 +++++++++++++++++++++--------------- 2 files changed, 22 insertions(+), 16 deletions(-) (limited to 'object_fracture') diff --git a/object_fracture/__init__.py b/object_fracture/__init__.py index 33d1c851..895af266 100644 --- a/object_fracture/__init__.py +++ b/object_fracture/__init__.py @@ -21,7 +21,7 @@ bl_info = { "author": "pildanovak", "version": (2, 0), "blender": (2, 5, 7), - "api": 35622, + "api": 36147, "location": "Search > Fracture Object & Add -> Fracture Helper Objects", "description": "Fractured Object, Bomb, Projectile, Recorder", "warning": "", diff --git a/object_fracture/fracture_ops.py b/object_fracture/fracture_ops.py index 383d93d4..0cf225d7 100644 --- a/object_fracture/fracture_ops.py +++ b/object_fracture/fracture_ops.py @@ -66,9 +66,6 @@ def create_cutter(context, crack_type, scale, roughness): location=(0, 0, 0), rotation=(0, 0, 0), layers=(True, False, False, False, - False, False, False, False, - False, False, False, False, - False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, @@ -161,7 +158,7 @@ def getIslands(shard): bpy.ops.object.select_all(action='DESELECT') bpy.context.scene.objects.active = shard shard.select = True - bpy.ops.object.duplicate(linked=False, mode=1) + bpy.ops.object.duplicate(linked=False, mode='DUMMY') a = bpy.context.scene.objects.active sm = a.data print (a.name) @@ -231,8 +228,11 @@ def boolop(ob, cutter, op): fault = 1 #print ('boolop: sizeerror') - elif min(nmesh.edge_face_count) < 2: # Manifold check - fault = 1 + # This checks whether returned shards are non-manifold. + # Problem is, if org mesh is non-manifold, it will always fail (e.g. with Suzanne). + # And disabling it does not seem to cause any problem… +# elif min(nmesh.edge_face_count) < 2: # Manifold check +# fault = 1 if not fault: new_shards = getIslands(new_shard) @@ -407,25 +407,31 @@ class FractureGroup(bpy.types.Operator): bl_options = {'REGISTER', 'UNDO'} exe = BoolProperty(name="Execute", - description="If it shall actually run, for optimal performance...", - default=False) + description="If it shall actually run, for optimal performance...", + default=False) - e = [] - for i, g in enumerate(bpy.data.groups): - e.append((g.name, g.name, '')) + group = StringProperty(name="Group", + description="Specify the group used for fracturing") - group = EnumProperty(name='Group (hit F8 to refresh list)', - items=e, - description='Specify the group used for fracturing') +# e = [] +# for i, g in enumerate(bpy.data.groups): +# e.append((g.name, g.name, '')) +# group = EnumProperty(name='Group (hit F8 to refresh list)', +# items=e, +# description='Specify the group used for fracturing') def execute(self, context): #getIslands(context.object) - if self.exe: + if self.exe and self.group: fracture_group(context, self.group) return {'FINISHED'} + def draw(self, context): + layout = self.layout + layout.prop(self, "exe") + layout.prop_search(self, "group", bpy.data, "groups") ##################################################################### # Import Functions -- cgit v1.2.3