Codels
2,6 mil tris30,0 × 10,2 × 22,2 m

Úsalo en código

Hacer remix en el editor
Módulo ES autónomo — solo depende de three. Llama a la función factory y añade el grupo a tu escena.
/**
 * Warehouse — Codels 3D model library
 * License: CC0-1.0 · Units: meters · Y-up · Front: +Z · Origin: center of the base (y = 0)
 * Triangles: 2,644 · Size (W × H × D): 30.01 × 10.20 × 22.20 m
 *
 * Usage:
 *   import { createWarehouse } from './warehouse.js';
 *   
 *   const model = createWarehouse();
 *   model.position.set(0, 0, 0);
 *   scene.add(model);
 */
import * as THREE from 'three';

const deg = THREE.MathUtils.degToRad;

// Extrude a 2D outline along Z (centered). bevel = [thickness, size, segments].
function extrude(outline, depth, holes = [], bevel = null) {
  const shape = new THREE.Shape(outline.map(([x, y]) => new THREE.Vector2(x, y)));
  for (const hole of holes) shape.holes.push(new THREE.Path(hole.map(([x, y]) => new THREE.Vector2(x, y))));
  const options = bevel
    ? { depth, bevelEnabled: true, bevelThickness: bevel[0], bevelSize: bevel[1], bevelSegments: bevel[2] }
    : { depth, bevelEnabled: false };
  return new THREE.ExtrudeGeometry(shape, options).translate(0, 0, -depth / 2);
}

export function createWarehouse() {
  const root = new THREE.Group();
  root.name = 'Warehouse';

  // Materials
  const wallMat = new THREE.MeshStandardMaterial({ name: 'wall', color: 0x9eb0bc, roughness: 0.6, metalness: 0.2, flatShading: true });
  const roofMat = new THREE.MeshStandardMaterial({ name: 'roof', color: 0x828d97, roughness: 0.6, metalness: 0.2, flatShading: true });
  const concreteMat = new THREE.MeshStandardMaterial({ name: 'concrete', color: 0xbcb7ae, roughness: 0.95, flatShading: true });
  const accentMat = new THREE.MeshStandardMaterial({ name: 'accent', color: 0xe0a33a, roughness: 0.6, flatShading: true });
  const darkMat = new THREE.MeshStandardMaterial({ name: 'dark', color: 0x2c3035, roughness: 0.8, flatShading: true });
  const metalMat = new THREE.MeshStandardMaterial({ name: 'metal', color: 0x8d949b, roughness: 0.5, metalness: 0.35, flatShading: true });
  const skylightMat = new THREE.MeshStandardMaterial({ name: 'skylight', color: 0xcfe6f0, roughness: 0.2, metalness: 0.1, flatShading: true });
  const whiteMat = new THREE.MeshStandardMaterial({ name: 'white', color: 0xf0efe9, roughness: 0.8, flatShading: true });
  const woodMat = new THREE.MeshStandardMaterial({ name: 'wood', color: 0xb08757, roughness: 0.9, flatShading: true });

  // Shared geometries
  const cylinderGeo = new THREE.CylinderGeometry(0.12, 0.12, 6.3, 3, 1, true);
  const cylinderGeo2 = new THREE.CylinderGeometry(0.12, 0.12, 1.45, 3, 1, true);
  const boxGeo = new THREE.BoxGeometry(4.1, 4.5, 0.1);
  const boxGeo2 = new THREE.BoxGeometry(3.6, 4.2, 0.08);
  const boxGeo3 = new THREE.BoxGeometry(3.5, 0.04, 0.02);
  const boxGeo4 = new THREE.BoxGeometry(4.2, 0.55, 0.5);
  const boxGeo5 = new THREE.BoxGeometry(0.3, 0.55, 0.16);
  const boxGeo6 = new THREE.BoxGeometry(2.6, 0.03, 1.5);
  const boxGeo7 = new THREE.BoxGeometry(0.5, 0.5, 0.04);
  const cylinderGeo3 = new THREE.CylinderGeometry(0.12, 0.12, 6.33, 3, 1, true);
  const cylinderGeo4 = new THREE.CylinderGeometry(0.12, 0.12, 6.48, 3, 1, true);
  const cylinderGeo5 = new THREE.CylinderGeometry(0.12, 0.12, 6.63, 3, 1, true);
  const cylinderGeo6 = new THREE.CylinderGeometry(0.12, 0.12, 6.78, 3, 1, true);
  const cylinderGeo7 = new THREE.CylinderGeometry(0.12, 0.12, 6.93, 3, 1, true);
  const cylinderGeo8 = new THREE.CylinderGeometry(0.12, 0.12, 7.08, 3, 1, true);
  const cylinderGeo9 = new THREE.CylinderGeometry(0.12, 0.12, 7.23, 3, 1, true);
  const cylinderGeo10 = new THREE.CylinderGeometry(0.12, 0.12, 7.38, 3, 1, true);
  const cylinderGeo11 = new THREE.CylinderGeometry(0.12, 0.12, 7.53, 3, 1, true);
  const cylinderGeo12 = new THREE.CylinderGeometry(0.12, 0.12, 7.68, 3, 1, true);
  const cylinderGeo13 = new THREE.CylinderGeometry(0.12, 0.12, 7.83, 3, 1, true);
  const cylinderGeo14 = new THREE.CylinderGeometry(0.12, 0.12, 2.78, 3, 1, true);
  const cylinderGeo15 = new THREE.CylinderGeometry(0.12, 0.12, 2.93, 3, 1, true);
  const cylinderGeo16 = new THREE.CylinderGeometry(0.12, 0.12, 3.08, 3, 1, true);
  const boxGeo8 = new THREE.BoxGeometry(4.9, 0.04, 0.02);
  const cylinderGeo17 = new THREE.CylinderGeometry(0.12, 0.12, 1.1, 8);
  const boxGeo9 = new THREE.BoxGeometry(28.6, 0.16, 9.6782);
  const cylinderGeo18 = new THREE.CylinderGeometry(0.1, 0.1, 9.6782, 3, 1, true);
  const boxGeo10 = new THREE.BoxGeometry(1.2, 0.08, 4.3552);
  const boxGeo11 = new THREE.BoxGeometry(28.6, 0.2, 0.22);
  const cylinderGeo19 = new THREE.CylinderGeometry(0.09, 0.09, 7.2617, 6);
  const cylinderGeo20 = new THREE.CylinderGeometry(0.3, 0.38, 0.6, 8);
  const coneGeo = new THREE.ConeGeometry(0.5, 0.35, 8);
  const cylinderGeo21 = new THREE.CylinderGeometry(0.04, 0.04, 1, 6);
  const cylinderGeo22 = new THREE.CylinderGeometry(0.04, 0.04, 3.3945, 4);
  const boxGeo12 = new THREE.BoxGeometry(1.2, 0.15, 1);
  const boxGeo13 = new THREE.BoxGeometry(1, 0.55, 0.85);

  // Parts
  const shell = new THREE.Mesh(new THREE.BoxGeometry(28, 7.5, 18), wallMat);
  shell.name = 'shell';
  shell.position.set(0, 3.75, 0);
  root.add(shell);
  const skirt = new THREE.Mesh(new THREE.BoxGeometry(28.12, 1.2, 18.12), concreteMat);
  skirt.name = 'skirt';
  skirt.position.set(0, 0.6, 0);
  root.add(skirt);
  const gables = new THREE.Mesh(extrude([[-9, 0], [9, 0], [0, 1.78]], 28), wallMat);
  gables.name = 'gables';
  gables.position.set(0, 7.5, 0);
  gables.rotation.set(0, deg(90), 0);
  root.add(gables);
  const frontWall = new THREE.Group();
  frontWall.name = 'frontWall';
  frontWall.position.set(0, 0, 9);
  root.add(frontWall);
  const rib = new THREE.Mesh(cylinderGeo, wallMat);
  rib.name = 'rib';
  rib.position.set(-13.125, 4.35, 0.054);
  frontWall.add(rib);
  const rib2 = new THREE.Mesh(cylinderGeo, wallMat);
  rib2.name = 'rib';
  rib2.position.set(-12.375, 4.35, 0.054);
  frontWall.add(rib2);
  const rib3 = new THREE.Mesh(cylinderGeo, wallMat);
  rib3.name = 'rib';
  rib3.position.set(-11.625, 4.35, 0.054);
  frontWall.add(rib3);
  const rib4 = new THREE.Mesh(cylinderGeo, wallMat);
  rib4.name = 'rib';
  rib4.position.set(-10.875, 4.35, 0.054);
  frontWall.add(rib4);
  const rib5 = new THREE.Mesh(cylinderGeo, wallMat);
  rib5.name = 'rib';
  rib5.position.set(-10.125, 4.35, 0.054);
  frontWall.add(rib5);
  const rib6 = new THREE.Mesh(cylinderGeo, wallMat);
  rib6.name = 'rib';
  rib6.position.set(-9.375, 4.35, 0.054);
  frontWall.add(rib6);
  const rib7 = new THREE.Mesh(cylinderGeo, wallMat);
  rib7.name = 'rib';
  rib7.position.set(-8.625, 4.35, 0.054);
  frontWall.add(rib7);
  const rib8 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib8.name = 'rib';
  rib8.position.set(-7.875, 6.775, 0.054);
  frontWall.add(rib8);
  const rib9 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib9.name = 'rib';
  rib9.position.set(-7.125, 6.775, 0.054);
  frontWall.add(rib9);
  const rib10 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib10.name = 'rib';
  rib10.position.set(-6.375, 6.775, 0.054);
  frontWall.add(rib10);
  const rib11 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib11.name = 'rib';
  rib11.position.set(-5.625, 6.775, 0.054);
  frontWall.add(rib11);
  const rib12 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib12.name = 'rib';
  rib12.position.set(-4.875, 6.775, 0.054);
  frontWall.add(rib12);
  const rib13 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib13.name = 'rib';
  rib13.position.set(-4.125, 6.775, 0.054);
  frontWall.add(rib13);
  const rib14 = new THREE.Mesh(cylinderGeo, wallMat);
  rib14.name = 'rib';
  rib14.position.set(-3.375, 4.35, 0.054);
  frontWall.add(rib14);
  const rib15 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib15.name = 'rib';
  rib15.position.set(-2.625, 6.775, 0.054);
  frontWall.add(rib15);
  const rib16 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib16.name = 'rib';
  rib16.position.set(-1.875, 6.775, 0.054);
  frontWall.add(rib16);
  const rib17 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib17.name = 'rib';
  rib17.position.set(-1.125, 6.775, 0.054);
  frontWall.add(rib17);
  const rib18 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib18.name = 'rib';
  rib18.position.set(-0.375, 6.775, 0.054);
  frontWall.add(rib18);
  const rib19 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib19.name = 'rib';
  rib19.position.set(0.375, 6.775, 0.054);
  frontWall.add(rib19);
  const rib20 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib20.name = 'rib';
  rib20.position.set(1.125, 6.775, 0.054);
  frontWall.add(rib20);
  const rib21 = new THREE.Mesh(cylinderGeo, wallMat);
  rib21.name = 'rib';
  rib21.position.set(1.875, 4.35, 0.054);
  frontWall.add(rib21);
  const rib22 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib22.name = 'rib';
  rib22.position.set(2.625, 6.775, 0.054);
  frontWall.add(rib22);
  const rib23 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib23.name = 'rib';
  rib23.position.set(3.375, 6.775, 0.054);
  frontWall.add(rib23);
  const rib24 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib24.name = 'rib';
  rib24.position.set(4.125, 6.775, 0.054);
  frontWall.add(rib24);
  const rib25 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib25.name = 'rib';
  rib25.position.set(4.875, 6.775, 0.054);
  frontWall.add(rib25);
  const rib26 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib26.name = 'rib';
  rib26.position.set(5.625, 6.775, 0.054);
  frontWall.add(rib26);
  const rib27 = new THREE.Mesh(cylinderGeo2, wallMat);
  rib27.name = 'rib';
  rib27.position.set(6.375, 6.775, 0.054);
  frontWall.add(rib27);
  const rib28 = new THREE.Mesh(cylinderGeo, wallMat);
  rib28.name = 'rib';
  rib28.position.set(7.125, 4.35, 0.054);
  frontWall.add(rib28);
  const rib29 = new THREE.Mesh(cylinderGeo, wallMat);
  rib29.name = 'rib';
  rib29.position.set(7.875, 4.35, 0.054);
  frontWall.add(rib29);
  const rib30 = new THREE.Mesh(cylinderGeo, wallMat);
  rib30.name = 'rib';
  rib30.position.set(8.625, 4.35, 0.054);
  frontWall.add(rib30);
  const rib31 = new THREE.Mesh(cylinderGeo, wallMat);
  rib31.name = 'rib';
  rib31.position.set(9.375, 4.35, 0.054);
  frontWall.add(rib31);
  const rib32 = new THREE.Mesh(cylinderGeo, wallMat);
  rib32.name = 'rib';
  rib32.position.set(10.125, 4.35, 0.054);
  frontWall.add(rib32);
  const rib33 = new THREE.Mesh(cylinderGeo, wallMat);
  rib33.name = 'rib';
  rib33.position.set(10.875, 4.35, 0.054);
  frontWall.add(rib33);
  const rib34 = new THREE.Mesh(cylinderGeo, wallMat);
  rib34.name = 'rib';
  rib34.position.set(11.625, 4.35, 0.054);
  frontWall.add(rib34);
  const rib35 = new THREE.Mesh(cylinderGeo, wallMat);
  rib35.name = 'rib';
  rib35.position.set(12.375, 4.35, 0.054);
  frontWall.add(rib35);
  const rib36 = new THREE.Mesh(cylinderGeo, wallMat);
  rib36.name = 'rib';
  rib36.position.set(13.125, 4.35, 0.054);
  frontWall.add(rib36);
  const doorFrame = new THREE.Mesh(boxGeo, darkMat);
  doorFrame.name = 'doorFrame';
  doorFrame.position.set(-5.9, 3.45, 0.05);
  frontWall.add(doorFrame);
  const rollUpDoor = new THREE.Mesh(boxGeo2, accentMat);
  rollUpDoor.name = 'rollUpDoor';
  rollUpDoor.position.set(-5.9, 3.3, 0.12);
  frontWall.add(rollUpDoor);
  const doorSlat = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat.name = 'doorSlat';
  doorSlat.position.set(-5.9, 1.725, 0.17);
  frontWall.add(doorSlat);
  const doorSlat2 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat2.name = 'doorSlat';
  doorSlat2.position.set(-5.9, 2.25, 0.17);
  frontWall.add(doorSlat2);
  const doorSlat3 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat3.name = 'doorSlat';
  doorSlat3.position.set(-5.9, 2.775, 0.17);
  frontWall.add(doorSlat3);
  const doorSlat4 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat4.name = 'doorSlat';
  doorSlat4.position.set(-5.9, 3.3, 0.17);
  frontWall.add(doorSlat4);
  const doorSlat5 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat5.name = 'doorSlat';
  doorSlat5.position.set(-5.9, 3.825, 0.17);
  frontWall.add(doorSlat5);
  const doorSlat6 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat6.name = 'doorSlat';
  doorSlat6.position.set(-5.9, 4.35, 0.17);
  frontWall.add(doorSlat6);
  const doorSlat7 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat7.name = 'doorSlat';
  doorSlat7.position.set(-5.9, 4.875, 0.17);
  frontWall.add(doorSlat7);
  const doorHousing = new THREE.Mesh(boxGeo4, metalMat);
  doorHousing.name = 'doorHousing';
  doorHousing.position.set(-5.9, 5.725, 0.25);
  frontWall.add(doorHousing);
  const dockBumper = new THREE.Mesh(boxGeo5, darkMat);
  dockBumper.name = 'dockBumper';
  dockBumper.position.set(-7.25, 0.775, 3.08);
  frontWall.add(dockBumper);
  const dockBumper2 = new THREE.Mesh(boxGeo5, darkMat);
  dockBumper2.name = 'dockBumper';
  dockBumper2.position.set(-4.55, 0.775, 3.08);
  frontWall.add(dockBumper2);
  const dockLeveler = new THREE.Mesh(boxGeo6, metalMat);
  dockLeveler.name = 'dockLeveler';
  dockLeveler.position.set(-5.9, 1.215, 0.95);
  frontWall.add(dockLeveler);
  const doorFrame2 = new THREE.Mesh(boxGeo, darkMat);
  doorFrame2.name = 'doorFrame';
  doorFrame2.position.set(-0.7, 3.45, 0.05);
  frontWall.add(doorFrame2);
  const rollUpDoor2 = new THREE.Mesh(boxGeo2, accentMat);
  rollUpDoor2.name = 'rollUpDoor';
  rollUpDoor2.position.set(-0.7, 3.3, 0.12);
  frontWall.add(rollUpDoor2);
  const doorSlat8 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat8.name = 'doorSlat';
  doorSlat8.position.set(-0.7, 1.725, 0.17);
  frontWall.add(doorSlat8);
  const doorSlat9 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat9.name = 'doorSlat';
  doorSlat9.position.set(-0.7, 2.25, 0.17);
  frontWall.add(doorSlat9);
  const doorSlat10 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat10.name = 'doorSlat';
  doorSlat10.position.set(-0.7, 2.775, 0.17);
  frontWall.add(doorSlat10);
  const doorSlat11 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat11.name = 'doorSlat';
  doorSlat11.position.set(-0.7, 3.3, 0.17);
  frontWall.add(doorSlat11);
  const doorSlat12 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat12.name = 'doorSlat';
  doorSlat12.position.set(-0.7, 3.825, 0.17);
  frontWall.add(doorSlat12);
  const doorSlat13 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat13.name = 'doorSlat';
  doorSlat13.position.set(-0.7, 4.35, 0.17);
  frontWall.add(doorSlat13);
  const doorSlat14 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat14.name = 'doorSlat';
  doorSlat14.position.set(-0.7, 4.875, 0.17);
  frontWall.add(doorSlat14);
  const doorHousing2 = new THREE.Mesh(boxGeo4, metalMat);
  doorHousing2.name = 'doorHousing';
  doorHousing2.position.set(-0.7, 5.725, 0.25);
  frontWall.add(doorHousing2);
  const dockBumper3 = new THREE.Mesh(boxGeo5, darkMat);
  dockBumper3.name = 'dockBumper';
  dockBumper3.position.set(-2.05, 0.775, 3.08);
  frontWall.add(dockBumper3);
  const dockBumper4 = new THREE.Mesh(boxGeo5, darkMat);
  dockBumper4.name = 'dockBumper';
  dockBumper4.position.set(0.65, 0.775, 3.08);
  frontWall.add(dockBumper4);
  const dockLeveler2 = new THREE.Mesh(boxGeo6, metalMat);
  dockLeveler2.name = 'dockLeveler';
  dockLeveler2.position.set(-0.7, 1.215, 0.95);
  frontWall.add(dockLeveler2);
  const doorFrame3 = new THREE.Mesh(boxGeo, darkMat);
  doorFrame3.name = 'doorFrame';
  doorFrame3.position.set(4.5, 3.45, 0.05);
  frontWall.add(doorFrame3);
  const rollUpDoor3 = new THREE.Mesh(boxGeo2, accentMat);
  rollUpDoor3.name = 'rollUpDoor';
  rollUpDoor3.position.set(4.5, 3.3, 0.12);
  frontWall.add(rollUpDoor3);
  const doorSlat15 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat15.name = 'doorSlat';
  doorSlat15.position.set(4.5, 1.725, 0.17);
  frontWall.add(doorSlat15);
  const doorSlat16 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat16.name = 'doorSlat';
  doorSlat16.position.set(4.5, 2.25, 0.17);
  frontWall.add(doorSlat16);
  const doorSlat17 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat17.name = 'doorSlat';
  doorSlat17.position.set(4.5, 2.775, 0.17);
  frontWall.add(doorSlat17);
  const doorSlat18 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat18.name = 'doorSlat';
  doorSlat18.position.set(4.5, 3.3, 0.17);
  frontWall.add(doorSlat18);
  const doorSlat19 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat19.name = 'doorSlat';
  doorSlat19.position.set(4.5, 3.825, 0.17);
  frontWall.add(doorSlat19);
  const doorSlat20 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat20.name = 'doorSlat';
  doorSlat20.position.set(4.5, 4.35, 0.17);
  frontWall.add(doorSlat20);
  const doorSlat21 = new THREE.Mesh(boxGeo3, darkMat);
  doorSlat21.name = 'doorSlat';
  doorSlat21.position.set(4.5, 4.875, 0.17);
  frontWall.add(doorSlat21);
  const doorHousing3 = new THREE.Mesh(boxGeo4, metalMat);
  doorHousing3.name = 'doorHousing';
  doorHousing3.position.set(4.5, 5.725, 0.25);
  frontWall.add(doorHousing3);
  const dockBumper5 = new THREE.Mesh(boxGeo5, darkMat);
  dockBumper5.name = 'dockBumper';
  dockBumper5.position.set(3.15, 0.775, 3.08);
  frontWall.add(dockBumper5);
  const dockBumper6 = new THREE.Mesh(boxGeo5, darkMat);
  dockBumper6.name = 'dockBumper';
  dockBumper6.position.set(5.85, 0.775, 3.08);
  frontWall.add(dockBumper6);
  const dockLeveler3 = new THREE.Mesh(boxGeo6, metalMat);
  dockLeveler3.name = 'dockLeveler';
  dockLeveler3.position.set(4.5, 1.215, 0.95);
  frontWall.add(dockLeveler3);
  const signBoard = new THREE.Mesh(new THREE.BoxGeometry(6.4, 0.95, 0.1), whiteMat);
  signBoard.name = 'signBoard';
  signBoard.position.set(-0.7, 6.95, 0.25);
  frontWall.add(signBoard);
  const signLogo = new THREE.Mesh(new THREE.BoxGeometry(0.75, 0.75, 0.04), accentMat);
  signLogo.name = 'signLogo';
  signLogo.position.set(-3.3, 6.95, 0.32);
  frontWall.add(signLogo);
  const signLetter = new THREE.Mesh(boxGeo7, darkMat);
  signLetter.name = 'signLetter';
  signLetter.position.set(-2.35, 6.95, 0.32);
  frontWall.add(signLetter);
  const signLetter2 = new THREE.Mesh(boxGeo7, darkMat);
  signLetter2.name = 'signLetter';
  signLetter2.position.set(-1.6, 6.95, 0.32);
  frontWall.add(signLetter2);
  const signLetter3 = new THREE.Mesh(boxGeo7, darkMat);
  signLetter3.name = 'signLetter';
  signLetter3.position.set(-0.85, 6.95, 0.32);
  frontWall.add(signLetter3);
  const signLetter4 = new THREE.Mesh(boxGeo7, darkMat);
  signLetter4.name = 'signLetter';
  signLetter4.position.set(-0.1, 6.95, 0.32);
  frontWall.add(signLetter4);
  const signLetter5 = new THREE.Mesh(boxGeo7, darkMat);
  signLetter5.name = 'signLetter';
  signLetter5.position.set(0.65, 6.95, 0.32);
  frontWall.add(signLetter5);
  const signLetter6 = new THREE.Mesh(boxGeo7, darkMat);
  signLetter6.name = 'signLetter';
  signLetter6.position.set(1.4, 6.95, 0.32);
  frontWall.add(signLetter6);
  const backWall = new THREE.Group();
  backWall.name = 'backWall';
  backWall.position.set(0, 0, -9);
  backWall.rotation.set(0, deg(180), 0);
  root.add(backWall);
  const rib37 = new THREE.Mesh(cylinderGeo, wallMat);
  rib37.name = 'rib';
  rib37.position.set(-13.125, 4.35, 0.054);
  backWall.add(rib37);
  const rib38 = new THREE.Mesh(cylinderGeo, wallMat);
  rib38.name = 'rib';
  rib38.position.set(-12.375, 4.35, 0.054);
  backWall.add(rib38);
  const rib39 = new THREE.Mesh(cylinderGeo, wallMat);
  rib39.name = 'rib';
  rib39.position.set(-11.625, 4.35, 0.054);
  backWall.add(rib39);
  const rib40 = new THREE.Mesh(cylinderGeo, wallMat);
  rib40.name = 'rib';
  rib40.position.set(-10.875, 4.35, 0.054);
  backWall.add(rib40);
  const rib41 = new THREE.Mesh(cylinderGeo, wallMat);
  rib41.name = 'rib';
  rib41.position.set(-10.125, 4.35, 0.054);
  backWall.add(rib41);
  const rib42 = new THREE.Mesh(cylinderGeo, wallMat);
  rib42.name = 'rib';
  rib42.position.set(-9.375, 4.35, 0.054);
  backWall.add(rib42);
  const rib43 = new THREE.Mesh(cylinderGeo, wallMat);
  rib43.name = 'rib';
  rib43.position.set(-8.625, 4.35, 0.054);
  backWall.add(rib43);
  const rib44 = new THREE.Mesh(cylinderGeo, wallMat);
  rib44.name = 'rib';
  rib44.position.set(-7.875, 4.35, 0.054);
  backWall.add(rib44);
  const rib45 = new THREE.Mesh(cylinderGeo, wallMat);
  rib45.name = 'rib';
  rib45.position.set(-7.125, 4.35, 0.054);
  backWall.add(rib45);
  const rib46 = new THREE.Mesh(cylinderGeo, wallMat);
  rib46.name = 'rib';
  rib46.position.set(-6.375, 4.35, 0.054);
  backWall.add(rib46);
  const rib47 = new THREE.Mesh(cylinderGeo, wallMat);
  rib47.name = 'rib';
  rib47.position.set(-5.625, 4.35, 0.054);
  backWall.add(rib47);
  const rib48 = new THREE.Mesh(cylinderGeo, wallMat);
  rib48.name = 'rib';
  rib48.position.set(-4.875, 4.35, 0.054);
  backWall.add(rib48);
  const rib49 = new THREE.Mesh(cylinderGeo, wallMat);
  rib49.name = 'rib';
  rib49.position.set(-4.125, 4.35, 0.054);
  backWall.add(rib49);
  const rib50 = new THREE.Mesh(cylinderGeo, wallMat);
  rib50.name = 'rib';
  rib50.position.set(-3.375, 4.35, 0.054);
  backWall.add(rib50);
  const rib51 = new THREE.Mesh(cylinderGeo, wallMat);
  rib51.name = 'rib';
  rib51.position.set(-2.625, 4.35, 0.054);
  backWall.add(rib51);
  const rib52 = new THREE.Mesh(cylinderGeo, wallMat);
  rib52.name = 'rib';
  rib52.position.set(-1.875, 4.35, 0.054);
  backWall.add(rib52);
  const rib53 = new THREE.Mesh(cylinderGeo, wallMat);
  rib53.name = 'rib';
  rib53.position.set(-1.125, 4.35, 0.054);
  backWall.add(rib53);
  const rib54 = new THREE.Mesh(cylinderGeo, wallMat);
  rib54.name = 'rib';
  rib54.position.set(-0.375, 4.35, 0.054);
  backWall.add(rib54);
  const rib55 = new THREE.Mesh(cylinderGeo, wallMat);
  rib55.name = 'rib';
  rib55.position.set(0.375, 4.35, 0.054);
  backWall.add(rib55);
  const rib56 = new THREE.Mesh(cylinderGeo, wallMat);
  rib56.name = 'rib';
  rib56.position.set(1.125, 4.35, 0.054);
  backWall.add(rib56);
  const rib57 = new THREE.Mesh(cylinderGeo, wallMat);
  rib57.name = 'rib';
  rib57.position.set(1.875, 4.35, 0.054);
  backWall.add(rib57);
  const rib58 = new THREE.Mesh(cylinderGeo, wallMat);
  rib58.name = 'rib';
  rib58.position.set(2.625, 4.35, 0.054);
  backWall.add(rib58);
  const rib59 = new THREE.Mesh(cylinderGeo, wallMat);
  rib59.name = 'rib';
  rib59.position.set(3.375, 4.35, 0.054);
  backWall.add(rib59);
  const rib60 = new THREE.Mesh(cylinderGeo, wallMat);
  rib60.name = 'rib';
  rib60.position.set(4.125, 4.35, 0.054);
  backWall.add(rib60);
  const rib61 = new THREE.Mesh(cylinderGeo, wallMat);
  rib61.name = 'rib';
  rib61.position.set(4.875, 4.35, 0.054);
  backWall.add(rib61);
  const rib62 = new THREE.Mesh(cylinderGeo, wallMat);
  rib62.name = 'rib';
  rib62.position.set(5.625, 4.35, 0.054);
  backWall.add(rib62);
  const rib63 = new THREE.Mesh(cylinderGeo, wallMat);
  rib63.name = 'rib';
  rib63.position.set(6.375, 4.35, 0.054);
  backWall.add(rib63);
  const rib64 = new THREE.Mesh(cylinderGeo, wallMat);
  rib64.name = 'rib';
  rib64.position.set(7.125, 4.35, 0.054);
  backWall.add(rib64);
  const rib65 = new THREE.Mesh(cylinderGeo, wallMat);
  rib65.name = 'rib';
  rib65.position.set(7.875, 4.35, 0.054);
  backWall.add(rib65);
  const rib66 = new THREE.Mesh(cylinderGeo, wallMat);
  rib66.name = 'rib';
  rib66.position.set(8.625, 4.35, 0.054);
  backWall.add(rib66);
  const rib67 = new THREE.Mesh(cylinderGeo, wallMat);
  rib67.name = 'rib';
  rib67.position.set(9.375, 4.35, 0.054);
  backWall.add(rib67);
  const rib68 = new THREE.Mesh(cylinderGeo, wallMat);
  rib68.name = 'rib';
  rib68.position.set(10.125, 4.35, 0.054);
  backWall.add(rib68);
  const rib69 = new THREE.Mesh(cylinderGeo, wallMat);
  rib69.name = 'rib';
  rib69.position.set(10.875, 4.35, 0.054);
  backWall.add(rib69);
  const rib70 = new THREE.Mesh(cylinderGeo, wallMat);
  rib70.name = 'rib';
  rib70.position.set(11.625, 4.35, 0.054);
  backWall.add(rib70);
  const rib71 = new THREE.Mesh(cylinderGeo, wallMat);
  rib71.name = 'rib';
  rib71.position.set(12.375, 4.35, 0.054);
  backWall.add(rib71);
  const rib72 = new THREE.Mesh(cylinderGeo, wallMat);
  rib72.name = 'rib';
  rib72.position.set(13.125, 4.35, 0.054);
  backWall.add(rib72);
  const leftWall = new THREE.Group();
  leftWall.name = 'leftWall';
  leftWall.position.set(-14, 0, 0);
  leftWall.rotation.set(0, deg(-90), 0);
  root.add(leftWall);
  const rib73 = new THREE.Mesh(cylinderGeo3, wallMat);
  rib73.name = 'rib';
  rib73.position.set(-8.25, 4.365, 0.054);
  leftWall.add(rib73);
  const rib74 = new THREE.Mesh(cylinderGeo4, wallMat);
  rib74.name = 'rib';
  rib74.position.set(-7.5, 4.44, 0.054);
  leftWall.add(rib74);
  const rib75 = new THREE.Mesh(cylinderGeo5, wallMat);
  rib75.name = 'rib';
  rib75.position.set(-6.75, 4.515, 0.054);
  leftWall.add(rib75);
  const rib76 = new THREE.Mesh(cylinderGeo6, wallMat);
  rib76.name = 'rib';
  rib76.position.set(-6, 4.59, 0.054);
  leftWall.add(rib76);
  const rib77 = new THREE.Mesh(cylinderGeo7, wallMat);
  rib77.name = 'rib';
  rib77.position.set(-5.25, 4.665, 0.054);
  leftWall.add(rib77);
  const rib78 = new THREE.Mesh(cylinderGeo8, wallMat);
  rib78.name = 'rib';
  rib78.position.set(-4.5, 4.74, 0.054);
  leftWall.add(rib78);
  const rib79 = new THREE.Mesh(cylinderGeo9, wallMat);
  rib79.name = 'rib';
  rib79.position.set(-3.75, 4.815, 0.054);
  leftWall.add(rib79);
  const rib80 = new THREE.Mesh(cylinderGeo10, wallMat);
  rib80.name = 'rib';
  rib80.position.set(-3, 4.89, 0.054);
  leftWall.add(rib80);
  const rib81 = new THREE.Mesh(cylinderGeo11, wallMat);
  rib81.name = 'rib';
  rib81.position.set(-2.25, 4.965, 0.054);
  leftWall.add(rib81);
  const rib82 = new THREE.Mesh(cylinderGeo12, wallMat);
  rib82.name = 'rib';
  rib82.position.set(-1.5, 5.04, 0.054);
  leftWall.add(rib82);
  const rib83 = new THREE.Mesh(cylinderGeo13, wallMat);
  rib83.name = 'rib';
  rib83.position.set(-0.75, 5.115, 0.054);
  leftWall.add(rib83);
  const rib84 = new THREE.Mesh(new THREE.CylinderGeometry(0.12, 0.12, 7.98, 3, 1, true), wallMat);
  rib84.name = 'rib';
  rib84.position.set(0, 5.19, 0.054);
  leftWall.add(rib84);
  const rib85 = new THREE.Mesh(cylinderGeo13, wallMat);
  rib85.name = 'rib';
  rib85.position.set(0.75, 5.115, 0.054);
  leftWall.add(rib85);
  const rib86 = new THREE.Mesh(cylinderGeo12, wallMat);
  rib86.name = 'rib';
  rib86.position.set(1.5, 5.04, 0.054);
  leftWall.add(rib86);
  const rib87 = new THREE.Mesh(cylinderGeo11, wallMat);
  rib87.name = 'rib';
  rib87.position.set(2.25, 4.965, 0.054);
  leftWall.add(rib87);
  const rib88 = new THREE.Mesh(cylinderGeo10, wallMat);
  rib88.name = 'rib';
  rib88.position.set(3, 4.89, 0.054);
  leftWall.add(rib88);
  const rib89 = new THREE.Mesh(cylinderGeo9, wallMat);
  rib89.name = 'rib';
  rib89.position.set(3.75, 4.815, 0.054);
  leftWall.add(rib89);
  const rib90 = new THREE.Mesh(cylinderGeo8, wallMat);
  rib90.name = 'rib';
  rib90.position.set(4.5, 4.74, 0.054);
  leftWall.add(rib90);
  const rib91 = new THREE.Mesh(cylinderGeo7, wallMat);
  rib91.name = 'rib';
  rib91.position.set(5.25, 4.665, 0.054);
  leftWall.add(rib91);
  const rib92 = new THREE.Mesh(cylinderGeo6, wallMat);
  rib92.name = 'rib';
  rib92.position.set(6, 4.59, 0.054);
  leftWall.add(rib92);
  const rib93 = new THREE.Mesh(cylinderGeo5, wallMat);
  rib93.name = 'rib';
  rib93.position.set(6.75, 4.515, 0.054);
  leftWall.add(rib93);
  const rib94 = new THREE.Mesh(cylinderGeo4, wallMat);
  rib94.name = 'rib';
  rib94.position.set(7.5, 4.44, 0.054);
  leftWall.add(rib94);
  const rib95 = new THREE.Mesh(cylinderGeo3, wallMat);
  rib95.name = 'rib';
  rib95.position.set(8.25, 4.365, 0.054);
  leftWall.add(rib95);
  const rightWall = new THREE.Group();
  rightWall.name = 'rightWall';
  rightWall.position.set(14, 0, 0);
  rightWall.rotation.set(0, deg(90), 0);
  root.add(rightWall);
  const rib96 = new THREE.Mesh(cylinderGeo3, wallMat);
  rib96.name = 'rib';
  rib96.position.set(-8.25, 4.365, 0.054);
  rightWall.add(rib96);
  const rib97 = new THREE.Mesh(cylinderGeo4, wallMat);
  rib97.name = 'rib';
  rib97.position.set(-7.5, 4.44, 0.054);
  rightWall.add(rib97);
  const rib98 = new THREE.Mesh(cylinderGeo5, wallMat);
  rib98.name = 'rib';
  rib98.position.set(-6.75, 4.515, 0.054);
  rightWall.add(rib98);
  const rib99 = new THREE.Mesh(new THREE.CylinderGeometry(0.12, 0.12, 5.23, 3, 1, true), wallMat);
  rib99.name = 'rib';
  rib99.position.set(-6, 5.365, 0.054);
  rightWall.add(rib99);
  const rib100 = new THREE.Mesh(cylinderGeo7, wallMat);
  rib100.name = 'rib';
  rib100.position.set(-5.25, 4.665, 0.054);
  rightWall.add(rib100);
  const rib101 = new THREE.Mesh(cylinderGeo8, wallMat);
  rib101.name = 'rib';
  rib101.position.set(-4.5, 4.74, 0.054);
  rightWall.add(rib101);
  const rib102 = new THREE.Mesh(cylinderGeo9, wallMat);
  rib102.name = 'rib';
  rib102.position.set(-3.75, 4.815, 0.054);
  rightWall.add(rib102);
  const rib103 = new THREE.Mesh(cylinderGeo10, wallMat);
  rib103.name = 'rib';
  rib103.position.set(-3, 4.89, 0.054);
  rightWall.add(rib103);
  const rib104 = new THREE.Mesh(cylinderGeo14, wallMat);
  rib104.name = 'rib';
  rib104.position.set(-2.25, 7.34, 0.054);
  rightWall.add(rib104);
  const rib105 = new THREE.Mesh(cylinderGeo15, wallMat);
  rib105.name = 'rib';
  rib105.position.set(-1.5, 7.415, 0.054);
  rightWall.add(rib105);
  const rib106 = new THREE.Mesh(cylinderGeo16, wallMat);
  rib106.name = 'rib';
  rib106.position.set(-0.75, 7.49, 0.054);
  rightWall.add(rib106);
  const rib107 = new THREE.Mesh(new THREE.CylinderGeometry(0.12, 0.12, 3.23, 3, 1, true), wallMat);
  rib107.name = 'rib';
  rib107.position.set(0, 7.565, 0.054);
  rightWall.add(rib107);
  const rib108 = new THREE.Mesh(cylinderGeo16, wallMat);
  rib108.name = 'rib';
  rib108.position.set(0.75, 7.49, 0.054);
  rightWall.add(rib108);
  const rib109 = new THREE.Mesh(cylinderGeo15, wallMat);
  rib109.name = 'rib';
  rib109.position.set(1.5, 7.415, 0.054);
  rightWall.add(rib109);
  const rib110 = new THREE.Mesh(cylinderGeo14, wallMat);
  rib110.name = 'rib';
  rib110.position.set(2.25, 7.34, 0.054);
  rightWall.add(rib110);
  const rib111 = new THREE.Mesh(cylinderGeo10, wallMat);
  rib111.name = 'rib';
  rib111.position.set(3, 4.89, 0.054);
  rightWall.add(rib111);
  const rib112 = new THREE.Mesh(cylinderGeo9, wallMat);
  rib112.name = 'rib';
  rib112.position.set(3.75, 4.815, 0.054);
  rightWall.add(rib112);
  const rib113 = new THREE.Mesh(cylinderGeo8, wallMat);
  rib113.name = 'rib';
  rib113.position.set(4.5, 4.74, 0.054);
  rightWall.add(rib113);
  const rib114 = new THREE.Mesh(cylinderGeo7, wallMat);
  rib114.name = 'rib';
  rib114.position.set(5.25, 4.665, 0.054);
  rightWall.add(rib114);
  const rib115 = new THREE.Mesh(cylinderGeo6, wallMat);
  rib115.name = 'rib';
  rib115.position.set(6, 4.59, 0.054);
  rightWall.add(rib115);
  const rib116 = new THREE.Mesh(cylinderGeo5, wallMat);
  rib116.name = 'rib';
  rib116.position.set(6.75, 4.515, 0.054);
  rightWall.add(rib116);
  const rib117 = new THREE.Mesh(cylinderGeo4, wallMat);
  rib117.name = 'rib';
  rib117.position.set(7.5, 4.44, 0.054);
  rightWall.add(rib117);
  const rib118 = new THREE.Mesh(cylinderGeo3, wallMat);
  rib118.name = 'rib';
  rib118.position.set(8.25, 4.365, 0.054);
  rightWall.add(rib118);
  const driveDoorFrame = new THREE.Mesh(new THREE.BoxGeometry(5.5, 5.5, 0.1), darkMat);
  driveDoorFrame.name = 'driveDoorFrame';
  driveDoorFrame.position.set(0, 2.75, 0.05);
  rightWall.add(driveDoorFrame);
  const driveDoor = new THREE.Mesh(new THREE.BoxGeometry(5, 5.2, 0.08), accentMat);
  driveDoor.name = 'driveDoor';
  driveDoor.position.set(0, 2.6, 0.12);
  rightWall.add(driveDoor);
  const doorSlat22 = new THREE.Mesh(boxGeo8, darkMat);
  doorSlat22.name = 'doorSlat';
  doorSlat22.position.set(0, 0.52, 0.17);
  rightWall.add(doorSlat22);
  const doorSlat23 = new THREE.Mesh(boxGeo8, darkMat);
  doorSlat23.name = 'doorSlat';
  doorSlat23.position.set(0, 1.04, 0.17);
  rightWall.add(doorSlat23);
  const doorSlat24 = new THREE.Mesh(boxGeo8, darkMat);
  doorSlat24.name = 'doorSlat';
  doorSlat24.position.set(0, 1.56, 0.17);
  rightWall.add(doorSlat24);
  const doorSlat25 = new THREE.Mesh(boxGeo8, darkMat);
  doorSlat25.name = 'doorSlat';
  doorSlat25.position.set(0, 2.08, 0.17);
  rightWall.add(doorSlat25);
  const doorSlat26 = new THREE.Mesh(boxGeo8, darkMat);
  doorSlat26.name = 'doorSlat';
  doorSlat26.position.set(0, 2.6, 0.17);
  rightWall.add(doorSlat26);
  const doorSlat27 = new THREE.Mesh(boxGeo8, darkMat);
  doorSlat27.name = 'doorSlat';
  doorSlat27.position.set(0, 3.12, 0.17);
  rightWall.add(doorSlat27);
  const doorSlat28 = new THREE.Mesh(boxGeo8, darkMat);
  doorSlat28.name = 'doorSlat';
  doorSlat28.position.set(0, 3.64, 0.17);
  rightWall.add(doorSlat28);
  const doorSlat29 = new THREE.Mesh(boxGeo8, darkMat);
  doorSlat29.name = 'doorSlat';
  doorSlat29.position.set(0, 4.16, 0.17);
  rightWall.add(doorSlat29);
  const doorSlat30 = new THREE.Mesh(boxGeo8, darkMat);
  doorSlat30.name = 'doorSlat';
  doorSlat30.position.set(0, 4.68, 0.17);
  rightWall.add(doorSlat30);
  const doorHousing4 = new THREE.Mesh(new THREE.BoxGeometry(5.6, 0.6, 0.55), metalMat);
  doorHousing4.name = 'doorHousing';
  doorHousing4.position.set(0, 5.6, 0.28);
  rightWall.add(doorHousing4);
  const bollard = new THREE.Mesh(cylinderGeo17, accentMat);
  bollard.name = 'bollard';
  bollard.position.set(-3, 0.55, 0.8);
  rightWall.add(bollard);
  const bollard2 = new THREE.Mesh(cylinderGeo17, accentMat);
  bollard2.name = 'bollard';
  bollard2.position.set(3, 0.55, 0.8);
  rightWall.add(bollard2);
  const pDoorFrame = new THREE.Mesh(new THREE.BoxGeometry(1.25, 2.4, 0.1), darkMat);
  pDoorFrame.name = 'pDoorFrame';
  pDoorFrame.position.set(-6, 1.4, 0.05);
  rightWall.add(pDoorFrame);
  const pDoor = new THREE.Mesh(new THREE.BoxGeometry(1, 2.15, 0.06), whiteMat);
  pDoor.name = 'pDoor';
  pDoor.position.set(-6, 1.325, 0.12);
  rightWall.add(pDoor);
  const pDoorHandle = new THREE.Mesh(new THREE.BoxGeometry(0.08, 0.3, 0.06), darkMat);
  pDoorHandle.name = 'pDoorHandle';
  pDoorHandle.position.set(-5.64, 1.25, 0.17);
  rightWall.add(pDoorHandle);
  const pDoorHood = new THREE.Mesh(new THREE.BoxGeometry(1.6, 0.1, 0.9), metalMat);
  pDoorHood.name = 'pDoorHood';
  pDoorHood.position.set(-6, 2.85, 0.45);
  rightWall.add(pDoorHood);
  const pDoorStep = new THREE.Mesh(new THREE.BoxGeometry(1.8, 0.25, 1.2), concreteMat);
  pDoorStep.name = 'pDoorStep';
  pDoorStep.position.set(-6, 0.125, 0.6);
  rightWall.add(pDoorStep);
  const wallLamp = new THREE.Mesh(new THREE.BoxGeometry(0.3, 0.2, 0.25), darkMat);
  wallLamp.name = 'wallLamp';
  wallLamp.position.set(-6, 3.35, 0.15);
  rightWall.add(wallLamp);
  const roofSide = new THREE.Group();
  roofSide.name = 'roofSide';
  roofSide.position.set(0, 8.4392, -4.7118);
  roofSide.rotation.set(deg(-11.3099), 0, 0);
  root.add(roofSide);
  const roofSlab = new THREE.Mesh(boxGeo9, roofMat);
  roofSlab.name = 'roofSlab';
  roofSide.add(roofSlab);
  const roofRib = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib.name = 'roofRib';
  roofRib.position.set(-14.1, 0.12, 0);
  roofRib.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib);
  const roofRib2 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib2.name = 'roofRib';
  roofRib2.position.set(-13.0929, 0.12, 0);
  roofRib2.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib2);
  const roofRib3 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib3.name = 'roofRib';
  roofRib3.position.set(-12.0857, 0.12, 0);
  roofRib3.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib3);
  const roofRib4 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib4.name = 'roofRib';
  roofRib4.position.set(-11.0786, 0.12, 0);
  roofRib4.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib4);
  const roofRib5 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib5.name = 'roofRib';
  roofRib5.position.set(-10.0714, 0.12, 0);
  roofRib5.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib5);
  const roofRib6 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib6.name = 'roofRib';
  roofRib6.position.set(-9.0643, 0.12, 0);
  roofRib6.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib6);
  const roofRib7 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib7.name = 'roofRib';
  roofRib7.position.set(-8.0571, 0.12, 0);
  roofRib7.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib7);
  const roofRib8 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib8.name = 'roofRib';
  roofRib8.position.set(-7.05, 0.12, 0);
  roofRib8.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib8);
  const roofRib9 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib9.name = 'roofRib';
  roofRib9.position.set(-6.0429, 0.12, 0);
  roofRib9.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib9);
  const roofRib10 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib10.name = 'roofRib';
  roofRib10.position.set(-5.0357, 0.12, 0);
  roofRib10.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib10);
  const roofRib11 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib11.name = 'roofRib';
  roofRib11.position.set(-4.0286, 0.12, 0);
  roofRib11.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib11);
  const roofRib12 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib12.name = 'roofRib';
  roofRib12.position.set(-3.0214, 0.12, 0);
  roofRib12.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib12);
  const roofRib13 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib13.name = 'roofRib';
  roofRib13.position.set(-2.0143, 0.12, 0);
  roofRib13.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib13);
  const roofRib14 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib14.name = 'roofRib';
  roofRib14.position.set(-1.0071, 0.12, 0);
  roofRib14.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib14);
  const roofRib15 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib15.name = 'roofRib';
  roofRib15.position.set(0, 0.12, 0);
  roofRib15.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib15);
  const roofRib16 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib16.name = 'roofRib';
  roofRib16.position.set(1.0071, 0.12, 0);
  roofRib16.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib16);
  const roofRib17 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib17.name = 'roofRib';
  roofRib17.position.set(2.0143, 0.12, 0);
  roofRib17.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib17);
  const roofRib18 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib18.name = 'roofRib';
  roofRib18.position.set(3.0214, 0.12, 0);
  roofRib18.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib18);
  const roofRib19 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib19.name = 'roofRib';
  roofRib19.position.set(4.0286, 0.12, 0);
  roofRib19.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib19);
  const roofRib20 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib20.name = 'roofRib';
  roofRib20.position.set(5.0357, 0.12, 0);
  roofRib20.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib20);
  const roofRib21 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib21.name = 'roofRib';
  roofRib21.position.set(6.0429, 0.12, 0);
  roofRib21.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib21);
  const roofRib22 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib22.name = 'roofRib';
  roofRib22.position.set(7.05, 0.12, 0);
  roofRib22.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib22);
  const roofRib23 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib23.name = 'roofRib';
  roofRib23.position.set(8.0571, 0.12, 0);
  roofRib23.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib23);
  const roofRib24 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib24.name = 'roofRib';
  roofRib24.position.set(9.0643, 0.12, 0);
  roofRib24.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib24);
  const roofRib25 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib25.name = 'roofRib';
  roofRib25.position.set(10.0714, 0.12, 0);
  roofRib25.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib25);
  const roofRib26 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib26.name = 'roofRib';
  roofRib26.position.set(11.0786, 0.12, 0);
  roofRib26.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib26);
  const roofRib27 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib27.name = 'roofRib';
  roofRib27.position.set(12.0857, 0.12, 0);
  roofRib27.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib27);
  const roofRib28 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib28.name = 'roofRib';
  roofRib28.position.set(13.0929, 0.12, 0);
  roofRib28.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib28);
  const roofRib29 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib29.name = 'roofRib';
  roofRib29.position.set(14.1, 0.12, 0);
  roofRib29.rotation.set(deg(-90), 0, 0);
  roofSide.add(roofRib29);
  const skylight = new THREE.Mesh(boxGeo10, skylightMat);
  skylight.name = 'skylight';
  skylight.position.set(-10, 0.2, -0.7743);
  roofSide.add(skylight);
  const skylight2 = new THREE.Mesh(boxGeo10, skylightMat);
  skylight2.name = 'skylight';
  skylight2.position.set(-3, 0.2, -0.7743);
  roofSide.add(skylight2);
  const skylight3 = new THREE.Mesh(boxGeo10, skylightMat);
  skylight3.name = 'skylight';
  skylight3.position.set(4, 0.2, -0.7743);
  roofSide.add(skylight3);
  const skylight4 = new THREE.Mesh(boxGeo10, skylightMat);
  skylight4.name = 'skylight';
  skylight4.position.set(11, 0.2, -0.7743);
  roofSide.add(skylight4);
  const roofSide2 = new THREE.Group();
  roofSide2.name = 'roofSide';
  roofSide2.position.set(0, 8.4392, 4.7118);
  roofSide2.rotation.set(deg(11.3099), 0, 0);
  root.add(roofSide2);
  const roofSlab2 = new THREE.Mesh(boxGeo9, roofMat);
  roofSlab2.name = 'roofSlab';
  roofSide2.add(roofSlab2);
  const roofRib30 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib30.name = 'roofRib';
  roofRib30.position.set(-14.1, 0.12, 0);
  roofRib30.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib30);
  const roofRib31 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib31.name = 'roofRib';
  roofRib31.position.set(-13.0929, 0.12, 0);
  roofRib31.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib31);
  const roofRib32 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib32.name = 'roofRib';
  roofRib32.position.set(-12.0857, 0.12, 0);
  roofRib32.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib32);
  const roofRib33 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib33.name = 'roofRib';
  roofRib33.position.set(-11.0786, 0.12, 0);
  roofRib33.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib33);
  const roofRib34 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib34.name = 'roofRib';
  roofRib34.position.set(-10.0714, 0.12, 0);
  roofRib34.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib34);
  const roofRib35 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib35.name = 'roofRib';
  roofRib35.position.set(-9.0643, 0.12, 0);
  roofRib35.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib35);
  const roofRib36 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib36.name = 'roofRib';
  roofRib36.position.set(-8.0571, 0.12, 0);
  roofRib36.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib36);
  const roofRib37 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib37.name = 'roofRib';
  roofRib37.position.set(-7.05, 0.12, 0);
  roofRib37.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib37);
  const roofRib38 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib38.name = 'roofRib';
  roofRib38.position.set(-6.0429, 0.12, 0);
  roofRib38.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib38);
  const roofRib39 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib39.name = 'roofRib';
  roofRib39.position.set(-5.0357, 0.12, 0);
  roofRib39.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib39);
  const roofRib40 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib40.name = 'roofRib';
  roofRib40.position.set(-4.0286, 0.12, 0);
  roofRib40.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib40);
  const roofRib41 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib41.name = 'roofRib';
  roofRib41.position.set(-3.0214, 0.12, 0);
  roofRib41.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib41);
  const roofRib42 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib42.name = 'roofRib';
  roofRib42.position.set(-2.0143, 0.12, 0);
  roofRib42.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib42);
  const roofRib43 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib43.name = 'roofRib';
  roofRib43.position.set(-1.0071, 0.12, 0);
  roofRib43.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib43);
  const roofRib44 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib44.name = 'roofRib';
  roofRib44.position.set(0, 0.12, 0);
  roofRib44.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib44);
  const roofRib45 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib45.name = 'roofRib';
  roofRib45.position.set(1.0071, 0.12, 0);
  roofRib45.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib45);
  const roofRib46 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib46.name = 'roofRib';
  roofRib46.position.set(2.0143, 0.12, 0);
  roofRib46.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib46);
  const roofRib47 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib47.name = 'roofRib';
  roofRib47.position.set(3.0214, 0.12, 0);
  roofRib47.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib47);
  const roofRib48 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib48.name = 'roofRib';
  roofRib48.position.set(4.0286, 0.12, 0);
  roofRib48.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib48);
  const roofRib49 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib49.name = 'roofRib';
  roofRib49.position.set(5.0357, 0.12, 0);
  roofRib49.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib49);
  const roofRib50 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib50.name = 'roofRib';
  roofRib50.position.set(6.0429, 0.12, 0);
  roofRib50.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib50);
  const roofRib51 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib51.name = 'roofRib';
  roofRib51.position.set(7.05, 0.12, 0);
  roofRib51.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib51);
  const roofRib52 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib52.name = 'roofRib';
  roofRib52.position.set(8.0571, 0.12, 0);
  roofRib52.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib52);
  const roofRib53 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib53.name = 'roofRib';
  roofRib53.position.set(9.0643, 0.12, 0);
  roofRib53.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib53);
  const roofRib54 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib54.name = 'roofRib';
  roofRib54.position.set(10.0714, 0.12, 0);
  roofRib54.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib54);
  const roofRib55 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib55.name = 'roofRib';
  roofRib55.position.set(11.0786, 0.12, 0);
  roofRib55.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib55);
  const roofRib56 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib56.name = 'roofRib';
  roofRib56.position.set(12.0857, 0.12, 0);
  roofRib56.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib56);
  const roofRib57 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib57.name = 'roofRib';
  roofRib57.position.set(13.0929, 0.12, 0);
  roofRib57.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib57);
  const roofRib58 = new THREE.Mesh(cylinderGeo18, roofMat);
  roofRib58.name = 'roofRib';
  roofRib58.position.set(14.1, 0.12, 0);
  roofRib58.rotation.set(deg(-90), 0, 0);
  roofSide2.add(roofRib58);
  const skylight5 = new THREE.Mesh(boxGeo10, skylightMat);
  skylight5.name = 'skylight';
  skylight5.position.set(-10, 0.2, -0.7743);
  roofSide2.add(skylight5);
  const skylight6 = new THREE.Mesh(boxGeo10, skylightMat);
  skylight6.name = 'skylight';
  skylight6.position.set(-3, 0.2, -0.7743);
  roofSide2.add(skylight6);
  const skylight7 = new THREE.Mesh(boxGeo10, skylightMat);
  skylight7.name = 'skylight';
  skylight7.position.set(4, 0.2, -0.7743);
  roofSide2.add(skylight7);
  const skylight8 = new THREE.Mesh(boxGeo10, skylightMat);
  skylight8.name = 'skylight';
  skylight8.position.set(11, 0.2, -0.7743);
  roofSide2.add(skylight8);
  const ridgeCap = new THREE.Mesh(new THREE.BoxGeometry(28.7, 0.18, 0.7), metalMat);
  ridgeCap.name = 'ridgeCap';
  ridgeCap.position.set(0, 9.48, 0);
  root.add(ridgeCap);
  const gutter = new THREE.Mesh(boxGeo11, metalMat);
  gutter.name = 'gutter';
  gutter.position.set(0, 7.3617, -9.4913);
  root.add(gutter);
  const downspout = new THREE.Mesh(cylinderGeo19, metalMat);
  downspout.name = 'downspout';
  downspout.position.set(-13.6, 3.6309, -9.18);
  root.add(downspout);
  const downspout2 = new THREE.Mesh(cylinderGeo19, metalMat);
  downspout2.name = 'downspout';
  downspout2.position.set(13.6, 3.6309, -9.18);
  root.add(downspout2);
  const gutter2 = new THREE.Mesh(boxGeo11, metalMat);
  gutter2.name = 'gutter';
  gutter2.position.set(0, 7.3617, 9.4913);
  root.add(gutter2);
  const downspout3 = new THREE.Mesh(cylinderGeo19, metalMat);
  downspout3.name = 'downspout';
  downspout3.position.set(-13.6, 3.6309, 9.18);
  root.add(downspout3);
  const downspout4 = new THREE.Mesh(cylinderGeo19, metalMat);
  downspout4.name = 'downspout';
  downspout4.position.set(13.6, 3.6309, 9.18);
  root.add(downspout4);
  const roofVent = new THREE.Mesh(cylinderGeo20, metalMat);
  roofVent.name = 'roofVent';
  roofVent.position.set(-9.3333, 9.5, 0);
  root.add(roofVent);
  const ventCap = new THREE.Mesh(coneGeo, metalMat);
  ventCap.name = 'ventCap';
  ventCap.position.set(-9.3333, 10.025, 0);
  root.add(ventCap);
  const roofVent2 = new THREE.Mesh(cylinderGeo20, metalMat);
  roofVent2.name = 'roofVent';
  roofVent2.position.set(0, 9.5, 0);
  root.add(roofVent2);
  const ventCap2 = new THREE.Mesh(coneGeo, metalMat);
  ventCap2.name = 'ventCap';
  ventCap2.position.set(0, 10.025, 0);
  root.add(ventCap2);
  const roofVent3 = new THREE.Mesh(cylinderGeo20, metalMat);
  roofVent3.name = 'roofVent';
  roofVent3.position.set(9.3333, 9.5, 0);
  root.add(roofVent3);
  const ventCap3 = new THREE.Mesh(coneGeo, metalMat);
  ventCap3.name = 'ventCap';
  ventCap3.position.set(9.3333, 10.025, 0);
  root.add(ventCap3);
  const dockPlatform = new THREE.Mesh(new THREE.BoxGeometry(16.8, 1.2, 3), concreteMat);
  dockPlatform.name = 'dockPlatform';
  dockPlatform.position.set(-0.7, 0.6, 10.5);
  root.add(dockPlatform);
  const dockEdge = new THREE.Mesh(new THREE.BoxGeometry(16.84, 0.1, 0.1), accentMat);
  dockEdge.name = 'dockEdge';
  dockEdge.position.set(-0.7, 1.15, 12);
  root.add(dockEdge);
  const dockStep = new THREE.Mesh(new THREE.BoxGeometry(1.3, 0.24, 0.32), concreteMat);
  dockStep.name = 'dockStep';
  dockStep.position.set(8.4, 0.12, 10.88);
  root.add(dockStep);
  const dockStep2 = new THREE.Mesh(new THREE.BoxGeometry(1.3, 0.48, 0.32), concreteMat);
  dockStep2.name = 'dockStep';
  dockStep2.position.set(8.4, 0.24, 11.2);
  root.add(dockStep2);
  const dockStep3 = new THREE.Mesh(new THREE.BoxGeometry(1.3, 0.72, 0.32), concreteMat);
  dockStep3.name = 'dockStep';
  dockStep3.position.set(8.4, 0.36, 11.52);
  root.add(dockStep3);
  const dockStep4 = new THREE.Mesh(new THREE.BoxGeometry(1.3, 0.96, 0.32), concreteMat);
  dockStep4.name = 'dockStep';
  dockStep4.position.set(8.4, 0.48, 11.84);
  root.add(dockStep4);
  const dockLanding = new THREE.Mesh(new THREE.BoxGeometry(1.4, 1.2, 1.6), concreteMat);
  dockLanding.name = 'dockLanding';
  dockLanding.position.set(8.4, 0.6, 9.8);
  root.add(dockLanding);
  const railPost = new THREE.Mesh(cylinderGeo21, accentMat);
  railPost.name = 'railPost';
  railPost.position.set(7.8, 1.7, 11.85);
  root.add(railPost);
  const railPost2 = new THREE.Mesh(cylinderGeo21, accentMat);
  railPost2.name = 'railPost';
  railPost2.position.set(9, 1.7, 11.85);
  root.add(railPost2);
  const rail = new THREE.Mesh(new THREE.BoxGeometry(1.25, 0.06, 0.06), accentMat);
  rail.name = 'rail';
  rail.position.set(8.4, 2.2, 11.85);
  root.add(rail);
  const dockCanopy = new THREE.Mesh(new THREE.BoxGeometry(16.8, 0.18, 3.6), metalMat);
  dockCanopy.name = 'dockCanopy';
  dockCanopy.position.set(-0.7, 6.25, 10.8);
  dockCanopy.rotation.set(deg(4), 0, 0);
  root.add(dockCanopy);
  const tieRod = new THREE.Mesh(cylinderGeo22, darkMat);
  tieRod.name = 'tieRod';
  tieRod.position.set(-8.8, 6.71, 10.675);
  tieRod.rotation.set(deg(106.7801), 0, 0);
  root.add(tieRod);
  const tieRod2 = new THREE.Mesh(cylinderGeo22, darkMat);
  tieRod2.name = 'tieRod';
  tieRod2.position.set(-3.4, 6.71, 10.675);
  tieRod2.rotation.set(deg(106.7801), 0, 0);
  root.add(tieRod2);
  const tieRod3 = new THREE.Mesh(cylinderGeo22, darkMat);
  tieRod3.name = 'tieRod';
  tieRod3.position.set(2, 6.71, 10.675);
  tieRod3.rotation.set(deg(106.7801), 0, 0);
  root.add(tieRod3);
  const tieRod4 = new THREE.Mesh(cylinderGeo22, darkMat);
  tieRod4.name = 'tieRod';
  tieRod4.position.set(7.4, 6.71, 10.675);
  tieRod4.rotation.set(deg(106.7801), 0, 0);
  root.add(tieRod4);
  const pallet = new THREE.Mesh(boxGeo12, woodMat);
  pallet.name = 'pallet';
  pallet.position.set(-8.2, 1.275, 11.2);
  root.add(pallet);
  const cargoBox = new THREE.Mesh(boxGeo13, woodMat);
  cargoBox.name = 'cargoBox';
  cargoBox.position.set(-8.2, 1.625, 11.2);
  root.add(cargoBox);
  const cargoBox2 = new THREE.Mesh(new THREE.BoxGeometry(0.85, 0.55, 0.75), woodMat);
  cargoBox2.name = 'cargoBox';
  cargoBox2.position.set(-8.2, 2.175, 11.2);
  root.add(cargoBox2);
  const pallet2 = new THREE.Mesh(boxGeo12, woodMat);
  pallet2.name = 'pallet';
  pallet2.position.set(6.8, 1.275, 11.2);
  root.add(pallet2);
  const cargoBox3 = new THREE.Mesh(boxGeo13, woodMat);
  cargoBox3.name = 'cargoBox';
  cargoBox3.position.set(6.8, 1.625, 11.2);
  root.add(cargoBox3);
  const pallet3 = new THREE.Mesh(boxGeo12, woodMat);
  pallet3.name = 'pallet';
  pallet3.position.set(15, 0.075, -5.5);
  root.add(pallet3);
  const pallet4 = new THREE.Mesh(boxGeo12, woodMat);
  pallet4.name = 'pallet';
  pallet4.position.set(15, 0.225, -5.5);
  pallet4.rotation.set(0, deg(8), 0);
  root.add(pallet4);
  const cargoBox4 = new THREE.Mesh(new THREE.BoxGeometry(0.9, 0.7, 0.8), woodMat);
  cargoBox4.name = 'cargoBox';
  cargoBox4.position.set(15, 0.65, -5.5);
  cargoBox4.rotation.set(0, deg(-5), 0);
  root.add(cargoBox4);

  root.traverse((o) => {
    if (o.isMesh) {
      o.castShadow = true;
      o.receiveShadow = true;
    }
  });
  return root;
}

export default createWarehouse;

Valoraciones y comentarios

—
Aún no hay valoraciones — sé el primero.
5
0
4
0
3
0
2
0
1
0

Inicia sesión para valorar y comentar.

0 comentarios

Aún no hay comentarios. Cuenta cómo usaste este modelo o qué se podría mejorar.

Modelos relacionados

Misma categoría o etiquetas similares