diff options
-rw-r--r-- | add_advanced_objects_menu/__init__.py | 27 | ||||
-rw-r--r-- | add_advanced_objects_menu/pixelate_3d.py | 53 |
2 files changed, 41 insertions, 39 deletions
diff --git a/add_advanced_objects_menu/__init__.py b/add_advanced_objects_menu/__init__.py index cacf8419..8b9cd86a 100644 --- a/add_advanced_objects_menu/__init__.py +++ b/add_advanced_objects_menu/__init__.py @@ -25,7 +25,7 @@ bl_info = { "name": "Add Advanced Objects", "author": "Meta Androcto", - "version": (0, 1, 4), + "version": (0, 1, 5), "blender": (2, 78, 0), "location": "View3D > Add ", "description": "Add Object & Camera extras", @@ -179,8 +179,7 @@ class INFO_MT_Physics_tools_add(Menu): def draw(self, context): layout = self.layout layout.operator_context = 'INVOKE_REGION_WIN' - layout.operator("object.drop_on_active", - text="Drop To Ground", icon="SORTSIZE") + layout.operator("ball.rope", text="Wrecking Ball", icon='PHYSICS') layout.operator("clot.rope", @@ -249,7 +248,7 @@ class AdvancedObjPreferences(AddonPreferences): box.label(text="Panels located in 3D View Tools Region > Create", icon="LAYER_ACTIVE") box.label(text="CubeSter", icon="LAYER_USED") - box.label(text="Duplicate on Curve (Shown if an Active Curve Object is it the 3D View)", + box.label(text="Arrange on Curve (Shown if an Active Curve Object is it the 3D View)", icon="LAYER_USED") @@ -498,26 +497,6 @@ class AdvancedObjProperties(PropertyGroup): default=0.25 ) - # pixelate_3d properties - pixelate_3d_size = FloatProperty( - name="Size", - min=.05, max=5, - default=.25, - description="Size of the cube / grid" - ) - pixelate_3d_gap = IntProperty( - name="Gap", - min=0, max=90, - default=10, - subtype='PERCENTAGE', - description="Separation - percent of size" - ) - pixelate_3d_smooth = FloatProperty( - name="Smooth", - min=0, max=1, - default=.0, - description="Smooth factor when subdividing mesh" - ) # arrange_on_curve arrange_c_use_selected = BoolProperty( name="Use Selected", diff --git a/add_advanced_objects_menu/pixelate_3d.py b/add_advanced_objects_menu/pixelate_3d.py index d2b28971..3a9fc886 100644 --- a/add_advanced_objects_menu/pixelate_3d.py +++ b/add_advanced_objects_menu/pixelate_3d.py @@ -4,22 +4,25 @@ bl_info = { "name": "3D Pixelate", "author": "liero", - "version": (0, 5, 2), + "version": (0, 5, 3), "blender": (2, 74, 0), "location": "View3D > Tool Shelf", "description": "Creates a 3d pixelated version of the object", "category": "Object"} -# Note: winmgr properties are moved into __init__ -# search for patterns advanced_objects and adv_obj +# Note: winmgr properties are moved to the operator + import bpy from bpy.types import Operator +from bpy.props import ( + FloatProperty, + IntProperty, + ) -def pix(obj): +def pix(self, obj): sce = bpy.context.scene - props = sce.advanced_objects obj.hide = obj.hide_render = True mes = obj.to_mesh(sce, True, 'RENDER') mes.transform(obj.matrix_world) @@ -34,12 +37,12 @@ def pix(obj): fin = True for i in dup.data.edges: d = ver[i.vertices[0]].co - ver[i.vertices[1]].co - if d.length > props.pixelate_3d_size: + if d.length > self.size: ver[i.vertices[0]].select = True ver[i.vertices[1]].select = True fin = False bpy.ops.object.editmode_toggle() - bpy.ops.mesh.subdivide(number_cuts=1, smoothness=props.pixelate_3d_smooth) + bpy.ops.mesh.subdivide(number_cuts=1, smoothness=self.smooth) bpy.ops.mesh.select_all(action='DESELECT') bpy.ops.object.editmode_toggle() if fin: @@ -47,14 +50,14 @@ def pix(obj): for i in ver: for n in range(3): - i.co[n] -= (.001 + i.co[n]) % props.pixelate_3d_size + i.co[n] -= (.001 + i.co[n]) % self.size bpy.ops.object.mode_set(mode='EDIT', toggle=False) bpy.ops.mesh.select_all(action='SELECT') bpy.ops.mesh.remove_doubles(threshold=0.0001) bpy.ops.mesh.delete(type='EDGE_FACE') bpy.ops.object.mode_set() - sca = props.pixelate_3d_size * (100 - props.pixelate_3d_gap) * .005 + sca = self.size * (100 - self.gap) * .005 bpy.ops.mesh.primitive_cube_add(layers=[True] + [False] * 19) bpy.ops.transform.resize(value=[sca] * 3) bpy.context.scene.objects.active = dup @@ -70,6 +73,27 @@ class Pixelate(Operator): "Needs an existing Active Mesh Object") bl_options = {'REGISTER', 'UNDO'} + size = FloatProperty( + name="Size", + min=.05, max=5, + default=.25, + description="Size of the cube / grid \n" + "Small values (below 0.1) can create a high polygon count" + ) + gap = IntProperty( + name="Gap", + min=0, max=90, + default=10, + subtype='PERCENTAGE', + description="Separation - percent of size" + ) + smooth = FloatProperty( + name="Smooth", + min=0, max=1, + default=.0, + description="Smooth factor when subdividing mesh" + ) + @classmethod def poll(cls, context): return (context.active_object and @@ -78,17 +102,16 @@ class Pixelate(Operator): def draw(self, context): layout = self.layout - adv_obj = context.scene.advanced_objects col = layout.column(align=True) - col.prop(adv_obj, "pixelate_size") - col.prop(adv_obj, "pixelate_gap") - layout.prop(adv_obj, "pixelate_smooth") + col.prop(self, "size") + col.prop(self, "gap") + layout.prop(self, "smooth") def execute(self, context): - objeto = context.active_object + objeto = bpy.context.object try: - pix(objeto) + pix(self, objeto) except Exception as e: self.report({'WARNING'}, |