2612 Tris11,1 × 8,11 × 9,85 m
Im Code verwenden
Im Editor remixenshop.js · 945 Zeilen
Eigenständiges ES-Modul — hängt nur von three ab. Ruf die Factory auf und füge die Gruppe deiner Szene hinzu.
/**
* Corner Shop — Codels 3D model library
* License: CC0-1.0 · Units: meters · Y-up · Front: +Z · Origin: center of the base (y = 0)
* Triangles: 2,612 · Size (W × H × D): 11.10 × 8.11 × 9.85 m
*
* Usage:
* import { createShop } from './shop.js';
*
* const model = createShop();
* 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 createShop() {
const root = new THREE.Group();
root.name = 'Shop';
// Materials
const brickMat = new THREE.MeshStandardMaterial({ name: 'brick', color: 0xb9785a, roughness: 0.95, flatShading: true });
const brickDarkMat = new THREE.MeshStandardMaterial({ name: 'brickDark', color: 0x98624a, roughness: 0.95, flatShading: true });
const trimMat = new THREE.MeshStandardMaterial({ name: 'trim', color: 0x2e3a3a, roughness: 0.7, flatShading: true });
const glassMat = new THREE.MeshStandardMaterial({ name: 'glass', color: 0x9cc4d6, roughness: 0.2, metalness: 0.1, flatShading: true });
const creamMat = new THREE.MeshStandardMaterial({ name: 'cream', color: 0xf1ebdd, roughness: 0.85, flatShading: true });
const awningMat = new THREE.MeshStandardMaterial({ name: 'awning', color: 0x2f7d5b, roughness: 0.9, flatShading: true });
const signMat = new THREE.MeshStandardMaterial({ name: 'sign', color: 0xc2443a, roughness: 0.6, flatShading: true });
const concreteMat = new THREE.MeshStandardMaterial({ name: 'concrete', color: 0xbdb8af, roughness: 0.95, flatShading: true });
const fruitMat = new THREE.MeshStandardMaterial({ name: 'fruit', color: 0xe88f2c, roughness: 0.7, flatShading: true });
const lampMat = new THREE.MeshStandardMaterial({ name: 'lamp', color: 0xffe7a8, roughness: 0.8, emissive: 0xffcf6a, flatShading: true });
// Shared geometries
const boxGeo = new THREE.BoxGeometry(0.5, 7, 0.5);
const boxGeo2 = new THREE.BoxGeometry(8.4, 0.5, 0.25);
const boxGeo3 = new THREE.BoxGeometry(0.25, 0.5, 6.7);
const boxGeo4 = new THREE.BoxGeometry(8.6, 0.12, 0.45);
const boxGeo5 = new THREE.BoxGeometry(0.45, 0.12, 6.95);
const boxGeo6 = new THREE.BoxGeometry(2.85, 0.55, 0.12);
const boxGeo7 = new THREE.BoxGeometry(3.05, 2.25, 0.08);
const boxGeo8 = new THREE.BoxGeometry(2.81, 2.05, 0.05);
const boxGeo9 = new THREE.BoxGeometry(3.15, 0.08, 0.22);
const boxGeo10 = new THREE.BoxGeometry(0.08, 2.05, 0.1);
const boxGeo11 = new THREE.BoxGeometry(2.81, 0.06, 0.1);
const boxGeo12 = new THREE.BoxGeometry(0.05, 0.05, 0.5);
const coneGeo = new THREE.ConeGeometry(0.16, 0.16, 8);
const sphereGeo = new THREE.SphereGeometry(0.07, 6, 4);
const boxGeo13 = new THREE.BoxGeometry(0.502, 0.04, 1.5692);
const boxGeo14 = new THREE.BoxGeometry(0.502, 0.3, 0.03);
const extrudeGeo = extrude([[0, 0], [0, -0.6], [1.45, -0.6]], 0.03);
const boxGeo15 = new THREE.BoxGeometry(0.04, 0.04, 1.45);
const boxGeo16 = new THREE.BoxGeometry(1.18, 1.63, 0.06);
const boxGeo17 = new THREE.BoxGeometry(1, 1.45, 0.04);
const boxGeo18 = new THREE.BoxGeometry(1, 0.06, 0.08);
const boxGeo19 = new THREE.BoxGeometry(1.36, 0.08, 0.2);
const boxGeo20 = new THREE.BoxGeometry(1.36, 0.2, 0.08);
const boxGeo21 = new THREE.BoxGeometry(0.477, 0.04, 1.5692);
const boxGeo22 = new THREE.BoxGeometry(0.477, 0.3, 0.03);
const boxGeo23 = new THREE.BoxGeometry(0.95, 0.28, 0.65);
const icosahedronGeo = new THREE.IcosahedronGeometry(0.11, 0);
const boxGeo24 = new THREE.BoxGeometry(0.62, 1, 0.04);
const boxGeo25 = new THREE.BoxGeometry(0.5, 0.7, 0.02);
// Parts
const sidewalk = new THREE.Mesh(new THREE.BoxGeometry(11, 0.15, 9.8), concreteMat);
sidewalk.name = 'sidewalk';
sidewalk.position.set(1, 0.075, 1);
root.add(sidewalk);
const curb = new THREE.Mesh(new THREE.BoxGeometry(11.1, 0.17, 0.25), brickDarkMat);
curb.name = 'curb';
curb.position.set(1, 0.085, 5.78);
root.add(curb);
const walls = new THREE.Mesh(new THREE.BoxGeometry(8.4, 7, 7.2), brickMat);
walls.name = 'walls';
walls.position.set(0, 3.65, 0);
root.add(walls);
const pilaster = new THREE.Mesh(boxGeo, brickDarkMat);
pilaster.name = 'pilaster';
pilaster.position.set(-3.98, 3.65, -3.38);
root.add(pilaster);
const pilaster2 = new THREE.Mesh(boxGeo, brickDarkMat);
pilaster2.name = 'pilaster';
pilaster2.position.set(-3.98, 3.65, 3.38);
root.add(pilaster2);
const pilaster3 = new THREE.Mesh(boxGeo, brickDarkMat);
pilaster3.name = 'pilaster';
pilaster3.position.set(3.98, 3.65, -3.38);
root.add(pilaster3);
const pilaster4 = new THREE.Mesh(boxGeo, brickDarkMat);
pilaster4.name = 'pilaster';
pilaster4.position.set(3.98, 3.65, 3.38);
root.add(pilaster4);
const cornice = new THREE.Mesh(new THREE.BoxGeometry(8.64, 0.22, 7.44), brickDarkMat);
cornice.name = 'cornice';
cornice.position.set(0, 4.04, 0);
root.add(cornice);
const topCornice = new THREE.Mesh(new THREE.BoxGeometry(8.7, 0.3, 7.5), brickDarkMat);
topCornice.name = 'topCornice';
topCornice.position.set(0, 7, 0);
root.add(topCornice);
const parapet = new THREE.Mesh(boxGeo2, brickMat);
parapet.name = 'parapet';
parapet.position.set(0, 7.4, -3.475);
root.add(parapet);
const parapet2 = new THREE.Mesh(boxGeo3, brickMat);
parapet2.name = 'parapet';
parapet2.position.set(-4.075, 7.4, 0);
root.add(parapet2);
const parapetCap = new THREE.Mesh(boxGeo4, creamMat);
parapetCap.name = 'parapetCap';
parapetCap.position.set(0, 7.71, -3.475);
root.add(parapetCap);
const parapetCap2 = new THREE.Mesh(boxGeo5, creamMat);
parapetCap2.name = 'parapetCap';
parapetCap2.position.set(-4.075, 7.71, 0);
root.add(parapetCap2);
const parapet3 = new THREE.Mesh(boxGeo2, brickMat);
parapet3.name = 'parapet';
parapet3.position.set(0, 7.4, 3.475);
root.add(parapet3);
const parapet4 = new THREE.Mesh(boxGeo3, brickMat);
parapet4.name = 'parapet';
parapet4.position.set(4.075, 7.4, 0);
root.add(parapet4);
const parapetCap3 = new THREE.Mesh(boxGeo4, creamMat);
parapetCap3.name = 'parapetCap';
parapetCap3.position.set(0, 7.71, 3.475);
root.add(parapetCap3);
const parapetCap4 = new THREE.Mesh(boxGeo5, creamMat);
parapetCap4.name = 'parapetCap';
parapetCap4.position.set(4.075, 7.71, 0);
root.add(parapetCap4);
const plinth = new THREE.Mesh(new THREE.BoxGeometry(8.5, 0.35, 7.3), brickDarkMat);
plinth.name = 'plinth';
plinth.position.set(0, 0.325, 0);
root.add(plinth);
const frontStore = new THREE.Group();
frontStore.name = 'frontStore';
frontStore.position.set(0, 0.15, 3.6);
root.add(frontStore);
const kickplate = new THREE.Mesh(boxGeo6, trimMat);
kickplate.name = 'kickplate';
kickplate.position.set(-2.22, 0.625, 0.06);
frontStore.add(kickplate);
const windowFrame = new THREE.Mesh(boxGeo7, trimMat);
windowFrame.name = 'windowFrame';
windowFrame.position.set(-2.22, 2.025, 0.04);
frontStore.add(windowFrame);
const displayGlass = new THREE.Mesh(boxGeo8, glassMat);
displayGlass.name = 'displayGlass';
displayGlass.position.set(-2.22, 2.005, 0.09);
frontStore.add(displayGlass);
const windowSill = new THREE.Mesh(boxGeo9, creamMat);
windowSill.name = 'windowSill';
windowSill.position.set(-2.22, 0.92, 0.11);
frontStore.add(windowSill);
const mullion = new THREE.Mesh(boxGeo10, trimMat);
mullion.name = 'mullion';
mullion.position.set(-2.22, 2.005, 0.1);
frontStore.add(mullion);
const transomBar = new THREE.Mesh(boxGeo11, trimMat);
transomBar.name = 'transomBar';
transomBar.position.set(-2.22, 2.48, 0.1);
frontStore.add(transomBar);
const kickplate2 = new THREE.Mesh(boxGeo6, trimMat);
kickplate2.name = 'kickplate';
kickplate2.position.set(2.22, 0.625, 0.06);
frontStore.add(kickplate2);
const windowFrame2 = new THREE.Mesh(boxGeo7, trimMat);
windowFrame2.name = 'windowFrame';
windowFrame2.position.set(2.22, 2.025, 0.04);
frontStore.add(windowFrame2);
const displayGlass2 = new THREE.Mesh(boxGeo8, glassMat);
displayGlass2.name = 'displayGlass';
displayGlass2.position.set(2.22, 2.005, 0.09);
frontStore.add(displayGlass2);
const windowSill2 = new THREE.Mesh(boxGeo9, creamMat);
windowSill2.name = 'windowSill';
windowSill2.position.set(2.22, 0.92, 0.11);
frontStore.add(windowSill2);
const mullion2 = new THREE.Mesh(boxGeo10, trimMat);
mullion2.name = 'mullion';
mullion2.position.set(2.22, 2.005, 0.1);
frontStore.add(mullion2);
const transomBar2 = new THREE.Mesh(boxGeo11, trimMat);
transomBar2.name = 'transomBar';
transomBar2.position.set(2.22, 2.48, 0.1);
frontStore.add(transomBar2);
const doorFrame = new THREE.Mesh(new THREE.BoxGeometry(1.39, 2.45, 0.08), trimMat);
doorFrame.name = 'doorFrame';
doorFrame.position.set(0, 1.375, 0.04);
frontStore.add(doorFrame);
const doorGlass = new THREE.Mesh(new THREE.BoxGeometry(0.95, 1.6, 0.05), glassMat);
doorGlass.name = 'doorGlass';
doorGlass.position.set(0, 1.35, 0.09);
frontStore.add(doorGlass);
const doorTransom = new THREE.Mesh(new THREE.BoxGeometry(1.05, 0.42, 0.05), glassMat);
doorTransom.name = 'doorTransom';
doorTransom.position.set(0, 2.51, 0.07);
frontStore.add(doorTransom);
const doorHead = new THREE.Mesh(new THREE.BoxGeometry(1.05, 0.08, 0.1), trimMat);
doorHead.name = 'doorHead';
doorHead.position.set(0, 2.24, 0.08);
frontStore.add(doorHead);
const pushBar = new THREE.Mesh(new THREE.BoxGeometry(0.5, 0.05, 0.06), creamMat);
pushBar.name = 'pushBar';
pushBar.position.set(0, 1.25, 0.13);
frontStore.add(pushBar);
const doorStep = new THREE.Mesh(new THREE.BoxGeometry(1.75, 0.15, 0.4), concreteMat);
doorStep.name = 'doorStep';
doorStep.position.set(0, 0.075, 0.2);
frontStore.add(doorStep);
const openSign = new THREE.Mesh(new THREE.BoxGeometry(0.62, 0.24, 0.03), lampMat);
openSign.name = 'openSign';
openSign.position.set(-2.22, 2.05, 0.12);
frontStore.add(openSign);
const signBorder = new THREE.Mesh(new THREE.BoxGeometry(7.38, 0.88, 0.08), creamMat);
signBorder.name = 'signBorder';
signBorder.position.set(0, 3.39, 0.04);
frontStore.add(signBorder);
const signBoard = new THREE.Mesh(new THREE.BoxGeometry(7.2, 0.72, 0.1), signMat);
signBoard.name = 'signBoard';
signBoard.position.set(0, 3.39, 0.06);
frontStore.add(signBoard);
const signLetter = new THREE.Mesh(new THREE.BoxGeometry(0.3104, 0.38, 0.03), creamMat);
signLetter.name = 'signLetter';
signLetter.position.set(-1.7448, 3.39, 0.12);
frontStore.add(signLetter);
const signLetter2 = new THREE.Mesh(new THREE.BoxGeometry(0.3236, 0.38, 0.03), creamMat);
signLetter2.name = 'signLetter';
signLetter2.position.set(-1.3478, 3.39, 0.12);
frontStore.add(signLetter2);
const signLetter3 = new THREE.Mesh(new THREE.BoxGeometry(0.2352, 0.38, 0.03), creamMat);
signLetter3.name = 'signLetter';
signLetter3.position.set(-0.9884, 3.39, 0.12);
frontStore.add(signLetter3);
const signLetter4 = new THREE.Mesh(new THREE.BoxGeometry(0.2997, 0.38, 0.03), creamMat);
signLetter4.name = 'signLetter';
signLetter4.position.set(-0.641, 3.39, 0.12);
frontStore.add(signLetter4);
const signLetter5 = new THREE.Mesh(new THREE.BoxGeometry(0.2136, 0.38, 0.03), creamMat);
signLetter5.name = 'signLetter';
signLetter5.position.set(-0.0243, 3.39, 0.12);
frontStore.add(signLetter5);
const signLetter6 = new THREE.Mesh(new THREE.BoxGeometry(0.2947, 0.38, 0.03), creamMat);
signLetter6.name = 'signLetter';
signLetter6.position.set(0.3099, 3.39, 0.12);
frontStore.add(signLetter6);
const signLetter7 = new THREE.Mesh(new THREE.BoxGeometry(0.3152, 0.38, 0.03), creamMat);
signLetter7.name = 'signLetter';
signLetter7.position.set(0.6949, 3.39, 0.12);
frontStore.add(signLetter7);
const signLetter8 = new THREE.Mesh(new THREE.BoxGeometry(0.2733, 0.38, 0.03), creamMat);
signLetter8.name = 'signLetter';
signLetter8.position.set(1.0691, 3.39, 0.12);
frontStore.add(signLetter8);
const signLetter9 = new THREE.Mesh(new THREE.BoxGeometry(0.3449, 0.38, 0.03), creamMat);
signLetter9.name = 'signLetter';
signLetter9.position.set(1.4582, 3.39, 0.12);
frontStore.add(signLetter9);
const lampArm = new THREE.Mesh(boxGeo12, trimMat);
lampArm.name = 'lampArm';
lampArm.position.set(-2.4, 3.95, 0.25);
frontStore.add(lampArm);
const lampShade = new THREE.Mesh(coneGeo, trimMat);
lampShade.name = 'lampShade';
lampShade.position.set(-2.4, 3.9, 0.52);
lampShade.rotation.set(deg(180), 0, 0);
frontStore.add(lampShade);
const lampBulb = new THREE.Mesh(sphereGeo, lampMat);
lampBulb.name = 'lampBulb';
lampBulb.position.set(-2.4, 3.8, 0.52);
frontStore.add(lampBulb);
const lampArm2 = new THREE.Mesh(boxGeo12, trimMat);
lampArm2.name = 'lampArm';
lampArm2.position.set(2.4, 3.95, 0.25);
frontStore.add(lampArm2);
const lampShade2 = new THREE.Mesh(coneGeo, trimMat);
lampShade2.name = 'lampShade';
lampShade2.position.set(2.4, 3.9, 0.52);
lampShade2.rotation.set(deg(180), 0, 0);
frontStore.add(lampShade2);
const lampBulb2 = new THREE.Mesh(sphereGeo, lampMat);
lampBulb2.name = 'lampBulb';
lampBulb2.position.set(2.4, 3.8, 0.52);
frontStore.add(lampBulb2);
const frontAwning = new THREE.Group();
frontAwning.name = 'frontAwning';
frontAwning.position.set(0, 2.9, 0.08);
frontStore.add(frontAwning);
const awningStripe = new THREE.Mesh(boxGeo13, awningMat);
awningStripe.name = 'awningStripe';
awningStripe.position.set(-3.5, -0.3, 0.725);
awningStripe.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe);
const valance = new THREE.Mesh(boxGeo14, awningMat);
valance.name = 'valance';
valance.position.set(-3.5, -0.73, 1.46);
frontAwning.add(valance);
const awningStripe2 = new THREE.Mesh(boxGeo13, creamMat);
awningStripe2.name = 'awningStripe';
awningStripe2.position.set(-3, -0.3, 0.725);
awningStripe2.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe2);
const valance2 = new THREE.Mesh(boxGeo14, creamMat);
valance2.name = 'valance';
valance2.position.set(-3, -0.73, 1.46);
frontAwning.add(valance2);
const awningStripe3 = new THREE.Mesh(boxGeo13, awningMat);
awningStripe3.name = 'awningStripe';
awningStripe3.position.set(-2.5, -0.3, 0.725);
awningStripe3.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe3);
const valance3 = new THREE.Mesh(boxGeo14, awningMat);
valance3.name = 'valance';
valance3.position.set(-2.5, -0.73, 1.46);
frontAwning.add(valance3);
const awningStripe4 = new THREE.Mesh(boxGeo13, creamMat);
awningStripe4.name = 'awningStripe';
awningStripe4.position.set(-2, -0.3, 0.725);
awningStripe4.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe4);
const valance4 = new THREE.Mesh(boxGeo14, creamMat);
valance4.name = 'valance';
valance4.position.set(-2, -0.73, 1.46);
frontAwning.add(valance4);
const awningStripe5 = new THREE.Mesh(boxGeo13, awningMat);
awningStripe5.name = 'awningStripe';
awningStripe5.position.set(-1.5, -0.3, 0.725);
awningStripe5.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe5);
const valance5 = new THREE.Mesh(boxGeo14, awningMat);
valance5.name = 'valance';
valance5.position.set(-1.5, -0.73, 1.46);
frontAwning.add(valance5);
const awningStripe6 = new THREE.Mesh(boxGeo13, creamMat);
awningStripe6.name = 'awningStripe';
awningStripe6.position.set(-1, -0.3, 0.725);
awningStripe6.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe6);
const valance6 = new THREE.Mesh(boxGeo14, creamMat);
valance6.name = 'valance';
valance6.position.set(-1, -0.73, 1.46);
frontAwning.add(valance6);
const awningStripe7 = new THREE.Mesh(boxGeo13, awningMat);
awningStripe7.name = 'awningStripe';
awningStripe7.position.set(-0.5, -0.3, 0.725);
awningStripe7.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe7);
const valance7 = new THREE.Mesh(boxGeo14, awningMat);
valance7.name = 'valance';
valance7.position.set(-0.5, -0.73, 1.46);
frontAwning.add(valance7);
const awningStripe8 = new THREE.Mesh(boxGeo13, creamMat);
awningStripe8.name = 'awningStripe';
awningStripe8.position.set(0, -0.3, 0.725);
awningStripe8.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe8);
const valance8 = new THREE.Mesh(boxGeo14, creamMat);
valance8.name = 'valance';
valance8.position.set(0, -0.73, 1.46);
frontAwning.add(valance8);
const awningStripe9 = new THREE.Mesh(boxGeo13, awningMat);
awningStripe9.name = 'awningStripe';
awningStripe9.position.set(0.5, -0.3, 0.725);
awningStripe9.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe9);
const valance9 = new THREE.Mesh(boxGeo14, awningMat);
valance9.name = 'valance';
valance9.position.set(0.5, -0.73, 1.46);
frontAwning.add(valance9);
const awningStripe10 = new THREE.Mesh(boxGeo13, creamMat);
awningStripe10.name = 'awningStripe';
awningStripe10.position.set(1, -0.3, 0.725);
awningStripe10.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe10);
const valance10 = new THREE.Mesh(boxGeo14, creamMat);
valance10.name = 'valance';
valance10.position.set(1, -0.73, 1.46);
frontAwning.add(valance10);
const awningStripe11 = new THREE.Mesh(boxGeo13, awningMat);
awningStripe11.name = 'awningStripe';
awningStripe11.position.set(1.5, -0.3, 0.725);
awningStripe11.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe11);
const valance11 = new THREE.Mesh(boxGeo14, awningMat);
valance11.name = 'valance';
valance11.position.set(1.5, -0.73, 1.46);
frontAwning.add(valance11);
const awningStripe12 = new THREE.Mesh(boxGeo13, creamMat);
awningStripe12.name = 'awningStripe';
awningStripe12.position.set(2, -0.3, 0.725);
awningStripe12.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe12);
const valance12 = new THREE.Mesh(boxGeo14, creamMat);
valance12.name = 'valance';
valance12.position.set(2, -0.73, 1.46);
frontAwning.add(valance12);
const awningStripe13 = new THREE.Mesh(boxGeo13, awningMat);
awningStripe13.name = 'awningStripe';
awningStripe13.position.set(2.5, -0.3, 0.725);
awningStripe13.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe13);
const valance13 = new THREE.Mesh(boxGeo14, awningMat);
valance13.name = 'valance';
valance13.position.set(2.5, -0.73, 1.46);
frontAwning.add(valance13);
const awningStripe14 = new THREE.Mesh(boxGeo13, creamMat);
awningStripe14.name = 'awningStripe';
awningStripe14.position.set(3, -0.3, 0.725);
awningStripe14.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe14);
const valance14 = new THREE.Mesh(boxGeo14, creamMat);
valance14.name = 'valance';
valance14.position.set(3, -0.73, 1.46);
frontAwning.add(valance14);
const awningStripe15 = new THREE.Mesh(boxGeo13, awningMat);
awningStripe15.name = 'awningStripe';
awningStripe15.position.set(3.5, -0.3, 0.725);
awningStripe15.rotation.set(deg(22.4794), 0, 0);
frontAwning.add(awningStripe15);
const valance15 = new THREE.Mesh(boxGeo14, awningMat);
valance15.name = 'valance';
valance15.position.set(3.5, -0.73, 1.46);
frontAwning.add(valance15);
const awningCheek = new THREE.Mesh(extrudeGeo, awningMat);
awningCheek.name = 'awningCheek';
awningCheek.position.set(-3.765, 0.01, 0);
awningCheek.rotation.set(0, deg(-90), 0);
frontAwning.add(awningCheek);
const awningArm = new THREE.Mesh(boxGeo15, trimMat);
awningArm.name = 'awningArm';
awningArm.position.set(-3.65, -0.62, 0.725);
frontAwning.add(awningArm);
const awningCheek2 = new THREE.Mesh(extrudeGeo, awningMat);
awningCheek2.name = 'awningCheek';
awningCheek2.position.set(3.765, 0.01, 0);
awningCheek2.rotation.set(0, deg(-90), 0);
frontAwning.add(awningCheek2);
const awningArm2 = new THREE.Mesh(boxGeo15, trimMat);
awningArm2.name = 'awningArm';
awningArm2.position.set(3.65, -0.62, 0.725);
frontAwning.add(awningArm2);
const awningRail = new THREE.Mesh(new THREE.BoxGeometry(7.6, 0.1, 0.1), trimMat);
awningRail.name = 'awningRail';
awningRail.position.set(0, 0.02, 0.05);
frontAwning.add(awningRail);
const upperFrame = new THREE.Mesh(boxGeo16, creamMat);
upperFrame.name = 'upperFrame';
upperFrame.position.set(-2.7, 5.45, 0.03);
frontStore.add(upperFrame);
const upperGlass = new THREE.Mesh(boxGeo17, glassMat);
upperGlass.name = 'upperGlass';
upperGlass.position.set(-2.7, 5.45, 0.06);
frontStore.add(upperGlass);
const sashRail = new THREE.Mesh(boxGeo18, creamMat);
sashRail.name = 'sashRail';
sashRail.position.set(-2.7, 5.5, 0.06);
frontStore.add(sashRail);
const upperSill = new THREE.Mesh(boxGeo19, concreteMat);
upperSill.name = 'upperSill';
upperSill.position.set(-2.7, 4.595, 0.1);
frontStore.add(upperSill);
const lintel = new THREE.Mesh(boxGeo20, brickDarkMat);
lintel.name = 'lintel';
lintel.position.set(-2.7, 6.375, 0.04);
frontStore.add(lintel);
const upperFrame2 = new THREE.Mesh(boxGeo16, creamMat);
upperFrame2.name = 'upperFrame';
upperFrame2.position.set(0, 5.45, 0.03);
frontStore.add(upperFrame2);
const upperGlass2 = new THREE.Mesh(boxGeo17, glassMat);
upperGlass2.name = 'upperGlass';
upperGlass2.position.set(0, 5.45, 0.06);
frontStore.add(upperGlass2);
const sashRail2 = new THREE.Mesh(boxGeo18, creamMat);
sashRail2.name = 'sashRail';
sashRail2.position.set(0, 5.5, 0.06);
frontStore.add(sashRail2);
const upperSill2 = new THREE.Mesh(boxGeo19, concreteMat);
upperSill2.name = 'upperSill';
upperSill2.position.set(0, 4.595, 0.1);
frontStore.add(upperSill2);
const lintel2 = new THREE.Mesh(boxGeo20, brickDarkMat);
lintel2.name = 'lintel';
lintel2.position.set(0, 6.375, 0.04);
frontStore.add(lintel2);
const upperFrame3 = new THREE.Mesh(boxGeo16, creamMat);
upperFrame3.name = 'upperFrame';
upperFrame3.position.set(2.7, 5.45, 0.03);
frontStore.add(upperFrame3);
const upperGlass3 = new THREE.Mesh(boxGeo17, glassMat);
upperGlass3.name = 'upperGlass';
upperGlass3.position.set(2.7, 5.45, 0.06);
frontStore.add(upperGlass3);
const sashRail3 = new THREE.Mesh(boxGeo18, creamMat);
sashRail3.name = 'sashRail';
sashRail3.position.set(2.7, 5.5, 0.06);
frontStore.add(sashRail3);
const upperSill3 = new THREE.Mesh(boxGeo19, concreteMat);
upperSill3.name = 'upperSill';
upperSill3.position.set(2.7, 4.595, 0.1);
frontStore.add(upperSill3);
const lintel3 = new THREE.Mesh(boxGeo20, brickDarkMat);
lintel3.name = 'lintel';
lintel3.position.set(2.7, 6.375, 0.04);
frontStore.add(lintel3);
const sideStore = new THREE.Group();
sideStore.name = 'sideStore';
sideStore.position.set(4.2, 0.15, 0);
sideStore.rotation.set(0, deg(90), 0);
root.add(sideStore);
const kickplate3 = new THREE.Mesh(new THREE.BoxGeometry(3.4, 0.55, 0.12), trimMat);
kickplate3.name = 'kickplate';
kickplate3.position.set(1.3, 0.625, 0.06);
sideStore.add(kickplate3);
const windowFrame3 = new THREE.Mesh(new THREE.BoxGeometry(3.6, 2.25, 0.08), trimMat);
windowFrame3.name = 'windowFrame';
windowFrame3.position.set(1.3, 2.025, 0.04);
sideStore.add(windowFrame3);
const displayGlass3 = new THREE.Mesh(new THREE.BoxGeometry(3.36, 2.05, 0.05), glassMat);
displayGlass3.name = 'displayGlass';
displayGlass3.position.set(1.3, 2.005, 0.09);
sideStore.add(displayGlass3);
const windowSill3 = new THREE.Mesh(new THREE.BoxGeometry(3.7, 0.08, 0.22), creamMat);
windowSill3.name = 'windowSill';
windowSill3.position.set(1.3, 0.92, 0.11);
sideStore.add(windowSill3);
const mullion3 = new THREE.Mesh(boxGeo10, trimMat);
mullion3.name = 'mullion';
mullion3.position.set(1.3, 2.005, 0.1);
sideStore.add(mullion3);
const transomBar3 = new THREE.Mesh(new THREE.BoxGeometry(3.36, 0.06, 0.1), trimMat);
transomBar3.name = 'transomBar';
transomBar3.position.set(1.3, 2.48, 0.1);
sideStore.add(transomBar3);
const sideSign = new THREE.Mesh(new THREE.BoxGeometry(3.9, 0.6, 0.1), signMat);
sideSign.name = 'sideSign';
sideSign.position.set(1.3, 3.25, 0.06);
sideStore.add(sideSign);
const sideAwning = new THREE.Group();
sideAwning.name = 'sideAwning';
sideAwning.position.set(1.3, 2.9, 0.08);
sideStore.add(sideAwning);
const awningStripe16 = new THREE.Mesh(boxGeo21, awningMat);
awningStripe16.name = 'awningStripe';
awningStripe16.position.set(-1.6625, -0.3, 0.725);
awningStripe16.rotation.set(deg(22.4794), 0, 0);
sideAwning.add(awningStripe16);
const valance16 = new THREE.Mesh(boxGeo22, awningMat);
valance16.name = 'valance';
valance16.position.set(-1.6625, -0.73, 1.46);
sideAwning.add(valance16);
const awningStripe17 = new THREE.Mesh(boxGeo21, creamMat);
awningStripe17.name = 'awningStripe';
awningStripe17.position.set(-1.1875, -0.3, 0.725);
awningStripe17.rotation.set(deg(22.4794), 0, 0);
sideAwning.add(awningStripe17);
const valance17 = new THREE.Mesh(boxGeo22, creamMat);
valance17.name = 'valance';
valance17.position.set(-1.1875, -0.73, 1.46);
sideAwning.add(valance17);
const awningStripe18 = new THREE.Mesh(boxGeo21, awningMat);
awningStripe18.name = 'awningStripe';
awningStripe18.position.set(-0.7125, -0.3, 0.725);
awningStripe18.rotation.set(deg(22.4794), 0, 0);
sideAwning.add(awningStripe18);
const valance18 = new THREE.Mesh(boxGeo22, awningMat);
valance18.name = 'valance';
valance18.position.set(-0.7125, -0.73, 1.46);
sideAwning.add(valance18);
const awningStripe19 = new THREE.Mesh(boxGeo21, creamMat);
awningStripe19.name = 'awningStripe';
awningStripe19.position.set(-0.2375, -0.3, 0.725);
awningStripe19.rotation.set(deg(22.4794), 0, 0);
sideAwning.add(awningStripe19);
const valance19 = new THREE.Mesh(boxGeo22, creamMat);
valance19.name = 'valance';
valance19.position.set(-0.2375, -0.73, 1.46);
sideAwning.add(valance19);
const awningStripe20 = new THREE.Mesh(boxGeo21, awningMat);
awningStripe20.name = 'awningStripe';
awningStripe20.position.set(0.2375, -0.3, 0.725);
awningStripe20.rotation.set(deg(22.4794), 0, 0);
sideAwning.add(awningStripe20);
const valance20 = new THREE.Mesh(boxGeo22, awningMat);
valance20.name = 'valance';
valance20.position.set(0.2375, -0.73, 1.46);
sideAwning.add(valance20);
const awningStripe21 = new THREE.Mesh(boxGeo21, creamMat);
awningStripe21.name = 'awningStripe';
awningStripe21.position.set(0.7125, -0.3, 0.725);
awningStripe21.rotation.set(deg(22.4794), 0, 0);
sideAwning.add(awningStripe21);
const valance21 = new THREE.Mesh(boxGeo22, creamMat);
valance21.name = 'valance';
valance21.position.set(0.7125, -0.73, 1.46);
sideAwning.add(valance21);
const awningStripe22 = new THREE.Mesh(boxGeo21, awningMat);
awningStripe22.name = 'awningStripe';
awningStripe22.position.set(1.1875, -0.3, 0.725);
awningStripe22.rotation.set(deg(22.4794), 0, 0);
sideAwning.add(awningStripe22);
const valance22 = new THREE.Mesh(boxGeo22, awningMat);
valance22.name = 'valance';
valance22.position.set(1.1875, -0.73, 1.46);
sideAwning.add(valance22);
const awningStripe23 = new THREE.Mesh(boxGeo21, creamMat);
awningStripe23.name = 'awningStripe';
awningStripe23.position.set(1.6625, -0.3, 0.725);
awningStripe23.rotation.set(deg(22.4794), 0, 0);
sideAwning.add(awningStripe23);
const valance23 = new THREE.Mesh(boxGeo22, creamMat);
valance23.name = 'valance';
valance23.position.set(1.6625, -0.73, 1.46);
sideAwning.add(valance23);
const awningCheek3 = new THREE.Mesh(extrudeGeo, awningMat);
awningCheek3.name = 'awningCheek';
awningCheek3.position.set(-1.915, 0.01, 0);
awningCheek3.rotation.set(0, deg(-90), 0);
sideAwning.add(awningCheek3);
const awningArm3 = new THREE.Mesh(boxGeo15, trimMat);
awningArm3.name = 'awningArm';
awningArm3.position.set(-1.8, -0.62, 0.725);
sideAwning.add(awningArm3);
const awningCheek4 = new THREE.Mesh(extrudeGeo, awningMat);
awningCheek4.name = 'awningCheek';
awningCheek4.position.set(1.915, 0.01, 0);
awningCheek4.rotation.set(0, deg(-90), 0);
sideAwning.add(awningCheek4);
const awningArm4 = new THREE.Mesh(boxGeo15, trimMat);
awningArm4.name = 'awningArm';
awningArm4.position.set(1.8, -0.62, 0.725);
sideAwning.add(awningArm4);
const awningRail2 = new THREE.Mesh(new THREE.BoxGeometry(3.9, 0.1, 0.1), trimMat);
awningRail2.name = 'awningRail';
awningRail2.position.set(0, 0.02, 0.05);
sideAwning.add(awningRail2);
const upperFrame4 = new THREE.Mesh(boxGeo16, creamMat);
upperFrame4.name = 'upperFrame';
upperFrame4.position.set(-1.6, 5.45, 0.03);
sideStore.add(upperFrame4);
const upperGlass4 = new THREE.Mesh(boxGeo17, glassMat);
upperGlass4.name = 'upperGlass';
upperGlass4.position.set(-1.6, 5.45, 0.06);
sideStore.add(upperGlass4);
const sashRail4 = new THREE.Mesh(boxGeo18, creamMat);
sashRail4.name = 'sashRail';
sashRail4.position.set(-1.6, 5.5, 0.06);
sideStore.add(sashRail4);
const upperSill4 = new THREE.Mesh(boxGeo19, concreteMat);
upperSill4.name = 'upperSill';
upperSill4.position.set(-1.6, 4.595, 0.1);
sideStore.add(upperSill4);
const lintel4 = new THREE.Mesh(boxGeo20, brickDarkMat);
lintel4.name = 'lintel';
lintel4.position.set(-1.6, 6.375, 0.04);
sideStore.add(lintel4);
const upperFrame5 = new THREE.Mesh(boxGeo16, creamMat);
upperFrame5.name = 'upperFrame';
upperFrame5.position.set(1.6, 5.45, 0.03);
sideStore.add(upperFrame5);
const upperGlass5 = new THREE.Mesh(boxGeo17, glassMat);
upperGlass5.name = 'upperGlass';
upperGlass5.position.set(1.6, 5.45, 0.06);
sideStore.add(upperGlass5);
const sashRail5 = new THREE.Mesh(boxGeo18, creamMat);
sashRail5.name = 'sashRail';
sashRail5.position.set(1.6, 5.5, 0.06);
sideStore.add(sashRail5);
const upperSill5 = new THREE.Mesh(boxGeo19, concreteMat);
upperSill5.name = 'upperSill';
upperSill5.position.set(1.6, 4.595, 0.1);
sideStore.add(upperSill5);
const lintel5 = new THREE.Mesh(boxGeo20, brickDarkMat);
lintel5.name = 'lintel';
lintel5.position.set(1.6, 6.375, 0.04);
sideStore.add(lintel5);
const backWall = new THREE.Group();
backWall.name = 'backWall';
backWall.position.set(0, 0.15, -3.6);
backWall.rotation.set(0, deg(180), 0);
root.add(backWall);
const backDoor = new THREE.Mesh(new THREE.BoxGeometry(1.1, 2.15, 0.08), trimMat);
backDoor.name = 'backDoor';
backDoor.position.set(1.6, 1.425, 0.04);
backWall.add(backDoor);
const backDoorHood = new THREE.Mesh(new THREE.BoxGeometry(1.4, 0.08, 0.35), trimMat);
backDoorHood.name = 'backDoorHood';
backDoorHood.position.set(1.6, 2.69, 0.17);
backWall.add(backDoorHood);
const upperFrame6 = new THREE.Mesh(boxGeo16, creamMat);
upperFrame6.name = 'upperFrame';
upperFrame6.position.set(-1.6, 1.9, 0.03);
backWall.add(upperFrame6);
const upperGlass6 = new THREE.Mesh(boxGeo17, glassMat);
upperGlass6.name = 'upperGlass';
upperGlass6.position.set(-1.6, 1.9, 0.06);
backWall.add(upperGlass6);
const sashRail6 = new THREE.Mesh(boxGeo18, creamMat);
sashRail6.name = 'sashRail';
sashRail6.position.set(-1.6, 1.95, 0.06);
backWall.add(sashRail6);
const upperSill6 = new THREE.Mesh(boxGeo19, concreteMat);
upperSill6.name = 'upperSill';
upperSill6.position.set(-1.6, 1.045, 0.1);
backWall.add(upperSill6);
const lintel6 = new THREE.Mesh(boxGeo20, brickDarkMat);
lintel6.name = 'lintel';
lintel6.position.set(-1.6, 2.825, 0.04);
backWall.add(lintel6);
const upperFrame7 = new THREE.Mesh(boxGeo16, creamMat);
upperFrame7.name = 'upperFrame';
upperFrame7.position.set(-2.2, 5.45, 0.03);
backWall.add(upperFrame7);
const upperGlass7 = new THREE.Mesh(boxGeo17, glassMat);
upperGlass7.name = 'upperGlass';
upperGlass7.position.set(-2.2, 5.45, 0.06);
backWall.add(upperGlass7);
const sashRail7 = new THREE.Mesh(boxGeo18, creamMat);
sashRail7.name = 'sashRail';
sashRail7.position.set(-2.2, 5.5, 0.06);
backWall.add(sashRail7);
const upperSill7 = new THREE.Mesh(boxGeo19, concreteMat);
upperSill7.name = 'upperSill';
upperSill7.position.set(-2.2, 4.595, 0.1);
backWall.add(upperSill7);
const lintel7 = new THREE.Mesh(boxGeo20, brickDarkMat);
lintel7.name = 'lintel';
lintel7.position.set(-2.2, 6.375, 0.04);
backWall.add(lintel7);
const upperFrame8 = new THREE.Mesh(boxGeo16, creamMat);
upperFrame8.name = 'upperFrame';
upperFrame8.position.set(1.6, 5.45, 0.03);
backWall.add(upperFrame8);
const upperGlass8 = new THREE.Mesh(boxGeo17, glassMat);
upperGlass8.name = 'upperGlass';
upperGlass8.position.set(1.6, 5.45, 0.06);
backWall.add(upperGlass8);
const sashRail8 = new THREE.Mesh(boxGeo18, creamMat);
sashRail8.name = 'sashRail';
sashRail8.position.set(1.6, 5.5, 0.06);
backWall.add(sashRail8);
const upperSill8 = new THREE.Mesh(boxGeo19, concreteMat);
upperSill8.name = 'upperSill';
upperSill8.position.set(1.6, 4.595, 0.1);
backWall.add(upperSill8);
const lintel8 = new THREE.Mesh(boxGeo20, brickDarkMat);
lintel8.name = 'lintel';
lintel8.position.set(1.6, 6.375, 0.04);
backWall.add(lintel8);
const leftWall = new THREE.Group();
leftWall.name = 'leftWall';
leftWall.position.set(-4.2, 0.15, 0);
leftWall.rotation.set(0, deg(-90), 0);
root.add(leftWall);
const muralPanel = new THREE.Mesh(new THREE.BoxGeometry(3.6, 1.6, 0.04), creamMat);
muralPanel.name = 'muralPanel';
muralPanel.position.set(0, 2, 0.02);
leftWall.add(muralPanel);
const muralPaint = new THREE.Mesh(new THREE.BoxGeometry(3.2, 1.25, 0.03), awningMat);
muralPaint.name = 'muralPaint';
muralPaint.position.set(0, 2, 0.045);
leftWall.add(muralPaint);
const upperFrame9 = new THREE.Mesh(boxGeo16, creamMat);
upperFrame9.name = 'upperFrame';
upperFrame9.position.set(-1.5, 5.45, 0.03);
leftWall.add(upperFrame9);
const upperGlass9 = new THREE.Mesh(boxGeo17, glassMat);
upperGlass9.name = 'upperGlass';
upperGlass9.position.set(-1.5, 5.45, 0.06);
leftWall.add(upperGlass9);
const sashRail9 = new THREE.Mesh(boxGeo18, creamMat);
sashRail9.name = 'sashRail';
sashRail9.position.set(-1.5, 5.5, 0.06);
leftWall.add(sashRail9);
const upperSill9 = new THREE.Mesh(boxGeo19, concreteMat);
upperSill9.name = 'upperSill';
upperSill9.position.set(-1.5, 4.595, 0.1);
leftWall.add(upperSill9);
const lintel9 = new THREE.Mesh(boxGeo20, brickDarkMat);
lintel9.name = 'lintel';
lintel9.position.set(-1.5, 6.375, 0.04);
leftWall.add(lintel9);
const upperFrame10 = new THREE.Mesh(boxGeo16, creamMat);
upperFrame10.name = 'upperFrame';
upperFrame10.position.set(1.5, 5.45, 0.03);
leftWall.add(upperFrame10);
const upperGlass10 = new THREE.Mesh(boxGeo17, glassMat);
upperGlass10.name = 'upperGlass';
upperGlass10.position.set(1.5, 5.45, 0.06);
leftWall.add(upperGlass10);
const sashRail10 = new THREE.Mesh(boxGeo18, creamMat);
sashRail10.name = 'sashRail';
sashRail10.position.set(1.5, 5.5, 0.06);
leftWall.add(sashRail10);
const upperSill10 = new THREE.Mesh(boxGeo19, concreteMat);
upperSill10.name = 'upperSill';
upperSill10.position.set(1.5, 4.595, 0.1);
leftWall.add(upperSill10);
const lintel10 = new THREE.Mesh(boxGeo20, brickDarkMat);
lintel10.name = 'lintel';
lintel10.position.set(1.5, 6.375, 0.04);
leftWall.add(lintel10);
const bladeSign = new THREE.Group();
bladeSign.name = 'bladeSign';
bladeSign.position.set(3.85, 5.35, 3.6);
root.add(bladeSign);
const bladeArm = new THREE.Mesh(new THREE.BoxGeometry(0.08, 0.08, 1.2), trimMat);
bladeArm.name = 'bladeArm';
bladeArm.position.set(0, 0.62, 0.6);
bladeSign.add(bladeArm);
const bladeDisc = new THREE.Mesh(new THREE.CylinderGeometry(0.5, 0.5, 0.1, 12), signMat);
bladeDisc.name = 'bladeDisc';
bladeDisc.position.set(0, 0, 0.75);
bladeDisc.rotation.set(0, 0, deg(90));
bladeSign.add(bladeDisc);
const bladeFace = new THREE.Mesh(new THREE.CylinderGeometry(0.36, 0.36, 0.12, 12), creamMat);
bladeFace.name = 'bladeFace';
bladeFace.position.set(0, 0, 0.75);
bladeFace.rotation.set(0, 0, deg(90));
bladeSign.add(bladeFace);
const roofDeck = new THREE.Mesh(new THREE.BoxGeometry(8, 0.04, 6.8), trimMat);
roofDeck.name = 'roofDeck';
roofDeck.position.set(0, 7.17, 0);
root.add(roofDeck);
const acUnit = new THREE.Mesh(new THREE.BoxGeometry(1.6, 0.9, 1.2), concreteMat);
acUnit.name = 'acUnit';
acUnit.position.set(-1.6, 7.6, -1.2);
root.add(acUnit);
const acFan = new THREE.Mesh(new THREE.CylinderGeometry(0.4, 0.4, 0.06, 10), trimMat);
acFan.name = 'acFan';
acFan.position.set(-1.6, 8.08, -1.2);
root.add(acFan);
const ventPipe = new THREE.Mesh(new THREE.CylinderGeometry(0.12, 0.12, 0.8, 6), trimMat);
ventPipe.name = 'ventPipe';
ventPipe.position.set(1.8, 7.55, -2);
root.add(ventPipe);
const standTable = new THREE.Mesh(new THREE.BoxGeometry(2.2, 0.7, 0.8), trimMat);
standTable.name = 'standTable';
standTable.position.set(-2.3, 0.5, 4.35);
root.add(standTable);
const fruitCrate = new THREE.Mesh(boxGeo23, creamMat);
fruitCrate.name = 'fruitCrate';
fruitCrate.position.set(-2.85, 0.99, 4.35);
root.add(fruitCrate);
const fruit = new THREE.Mesh(icosahedronGeo, fruitMat);
fruit.name = 'fruit';
fruit.position.set(-3.1662, 1.1612, 4.2);
root.add(fruit);
const fruit2 = new THREE.Mesh(icosahedronGeo, fruitMat);
fruit2.name = 'fruit';
fruit2.position.set(-2.8356, 1.1564, 4.2);
root.add(fruit2);
const fruit3 = new THREE.Mesh(icosahedronGeo, fruitMat);
fruit3.name = 'fruit';
fruit3.position.set(-2.5792, 1.1486, 4.2);
root.add(fruit3);
const fruit4 = new THREE.Mesh(icosahedronGeo, fruitMat);
fruit4.name = 'fruit';
fruit4.position.set(-3.162, 1.1659, 4.5);
root.add(fruit4);
const fruit5 = new THREE.Mesh(icosahedronGeo, fruitMat);
fruit5.name = 'fruit';
fruit5.position.set(-2.8627, 1.1602, 4.5);
root.add(fruit5);
const fruit6 = new THREE.Mesh(icosahedronGeo, fruitMat);
fruit6.name = 'fruit';
fruit6.position.set(-2.5366, 1.1401, 4.5);
root.add(fruit6);
const fruitCrate2 = new THREE.Mesh(boxGeo23, creamMat);
fruitCrate2.name = 'fruitCrate';
fruitCrate2.position.set(-1.75, 0.99, 4.35);
root.add(fruitCrate2);
const fruit7 = new THREE.Mesh(icosahedronGeo, signMat);
fruit7.name = 'fruit';
fruit7.position.set(-2.0789, 1.1617, 4.2);
root.add(fruit7);
const fruit8 = new THREE.Mesh(icosahedronGeo, signMat);
fruit8.name = 'fruit';
fruit8.position.set(-1.7675, 1.1409, 4.2);
root.add(fruit8);
const fruit9 = new THREE.Mesh(icosahedronGeo, signMat);
fruit9.name = 'fruit';
fruit9.position.set(-1.4726, 1.1488, 4.2);
root.add(fruit9);
const fruit10 = new THREE.Mesh(icosahedronGeo, signMat);
fruit10.name = 'fruit';
fruit10.position.set(-2.0205, 1.1398, 4.5);
root.add(fruit10);
const fruit11 = new THREE.Mesh(icosahedronGeo, signMat);
fruit11.name = 'fruit';
fruit11.position.set(-1.7751, 1.1639, 4.5);
root.add(fruit11);
const fruit12 = new THREE.Mesh(icosahedronGeo, signMat);
fruit12.name = 'fruit';
fruit12.position.set(-1.461, 1.1463, 4.5);
root.add(fruit12);
const chalkboard = new THREE.Group();
chalkboard.name = 'chalkboard';
chalkboard.position.set(1.7, 0.15, 4.95);
chalkboard.rotation.set(0, deg(90), 0);
root.add(chalkboard);
const boardLeaf = new THREE.Mesh(boxGeo24, trimMat);
boardLeaf.name = 'boardLeaf';
boardLeaf.position.set(0, 0.48, -0.17);
boardLeaf.rotation.set(deg(12), 0, 0);
chalkboard.add(boardLeaf);
const boardText = new THREE.Mesh(boxGeo25, creamMat);
boardText.name = 'boardText';
boardText.position.set(0, 0.52, -0.2);
boardText.rotation.set(deg(12), 0, 0);
chalkboard.add(boardText);
const boardLeaf2 = new THREE.Mesh(boxGeo24, trimMat);
boardLeaf2.name = 'boardLeaf';
boardLeaf2.position.set(0, 0.48, 0.17);
boardLeaf2.rotation.set(deg(-12), 0, 0);
chalkboard.add(boardLeaf2);
const boardText2 = new THREE.Mesh(boxGeo25, creamMat);
boardText2.name = 'boardText';
boardText2.position.set(0, 0.52, 0.2);
boardText2.rotation.set(deg(-12), 0, 0);
chalkboard.add(boardText2);
root.traverse((o) => {
if (o.isMesh) {
o.castShadow = true;
o.receiveShadow = true;
}
});
return root;
}
export default createShop;
Bewertungen & Kommentare
—
Noch keine Bewertungen — gib die erste ab.
5
0
4
0
3
0
2
0
1
0
Melde dich an, um zu bewerten und zu kommentieren.
0 Kommentare
Noch keine Kommentare. Erzähl, wie du dieses Modell genutzt hast oder was besser sein könnte.
Ähnliche Modelle
Gleiche Kategorie oder ähnliche Tags









