3,1 B üçgen11,5 × 10,6 × 10,9 m
Kodda kullan
Editörde remix’lefarmhouse.js · 1.153 satır
Bağımsız bir ES modülü — yalnızca three paketine bağımlıdır. Fabrika fonksiyonunu çağırıp dönen grubu sahnene ekle.
/**
* Farmhouse — Codels 3D model library
* License: CC0-1.0 · Units: meters · Y-up · Front: +Z · Origin: center of the base (y = 0)
* Triangles: 3,092 · Size (W × H × D): 11.53 × 10.64 × 10.92 m
*
* Usage:
* import { createFarmhouse } from './farmhouse.js';
*
* const model = createFarmhouse();
* 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 createFarmhouse() {
const root = new THREE.Group();
root.name = 'Farmhouse';
// Materials
const wallMat = new THREE.MeshStandardMaterial({ name: 'wall', color: 0xefeadf, roughness: 0.9, flatShading: true });
const lineMat = new THREE.MeshStandardMaterial({ name: 'line', color: 0xd2cec4, roughness: 0.9, flatShading: true });
const trimMat = new THREE.MeshStandardMaterial({ name: 'trim', color: 0xfbfaf6, roughness: 0.8, flatShading: true });
const shutterMat = new THREE.MeshStandardMaterial({ name: 'shutter', color: 0x33553f, roughness: 0.8, flatShading: true });
const roofMat = new THREE.MeshStandardMaterial({ name: 'roof', color: 0x56616a, roughness: 0.85, flatShading: true });
const stoneMat = new THREE.MeshStandardMaterial({ name: 'stone', color: 0x8e8981, roughness: 0.95, flatShading: true });
const brickMat = new THREE.MeshStandardMaterial({ name: 'brick', color: 0xa3553f, roughness: 0.95, flatShading: true });
const glassMat = new THREE.MeshStandardMaterial({ name: 'glass', color: 0xa6c9d9, roughness: 0.2, metalness: 0.1, flatShading: true });
const woodMat = new THREE.MeshStandardMaterial({ name: 'wood', color: 0x9a7653, roughness: 0.9, flatShading: true });
// Shared geometries
const boxGeo = new THREE.BoxGeometry(10.02, 0.035, 0.02);
const boxGeo2 = new THREE.BoxGeometry(0.02, 0.035, 7.02);
const boxGeo3 = new THREE.BoxGeometry(0.18, 5.8, 0.18);
const boxGeo4 = new THREE.BoxGeometry(1.15, 1.75, 0.06);
const boxGeo5 = new THREE.BoxGeometry(0.95, 1.55, 0.04);
const boxGeo6 = new THREE.BoxGeometry(0.95, 0.06, 0.06);
const boxGeo7 = new THREE.BoxGeometry(1.31, 0.08, 0.16);
const boxGeo8 = new THREE.BoxGeometry(1.31, 0.14, 0.08);
const boxGeo9 = new THREE.BoxGeometry(0.475, 1.65, 0.04);
const boxGeo10 = new THREE.BoxGeometry(0.95, 2.15, 0.06);
const boxGeo11 = new THREE.BoxGeometry(0.7, 0.6, 0.03);
const boxGeo12 = new THREE.BoxGeometry(0.8, 1, 0.06);
const boxGeo13 = new THREE.BoxGeometry(0.6, 0.8, 0.04);
const boxGeo14 = new THREE.BoxGeometry(0.6, 0.06, 0.06);
const boxGeo15 = new THREE.BoxGeometry(0.96, 0.08, 0.16);
const boxGeo16 = new THREE.BoxGeometry(0.96, 0.14, 0.08);
const boxGeo17 = new THREE.BoxGeometry(10.7, 0.12, 5.0489);
const boxGeo18 = new THREE.BoxGeometry(10.72, 0.06, 1.0805);
const boxGeo19 = new THREE.BoxGeometry(0.08, 0.18, 4.9514);
const boxGeo20 = new THREE.BoxGeometry(10.7, 0.16, 0.14);
const boxGeo21 = new THREE.BoxGeometry(0.18, 2.6, 0.18);
const boxGeo22 = new THREE.BoxGeometry(0.26, 0.18, 0.26);
const boxGeo23 = new THREE.BoxGeometry(1.78, 0.07, 0.1);
const boxGeo24 = new THREE.BoxGeometry(1.78, 0.06, 0.08);
const boxGeo25 = new THREE.BoxGeometry(0.05, 0.7, 0.05);
const boxGeo26 = new THREE.BoxGeometry(0.07, 0.07, 2.25);
const boxGeo27 = new THREE.BoxGeometry(0.12, 2.6, 0.12);
const boxGeo28 = new THREE.BoxGeometry(0.05, 0.42, 0.05);
const boxGeo29 = new THREE.BoxGeometry(0.05, 0.05, 0.8);
// Parts
const foundation = new THREE.Mesh(new THREE.BoxGeometry(10.2, 0.6, 7.2), stoneMat);
foundation.name = 'foundation';
foundation.position.set(0, 0.3, 0);
root.add(foundation);
const walls = new THREE.Mesh(new THREE.BoxGeometry(10, 5.8, 7), wallMat);
walls.name = 'walls';
walls.position.set(0, 3.5, 0);
root.add(walls);
const gables = new THREE.Mesh(extrude([[-3.5, 0], [3.5, 0], [0, 2.9168]], 10), wallMat);
gables.name = 'gables';
gables.position.set(0, 6.4, 0);
gables.rotation.set(0, deg(90), 0);
root.add(gables);
const siding = new THREE.Mesh(boxGeo, lineMat);
siding.name = 'siding';
siding.position.set(0, 0.9, -3.51);
root.add(siding);
const siding2 = new THREE.Mesh(boxGeo2, lineMat);
siding2.name = 'siding';
siding2.position.set(-5.01, 0.9, 0);
root.add(siding2);
const siding3 = new THREE.Mesh(boxGeo, lineMat);
siding3.name = 'siding';
siding3.position.set(0, 0.9, 3.51);
root.add(siding3);
const siding4 = new THREE.Mesh(boxGeo2, lineMat);
siding4.name = 'siding';
siding4.position.set(5.01, 0.9, 0);
root.add(siding4);
const siding5 = new THREE.Mesh(boxGeo, lineMat);
siding5.name = 'siding';
siding5.position.set(0, 1.3, -3.51);
root.add(siding5);
const siding6 = new THREE.Mesh(boxGeo2, lineMat);
siding6.name = 'siding';
siding6.position.set(-5.01, 1.3, 0);
root.add(siding6);
const siding7 = new THREE.Mesh(boxGeo, lineMat);
siding7.name = 'siding';
siding7.position.set(0, 1.3, 3.51);
root.add(siding7);
const siding8 = new THREE.Mesh(boxGeo2, lineMat);
siding8.name = 'siding';
siding8.position.set(5.01, 1.3, 0);
root.add(siding8);
const siding9 = new THREE.Mesh(boxGeo, lineMat);
siding9.name = 'siding';
siding9.position.set(0, 1.7, -3.51);
root.add(siding9);
const siding10 = new THREE.Mesh(boxGeo2, lineMat);
siding10.name = 'siding';
siding10.position.set(-5.01, 1.7, 0);
root.add(siding10);
const siding11 = new THREE.Mesh(boxGeo, lineMat);
siding11.name = 'siding';
siding11.position.set(0, 1.7, 3.51);
root.add(siding11);
const siding12 = new THREE.Mesh(boxGeo2, lineMat);
siding12.name = 'siding';
siding12.position.set(5.01, 1.7, 0);
root.add(siding12);
const siding13 = new THREE.Mesh(boxGeo, lineMat);
siding13.name = 'siding';
siding13.position.set(0, 2.1, -3.51);
root.add(siding13);
const siding14 = new THREE.Mesh(boxGeo2, lineMat);
siding14.name = 'siding';
siding14.position.set(-5.01, 2.1, 0);
root.add(siding14);
const siding15 = new THREE.Mesh(boxGeo, lineMat);
siding15.name = 'siding';
siding15.position.set(0, 2.1, 3.51);
root.add(siding15);
const siding16 = new THREE.Mesh(boxGeo2, lineMat);
siding16.name = 'siding';
siding16.position.set(5.01, 2.1, 0);
root.add(siding16);
const siding17 = new THREE.Mesh(boxGeo, lineMat);
siding17.name = 'siding';
siding17.position.set(0, 2.5, -3.51);
root.add(siding17);
const siding18 = new THREE.Mesh(boxGeo2, lineMat);
siding18.name = 'siding';
siding18.position.set(-5.01, 2.5, 0);
root.add(siding18);
const siding19 = new THREE.Mesh(boxGeo, lineMat);
siding19.name = 'siding';
siding19.position.set(0, 2.5, 3.51);
root.add(siding19);
const siding20 = new THREE.Mesh(boxGeo2, lineMat);
siding20.name = 'siding';
siding20.position.set(5.01, 2.5, 0);
root.add(siding20);
const siding21 = new THREE.Mesh(boxGeo, lineMat);
siding21.name = 'siding';
siding21.position.set(0, 2.9, -3.51);
root.add(siding21);
const siding22 = new THREE.Mesh(boxGeo2, lineMat);
siding22.name = 'siding';
siding22.position.set(-5.01, 2.9, 0);
root.add(siding22);
const siding23 = new THREE.Mesh(boxGeo, lineMat);
siding23.name = 'siding';
siding23.position.set(0, 2.9, 3.51);
root.add(siding23);
const siding24 = new THREE.Mesh(boxGeo2, lineMat);
siding24.name = 'siding';
siding24.position.set(5.01, 2.9, 0);
root.add(siding24);
const siding25 = new THREE.Mesh(boxGeo, lineMat);
siding25.name = 'siding';
siding25.position.set(0, 3.3, -3.51);
root.add(siding25);
const siding26 = new THREE.Mesh(boxGeo2, lineMat);
siding26.name = 'siding';
siding26.position.set(-5.01, 3.3, 0);
root.add(siding26);
const siding27 = new THREE.Mesh(boxGeo, lineMat);
siding27.name = 'siding';
siding27.position.set(0, 3.3, 3.51);
root.add(siding27);
const siding28 = new THREE.Mesh(boxGeo2, lineMat);
siding28.name = 'siding';
siding28.position.set(5.01, 3.3, 0);
root.add(siding28);
const siding29 = new THREE.Mesh(boxGeo, lineMat);
siding29.name = 'siding';
siding29.position.set(0, 3.7, -3.51);
root.add(siding29);
const siding30 = new THREE.Mesh(boxGeo2, lineMat);
siding30.name = 'siding';
siding30.position.set(-5.01, 3.7, 0);
root.add(siding30);
const siding31 = new THREE.Mesh(boxGeo, lineMat);
siding31.name = 'siding';
siding31.position.set(0, 3.7, 3.51);
root.add(siding31);
const siding32 = new THREE.Mesh(boxGeo2, lineMat);
siding32.name = 'siding';
siding32.position.set(5.01, 3.7, 0);
root.add(siding32);
const siding33 = new THREE.Mesh(boxGeo, lineMat);
siding33.name = 'siding';
siding33.position.set(0, 4.1, -3.51);
root.add(siding33);
const siding34 = new THREE.Mesh(boxGeo2, lineMat);
siding34.name = 'siding';
siding34.position.set(-5.01, 4.1, 0);
root.add(siding34);
const siding35 = new THREE.Mesh(boxGeo, lineMat);
siding35.name = 'siding';
siding35.position.set(0, 4.1, 3.51);
root.add(siding35);
const siding36 = new THREE.Mesh(boxGeo2, lineMat);
siding36.name = 'siding';
siding36.position.set(5.01, 4.1, 0);
root.add(siding36);
const siding37 = new THREE.Mesh(boxGeo, lineMat);
siding37.name = 'siding';
siding37.position.set(0, 4.5, -3.51);
root.add(siding37);
const siding38 = new THREE.Mesh(boxGeo2, lineMat);
siding38.name = 'siding';
siding38.position.set(-5.01, 4.5, 0);
root.add(siding38);
const siding39 = new THREE.Mesh(boxGeo, lineMat);
siding39.name = 'siding';
siding39.position.set(0, 4.5, 3.51);
root.add(siding39);
const siding40 = new THREE.Mesh(boxGeo2, lineMat);
siding40.name = 'siding';
siding40.position.set(5.01, 4.5, 0);
root.add(siding40);
const siding41 = new THREE.Mesh(boxGeo, lineMat);
siding41.name = 'siding';
siding41.position.set(0, 4.9, -3.51);
root.add(siding41);
const siding42 = new THREE.Mesh(boxGeo2, lineMat);
siding42.name = 'siding';
siding42.position.set(-5.01, 4.9, 0);
root.add(siding42);
const siding43 = new THREE.Mesh(boxGeo, lineMat);
siding43.name = 'siding';
siding43.position.set(0, 4.9, 3.51);
root.add(siding43);
const siding44 = new THREE.Mesh(boxGeo2, lineMat);
siding44.name = 'siding';
siding44.position.set(5.01, 4.9, 0);
root.add(siding44);
const siding45 = new THREE.Mesh(boxGeo, lineMat);
siding45.name = 'siding';
siding45.position.set(0, 5.3, -3.51);
root.add(siding45);
const siding46 = new THREE.Mesh(boxGeo2, lineMat);
siding46.name = 'siding';
siding46.position.set(-5.01, 5.3, 0);
root.add(siding46);
const siding47 = new THREE.Mesh(boxGeo, lineMat);
siding47.name = 'siding';
siding47.position.set(0, 5.3, 3.51);
root.add(siding47);
const siding48 = new THREE.Mesh(boxGeo2, lineMat);
siding48.name = 'siding';
siding48.position.set(5.01, 5.3, 0);
root.add(siding48);
const siding49 = new THREE.Mesh(boxGeo, lineMat);
siding49.name = 'siding';
siding49.position.set(0, 5.7, -3.51);
root.add(siding49);
const siding50 = new THREE.Mesh(boxGeo2, lineMat);
siding50.name = 'siding';
siding50.position.set(-5.01, 5.7, 0);
root.add(siding50);
const siding51 = new THREE.Mesh(boxGeo, lineMat);
siding51.name = 'siding';
siding51.position.set(0, 5.7, 3.51);
root.add(siding51);
const siding52 = new THREE.Mesh(boxGeo2, lineMat);
siding52.name = 'siding';
siding52.position.set(5.01, 5.7, 0);
root.add(siding52);
const siding53 = new THREE.Mesh(boxGeo, lineMat);
siding53.name = 'siding';
siding53.position.set(0, 6.1, -3.51);
root.add(siding53);
const siding54 = new THREE.Mesh(boxGeo2, lineMat);
siding54.name = 'siding';
siding54.position.set(-5.01, 6.1, 0);
root.add(siding54);
const siding55 = new THREE.Mesh(boxGeo, lineMat);
siding55.name = 'siding';
siding55.position.set(0, 6.1, 3.51);
root.add(siding55);
const siding56 = new THREE.Mesh(boxGeo2, lineMat);
siding56.name = 'siding';
siding56.position.set(5.01, 6.1, 0);
root.add(siding56);
const cornerBoard = new THREE.Mesh(boxGeo3, trimMat);
cornerBoard.name = 'cornerBoard';
cornerBoard.position.set(-4.95, 3.5, -3.45);
root.add(cornerBoard);
const cornerBoard2 = new THREE.Mesh(boxGeo3, trimMat);
cornerBoard2.name = 'cornerBoard';
cornerBoard2.position.set(-4.95, 3.5, 3.45);
root.add(cornerBoard2);
const cornerBoard3 = new THREE.Mesh(boxGeo3, trimMat);
cornerBoard3.name = 'cornerBoard';
cornerBoard3.position.set(4.95, 3.5, -3.45);
root.add(cornerBoard3);
const cornerBoard4 = new THREE.Mesh(boxGeo3, trimMat);
cornerBoard4.name = 'cornerBoard';
cornerBoard4.position.set(4.95, 3.5, 3.45);
root.add(cornerBoard4);
const floorBand = new THREE.Mesh(new THREE.BoxGeometry(10.1, 0.18, 7.1), trimMat);
floorBand.name = 'floorBand';
floorBand.position.set(0, 3.5, 0);
root.add(floorBand);
const frieze = new THREE.Mesh(new THREE.BoxGeometry(10.12, 0.22, 7.12), trimMat);
frieze.name = 'frieze';
frieze.position.set(0, 6.29, 0);
root.add(frieze);
const frontFacade = new THREE.Group();
frontFacade.name = 'frontFacade';
frontFacade.position.set(0, 0, 3.5);
root.add(frontFacade);
const windowCasing = new THREE.Mesh(boxGeo4, trimMat);
windowCasing.name = 'windowCasing';
windowCasing.position.set(-3.155, 2.15, 0.03);
frontFacade.add(windowCasing);
const windowGlass = new THREE.Mesh(boxGeo5, glassMat);
windowGlass.name = 'windowGlass';
windowGlass.position.set(-3.155, 2.15, 0.06);
frontFacade.add(windowGlass);
const meetingRail = new THREE.Mesh(boxGeo6, trimMat);
meetingRail.name = 'meetingRail';
meetingRail.position.set(-3.155, 2.15, 0.08);
frontFacade.add(meetingRail);
const windowSill = new THREE.Mesh(boxGeo7, trimMat);
windowSill.name = 'windowSill';
windowSill.position.set(-3.155, 1.255, 0.08);
frontFacade.add(windowSill);
const windowHead = new THREE.Mesh(boxGeo8, trimMat);
windowHead.name = 'windowHead';
windowHead.position.set(-3.155, 3.095, 0.05);
frontFacade.add(windowHead);
const shutter = new THREE.Mesh(boxGeo9, shutterMat);
shutter.name = 'shutter';
shutter.position.set(-4.0075, 2.15, 0.04);
frontFacade.add(shutter);
const shutter2 = new THREE.Mesh(boxGeo9, shutterMat);
shutter2.name = 'shutter';
shutter2.position.set(-2.3025, 2.15, 0.04);
frontFacade.add(shutter2);
const windowCasing2 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing2.name = 'windowCasing';
windowCasing2.position.set(-3.155, 5, 0.03);
frontFacade.add(windowCasing2);
const windowGlass2 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass2.name = 'windowGlass';
windowGlass2.position.set(-3.155, 5, 0.06);
frontFacade.add(windowGlass2);
const meetingRail2 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail2.name = 'meetingRail';
meetingRail2.position.set(-3.155, 5, 0.08);
frontFacade.add(meetingRail2);
const windowSill2 = new THREE.Mesh(boxGeo7, trimMat);
windowSill2.name = 'windowSill';
windowSill2.position.set(-3.155, 4.105, 0.08);
frontFacade.add(windowSill2);
const windowHead2 = new THREE.Mesh(boxGeo8, trimMat);
windowHead2.name = 'windowHead';
windowHead2.position.set(-3.155, 5.945, 0.05);
frontFacade.add(windowHead2);
const shutter3 = new THREE.Mesh(boxGeo9, shutterMat);
shutter3.name = 'shutter';
shutter3.position.set(-4.0075, 5, 0.04);
frontFacade.add(shutter3);
const shutter4 = new THREE.Mesh(boxGeo9, shutterMat);
shutter4.name = 'shutter';
shutter4.position.set(-2.3025, 5, 0.04);
frontFacade.add(shutter4);
const windowCasing3 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing3.name = 'windowCasing';
windowCasing3.position.set(3.155, 2.15, 0.03);
frontFacade.add(windowCasing3);
const windowGlass3 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass3.name = 'windowGlass';
windowGlass3.position.set(3.155, 2.15, 0.06);
frontFacade.add(windowGlass3);
const meetingRail3 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail3.name = 'meetingRail';
meetingRail3.position.set(3.155, 2.15, 0.08);
frontFacade.add(meetingRail3);
const windowSill3 = new THREE.Mesh(boxGeo7, trimMat);
windowSill3.name = 'windowSill';
windowSill3.position.set(3.155, 1.255, 0.08);
frontFacade.add(windowSill3);
const windowHead3 = new THREE.Mesh(boxGeo8, trimMat);
windowHead3.name = 'windowHead';
windowHead3.position.set(3.155, 3.095, 0.05);
frontFacade.add(windowHead3);
const shutter5 = new THREE.Mesh(boxGeo9, shutterMat);
shutter5.name = 'shutter';
shutter5.position.set(2.3025, 2.15, 0.04);
frontFacade.add(shutter5);
const shutter6 = new THREE.Mesh(boxGeo9, shutterMat);
shutter6.name = 'shutter';
shutter6.position.set(4.0075, 2.15, 0.04);
frontFacade.add(shutter6);
const windowCasing4 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing4.name = 'windowCasing';
windowCasing4.position.set(3.155, 5, 0.03);
frontFacade.add(windowCasing4);
const windowGlass4 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass4.name = 'windowGlass';
windowGlass4.position.set(3.155, 5, 0.06);
frontFacade.add(windowGlass4);
const meetingRail4 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail4.name = 'meetingRail';
meetingRail4.position.set(3.155, 5, 0.08);
frontFacade.add(meetingRail4);
const windowSill4 = new THREE.Mesh(boxGeo7, trimMat);
windowSill4.name = 'windowSill';
windowSill4.position.set(3.155, 4.105, 0.08);
frontFacade.add(windowSill4);
const windowHead4 = new THREE.Mesh(boxGeo8, trimMat);
windowHead4.name = 'windowHead';
windowHead4.position.set(3.155, 5.945, 0.05);
frontFacade.add(windowHead4);
const shutter7 = new THREE.Mesh(boxGeo9, shutterMat);
shutter7.name = 'shutter';
shutter7.position.set(2.3025, 5, 0.04);
frontFacade.add(shutter7);
const shutter8 = new THREE.Mesh(boxGeo9, shutterMat);
shutter8.name = 'shutter';
shutter8.position.set(4.0075, 5, 0.04);
frontFacade.add(shutter8);
const windowCasing5 = new THREE.Mesh(new THREE.BoxGeometry(0.96, 1.5175, 0.06), trimMat);
windowCasing5.name = 'windowCasing';
windowCasing5.position.set(0, 5, 0.03);
frontFacade.add(windowCasing5);
const windowGlass5 = new THREE.Mesh(new THREE.BoxGeometry(0.76, 1.3175, 0.04), glassMat);
windowGlass5.name = 'windowGlass';
windowGlass5.position.set(0, 5, 0.06);
frontFacade.add(windowGlass5);
const meetingRail5 = new THREE.Mesh(new THREE.BoxGeometry(0.76, 0.06, 0.06), trimMat);
meetingRail5.name = 'meetingRail';
meetingRail5.position.set(0, 5, 0.08);
frontFacade.add(meetingRail5);
const windowSill5 = new THREE.Mesh(new THREE.BoxGeometry(1.12, 0.08, 0.16), trimMat);
windowSill5.name = 'windowSill';
windowSill5.position.set(0, 4.2213, 0.08);
frontFacade.add(windowSill5);
const windowHead5 = new THREE.Mesh(new THREE.BoxGeometry(1.12, 0.14, 0.08), trimMat);
windowHead5.name = 'windowHead';
windowHead5.position.set(0, 5.8287, 0.05);
frontFacade.add(windowHead5);
const doorCasing = new THREE.Mesh(new THREE.BoxGeometry(1.5, 2.75, 0.06), trimMat);
doorCasing.name = 'doorCasing';
doorCasing.position.set(0, 1.975, 0.03);
frontFacade.add(doorCasing);
const frontDoor = new THREE.Mesh(boxGeo10, shutterMat);
frontDoor.name = 'frontDoor';
frontDoor.position.set(0, 1.675, 0.06);
frontFacade.add(frontDoor);
const doorPanel = new THREE.Mesh(boxGeo11, trimMat);
doorPanel.name = 'doorPanel';
doorPanel.position.set(0, 1.15, 0.1);
frontFacade.add(doorPanel);
const doorPanel2 = new THREE.Mesh(boxGeo11, trimMat);
doorPanel2.name = 'doorPanel';
doorPanel2.position.set(0, 2.05, 0.1);
frontFacade.add(doorPanel2);
const transom = new THREE.Mesh(new THREE.BoxGeometry(1.2, 0.36, 0.04), glassMat);
transom.name = 'transom';
transom.position.set(0, 3.03, 0.07);
frontFacade.add(transom);
const doorKnob = new THREE.Mesh(new THREE.SphereGeometry(0.04, 6, 4), brickMat);
doorKnob.name = 'doorKnob';
doorKnob.position.set(0.33, 1.65, 0.13);
frontFacade.add(doorKnob);
const backFacade = new THREE.Group();
backFacade.name = 'backFacade';
backFacade.position.set(0, 0, -3.5);
backFacade.rotation.set(0, deg(180), 0);
root.add(backFacade);
const windowCasing6 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing6.name = 'windowCasing';
windowCasing6.position.set(-2.95, 2.15, 0.03);
backFacade.add(windowCasing6);
const windowGlass6 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass6.name = 'windowGlass';
windowGlass6.position.set(-2.95, 2.15, 0.06);
backFacade.add(windowGlass6);
const meetingRail6 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail6.name = 'meetingRail';
meetingRail6.position.set(-2.95, 2.15, 0.08);
backFacade.add(meetingRail6);
const windowSill6 = new THREE.Mesh(boxGeo7, trimMat);
windowSill6.name = 'windowSill';
windowSill6.position.set(-2.95, 1.255, 0.08);
backFacade.add(windowSill6);
const windowHead6 = new THREE.Mesh(boxGeo8, trimMat);
windowHead6.name = 'windowHead';
windowHead6.position.set(-2.95, 3.095, 0.05);
backFacade.add(windowHead6);
const windowCasing7 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing7.name = 'windowCasing';
windowCasing7.position.set(-2.95, 5, 0.03);
backFacade.add(windowCasing7);
const windowGlass7 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass7.name = 'windowGlass';
windowGlass7.position.set(-2.95, 5, 0.06);
backFacade.add(windowGlass7);
const meetingRail7 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail7.name = 'meetingRail';
meetingRail7.position.set(-2.95, 5, 0.08);
backFacade.add(meetingRail7);
const windowSill7 = new THREE.Mesh(boxGeo7, trimMat);
windowSill7.name = 'windowSill';
windowSill7.position.set(-2.95, 4.105, 0.08);
backFacade.add(windowSill7);
const windowHead7 = new THREE.Mesh(boxGeo8, trimMat);
windowHead7.name = 'windowHead';
windowHead7.position.set(-2.95, 5.945, 0.05);
backFacade.add(windowHead7);
const windowCasing8 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing8.name = 'windowCasing';
windowCasing8.position.set(2.95, 2.15, 0.03);
backFacade.add(windowCasing8);
const windowGlass8 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass8.name = 'windowGlass';
windowGlass8.position.set(2.95, 2.15, 0.06);
backFacade.add(windowGlass8);
const meetingRail8 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail8.name = 'meetingRail';
meetingRail8.position.set(2.95, 2.15, 0.08);
backFacade.add(meetingRail8);
const windowSill8 = new THREE.Mesh(boxGeo7, trimMat);
windowSill8.name = 'windowSill';
windowSill8.position.set(2.95, 1.255, 0.08);
backFacade.add(windowSill8);
const windowHead8 = new THREE.Mesh(boxGeo8, trimMat);
windowHead8.name = 'windowHead';
windowHead8.position.set(2.95, 3.095, 0.05);
backFacade.add(windowHead8);
const windowCasing9 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing9.name = 'windowCasing';
windowCasing9.position.set(2.95, 5, 0.03);
backFacade.add(windowCasing9);
const windowGlass9 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass9.name = 'windowGlass';
windowGlass9.position.set(2.95, 5, 0.06);
backFacade.add(windowGlass9);
const meetingRail9 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail9.name = 'meetingRail';
meetingRail9.position.set(2.95, 5, 0.08);
backFacade.add(meetingRail9);
const windowSill9 = new THREE.Mesh(boxGeo7, trimMat);
windowSill9.name = 'windowSill';
windowSill9.position.set(2.95, 4.105, 0.08);
backFacade.add(windowSill9);
const windowHead9 = new THREE.Mesh(boxGeo8, trimMat);
windowHead9.name = 'windowHead';
windowHead9.position.set(2.95, 5.945, 0.05);
backFacade.add(windowHead9);
const backDoor = new THREE.Mesh(boxGeo10, shutterMat);
backDoor.name = 'backDoor';
backDoor.position.set(0, 1.675, 0.04);
backFacade.add(backDoor);
const backDoorCasing = new THREE.Mesh(new THREE.BoxGeometry(1.2, 2.35, 0.04), trimMat);
backDoorCasing.name = 'backDoorCasing';
backDoorCasing.position.set(0, 1.775, 0.02);
backFacade.add(backDoorCasing);
const leftFacade = new THREE.Group();
leftFacade.name = 'leftFacade';
leftFacade.position.set(-5, 0, 0);
leftFacade.rotation.set(0, deg(-90), 0);
root.add(leftFacade);
const windowCasing10 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing10.name = 'windowCasing';
windowCasing10.position.set(-1.5, 2.15, 0.03);
leftFacade.add(windowCasing10);
const windowGlass10 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass10.name = 'windowGlass';
windowGlass10.position.set(-1.5, 2.15, 0.06);
leftFacade.add(windowGlass10);
const meetingRail10 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail10.name = 'meetingRail';
meetingRail10.position.set(-1.5, 2.15, 0.08);
leftFacade.add(meetingRail10);
const windowSill10 = new THREE.Mesh(boxGeo7, trimMat);
windowSill10.name = 'windowSill';
windowSill10.position.set(-1.5, 1.255, 0.08);
leftFacade.add(windowSill10);
const windowHead10 = new THREE.Mesh(boxGeo8, trimMat);
windowHead10.name = 'windowHead';
windowHead10.position.set(-1.5, 3.095, 0.05);
leftFacade.add(windowHead10);
const shutter9 = new THREE.Mesh(boxGeo9, shutterMat);
shutter9.name = 'shutter';
shutter9.position.set(-2.3525, 2.15, 0.04);
leftFacade.add(shutter9);
const shutter10 = new THREE.Mesh(boxGeo9, shutterMat);
shutter10.name = 'shutter';
shutter10.position.set(-0.6475, 2.15, 0.04);
leftFacade.add(shutter10);
const windowCasing11 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing11.name = 'windowCasing';
windowCasing11.position.set(-1.5, 5, 0.03);
leftFacade.add(windowCasing11);
const windowGlass11 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass11.name = 'windowGlass';
windowGlass11.position.set(-1.5, 5, 0.06);
leftFacade.add(windowGlass11);
const meetingRail11 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail11.name = 'meetingRail';
meetingRail11.position.set(-1.5, 5, 0.08);
leftFacade.add(meetingRail11);
const windowSill11 = new THREE.Mesh(boxGeo7, trimMat);
windowSill11.name = 'windowSill';
windowSill11.position.set(-1.5, 4.105, 0.08);
leftFacade.add(windowSill11);
const windowHead11 = new THREE.Mesh(boxGeo8, trimMat);
windowHead11.name = 'windowHead';
windowHead11.position.set(-1.5, 5.945, 0.05);
leftFacade.add(windowHead11);
const shutter11 = new THREE.Mesh(boxGeo9, shutterMat);
shutter11.name = 'shutter';
shutter11.position.set(-2.3525, 5, 0.04);
leftFacade.add(shutter11);
const shutter12 = new THREE.Mesh(boxGeo9, shutterMat);
shutter12.name = 'shutter';
shutter12.position.set(-0.6475, 5, 0.04);
leftFacade.add(shutter12);
const windowCasing12 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing12.name = 'windowCasing';
windowCasing12.position.set(1.5, 2.15, 0.03);
leftFacade.add(windowCasing12);
const windowGlass12 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass12.name = 'windowGlass';
windowGlass12.position.set(1.5, 2.15, 0.06);
leftFacade.add(windowGlass12);
const meetingRail12 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail12.name = 'meetingRail';
meetingRail12.position.set(1.5, 2.15, 0.08);
leftFacade.add(meetingRail12);
const windowSill12 = new THREE.Mesh(boxGeo7, trimMat);
windowSill12.name = 'windowSill';
windowSill12.position.set(1.5, 1.255, 0.08);
leftFacade.add(windowSill12);
const windowHead12 = new THREE.Mesh(boxGeo8, trimMat);
windowHead12.name = 'windowHead';
windowHead12.position.set(1.5, 3.095, 0.05);
leftFacade.add(windowHead12);
const shutter13 = new THREE.Mesh(boxGeo9, shutterMat);
shutter13.name = 'shutter';
shutter13.position.set(0.6475, 2.15, 0.04);
leftFacade.add(shutter13);
const shutter14 = new THREE.Mesh(boxGeo9, shutterMat);
shutter14.name = 'shutter';
shutter14.position.set(2.3525, 2.15, 0.04);
leftFacade.add(shutter14);
const windowCasing13 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing13.name = 'windowCasing';
windowCasing13.position.set(1.5, 5, 0.03);
leftFacade.add(windowCasing13);
const windowGlass13 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass13.name = 'windowGlass';
windowGlass13.position.set(1.5, 5, 0.06);
leftFacade.add(windowGlass13);
const meetingRail13 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail13.name = 'meetingRail';
meetingRail13.position.set(1.5, 5, 0.08);
leftFacade.add(meetingRail13);
const windowSill13 = new THREE.Mesh(boxGeo7, trimMat);
windowSill13.name = 'windowSill';
windowSill13.position.set(1.5, 4.105, 0.08);
leftFacade.add(windowSill13);
const windowHead13 = new THREE.Mesh(boxGeo8, trimMat);
windowHead13.name = 'windowHead';
windowHead13.position.set(1.5, 5.945, 0.05);
leftFacade.add(windowHead13);
const shutter15 = new THREE.Mesh(boxGeo9, shutterMat);
shutter15.name = 'shutter';
shutter15.position.set(0.6475, 5, 0.04);
leftFacade.add(shutter15);
const shutter16 = new THREE.Mesh(boxGeo9, shutterMat);
shutter16.name = 'shutter';
shutter16.position.set(2.3525, 5, 0.04);
leftFacade.add(shutter16);
const windowCasing14 = new THREE.Mesh(boxGeo12, trimMat);
windowCasing14.name = 'windowCasing';
windowCasing14.position.set(0, 7.5747, 0.03);
leftFacade.add(windowCasing14);
const windowGlass14 = new THREE.Mesh(boxGeo13, glassMat);
windowGlass14.name = 'windowGlass';
windowGlass14.position.set(0, 7.5747, 0.06);
leftFacade.add(windowGlass14);
const meetingRail14 = new THREE.Mesh(boxGeo14, trimMat);
meetingRail14.name = 'meetingRail';
meetingRail14.position.set(0, 7.5747, 0.08);
leftFacade.add(meetingRail14);
const windowSill14 = new THREE.Mesh(boxGeo15, trimMat);
windowSill14.name = 'windowSill';
windowSill14.position.set(0, 7.0547, 0.08);
leftFacade.add(windowSill14);
const windowHead14 = new THREE.Mesh(boxGeo16, trimMat);
windowHead14.name = 'windowHead';
windowHead14.position.set(0, 8.1447, 0.05);
leftFacade.add(windowHead14);
const rightFacade = new THREE.Group();
rightFacade.name = 'rightFacade';
rightFacade.position.set(5, 0, 0);
rightFacade.rotation.set(0, deg(90), 0);
root.add(rightFacade);
const windowCasing15 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing15.name = 'windowCasing';
windowCasing15.position.set(-1.9, 2.15, 0.03);
rightFacade.add(windowCasing15);
const windowGlass15 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass15.name = 'windowGlass';
windowGlass15.position.set(-1.9, 2.15, 0.06);
rightFacade.add(windowGlass15);
const meetingRail15 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail15.name = 'meetingRail';
meetingRail15.position.set(-1.9, 2.15, 0.08);
rightFacade.add(meetingRail15);
const windowSill15 = new THREE.Mesh(boxGeo7, trimMat);
windowSill15.name = 'windowSill';
windowSill15.position.set(-1.9, 1.255, 0.08);
rightFacade.add(windowSill15);
const windowHead15 = new THREE.Mesh(boxGeo8, trimMat);
windowHead15.name = 'windowHead';
windowHead15.position.set(-1.9, 3.095, 0.05);
rightFacade.add(windowHead15);
const shutter17 = new THREE.Mesh(boxGeo9, shutterMat);
shutter17.name = 'shutter';
shutter17.position.set(-2.7525, 2.15, 0.04);
rightFacade.add(shutter17);
const shutter18 = new THREE.Mesh(boxGeo9, shutterMat);
shutter18.name = 'shutter';
shutter18.position.set(-1.0475, 2.15, 0.04);
rightFacade.add(shutter18);
const windowCasing16 = new THREE.Mesh(boxGeo4, trimMat);
windowCasing16.name = 'windowCasing';
windowCasing16.position.set(-1.9, 5, 0.03);
rightFacade.add(windowCasing16);
const windowGlass16 = new THREE.Mesh(boxGeo5, glassMat);
windowGlass16.name = 'windowGlass';
windowGlass16.position.set(-1.9, 5, 0.06);
rightFacade.add(windowGlass16);
const meetingRail16 = new THREE.Mesh(boxGeo6, trimMat);
meetingRail16.name = 'meetingRail';
meetingRail16.position.set(-1.9, 5, 0.08);
rightFacade.add(meetingRail16);
const windowSill16 = new THREE.Mesh(boxGeo7, trimMat);
windowSill16.name = 'windowSill';
windowSill16.position.set(-1.9, 4.105, 0.08);
rightFacade.add(windowSill16);
const windowHead16 = new THREE.Mesh(boxGeo8, trimMat);
windowHead16.name = 'windowHead';
windowHead16.position.set(-1.9, 5.945, 0.05);
rightFacade.add(windowHead16);
const shutter19 = new THREE.Mesh(boxGeo9, shutterMat);
shutter19.name = 'shutter';
shutter19.position.set(-2.7525, 5, 0.04);
rightFacade.add(shutter19);
const shutter20 = new THREE.Mesh(boxGeo9, shutterMat);
shutter20.name = 'shutter';
shutter20.position.set(-1.0475, 5, 0.04);
rightFacade.add(shutter20);
const windowCasing17 = new THREE.Mesh(boxGeo12, trimMat);
windowCasing17.name = 'windowCasing';
windowCasing17.position.set(0, 7.5747, 0.03);
rightFacade.add(windowCasing17);
const windowGlass17 = new THREE.Mesh(boxGeo13, glassMat);
windowGlass17.name = 'windowGlass';
windowGlass17.position.set(0, 7.5747, 0.06);
rightFacade.add(windowGlass17);
const meetingRail17 = new THREE.Mesh(boxGeo14, trimMat);
meetingRail17.name = 'meetingRail';
meetingRail17.position.set(0, 7.5747, 0.08);
rightFacade.add(meetingRail17);
const windowSill17 = new THREE.Mesh(boxGeo15, trimMat);
windowSill17.name = 'windowSill';
windowSill17.position.set(0, 7.0547, 0.08);
rightFacade.add(windowSill17);
const windowHead17 = new THREE.Mesh(boxGeo16, trimMat);
windowHead17.name = 'windowHead';
windowHead17.position.set(0, 8.1447, 0.05);
rightFacade.add(windowHead17);
const roofSlab = new THREE.Mesh(boxGeo17, roofMat);
roofSlab.name = 'roofSlab';
roofSlab.position.set(0, 7.7794, -1.9494);
roofSlab.rotation.set(deg(-40), 0, 0);
root.add(roofSlab);
const roofSlab2 = new THREE.Mesh(boxGeo17, roofMat);
roofSlab2.name = 'roofSlab';
roofSlab2.position.set(0, 7.7794, 1.9494);
roofSlab2.rotation.set(deg(40), 0, 0);
root.add(roofSlab2);
const shingles = new THREE.Mesh(boxGeo18, roofMat);
shingles.name = 'shingles';
shingles.position.set(0, 9.1465, -0.4602);
shingles.rotation.set(deg(-45), 0, 0);
root.add(shingles);
const shingles2 = new THREE.Mesh(boxGeo18, roofMat);
shingles2.name = 'shingles';
shingles2.position.set(0, 9.1465, 0.4602);
shingles2.rotation.set(deg(45), 0, 0);
root.add(shingles2);
const shingles3 = new THREE.Mesh(boxGeo18, roofMat);
shingles3.name = 'shingles';
shingles3.position.set(0, 8.4974, -1.2337);
shingles3.rotation.set(deg(-45), 0, 0);
root.add(shingles3);
const shingles4 = new THREE.Mesh(boxGeo18, roofMat);
shingles4.name = 'shingles';
shingles4.position.set(0, 8.4974, 1.2337);
shingles4.rotation.set(deg(45), 0, 0);
root.add(shingles4);
const shingles5 = new THREE.Mesh(boxGeo18, roofMat);
shingles5.name = 'shingles';
shingles5.position.set(0, 7.8483, -2.0073);
shingles5.rotation.set(deg(-45), 0, 0);
root.add(shingles5);
const shingles6 = new THREE.Mesh(boxGeo18, roofMat);
shingles6.name = 'shingles';
shingles6.position.set(0, 7.8483, 2.0073);
shingles6.rotation.set(deg(45), 0, 0);
root.add(shingles6);
const shingles7 = new THREE.Mesh(boxGeo18, roofMat);
shingles7.name = 'shingles';
shingles7.position.set(0, 7.1993, -2.7808);
shingles7.rotation.set(deg(-45), 0, 0);
root.add(shingles7);
const shingles8 = new THREE.Mesh(boxGeo18, roofMat);
shingles8.name = 'shingles';
shingles8.position.set(0, 7.1993, 2.7808);
shingles8.rotation.set(deg(45), 0, 0);
root.add(shingles8);
const shingles9 = new THREE.Mesh(boxGeo18, roofMat);
shingles9.name = 'shingles';
shingles9.position.set(0, 6.5502, -3.5544);
shingles9.rotation.set(deg(-45), 0, 0);
root.add(shingles9);
const shingles10 = new THREE.Mesh(boxGeo18, roofMat);
shingles10.name = 'shingles';
shingles10.position.set(0, 6.5502, 3.5544);
shingles10.rotation.set(deg(45), 0, 0);
root.add(shingles10);
const ridge = new THREE.Mesh(new THREE.BoxGeometry(10.76, 0.2, 0.2), roofMat);
ridge.name = 'ridge';
ridge.position.set(0, 9.5718, 0);
ridge.rotation.set(deg(45), 0, 0);
root.add(ridge);
const rakeBoard = new THREE.Mesh(boxGeo19, trimMat);
rakeBoard.name = 'rakeBoard';
rakeBoard.position.set(-5.31, 7.6855, -1.8965);
rakeBoard.rotation.set(deg(-40), 0, 0);
root.add(rakeBoard);
const rakeBoard2 = new THREE.Mesh(boxGeo19, trimMat);
rakeBoard2.name = 'rakeBoard';
rakeBoard2.position.set(-5.31, 7.6855, 1.8965);
rakeBoard2.rotation.set(deg(40), 0, 0);
root.add(rakeBoard2);
const rakeBoard3 = new THREE.Mesh(boxGeo19, trimMat);
rakeBoard3.name = 'rakeBoard';
rakeBoard3.position.set(5.31, 7.6855, -1.8965);
rakeBoard3.rotation.set(deg(-40), 0, 0);
root.add(rakeBoard3);
const rakeBoard4 = new THREE.Mesh(boxGeo19, trimMat);
rakeBoard4.name = 'rakeBoard';
rakeBoard4.position.set(5.31, 7.6855, 1.8965);
rakeBoard4.rotation.set(deg(40), 0, 0);
root.add(rakeBoard4);
const gutter = new THREE.Mesh(boxGeo20, trimMat);
gutter.name = 'gutter';
gutter.position.set(0, 6.0507, -3.8447);
root.add(gutter);
const gutter2 = new THREE.Mesh(boxGeo20, trimMat);
gutter2.name = 'gutter';
gutter2.position.set(0, 6.0507, 3.8447);
root.add(gutter2);
const chimneyBase = new THREE.Mesh(new THREE.BoxGeometry(1.3, 2, 1), brickMat);
chimneyBase.name = 'chimneyBase';
chimneyBase.position.set(5.5, 1, -1.2);
root.add(chimneyBase);
const chimney = new THREE.Mesh(new THREE.BoxGeometry(0.85, 8.2368, 0.8), brickMat);
chimney.name = 'chimney';
chimney.position.set(5.42, 6.1184, -1.2);
root.add(chimney);
const chimneyCap = new THREE.Mesh(new THREE.BoxGeometry(1.05, 0.15, 1), stoneMat);
chimneyCap.name = 'chimneyCap';
chimneyCap.position.set(5.42, 10.3118, -1.2);
root.add(chimneyCap);
const chimneyFlue = new THREE.Mesh(new THREE.BoxGeometry(0.5, 0.25, 0.45), brickMat);
chimneyFlue.name = 'chimneyFlue';
chimneyFlue.position.set(5.42, 10.5118, -1.2);
root.add(chimneyFlue);
const porchFoundation = new THREE.Mesh(new THREE.BoxGeometry(10.3, 0.55, 2.5), stoneMat);
porchFoundation.name = 'porchFoundation';
porchFoundation.position.set(0, 0.275, 4.75);
root.add(porchFoundation);
const porchDeck = new THREE.Mesh(new THREE.BoxGeometry(10.4, 0.1, 2.6), woodMat);
porchDeck.name = 'porchDeck';
porchDeck.position.set(0, 0.6, 4.77);
root.add(porchDeck);
const porchStep = new THREE.Mesh(new THREE.BoxGeometry(2, 0.18, 0.32), woodMat);
porchStep.name = 'porchStep';
porchStep.position.set(0, 0.09, 6.8);
root.add(porchStep);
const porchStep2 = new THREE.Mesh(new THREE.BoxGeometry(2, 0.38, 0.32), woodMat);
porchStep2.name = 'porchStep';
porchStep2.position.set(0, 0.19, 6.48);
root.add(porchStep2);
const porchStep3 = new THREE.Mesh(new THREE.BoxGeometry(2, 0.58, 0.32), woodMat);
porchStep3.name = 'porchStep';
porchStep3.position.set(0, 0.29, 6.16);
root.add(porchStep3);
const porchPost = new THREE.Mesh(boxGeo21, trimMat);
porchPost.name = 'porchPost';
porchPost.position.set(-4.9, 1.95, 5.85);
root.add(porchPost);
const postCap = new THREE.Mesh(boxGeo22, trimMat);
postCap.name = 'postCap';
postCap.position.set(-4.9, 3.16, 5.85);
root.add(postCap);
const porchPost2 = new THREE.Mesh(boxGeo21, trimMat);
porchPost2.name = 'porchPost';
porchPost2.position.set(-2.94, 1.95, 5.85);
root.add(porchPost2);
const postCap2 = new THREE.Mesh(boxGeo22, trimMat);
postCap2.name = 'postCap';
postCap2.position.set(-2.94, 3.16, 5.85);
root.add(postCap2);
const porchPost3 = new THREE.Mesh(boxGeo21, trimMat);
porchPost3.name = 'porchPost';
porchPost3.position.set(-0.98, 1.95, 5.85);
root.add(porchPost3);
const postCap3 = new THREE.Mesh(boxGeo22, trimMat);
postCap3.name = 'postCap';
postCap3.position.set(-0.98, 3.16, 5.85);
root.add(postCap3);
const porchPost4 = new THREE.Mesh(boxGeo21, trimMat);
porchPost4.name = 'porchPost';
porchPost4.position.set(0.98, 1.95, 5.85);
root.add(porchPost4);
const postCap4 = new THREE.Mesh(boxGeo22, trimMat);
postCap4.name = 'postCap';
postCap4.position.set(0.98, 3.16, 5.85);
root.add(postCap4);
const porchPost5 = new THREE.Mesh(boxGeo21, trimMat);
porchPost5.name = 'porchPost';
porchPost5.position.set(2.94, 1.95, 5.85);
root.add(porchPost5);
const postCap5 = new THREE.Mesh(boxGeo22, trimMat);
postCap5.name = 'postCap';
postCap5.position.set(2.94, 3.16, 5.85);
root.add(postCap5);
const porchPost6 = new THREE.Mesh(boxGeo21, trimMat);
porchPost6.name = 'porchPost';
porchPost6.position.set(4.9, 1.95, 5.85);
root.add(porchPost6);
const postCap6 = new THREE.Mesh(boxGeo22, trimMat);
postCap6.name = 'postCap';
postCap6.position.set(4.9, 3.16, 5.85);
root.add(postCap6);
const porchRail = new THREE.Mesh(boxGeo23, trimMat);
porchRail.name = 'porchRail';
porchRail.position.set(-3.92, 1.55, 5.85);
root.add(porchRail);
const porchRail2 = new THREE.Mesh(boxGeo24, trimMat);
porchRail2.name = 'porchRail';
porchRail2.position.set(-3.92, 0.8, 5.85);
root.add(porchRail2);
const baluster = new THREE.Mesh(boxGeo25, trimMat);
baluster.name = 'baluster';
baluster.position.set(-4.454, 1.17, 5.85);
root.add(baluster);
const baluster2 = new THREE.Mesh(boxGeo25, trimMat);
baluster2.name = 'baluster';
baluster2.position.set(-4.098, 1.17, 5.85);
root.add(baluster2);
const baluster3 = new THREE.Mesh(boxGeo25, trimMat);
baluster3.name = 'baluster';
baluster3.position.set(-3.742, 1.17, 5.85);
root.add(baluster3);
const baluster4 = new THREE.Mesh(boxGeo25, trimMat);
baluster4.name = 'baluster';
baluster4.position.set(-3.386, 1.17, 5.85);
root.add(baluster4);
const porchRail3 = new THREE.Mesh(boxGeo23, trimMat);
porchRail3.name = 'porchRail';
porchRail3.position.set(-1.96, 1.55, 5.85);
root.add(porchRail3);
const porchRail4 = new THREE.Mesh(boxGeo24, trimMat);
porchRail4.name = 'porchRail';
porchRail4.position.set(-1.96, 0.8, 5.85);
root.add(porchRail4);
const baluster5 = new THREE.Mesh(boxGeo25, trimMat);
baluster5.name = 'baluster';
baluster5.position.set(-2.494, 1.17, 5.85);
root.add(baluster5);
const baluster6 = new THREE.Mesh(boxGeo25, trimMat);
baluster6.name = 'baluster';
baluster6.position.set(-2.138, 1.17, 5.85);
root.add(baluster6);
const baluster7 = new THREE.Mesh(boxGeo25, trimMat);
baluster7.name = 'baluster';
baluster7.position.set(-1.782, 1.17, 5.85);
root.add(baluster7);
const baluster8 = new THREE.Mesh(boxGeo25, trimMat);
baluster8.name = 'baluster';
baluster8.position.set(-1.426, 1.17, 5.85);
root.add(baluster8);
const porchRail5 = new THREE.Mesh(boxGeo23, trimMat);
porchRail5.name = 'porchRail';
porchRail5.position.set(1.96, 1.55, 5.85);
root.add(porchRail5);
const porchRail6 = new THREE.Mesh(boxGeo24, trimMat);
porchRail6.name = 'porchRail';
porchRail6.position.set(1.96, 0.8, 5.85);
root.add(porchRail6);
const baluster9 = new THREE.Mesh(boxGeo25, trimMat);
baluster9.name = 'baluster';
baluster9.position.set(1.426, 1.17, 5.85);
root.add(baluster9);
const baluster10 = new THREE.Mesh(boxGeo25, trimMat);
baluster10.name = 'baluster';
baluster10.position.set(1.782, 1.17, 5.85);
root.add(baluster10);
const baluster11 = new THREE.Mesh(boxGeo25, trimMat);
baluster11.name = 'baluster';
baluster11.position.set(2.138, 1.17, 5.85);
root.add(baluster11);
const baluster12 = new THREE.Mesh(boxGeo25, trimMat);
baluster12.name = 'baluster';
baluster12.position.set(2.494, 1.17, 5.85);
root.add(baluster12);
const porchRail7 = new THREE.Mesh(boxGeo23, trimMat);
porchRail7.name = 'porchRail';
porchRail7.position.set(3.92, 1.55, 5.85);
root.add(porchRail7);
const porchRail8 = new THREE.Mesh(boxGeo24, trimMat);
porchRail8.name = 'porchRail';
porchRail8.position.set(3.92, 0.8, 5.85);
root.add(porchRail8);
const baluster13 = new THREE.Mesh(boxGeo25, trimMat);
baluster13.name = 'baluster';
baluster13.position.set(3.386, 1.17, 5.85);
root.add(baluster13);
const baluster14 = new THREE.Mesh(boxGeo25, trimMat);
baluster14.name = 'baluster';
baluster14.position.set(3.742, 1.17, 5.85);
root.add(baluster14);
const baluster15 = new THREE.Mesh(boxGeo25, trimMat);
baluster15.name = 'baluster';
baluster15.position.set(4.098, 1.17, 5.85);
root.add(baluster15);
const baluster16 = new THREE.Mesh(boxGeo25, trimMat);
baluster16.name = 'baluster';
baluster16.position.set(4.454, 1.17, 5.85);
root.add(baluster16);
const porchRail9 = new THREE.Mesh(boxGeo26, trimMat);
porchRail9.name = 'porchRail';
porchRail9.position.set(-5.1, 1.55, 4.65);
root.add(porchRail9);
const porchWallPost = new THREE.Mesh(boxGeo27, trimMat);
porchWallPost.name = 'porchWallPost';
porchWallPost.position.set(-5.1, 1.95, 3.6);
root.add(porchWallPost);
const porchRail10 = new THREE.Mesh(boxGeo26, trimMat);
porchRail10.name = 'porchRail';
porchRail10.position.set(5.1, 1.55, 4.65);
root.add(porchRail10);
const porchWallPost2 = new THREE.Mesh(boxGeo27, trimMat);
porchWallPost2.name = 'porchWallPost';
porchWallPost2.position.set(5.1, 1.95, 3.6);
root.add(porchWallPost2);
const porchRoof = new THREE.Mesh(new THREE.BoxGeometry(10.6, 0.12, 2.9463), roofMat);
porchRoof.name = 'porchRoof';
porchRoof.position.set(0, 3.65, 4.95);
porchRoof.rotation.set(deg(10.1657), 0, 0);
root.add(porchRoof);
const porchBeam = new THREE.Mesh(new THREE.BoxGeometry(10.5, 0.22, 0.1), trimMat);
porchBeam.name = 'porchBeam';
porchBeam.position.set(0, 3.28, 5.85);
root.add(porchBeam);
const rockingChair = new THREE.Group();
rockingChair.name = 'rockingChair';
rockingChair.position.set(-3.6, 0.65, 4.7);
rockingChair.rotation.set(0, deg(25), 0);
root.add(rockingChair);
const seat = new THREE.Mesh(new THREE.BoxGeometry(0.55, 0.06, 0.5), woodMat);
seat.name = 'seat';
seat.position.set(0, 0.45, 0);
rockingChair.add(seat);
const back = new THREE.Mesh(new THREE.BoxGeometry(0.55, 0.6, 0.06), woodMat);
back.name = 'back';
back.position.set(0, 0.78, -0.25);
back.rotation.set(deg(-10), 0, 0);
rockingChair.add(back);
const leg = new THREE.Mesh(boxGeo28, woodMat);
leg.name = 'leg';
leg.position.set(-0.24, 0.26, 0.18);
rockingChair.add(leg);
const leg2 = new THREE.Mesh(boxGeo28, woodMat);
leg2.name = 'leg';
leg2.position.set(-0.24, 0.26, -0.18);
rockingChair.add(leg2);
const rocker = new THREE.Mesh(boxGeo29, woodMat);
rocker.name = 'rocker';
rocker.position.set(-0.24, 0.025, 0);
rockingChair.add(rocker);
const leg3 = new THREE.Mesh(boxGeo28, woodMat);
leg3.name = 'leg';
leg3.position.set(0.24, 0.26, 0.18);
rockingChair.add(leg3);
const leg4 = new THREE.Mesh(boxGeo28, woodMat);
leg4.name = 'leg';
leg4.position.set(0.24, 0.26, -0.18);
rockingChair.add(leg4);
const rocker2 = new THREE.Mesh(boxGeo29, woodMat);
rocker2.name = 'rocker';
rocker2.position.set(0.24, 0.025, 0);
rockingChair.add(rocker2);
root.traverse((o) => {
if (o.isMesh) {
o.castShadow = true;
o.receiveShadow = true;
}
});
return root;
}
export default createFarmhouse;
Puanlar ve yorumlar
0 yorum
Henüz yorum yok. Bu modeli nasıl kullandığını ya da neyin daha iyi olabileceğini paylaş.
Benzer modeller
Aynı kategori ya da benzer etiketler









