2,6 k tris30,0 × 10,2 × 22,2 m
Utiliser dans le code
Remixer dans l’éditeurwarehouse.js · 1 353 lignes
Module ES autonome — ne dépend que de three. Appelez la fonction factory et ajoutez le groupe à votre scène.
/**
* 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;
Notes et commentaires
0 commentaire
Aucun commentaire pour l’instant. Dites comment vous avez utilisé ce modèle ou ce qui pourrait être amélioré.
Modèles similaires
Même catégorie ou étiquettes proches









