Wednesday, October 27, 2010

Creating a brick wall with Blender 2.54

I have been wanting to create a brick wall with Blender. I found this tutorial to be very helpful. It works well if the camera is not very close to the wall. It is fast and easy to put together.

It is also possible to put together a brick wall with an array modifier. But what really inspired me was the example script for creating castle walls available here. That script did not work for the current Blender 2.54 Beta version. So I thought I would work on creating my own script.

Here is a development version of my script. I thought I would post it here so that others looking for Blender 2.54 Beta scripting examples could find it

 import bpy 
 
 row_count = 8        # Number of rows
 bricks_per_row = 15  # Number of bricks in each row
 cube_x = .25         # Length of each brick
 cube_y = .25         # Width of wall
 cube_z = .125        # Height of each brick
 row_gap = .01        # Gap between each row
 brick_gap = .01      # Gap between each brick
 
 # Calculated values
 offset_amount = cube_x/2    # Staggers bricks
 rescaling_factor_x=cube_x/2 # Used to size the brick
 rescaling_factor_y=cube_y/2
 rescaling_factor_z=cube_z/2
 
 # Loop for each row
 for row in range(row_count):
     # Calculate if we stagger this row
     offset = row % 2 * offset_amount
     # Loop for each brick
     for index in range(bricks_per_row):
         # Add the brick
         bpy.ops.mesh.primitive_cube_add(
             location=(index*(cube_x+brick_gap)+offset, 
             0, 
             row *(cube_z + row_gap)))
         # Resize the brick
         bpy.ops.transform.resize(
             value=(rescaling_factor_x,
             rescaling_factor_y,
             rescaling_factor_z))
         # Bevel the brick
         bpy.ops.object.modifier_add(type='BEVEL')