CORRUGATED BEAD, Making Stippled Pen Plotter Art and Simple Blender Generative Art
Corrugated Bead, plotted on paper |
A simple shape such as a sphere can be beautiful, e.g. the earth, the sun or a peach. I decided to make some compositions out of a simple corrugated or fluted bead. I designed the bead in Fusion 360 and exported the STL.
Corrugated Bead in Fusion360 |
I then imported a single copy of this STL into Blender, adjusted the scale and rotated it slightly, and rendered it.
Corrugated Bead Imported in Blender and Rendered |
I used vpype to scale the image, rotate it 90 degrees, give 2cm margins on a4 size and line sort. I translated by 8mm to the right to center because the paper is actually 9 in x 12 in.
Screenshot of Corrugated Bead in Inkscape |
I had to replace the servo on the plotter. Since doing this I am using M280P0S40 for pen down and M280P0S55 for pen up. The paper I am using has a slight curvature, if the paper placed in the "convex up" orientation the pen will sometimes hit the paper even when in the pen up state, so I try to put the paper in a "concave up" orientation and tape the edges down.
Next, I created a simple python script in blender that helped me generate the kind of scenes I was envisioning.
I create a plane at the base of the scene. I add 10 fluted beads randomly on the plane, scale the size down and then rotate them randomly on each axis. I rendered several iterations of this scene.
Here is the python script:
import bpy
import random
bpy.ops.mesh.primitive_plane_add(size=2, enter_editmode=False, align='WORLD', location=(0, 0, -1), scale=(1, 1, 1))
bpy.ops.transform.resize(value=(15, 15, 1), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)
#bpy.ops.mesh.primitive_ico_sphere_add(location=(0, 0, 0))
for x in range(10):
rand_x = random.randint(-10, 10)
rand_y = random.randint(-10, 10)
rand_x_rotate = random.uniform(-1, 1)
rand_y_rotate = random.uniform(-1, 1)
rand_z_rotate = random.uniform(-1, 1)
location = (rand_x, rand_y, 0)
bpy.ops.import_mesh.stl(filepath="/Users/kevinlease/desktop/bead1.stl")
bpy.ops.transform.resize(value=(0.1, 0.1, 0.1), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)
bpy.ops.transform.translate(value=(rand_x, rand_y, 0), orient_axis_ortho='X', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(False, True, False), mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)
bpy.ops.transform.rotate(value=rand_z_rotate, orient_axis='Z', orient_type='VIEW', orient_matrix=((-0.158019, 0.987402, -0.00819312), (-0.667753, -0.100744, 0.737534), (0.727418, 0.122015, 0.67526)), orient_matrix_type='VIEW', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)
bpy.ops.transform.rotate(value=rand_y_rotate, orient_axis='Y', orient_type='VIEW', orient_matrix=((-0.158019, 0.987402, -0.00819312), (-0.667753, -0.100744, 0.737534), (0.727418, 0.122015, 0.67526)), orient_matrix_type='VIEW', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)
bpy.ops.transform.rotate(value=rand_x_rotate, orient_axis='X', orient_type='VIEW', orient_matrix=((-0.158019, 0.987402, -0.00819312), (-0.667753, -0.100744, 0.737534), (0.727418, 0.122015, 0.67526)), orient_matrix_type='VIEW', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)
multibead3 |
multibead2 |
multibead1 |
Comments
Post a Comment