Ejemplo n.º 1
0
def MIT_walls(system, H):

    # Add main walls as a box
    wall_t = 0.1
    wall_h = 3 / 2 * H
    texture_wall = 'textures/yellow_brick.jpg'
    scale = [10, 10]  # Texture scale

    pos_3_3 = np.array([-4.5, 0 + 3 / 2 * H, 8.16 + wall_t])
    pos_3_4 = np.array([-4.5 - wall_t, 5 / 2 * H, 8.16 + wall_t])

    MiroAPI.add_boxShapeHemi(system, 11, H / 2, wall_t, pos_3_3, texture_wall,
                             [10, 10])  # Positive z direction
    MiroAPI.add_boxShapeHemi(system, 11 - wall_t, H / 2, wall_t, pos_3_4,
                             texture_wall, [10, 10])  # Positive z direction

    # Add support colums as a box
    beam_h = 3 / 2 * H
    beam_w = 0.08
    beam_pos_1 = np.array([4, 0 + beam_h, 5])  # Close left of stair
    beam_pos_2 = np.array([-0.8, 0 + 4 / 3 * beam_h, 5])  # Left of stair
    beam_pos_3 = np.array([8.5, 0 + beam_h, 0.5])  # Close right of stair
    beam_pos_4 = np.array([8.5, 0 + beam_h, -4.3])  # Right of stair
    beam_pos_5 = np.array([8.5, 0 + beam_h, 5])  # Middle beam

    MiroAPI.add_boxShapeHemi(system, beam_w, beam_h, beam_w, beam_pos_1,
                             'textures/white concrete.jpg', scale)
    MiroAPI.add_boxShapeHemi(system, beam_w, 2 / 3 * beam_h, beam_w,
                             beam_pos_2, 'textures/white concrete.jpg', scale)
    MiroAPI.add_boxShapeHemi(system, beam_w, beam_h, beam_w, beam_pos_3,
                             'textures/white concrete.jpg', scale)
    MiroAPI.add_boxShapeHemi(system, beam_w, beam_h, beam_w, beam_pos_4,
                             'textures/white concrete.jpg', scale)
    MiroAPI.add_boxShapeHemi(system, beam_w, beam_h, beam_w, beam_pos_5,
                             'textures/white concrete.jpg', scale)

    # Beams along wall
    for beam in range(5):
        x = 12.75 + beam * 0.46
        z = 8.16 + 0.05 + wall_t - beam * 4.47
        beam_pos = np.array([x, 0 + beam_h, z])
        MiroAPI.add_boxShapeHemi(system, beam_w, beam_h, beam_w, beam_pos,
                                 'textures/white concrete.jpg', scale)

    #-------------2nd floor---------------

    # Add wall, 2nd floor towards MIT place
    bWall_height = H / 2 - wall_t
    pos = np.array([-1.82, 0 + bWall_height, 5 + wall_t])
    MiroAPI.add_boxShapeHemi(system, 3.48, bWall_height, wall_t, pos,
                             'textures/storage_wall.jpg', [12, 15])

    # Add wall, 2nd floor towards NA (positive z direction)
    pos = np.array([-7, H / 2, 8.16 + wall_t])
    MiroAPI.add_boxShapeHemi(system, 8.75 - wall_t, H / 2, wall_t, pos,
                             'textures/yellow_brick.jpg', [5, 5])

    # Add entrence wall (positive x direction)
    pos = np.array([12.7 + wall_t, 0 + H / 2 - 0.1, 10.18])
    MiroAPI.add_boxShapeHemi(system, wall_t, H / 2 - 0.1, 1.9, pos,
                             'textures/yellow_brick.jpg', [5, 5])

    # Add entrence wall (negative x direction)
    pos = np.array([-0.4, 0 + H / 2 - 0.16, 9.86])
    MiroAPI.add_boxShapeHemi(system,
                             wall_t,
                             H / 2 - 0.16,
                             1.5,
                             pos,
                             'textures/door_cs.jpg', [4, 3],
                             Collide=False)

    # Add entrence corridor (negative x direction)
    pos = np.array([0.65, 0 + H / 2 - 0.1, 11.41])
    MiroAPI.add_boxShapeHemi(system, 1, H / 2 - 0.1, wall_t, pos,
                             'textures/white concrete.jpg', [5, 5])

    # Add 2nd entrence wall (negative x direction)
    pos = np.array([1.6, 0 + H / 2 - 0.1, 6.5 + wall_t + 0.01 + 0.05])
    MiroAPI.add_boxShapeHemi(system, wall_t, H / 2 - 0.1, 1.5 + wall_t + 0.05,
                             pos, 'textures/yellow_brick.jpg', [5, 5])

    #-------------3rd floor---------------

    # Add wall, 3rd floor (negative x direction) MIT info screen
    pos = np.array([6.5 - wall_t, 0 + 3 / 2 * H - 0.16, 10.16 + wall_t])
    MiroAPI.add_boxShapeHemi(system, wall_t, H / 2 - 0.16, 2 - wall_t, pos,
                             'textures/yellow_brick.jpg', [5, 5])

    # Add wall, 3rd floor towards NA 1 (negative z direction)
    pos = np.array([-7.6, 0 + 3 / 2 * H, 5.65])
    MiroAPI.add_boxShapeHemi(system, 1.75, H / 2, wall_t, pos,
                             'textures/white concrete.jpg', [10, 7])

    # Add wall, 3rd floor towards NA 2 (negative z direction)
    pos = np.array([-11.3, 0 + 3 / 2 * H, 5.65])
    MiroAPI.add_boxShapeHemi(system, 0.25, H / 2, wall_t, pos,
                             'textures/yellow_brick.jpg', [1, 1], False)

    # Add wall, 3rd floor corridor towards NTK (negative x direction)
    for wall in range(2):
        x = -11.05 + wall * (1.71 + wall_t)
        pos = np.array([x, 0 + 3 / 2 * H, 5.25])
        MiroAPI.add_boxShapeHemi(system, wall_t, H / 2, 0.4, pos,
                                 'textures/yellow_brick.jpg', [1, 1], False)

    # Add wall, 3rd floor NTK door (negative z direction)
    # pos = np.array([-10.2, 0+3/2*H, 5])
    # MiroAPI.add_boxShapeHemi(system, 0.85, H/2, wall_t, pos, 'textures/door_ntk.jpg', [-4,-3], False)

    # Add wall, 3rd floor NA corridor end (negative x direction)
    pos = np.array([-11.55, 3 / 2 * H - 0.16, 6.95])
    MiroAPI.add_boxShapeHemi(system, wall_t, H / 2 - 0.16, 1.25, pos,
                             'textures/mit_3rd_na2.jpg', [4, 3])

    # Add wall, 3rd floor towards MIT fountain
    pos = np.array([11.65, 3 / 2 * H, 12.16 + wall_t])
    MiroAPI.add_boxShapeHemi(system, 5.15, H / 2, wall_t, pos,
                             'textures/yellow_brick.jpg', [5, 5])

    # Add wall, 3rd floor wall, left hand side towards UMU library (negative z direction)
    pos = np.array([18.3, 3 / 2 * H - wall_t, 12.16 + wall_t])
    MiroAPI.add_boxShapeHemi(system, 1.5, H / 2 - wall_t, wall_t, pos,
                             'textures/white concrete.jpg', [3, 3])

    # Add wall, 3rd floor UMU library end (negative x direction)
    pos = np.array([19.9, 3 / 2 * H - 0.16, 10.56])
    MiroAPI.add_boxShapeHemi(system, wall_t, H / 2 - 0.16, 1.6, pos,
                             'textures/mit_3rd_sam.jpg', [-4, -3])

    #-------------4th floor---------------

    # Add wall, 4th floor flower pot (Negative x direction)
    pos = np.array([6.5 - wall_t + 0.01, 5 / 2 * H, 7.08 + wall_t + 0.01])
    MiroAPI.add_boxShapeHemi(system, wall_t, H / 2, 2.08 + wall_t, pos,
                             'textures/white concrete.jpg', [5, 5])

    # Add wall, 4th floor data cooridor (negative x direction)
    pos = np.array([5.5 - wall_t, 0 + 5 / 2 * H, 10.66 + wall_t])
    MiroAPI.add_boxShapeHemi(system,
                             wall_t,
                             H / 2,
                             1.5 - wall_t,
                             pos,
                             'textures/door_cs.jpg', [4, 3],
                             Collide=False)

    # Add 4th floor wall (positive x direction)
    pos = np.array([12.7 + wall_t, 0 + 5 / 2 * H, 10.18])
    MiroAPI.add_boxShapeHemi(system, wall_t, H / 2, 1.9, pos,
                             'textures/yellow_brick.jpg', [2, 2])

    # Add wall, 4th floor towards NA (negative z direction)
    pos = np.array([-9.3 - wall_t, 0 + 5 / 2 * H, 5 - wall_t])
    MiroAPI.add_boxShapeHemi(system, 4 - wall_t, H / 2, wall_t, pos,
                             'textures/yellow_brick.jpg', [10, 7], False)

    # Add wall, 4th floor wall towards MIT fountain
    pos = np.array([9, 5 / 2 * H, 12.16 + wall_t])
    MiroAPI.add_boxShapeHemi(system, 3.5, H / 2, wall_t, pos,
                             'textures/white concrete.jpg', [5, 5])

    #----------------Other----------------

    # Add white wall extension, technology
    pos = np.array([9.9, 3 / 2 * H, -8.8 - wall_t])
    MiroAPI.add_boxShapeHemi(system, 1.4, 3 / 2 * H, wall_t, pos,
                             'textures/white concrete.jpg', [5, 5])

    # Add wall towards technology building  (negative x direction)
    pos = np.array([8.5 - wall_t + 2.8, 0 + 3 / 2 * H, -11.8 - wall_t + 1.1])
    MiroAPI.add_boxShapeHemi(system, wall_t, 3 / 2 * H, 1.9 - wall_t, pos,
                             'textures/white concrete.jpg', [10, 10])

    # Add office cooridor wall (negative x direction)
    pos = np.array([-11.05, 0 + 3 / 2 * H, -7])
    MiroAPI.add_boxShapeHemi(system, wall_t, 3 / 2 * H, 12, pos,
                             'textures/white concrete.jpg', [10, 10])

    # Add office wall (negative x direction)
    pos = np.array([-9.35, 0 + 3 / 2 * H, -1.9])
    MiroAPI.add_boxShapeHemi(system, wall_t, 3 / 2 * H, 6.9, pos,
                             'textures/white concrete.jpg', [10, 10])

    # Add office wall (negative z direction)
    pos = np.array([1.5, 0 + 3 / 2 * H, -12.6])
    MiroAPI.add_boxShapeHemi(system, 7, 3 / 2 * H, wall_t, pos,
                             'textures/white concrete.jpg', [10, 10])

    # Add office cooridor wall (negative z direction)
    pos = np.array([1.5, 0 + 3 / 2 * H, -14.3])
    MiroAPI.add_boxShapeHemi(system, 7, 3 / 2 * H, wall_t, pos,
                             'textures/white concrete.jpg', [10, 10])

    # Add office end
    pos = np.array([-8.5, 0 + 3 / 2 * H, -19])
    MiroAPI.add_boxShapeHemi(system, 2.65, 3 / 2 * H, wall_t, pos,
                             'textures/white concrete.jpg', [10, 10])

    # Add elevator shaft
    for floor in range(3):
        y_pos = H * floor + H / 2
        pos = np.array([10.7, y_pos, 12.1])
        MiroAPI.add_boxShapeHemi(system, 2.034, H / 2, wall_t, pos,
                                 'textures/elevator.png', [4, 3])

    # Add end wall, towards technology
    texture = [
        'textures/mit_4th.jpg', 'textures/mit_4th.jpg', 'textures/mit_4th.jpg'
    ]
    for floor in range(3):
        y_pos = H * floor + H / 2
        pos = np.array([10.5 + 2.8 - 0.23, y_pos, -17 + 2.2 + 2.2])
        MiroAPI.add_boxShapeHemi(system,
                                 1.77,
                                 H / 2,
                                 wall_t,
                                 pos,
                                 texture[floor], [-4, -3],
                                 Collide=False)

    #Add oblique walls

    n = np.array([0, 1, 0])  # Normal vector for rotation
    alpha = -np.arctan(211 / 1380 - 0.05)  # Rotation angle for positive x wall

    #Add oblique wall towards umu libary
    pos_1 = np.array([16.3, 3 / 2 * H - wall_t, 0.34 + 8.16 + wall_t])
    dim_1 = np.array([wall_t, H / 2, 3.6])
    ang_1 = np.pi * (0.5 - 0.03)
    sca_1 = [10, 10]

    #Add oblique wall towards NA
    pos_2 = np.array([-5.6 - wall_t, 3 / 2 * H, 5.3])
    dim_2 = np.array([wall_t, H / 2, 0.545])
    ang_2 = -(np.pi / 4)

    #Main wall in positive x direction
    pos_3 = np.array([13.775 + wall_t, 0, -2.2]) + np.array([0, wall_h, 0])
    ang_3 = alpha
    dim_3 = np.array([wall_t, wall_h, 10.58])

    pos_ob = [pos_1, pos_2, pos_3]
    dim = [dim_1, dim_2, dim_3]
    ang = [ang_1, ang_2, ang_3]
    textures = [texture_wall, 'textures/white concrete.jpg', texture_wall]
    scale = [sca_1, sca_1, sca_1]
    for i in range(len(pos_ob)):
        # Create a box
        MiroAPI.add_boxShapeHemi(system,
                                 dim[i][0],
                                 dim[i][1],
                                 dim[i][2],
                                 pos_ob[i],
                                 rotY=ang[i],
                                 rotDegrees=False,
                                 texture=textures[i],
                                 scale=scale[i])
Ejemplo n.º 2
0
def painting(MiroSystem, pos, text = 'DemoBengan.png', rot = 0, dims = [1, 0.6]):
    MiroAPI.add_boxShapeHemi(MiroSystem, dims[0], dims[1], 0.05, pos, rotY=rot, texture=text, Collide=False)
Ejemplo n.º 3
0
def MIT_floors(system, H, SPEEDMODE):

    # Add floor, as a box
    floorsNum = 3  # Number of floors
    postNum = 19  # Number of fence post on each side of floors center position
    floor_l = 12  # Floor length
    floor_t = 0.08  # Floor thickness
    floor_w = 1.58  # Floor width towards NA
    floor_w_2 = 1.95 + 2.11  # towards technology house
    texture_floor = [
        'textures/MIT_stone_floor.jpg', 'textures/MIT_story_floor.jpg',
        'textures/MIT_story_floor.jpg'
    ]
    texture_roof = 'textures/MIT_inner_roof.jpg'
    scale_roof = [80, 10]
    handle_l = 13.5

    for floor in range(floorsNum):
        # Add floors
        y_pos = floor * H - floor_t
        floor_pos_1 = np.array([-3.5, y_pos, 6.58])  # Add floors towards NA
        floor_pos_2 = np.array([10.45 + 2.11, y_pos, -4 - 0.42
                                ])  # Add floors towards technology house
        floor_pos_3 = np.array([-10.2, y_pos,
                                -7])  # Add floor in NTK cooriodor
        floor_pos_4 = np.array([1.5, y_pos, -13.45
                                ])  # Add floor in NTK cooriodor (-z direction)

        MiroAPI.add_boxShapeHemi(system, floor_l, floor_t, floor_w,
                                 floor_pos_1, texture_floor[floor], [50, 3.6])
        MiroAPI.add_boxShapeHemi(system, floor_w_2, floor_t, floor_l + 0.58,
                                 floor_pos_2, texture_floor[floor], [18, 28])
        MiroAPI.add_boxShapeHemi(system, 0.85, floor_t, floor_l, floor_pos_3,
                                 texture_floor[floor], [50, 3.6])
        MiroAPI.add_boxShapeHemi(system, 7, floor_t, 0.85, floor_pos_4,
                                 texture_floor[floor], [18, 28])

        if floor > 0 and SPEEDMODE == False:
            add_fence(system, H, postNum, floor_w, floor_w_2, floor, floor_t,
                      handle_l)

    for roof in range(floorsNum):
        # Add roof
        y_pos = roof * H - 3 * floor_t  #+0.025
        roof_pos_1 = np.array([-3.5, y_pos, 6.58])  # Add roof towards NA
        roof_pos_2 = np.array([10.45 + 2.11, y_pos,
                               -4 - 0.42])  # Add roof towards technology house
        roof_pos_3 = np.array([-10.2, y_pos,
                               -7])  # Add roof in NTK cooriodor (-x direction)
        roof_pos_4 = np.array([1.5, y_pos, -13.45
                               ])  # Add roof in NTK cooriodor (-z direction)

        MiroAPI.add_boxShapeHemi(system, floor_l, floor_t, floor_w, roof_pos_1,
                                 texture_roof, [100, 10])
        MiroAPI.add_boxShapeHemi(system, floor_w_2, floor_t, floor_l + 0.58,
                                 roof_pos_2, texture_roof, [35, 80])
        MiroAPI.add_boxShapeHemi(system, 0.85, floor_t, floor_l, roof_pos_3,
                                 texture_roof, [35, 80])
        MiroAPI.add_boxShapeHemi(system, 7, floor_t, 0.85, roof_pos_4,
                                 texture_roof, [100, 10])

    # Office floors
    for floor in range(floorsNum):
        # Add floors
        y_pos = floor * H - floor_t
        floor_pos_3 = np.array([-7.425, y_pos, -7
                                ])  # Add roof in NTK cooriodor (-x direction)
        floor_pos_4 = np.array([1.5, y_pos, -10.8
                                ])  # Add roof in NTK cooriodor (-z direction)
        MiroAPI.add_boxShapeHemi(system, 1.925, floor_t, floor_l, floor_pos_3,
                                 'wood_ikea_style.png', [35, 80])
        MiroAPI.add_boxShapeHemi(system, 7, floor_t, 1.8, floor_pos_4,
                                 'wood_ikea_style.png', [100, 10])

    for roof in range(floorsNum):
        # Add roof
        y_pos = roof * H - 3 * floor_t
        roof_pos_3 = np.array([-7.425, y_pos,
                               -7])  # Add roof in NTK cooriodor (-x direction)
        roof_pos_4 = np.array([1.5, y_pos, -10.8
                               ])  # Add roof in NTK cooriodor (-z direction)
        MiroAPI.add_boxShapeHemi(system, 1.925, floor_t, floor_l, roof_pos_3,
                                 texture_roof, [35, 80])
        MiroAPI.add_boxShapeHemi(system, 7, floor_t, 1.8, roof_pos_4,
                                 texture_roof, [100, 10])

    # Add floor piece by the stair
    floor_x = 1.03
    floor_z = 1.03

    for piece in range(floorsNum):
        y_pos = piece * H - floor_t * 0.999
        floor_pos = np.array([7.5, y_pos + 0.002, 4])

        MiroAPI.add_boxShapeHemi(system, floor_x, floor_t, floor_z, floor_pos,
                                 texture_floor[0], [4, 2])

    for piece in range(floorsNum):
        if piece > 0:
            y_pos = piece * H - 3 * floor_t
            floor_pos = np.array([7.5, y_pos + 0.002, 4])

            MiroAPI.add_boxShapeHemi(system, floor_x, floor_t, floor_z,
                                     floor_pos, texture_roof, [12, 9])

    # Add walkway towards umu library
    length = 10.5
    width = 2
    for i in range(2):
        y = i * H + H - floor_t
        pos = np.array([10, y, 10.16])

        MiroAPI.add_boxShapeHemi(system, length, floor_t, width, pos,
                                 texture_floor[1], [48.9, 6])

    for i in range(2):
        y = i * H + H - 3 * floor_t
        pos = np.array([10, y, 10.16])

        MiroAPI.add_boxShapeHemi(system, length, floor_t, width, pos,
                                 texture_roof, scale_roof)

    # Add MIT entrence floor
    pos = np.array([6.2, 0 - floor_t, 10.16])
    MiroAPI.add_boxShapeHemi(system, 6.5, floor_t, 2, pos, texture_floor[0],
                             [30, 6])

    # Add horizontal beam along floors
    beam_length = 5.87
    for floor in range(floorsNum):
        beam_corr_2 = floor_w_2 + 0.99 * floor_t / 2  # Technology
        beam_corr = floor_w + 0.99 * floor_t / 2  # Na
        if floor > 0:
            y_pos = floor * H - 2 * floor_t
            floor_pos_1 = np.array([0.63, y_pos,
                                    6.58 - beam_corr])  # Towards NA
            floor_pos_2 = np.array([10.45 + 2.11 - beam_corr_2, y_pos,
                                    -2.9])  # Towards technology

            MiroAPI.add_boxShapeHemi(system, beam_length, 2 * floor_t,
                                     floor_t / 2, floor_pos_1,
                                     'textures/white concrete.jpg')
            MiroAPI.add_boxShapeHemi(system, floor_t / 2, 2 * floor_t,
                                     beam_length, floor_pos_2,
                                     'textures/white concrete.jpg')
Ejemplo n.º 4
0
def build(MiroSystem, SPEEDMODE=False):
    frame_h = 1.0
    dy = 2 / 3
    xspan = [-5.25, 8.35]
    yspan = [9.96, 13.96]
    zspan = [-8.9, 5.1]

    dec = -(yspan[1] - yspan[0] - frame_h) / (zspan[1] - zspan[0])
    dy = yspan[1] - yspan[0] - frame_h
    #sides
    p1 = np.array([-dy / 2, 0, 0])
    p2 = np.array([0.16 + dy / 2, 0, 0])
    d1 = np.array([0, 0, -1])
    d2 = np.array([dec, 0, -1])
    s = 0.98

    # sideS = MiroAPI.stepShape(p1,d1, p2,d2, zspan[1]-zspan[0], 0.2, [s,s,s])
    # sideN = MiroAPI.stepShape(p1,d1, p2,d2, zspan[1]-zspan[0], 0.2, [s,s,s])
    # MiroAPI.rotateBody(sideS, rotZ=90)
    # MiroAPI.rotateBody(sideN, rotZ=90)
    # MiroAPI.MoveBodyTo(sideS, np.array([xspan[0]-0.05,  yspan[0]+frame_h + (yspan[1]-yspan[0]-frame_h)/2, zspan[1]+0.1]))
    # MiroAPI.MoveBodyTo(sideN, np.array([xspan[1]+0.25,  yspan[0]+frame_h + (yspan[1]-yspan[0]-frame_h)/2, zspan[1]+0.1]))
    # MiroSystem.Add(sideS)
    # MiroSystem.Add(sideN)

    # # Top beams
    # beams = 4
    # dx = (xspan[1] - xspan[0])/(beams-1)
    # for b in range(beams):
    #     p1 = np.array([xspan[0] + dx*b - 0.06, yspan[1]-0.12, zspan[1]-0.06])
    #     p2 = np.array([xspan[0] + dx*b + 0.06, yspan[1]-0.12, zspan[1]-0.06])
    #     d1 = np.array([0,dec,-1])
    #     d2 = np.array([0,dec,-1])
    #     MiroAPI.add_stepShape(MiroSystem, p1,d1, p2,d2, (zspan[1]-zspan[0])*(np.sqrt(1+dec**2)), 0.2)

    # beams = 5
    # h_0 = yspan[1]+0.12*dec
    # dz = (zspan[1]-zspan[0])/(beams-1) - 0.28/beams
    # for b in range(beams):
    #     pos = np.array([(xspan[0]+xspan[1])/2, h_0+dec*dz*b, zspan[1]-0.12-dz*b])
    #     MiroAPI.add_boxShapeHemi(MiroSystem, (xspan[1]-xspan[0])/2+0.06, 0.06, 0.06, pos, 'white_smere.jpg', rotX=np.sin(dec), scale=[100, 1.5])

    # # Windows
    # beams = 10
    # dx = (xspan[1] - xspan[0])/(beams-1)
    # for b in range(beams):
    #     pos = np.array([xspan[0] + dx*b, (yspan[1] + yspan[0] + frame_h)/2, zspan[1]])
    #     MiroAPI.add_boxShapeHemi(MiroSystem, 0.05, (yspan[1] - yspan[0] - frame_h)/2, 0.05, pos, 'white_smere.jpg', scale=[100, 1.5])

    # beams = 5
    # dy = (yspan[1]-yspan[0]-frame_h)/(beams-1)
    # for b in range(beams):
    #     pos = np.array([(xspan[0]+xspan[1])/2, yspan[0]+frame_h+0.06+dy*b, zspan[1]])
    #     MiroAPI.add_boxShapeHemi(MiroSystem, (xspan[1]-xspan[0])/2+0.06, 0.06, 0.06, pos, 'white_smere.jpg', scale=[100, 1.5])

    # West wall
    pos = np.array([(xspan[0] + xspan[1]) / 2, yspan[0] + frame_h / 2,
                    zspan[1]])
    MiroAPI.add_boxShapeHemi(MiroSystem, (xspan[1] - xspan[0] + 0.5) / 2,
                             frame_h / 2,
                             0.1,
                             pos,
                             'white concrete.jpg',
                             scale=[40, 5])

    # East wall
    pos = np.array([(xspan[0] + xspan[1]) / 2, yspan[0] + frame_h / 2,
                    zspan[0]])
    MiroAPI.add_boxShapeHemi(MiroSystem, (xspan[1] - xspan[0] + 0.5) / 2,
                             frame_h / 2,
                             0.1,
                             pos,
                             'white concrete.jpg',
                             scale=[40, 5])

    # South wall
    pos = np.array(
        [xspan[0] - 0.15, yspan[0] + frame_h / 2, (zspan[1] + zspan[0]) / 2])
    MiroAPI.add_boxShapeHemi(MiroSystem,
                             0.1,
                             frame_h / 2, (zspan[1] - zspan[0]) / 2 - 0.1,
                             pos,
                             'white concrete.jpg',
                             scale=[40, 5])

    # North wall
    pos = np.array(
        [xspan[1] + 0.15, yspan[0] + frame_h / 2, (zspan[1] + zspan[0]) / 2])
    MiroAPI.add_boxShapeHemi(MiroSystem,
                             0.1,
                             frame_h / 2, (zspan[1] - zspan[0]) / 2 - 0.1,
                             pos,
                             'white concrete.jpg',
                             scale=[40, 5])

    # MA roof
    roofMA_width = 6.6
    pos = np.array(
        [xspan[1] + roofMA_width / 2 + 0.052, yspan[0] + 0.098, -0.2])
    MiroAPI.add_boxShapeHemi(MiroSystem,
                             roofMA_width / 2,
                             0.1,
                             12.5,
                             pos,
                             'white concrete.jpg',
                             scale=[40, 80])

    # MC roof
    roofMC_width = 3.165
    pos = np.array([(xspan[1] + xspan[0]) / 2, yspan[0] + 0.098,
                    zspan[1] + roofMC_width / 2 + 0.1])
    MiroAPI.add_boxShapeHemi(MiroSystem, (xspan[1] - xspan[0]) / 2 + 0.052,
                             0.1,
                             roofMC_width / 2,
                             pos,
                             'white concrete.jpg',
                             scale=[80, 10])

    # Computer Science roof
    roofMC_width = 3.165
    pos = np.array([6.85, yspan[0] + 0.098, zspan[1] + roofMC_width + 2.092])
    MiroAPI.add_boxShapeHemi(MiroSystem,
                             1.552,
                             0.1,
                             1.992,
                             pos,
                             'white concrete.jpg',
                             scale=[80, 10])