2544 Tris7,58 × 5,55 × 7,09 m
Im Code verwenden
Im Editor remixenlog-cabin.js · 1.304 Zeilen
Eigenständiges ES-Modul — hängt nur von three ab. Ruf die Factory auf und füge die Gruppe deiner Szene hinzu.
/**
* Log Cabin — Codels 3D model library
* License: CC0-1.0 · Units: meters · Y-up · Front: +Z · Origin: center of the base (y = 0)
* Triangles: 2,544 · Size (W × H × D): 7.58 × 5.55 × 7.09 m
*
* Usage:
* import { createLogCabin } from './log-cabin.js';
*
* const model = createLogCabin();
* model.position.set(0, 0, 0);
* scene.add(model);
*/
import * as THREE from 'three';
const deg = THREE.MathUtils.degToRad;
export function createLogCabin() {
const root = new THREE.Group();
root.name = 'LogCabin';
// Materials
const logMat = new THREE.MeshStandardMaterial({ name: 'log', color: 0x8a5a34, roughness: 0.95, flatShading: true });
const grainMat = new THREE.MeshStandardMaterial({ name: 'grain', color: 0xd6aa6e, roughness: 0.9, flatShading: true });
const roofMat = new THREE.MeshStandardMaterial({ name: 'roof', color: 0x3a4932, roughness: 0.9, flatShading: true });
const stoneMat = new THREE.MeshStandardMaterial({ name: 'stone', color: 0x6f6b66, roughness: 0.95, flatShading: true });
const darkMat = new THREE.MeshStandardMaterial({ name: 'dark', color: 0x4b3323, roughness: 0.9, flatShading: true });
const glassMat = new THREE.MeshStandardMaterial({ name: 'glass', color: 0xf2cf7a, roughness: 0.4, emissive: 0xb8862e, emissiveIntensity: 0.35, flatShading: true });
// Shared geometries
const boxGeo = new THREE.BoxGeometry(0.1979, 0.1472, 4.2);
const circleGeo = new THREE.CircleGeometry(0.1416, 6);
const circleGeo2 = new THREE.CircleGeometry(0.1419, 6);
const circleGeo3 = new THREE.CircleGeometry(0.1432, 6);
const circleGeo4 = new THREE.CircleGeometry(0.1429, 6);
const circleGeo5 = new THREE.CircleGeometry(0.1473, 6);
const circleGeo6 = new THREE.CircleGeometry(0.142, 6);
const circleGeo7 = new THREE.CircleGeometry(0.1342, 6);
const circleGeo8 = new THREE.CircleGeometry(0.1405, 6);
const circleGeo9 = new THREE.CircleGeometry(0.141, 6);
const circleGeo10 = new THREE.CircleGeometry(0.1472, 6);
const cylinderGeo = new THREE.CylinderGeometry(0.14, 0.14, 6.64, 6, 1, true);
const circleGeo11 = new THREE.CircleGeometry(0.14, 6);
const circleGeo12 = new THREE.CircleGeometry(0.1442, 6);
const circleGeo13 = new THREE.CircleGeometry(0.1444, 6);
const circleGeo14 = new THREE.CircleGeometry(0.1356, 6);
const circleGeo15 = new THREE.CircleGeometry(0.1359, 6);
const circleGeo16 = new THREE.CircleGeometry(0.1376, 6);
const circleGeo17 = new THREE.CircleGeometry(0.1396, 6);
const circleGeo18 = new THREE.CircleGeometry(0.1393, 6);
const circleGeo19 = new THREE.CircleGeometry(0.1428, 6);
const circleGeo20 = new THREE.CircleGeometry(0.135, 6);
const circleGeo21 = new THREE.CircleGeometry(0.143, 6);
const circleGeo22 = new THREE.CircleGeometry(0.1427, 6);
const circleGeo23 = new THREE.CircleGeometry(0.1465, 6);
const circleGeo24 = new THREE.CircleGeometry(0.1459, 6);
const circleGeo25 = new THREE.CircleGeometry(0.1383, 6);
const circleGeo26 = new THREE.CircleGeometry(0.1434, 6);
const circleGeo27 = new THREE.CircleGeometry(0.1371, 6);
const circleGeo28 = new THREE.CircleGeometry(0.1338, 6);
const circleGeo29 = new THREE.CircleGeometry(0.1454, 6);
const circleGeo30 = new THREE.CircleGeometry(0.1495, 6);
const circleGeo31 = new THREE.CircleGeometry(0.1379, 6);
const circleGeo32 = new THREE.CircleGeometry(0.1354, 6);
const circleGeo33 = new THREE.CircleGeometry(0.1455, 6);
const circleGeo34 = new THREE.CircleGeometry(0.1388, 6);
const circleGeo35 = new THREE.CircleGeometry(0.1423, 6);
const circleGeo36 = new THREE.CircleGeometry(0.1353, 6);
const circleGeo37 = new THREE.CircleGeometry(0.1468, 6);
const circleGeo38 = new THREE.CircleGeometry(0.1394, 6);
const circleGeo39 = new THREE.CircleGeometry(0.1333, 6);
const circleGeo40 = new THREE.CircleGeometry(0.1413, 6);
const circleGeo41 = new THREE.CircleGeometry(0.1418, 6);
const circleGeo42 = new THREE.CircleGeometry(0.1375, 6);
const circleGeo43 = new THREE.CircleGeometry(0.1414, 6);
const boxGeo2 = new THREE.BoxGeometry(7.24, 0.14, 3.3736);
const boxGeo3 = new THREE.BoxGeometry(7.26, 0.06, 0.9277);
const boxGeo4 = new THREE.BoxGeometry(0.02, 1.9, 0.02);
const boxGeo5 = new THREE.BoxGeometry(0.12, 2.1, 0.1);
const boxGeo6 = new THREE.BoxGeometry(0.75, 0.75, 0.04);
const boxGeo7 = new THREE.BoxGeometry(0.99, 0.12, 0.1);
const boxGeo8 = new THREE.BoxGeometry(1.05, 0.1, 0.16);
const boxGeo9 = new THREE.BoxGeometry(0.12, 0.75, 0.1);
const boxGeo10 = new THREE.BoxGeometry(0.05, 0.75, 0.05);
const boxGeo11 = new THREE.BoxGeometry(0.75, 0.05, 0.05);
const cylinderGeo2 = new THREE.CylinderGeometry(0.09, 0.1, 2.0346, 6);
const boxGeo12 = new THREE.BoxGeometry(0.08, 0.08, 1.6186);
const boxGeo13 = new THREE.BoxGeometry(0.06, 0.06, 1.6186);
const boxGeo14 = new THREE.BoxGeometry(1.51, 0.08, 0.08);
const boxGeo15 = new THREE.BoxGeometry(1.51, 0.06, 0.06);
const boxGeo16 = new THREE.BoxGeometry(0.08, 0.9, 0.08);
// Parts
const foundation = new THREE.Mesh(new THREE.BoxGeometry(6, 0.3, 4.2), stoneMat);
foundation.name = 'foundation';
foundation.position.set(0, 0.15, 0);
root.add(foundation);
const sill = new THREE.Mesh(boxGeo, logMat);
sill.name = 'sill';
sill.position.set(-3, 0.3736, 0);
root.add(sill);
const sill2 = new THREE.Mesh(boxGeo, logMat);
sill2.name = 'sill';
sill2.position.set(3, 0.3736, 0);
root.add(sill2);
const wallLog = new THREE.Mesh(new THREE.CylinderGeometry(0.1416, 0.1416, 6.64, 6, 1, true), logMat);
wallLog.name = 'wallLog';
wallLog.position.set(0, 0.4414, -2.1);
wallLog.rotation.set(0, 0, deg(90));
root.add(wallLog);
const endGrain = new THREE.Mesh(circleGeo, grainMat);
endGrain.name = 'endGrain';
endGrain.position.set(-3.32, 0.4414, -2.1);
endGrain.rotation.set(0, deg(-90), 0);
root.add(endGrain);
const endGrain2 = new THREE.Mesh(circleGeo, grainMat);
endGrain2.name = 'endGrain';
endGrain2.position.set(3.32, 0.4414, -2.1);
endGrain2.rotation.set(0, deg(90), 0);
root.add(endGrain2);
const wallLog2 = new THREE.Mesh(new THREE.CylinderGeometry(0.1419, 0.1419, 6.64, 6, 1, true), logMat);
wallLog2.name = 'wallLog';
wallLog2.position.set(0, 0.4414, 2.1);
wallLog2.rotation.set(0, 0, deg(90));
root.add(wallLog2);
const endGrain3 = new THREE.Mesh(circleGeo2, grainMat);
endGrain3.name = 'endGrain';
endGrain3.position.set(-3.32, 0.4414, 2.1);
endGrain3.rotation.set(0, deg(-90), 0);
root.add(endGrain3);
const endGrain4 = new THREE.Mesh(circleGeo2, grainMat);
endGrain4.name = 'endGrain';
endGrain4.position.set(3.32, 0.4414, 2.1);
endGrain4.rotation.set(0, deg(90), 0);
root.add(endGrain4);
const sideLog = new THREE.Mesh(new THREE.CylinderGeometry(0.1432, 0.1432, 4.84, 6, 1, true), logMat);
sideLog.name = 'sideLog';
sideLog.position.set(-3, 0.5686, 0);
sideLog.rotation.set(deg(90), 0, 0);
root.add(sideLog);
const endGrain5 = new THREE.Mesh(circleGeo3, grainMat);
endGrain5.name = 'endGrain';
endGrain5.position.set(-3, 0.5686, -2.42);
endGrain5.rotation.set(0, deg(180), deg(30));
root.add(endGrain5);
const endGrain6 = new THREE.Mesh(circleGeo3, grainMat);
endGrain6.name = 'endGrain';
endGrain6.position.set(-3, 0.5686, 2.42);
endGrain6.rotation.set(0, 0, deg(30));
root.add(endGrain6);
const sideLog2 = new THREE.Mesh(new THREE.CylinderGeometry(0.1429, 0.1429, 4.84, 6, 1, true), logMat);
sideLog2.name = 'sideLog';
sideLog2.position.set(3, 0.5686, 0);
sideLog2.rotation.set(deg(90), 0, 0);
root.add(sideLog2);
const endGrain7 = new THREE.Mesh(circleGeo4, grainMat);
endGrain7.name = 'endGrain';
endGrain7.position.set(3, 0.5686, -2.42);
endGrain7.rotation.set(0, deg(180), deg(30));
root.add(endGrain7);
const endGrain8 = new THREE.Mesh(circleGeo4, grainMat);
endGrain8.name = 'endGrain';
endGrain8.position.set(3, 0.5686, 2.42);
endGrain8.rotation.set(0, 0, deg(30));
root.add(endGrain8);
const wallLog3 = new THREE.Mesh(new THREE.CylinderGeometry(0.1473, 0.1473, 6.64, 6, 1, true), logMat);
wallLog3.name = 'wallLog';
wallLog3.position.set(0, 0.6958, -2.1);
wallLog3.rotation.set(0, 0, deg(90));
root.add(wallLog3);
const endGrain9 = new THREE.Mesh(circleGeo5, grainMat);
endGrain9.name = 'endGrain';
endGrain9.position.set(-3.32, 0.6958, -2.1);
endGrain9.rotation.set(0, deg(-90), 0);
root.add(endGrain9);
const endGrain10 = new THREE.Mesh(circleGeo5, grainMat);
endGrain10.name = 'endGrain';
endGrain10.position.set(3.32, 0.6958, -2.1);
endGrain10.rotation.set(0, deg(90), 0);
root.add(endGrain10);
const wallLog4 = new THREE.Mesh(new THREE.CylinderGeometry(0.142, 0.142, 6.64, 6, 1, true), logMat);
wallLog4.name = 'wallLog';
wallLog4.position.set(0, 0.6958, 2.1);
wallLog4.rotation.set(0, 0, deg(90));
root.add(wallLog4);
const endGrain11 = new THREE.Mesh(circleGeo6, grainMat);
endGrain11.name = 'endGrain';
endGrain11.position.set(-3.32, 0.6958, 2.1);
endGrain11.rotation.set(0, deg(-90), 0);
root.add(endGrain11);
const endGrain12 = new THREE.Mesh(circleGeo6, grainMat);
endGrain12.name = 'endGrain';
endGrain12.position.set(3.32, 0.6958, 2.1);
endGrain12.rotation.set(0, deg(90), 0);
root.add(endGrain12);
const sideLog3 = new THREE.Mesh(new THREE.CylinderGeometry(0.1342, 0.1342, 4.84, 6, 1, true), logMat);
sideLog3.name = 'sideLog';
sideLog3.position.set(-3, 0.823, 0);
sideLog3.rotation.set(deg(90), 0, 0);
root.add(sideLog3);
const endGrain13 = new THREE.Mesh(circleGeo7, grainMat);
endGrain13.name = 'endGrain';
endGrain13.position.set(-3, 0.823, -2.42);
endGrain13.rotation.set(0, deg(180), deg(30));
root.add(endGrain13);
const endGrain14 = new THREE.Mesh(circleGeo7, grainMat);
endGrain14.name = 'endGrain';
endGrain14.position.set(-3, 0.823, 2.42);
endGrain14.rotation.set(0, 0, deg(30));
root.add(endGrain14);
const sideLog4 = new THREE.Mesh(new THREE.CylinderGeometry(0.1419, 0.1419, 4.84, 6, 1, true), logMat);
sideLog4.name = 'sideLog';
sideLog4.position.set(3, 0.823, 0);
sideLog4.rotation.set(deg(90), 0, 0);
root.add(sideLog4);
const endGrain15 = new THREE.Mesh(circleGeo2, grainMat);
endGrain15.name = 'endGrain';
endGrain15.position.set(3, 0.823, -2.42);
endGrain15.rotation.set(0, deg(180), deg(30));
root.add(endGrain15);
const endGrain16 = new THREE.Mesh(circleGeo2, grainMat);
endGrain16.name = 'endGrain';
endGrain16.position.set(3, 0.823, 2.42);
endGrain16.rotation.set(0, 0, deg(30));
root.add(endGrain16);
const wallLog5 = new THREE.Mesh(new THREE.CylinderGeometry(0.1432, 0.1432, 6.64, 6, 1, true), logMat);
wallLog5.name = 'wallLog';
wallLog5.position.set(0, 0.9503, -2.1);
wallLog5.rotation.set(0, 0, deg(90));
root.add(wallLog5);
const endGrain17 = new THREE.Mesh(circleGeo3, grainMat);
endGrain17.name = 'endGrain';
endGrain17.position.set(-3.32, 0.9503, -2.1);
endGrain17.rotation.set(0, deg(-90), 0);
root.add(endGrain17);
const endGrain18 = new THREE.Mesh(circleGeo3, grainMat);
endGrain18.name = 'endGrain';
endGrain18.position.set(3.32, 0.9503, -2.1);
endGrain18.rotation.set(0, deg(90), 0);
root.add(endGrain18);
const wallLog6 = new THREE.Mesh(new THREE.CylinderGeometry(0.1405, 0.1405, 6.64, 6, 1, true), logMat);
wallLog6.name = 'wallLog';
wallLog6.position.set(0, 0.9503, 2.1);
wallLog6.rotation.set(0, 0, deg(90));
root.add(wallLog6);
const endGrain19 = new THREE.Mesh(circleGeo8, grainMat);
endGrain19.name = 'endGrain';
endGrain19.position.set(-3.32, 0.9503, 2.1);
endGrain19.rotation.set(0, deg(-90), 0);
root.add(endGrain19);
const endGrain20 = new THREE.Mesh(circleGeo8, grainMat);
endGrain20.name = 'endGrain';
endGrain20.position.set(3.32, 0.9503, 2.1);
endGrain20.rotation.set(0, deg(90), 0);
root.add(endGrain20);
const sideLog5 = new THREE.Mesh(new THREE.CylinderGeometry(0.141, 0.141, 4.84, 6, 1, true), logMat);
sideLog5.name = 'sideLog';
sideLog5.position.set(-3, 1.0775, 0);
sideLog5.rotation.set(deg(90), 0, 0);
root.add(sideLog5);
const endGrain21 = new THREE.Mesh(circleGeo9, grainMat);
endGrain21.name = 'endGrain';
endGrain21.position.set(-3, 1.0775, -2.42);
endGrain21.rotation.set(0, deg(180), deg(30));
root.add(endGrain21);
const endGrain22 = new THREE.Mesh(circleGeo9, grainMat);
endGrain22.name = 'endGrain';
endGrain22.position.set(-3, 1.0775, 2.42);
endGrain22.rotation.set(0, 0, deg(30));
root.add(endGrain22);
const sideLog6 = new THREE.Mesh(new THREE.CylinderGeometry(0.1472, 0.1472, 4.84, 6, 1, true), logMat);
sideLog6.name = 'sideLog';
sideLog6.position.set(3, 1.0775, 0);
sideLog6.rotation.set(deg(90), 0, 0);
root.add(sideLog6);
const endGrain23 = new THREE.Mesh(circleGeo10, grainMat);
endGrain23.name = 'endGrain';
endGrain23.position.set(3, 1.0775, -2.42);
endGrain23.rotation.set(0, deg(180), deg(30));
root.add(endGrain23);
const endGrain24 = new THREE.Mesh(circleGeo10, grainMat);
endGrain24.name = 'endGrain';
endGrain24.position.set(3, 1.0775, 2.42);
endGrain24.rotation.set(0, 0, deg(30));
root.add(endGrain24);
const wallLog7 = new THREE.Mesh(cylinderGeo, logMat);
wallLog7.name = 'wallLog';
wallLog7.position.set(0, 1.2047, -2.1);
wallLog7.rotation.set(0, 0, deg(90));
root.add(wallLog7);
const endGrain25 = new THREE.Mesh(circleGeo11, grainMat);
endGrain25.name = 'endGrain';
endGrain25.position.set(-3.32, 1.2047, -2.1);
endGrain25.rotation.set(0, deg(-90), 0);
root.add(endGrain25);
const endGrain26 = new THREE.Mesh(circleGeo11, grainMat);
endGrain26.name = 'endGrain';
endGrain26.position.set(3.32, 1.2047, -2.1);
endGrain26.rotation.set(0, deg(90), 0);
root.add(endGrain26);
const wallLog8 = new THREE.Mesh(new THREE.CylinderGeometry(0.1442, 0.1442, 6.64, 6, 1, true), logMat);
wallLog8.name = 'wallLog';
wallLog8.position.set(0, 1.2047, 2.1);
wallLog8.rotation.set(0, 0, deg(90));
root.add(wallLog8);
const endGrain27 = new THREE.Mesh(circleGeo12, grainMat);
endGrain27.name = 'endGrain';
endGrain27.position.set(-3.32, 1.2047, 2.1);
endGrain27.rotation.set(0, deg(-90), 0);
root.add(endGrain27);
const endGrain28 = new THREE.Mesh(circleGeo12, grainMat);
endGrain28.name = 'endGrain';
endGrain28.position.set(3.32, 1.2047, 2.1);
endGrain28.rotation.set(0, deg(90), 0);
root.add(endGrain28);
const sideLog7 = new THREE.Mesh(new THREE.CylinderGeometry(0.1444, 0.1444, 4.84, 6, 1, true), logMat);
sideLog7.name = 'sideLog';
sideLog7.position.set(-3, 1.3319, 0);
sideLog7.rotation.set(deg(90), 0, 0);
root.add(sideLog7);
const endGrain29 = new THREE.Mesh(circleGeo13, grainMat);
endGrain29.name = 'endGrain';
endGrain29.position.set(-3, 1.3319, -2.42);
endGrain29.rotation.set(0, deg(180), deg(30));
root.add(endGrain29);
const endGrain30 = new THREE.Mesh(circleGeo13, grainMat);
endGrain30.name = 'endGrain';
endGrain30.position.set(-3, 1.3319, 2.42);
endGrain30.rotation.set(0, 0, deg(30));
root.add(endGrain30);
const sideLog8 = new THREE.Mesh(new THREE.CylinderGeometry(0.1356, 0.1356, 4.84, 6, 1, true), logMat);
sideLog8.name = 'sideLog';
sideLog8.position.set(3, 1.3319, 0);
sideLog8.rotation.set(deg(90), 0, 0);
root.add(sideLog8);
const endGrain31 = new THREE.Mesh(circleGeo14, grainMat);
endGrain31.name = 'endGrain';
endGrain31.position.set(3, 1.3319, -2.42);
endGrain31.rotation.set(0, deg(180), deg(30));
root.add(endGrain31);
const endGrain32 = new THREE.Mesh(circleGeo14, grainMat);
endGrain32.name = 'endGrain';
endGrain32.position.set(3, 1.3319, 2.42);
endGrain32.rotation.set(0, 0, deg(30));
root.add(endGrain32);
const wallLog9 = new THREE.Mesh(new THREE.CylinderGeometry(0.1359, 0.1359, 6.64, 6, 1, true), logMat);
wallLog9.name = 'wallLog';
wallLog9.position.set(0, 1.4592, -2.1);
wallLog9.rotation.set(0, 0, deg(90));
root.add(wallLog9);
const endGrain33 = new THREE.Mesh(circleGeo15, grainMat);
endGrain33.name = 'endGrain';
endGrain33.position.set(-3.32, 1.4592, -2.1);
endGrain33.rotation.set(0, deg(-90), 0);
root.add(endGrain33);
const endGrain34 = new THREE.Mesh(circleGeo15, grainMat);
endGrain34.name = 'endGrain';
endGrain34.position.set(3.32, 1.4592, -2.1);
endGrain34.rotation.set(0, deg(90), 0);
root.add(endGrain34);
const wallLog10 = new THREE.Mesh(new THREE.CylinderGeometry(0.1376, 0.1376, 6.64, 6, 1, true), logMat);
wallLog10.name = 'wallLog';
wallLog10.position.set(0, 1.4592, 2.1);
wallLog10.rotation.set(0, 0, deg(90));
root.add(wallLog10);
const endGrain35 = new THREE.Mesh(circleGeo16, grainMat);
endGrain35.name = 'endGrain';
endGrain35.position.set(-3.32, 1.4592, 2.1);
endGrain35.rotation.set(0, deg(-90), 0);
root.add(endGrain35);
const endGrain36 = new THREE.Mesh(circleGeo16, grainMat);
endGrain36.name = 'endGrain';
endGrain36.position.set(3.32, 1.4592, 2.1);
endGrain36.rotation.set(0, deg(90), 0);
root.add(endGrain36);
const sideLog9 = new THREE.Mesh(new THREE.CylinderGeometry(0.1396, 0.1396, 4.84, 6, 1, true), logMat);
sideLog9.name = 'sideLog';
sideLog9.position.set(-3, 1.5864, 0);
sideLog9.rotation.set(deg(90), 0, 0);
root.add(sideLog9);
const endGrain37 = new THREE.Mesh(circleGeo17, grainMat);
endGrain37.name = 'endGrain';
endGrain37.position.set(-3, 1.5864, -2.42);
endGrain37.rotation.set(0, deg(180), deg(30));
root.add(endGrain37);
const endGrain38 = new THREE.Mesh(circleGeo17, grainMat);
endGrain38.name = 'endGrain';
endGrain38.position.set(-3, 1.5864, 2.42);
endGrain38.rotation.set(0, 0, deg(30));
root.add(endGrain38);
const sideLog10 = new THREE.Mesh(new THREE.CylinderGeometry(0.1393, 0.1393, 4.84, 6, 1, true), logMat);
sideLog10.name = 'sideLog';
sideLog10.position.set(3, 1.5864, 0);
sideLog10.rotation.set(deg(90), 0, 0);
root.add(sideLog10);
const endGrain39 = new THREE.Mesh(circleGeo18, grainMat);
endGrain39.name = 'endGrain';
endGrain39.position.set(3, 1.5864, -2.42);
endGrain39.rotation.set(0, deg(180), deg(30));
root.add(endGrain39);
const endGrain40 = new THREE.Mesh(circleGeo18, grainMat);
endGrain40.name = 'endGrain';
endGrain40.position.set(3, 1.5864, 2.42);
endGrain40.rotation.set(0, 0, deg(30));
root.add(endGrain40);
const wallLog11 = new THREE.Mesh(new THREE.CylinderGeometry(0.1428, 0.1428, 6.64, 6, 1, true), logMat);
wallLog11.name = 'wallLog';
wallLog11.position.set(0, 1.7136, -2.1);
wallLog11.rotation.set(0, 0, deg(90));
root.add(wallLog11);
const endGrain41 = new THREE.Mesh(circleGeo19, grainMat);
endGrain41.name = 'endGrain';
endGrain41.position.set(-3.32, 1.7136, -2.1);
endGrain41.rotation.set(0, deg(-90), 0);
root.add(endGrain41);
const endGrain42 = new THREE.Mesh(circleGeo19, grainMat);
endGrain42.name = 'endGrain';
endGrain42.position.set(3.32, 1.7136, -2.1);
endGrain42.rotation.set(0, deg(90), 0);
root.add(endGrain42);
const wallLog12 = new THREE.Mesh(new THREE.CylinderGeometry(0.135, 0.135, 6.64, 6, 1, true), logMat);
wallLog12.name = 'wallLog';
wallLog12.position.set(0, 1.7136, 2.1);
wallLog12.rotation.set(0, 0, deg(90));
root.add(wallLog12);
const endGrain43 = new THREE.Mesh(circleGeo20, grainMat);
endGrain43.name = 'endGrain';
endGrain43.position.set(-3.32, 1.7136, 2.1);
endGrain43.rotation.set(0, deg(-90), 0);
root.add(endGrain43);
const endGrain44 = new THREE.Mesh(circleGeo20, grainMat);
endGrain44.name = 'endGrain';
endGrain44.position.set(3.32, 1.7136, 2.1);
endGrain44.rotation.set(0, deg(90), 0);
root.add(endGrain44);
const sideLog11 = new THREE.Mesh(new THREE.CylinderGeometry(0.143, 0.143, 4.84, 6, 1, true), logMat);
sideLog11.name = 'sideLog';
sideLog11.position.set(-3, 1.8408, 0);
sideLog11.rotation.set(deg(90), 0, 0);
root.add(sideLog11);
const endGrain45 = new THREE.Mesh(circleGeo21, grainMat);
endGrain45.name = 'endGrain';
endGrain45.position.set(-3, 1.8408, -2.42);
endGrain45.rotation.set(0, deg(180), deg(30));
root.add(endGrain45);
const endGrain46 = new THREE.Mesh(circleGeo21, grainMat);
endGrain46.name = 'endGrain';
endGrain46.position.set(-3, 1.8408, 2.42);
endGrain46.rotation.set(0, 0, deg(30));
root.add(endGrain46);
const sideLog12 = new THREE.Mesh(new THREE.CylinderGeometry(0.1427, 0.1427, 4.84, 6, 1, true), logMat);
sideLog12.name = 'sideLog';
sideLog12.position.set(3, 1.8408, 0);
sideLog12.rotation.set(deg(90), 0, 0);
root.add(sideLog12);
const endGrain47 = new THREE.Mesh(circleGeo22, grainMat);
endGrain47.name = 'endGrain';
endGrain47.position.set(3, 1.8408, -2.42);
endGrain47.rotation.set(0, deg(180), deg(30));
root.add(endGrain47);
const endGrain48 = new THREE.Mesh(circleGeo22, grainMat);
endGrain48.name = 'endGrain';
endGrain48.position.set(3, 1.8408, 2.42);
endGrain48.rotation.set(0, 0, deg(30));
root.add(endGrain48);
const wallLog13 = new THREE.Mesh(cylinderGeo, logMat);
wallLog13.name = 'wallLog';
wallLog13.position.set(0, 1.9681, -2.1);
wallLog13.rotation.set(0, 0, deg(90));
root.add(wallLog13);
const endGrain49 = new THREE.Mesh(circleGeo11, grainMat);
endGrain49.name = 'endGrain';
endGrain49.position.set(-3.32, 1.9681, -2.1);
endGrain49.rotation.set(0, deg(-90), 0);
root.add(endGrain49);
const endGrain50 = new THREE.Mesh(circleGeo11, grainMat);
endGrain50.name = 'endGrain';
endGrain50.position.set(3.32, 1.9681, -2.1);
endGrain50.rotation.set(0, deg(90), 0);
root.add(endGrain50);
const wallLog14 = new THREE.Mesh(new THREE.CylinderGeometry(0.1472, 0.1472, 6.64, 6, 1, true), logMat);
wallLog14.name = 'wallLog';
wallLog14.position.set(0, 1.9681, 2.1);
wallLog14.rotation.set(0, 0, deg(90));
root.add(wallLog14);
const endGrain51 = new THREE.Mesh(circleGeo10, grainMat);
endGrain51.name = 'endGrain';
endGrain51.position.set(-3.32, 1.9681, 2.1);
endGrain51.rotation.set(0, deg(-90), 0);
root.add(endGrain51);
const endGrain52 = new THREE.Mesh(circleGeo10, grainMat);
endGrain52.name = 'endGrain';
endGrain52.position.set(3.32, 1.9681, 2.1);
endGrain52.rotation.set(0, deg(90), 0);
root.add(endGrain52);
const sideLog13 = new THREE.Mesh(new THREE.CylinderGeometry(0.1465, 0.1465, 4.84, 6, 1, true), logMat);
sideLog13.name = 'sideLog';
sideLog13.position.set(-3, 2.0953, 0);
sideLog13.rotation.set(deg(90), 0, 0);
root.add(sideLog13);
const endGrain53 = new THREE.Mesh(circleGeo23, grainMat);
endGrain53.name = 'endGrain';
endGrain53.position.set(-3, 2.0953, -2.42);
endGrain53.rotation.set(0, deg(180), deg(30));
root.add(endGrain53);
const endGrain54 = new THREE.Mesh(circleGeo23, grainMat);
endGrain54.name = 'endGrain';
endGrain54.position.set(-3, 2.0953, 2.42);
endGrain54.rotation.set(0, 0, deg(30));
root.add(endGrain54);
const sideLog14 = new THREE.Mesh(new THREE.CylinderGeometry(0.1459, 0.1459, 4.84, 6, 1, true), logMat);
sideLog14.name = 'sideLog';
sideLog14.position.set(3, 2.0953, 0);
sideLog14.rotation.set(deg(90), 0, 0);
root.add(sideLog14);
const endGrain55 = new THREE.Mesh(circleGeo24, grainMat);
endGrain55.name = 'endGrain';
endGrain55.position.set(3, 2.0953, -2.42);
endGrain55.rotation.set(0, deg(180), deg(30));
root.add(endGrain55);
const endGrain56 = new THREE.Mesh(circleGeo24, grainMat);
endGrain56.name = 'endGrain';
endGrain56.position.set(3, 2.0953, 2.42);
endGrain56.rotation.set(0, 0, deg(30));
root.add(endGrain56);
const wallLog15 = new THREE.Mesh(new THREE.CylinderGeometry(0.1383, 0.1383, 6.64, 6, 1, true), logMat);
wallLog15.name = 'wallLog';
wallLog15.position.set(0, 2.2225, -2.1);
wallLog15.rotation.set(0, 0, deg(90));
root.add(wallLog15);
const endGrain57 = new THREE.Mesh(circleGeo25, grainMat);
endGrain57.name = 'endGrain';
endGrain57.position.set(-3.32, 2.2225, -2.1);
endGrain57.rotation.set(0, deg(-90), 0);
root.add(endGrain57);
const endGrain58 = new THREE.Mesh(circleGeo25, grainMat);
endGrain58.name = 'endGrain';
endGrain58.position.set(3.32, 2.2225, -2.1);
endGrain58.rotation.set(0, deg(90), 0);
root.add(endGrain58);
const wallLog16 = new THREE.Mesh(new THREE.CylinderGeometry(0.1434, 0.1434, 6.64, 6, 1, true), logMat);
wallLog16.name = 'wallLog';
wallLog16.position.set(0, 2.2225, 2.1);
wallLog16.rotation.set(0, 0, deg(90));
root.add(wallLog16);
const endGrain59 = new THREE.Mesh(circleGeo26, grainMat);
endGrain59.name = 'endGrain';
endGrain59.position.set(-3.32, 2.2225, 2.1);
endGrain59.rotation.set(0, deg(-90), 0);
root.add(endGrain59);
const endGrain60 = new THREE.Mesh(circleGeo26, grainMat);
endGrain60.name = 'endGrain';
endGrain60.position.set(3.32, 2.2225, 2.1);
endGrain60.rotation.set(0, deg(90), 0);
root.add(endGrain60);
const sideLog15 = new THREE.Mesh(new THREE.CylinderGeometry(0.1371, 0.1371, 4.84, 6, 1, true), logMat);
sideLog15.name = 'sideLog';
sideLog15.position.set(-3, 2.3497, 0);
sideLog15.rotation.set(deg(90), 0, 0);
root.add(sideLog15);
const endGrain61 = new THREE.Mesh(circleGeo27, grainMat);
endGrain61.name = 'endGrain';
endGrain61.position.set(-3, 2.3497, -2.42);
endGrain61.rotation.set(0, deg(180), deg(30));
root.add(endGrain61);
const endGrain62 = new THREE.Mesh(circleGeo27, grainMat);
endGrain62.name = 'endGrain';
endGrain62.position.set(-3, 2.3497, 2.42);
endGrain62.rotation.set(0, 0, deg(30));
root.add(endGrain62);
const sideLog16 = new THREE.Mesh(new THREE.CylinderGeometry(0.1338, 0.1338, 4.84, 6, 1, true), logMat);
sideLog16.name = 'sideLog';
sideLog16.position.set(3, 2.3497, 0);
sideLog16.rotation.set(deg(90), 0, 0);
root.add(sideLog16);
const endGrain63 = new THREE.Mesh(circleGeo28, grainMat);
endGrain63.name = 'endGrain';
endGrain63.position.set(3, 2.3497, -2.42);
endGrain63.rotation.set(0, deg(180), deg(30));
root.add(endGrain63);
const endGrain64 = new THREE.Mesh(circleGeo28, grainMat);
endGrain64.name = 'endGrain';
endGrain64.position.set(3, 2.3497, 2.42);
endGrain64.rotation.set(0, 0, deg(30));
root.add(endGrain64);
const wallLog17 = new THREE.Mesh(new THREE.CylinderGeometry(0.1454, 0.1454, 6.64, 6, 1, true), logMat);
wallLog17.name = 'wallLog';
wallLog17.position.set(0, 2.477, -2.1);
wallLog17.rotation.set(0, 0, deg(90));
root.add(wallLog17);
const endGrain65 = new THREE.Mesh(circleGeo29, grainMat);
endGrain65.name = 'endGrain';
endGrain65.position.set(-3.32, 2.477, -2.1);
endGrain65.rotation.set(0, deg(-90), 0);
root.add(endGrain65);
const endGrain66 = new THREE.Mesh(circleGeo29, grainMat);
endGrain66.name = 'endGrain';
endGrain66.position.set(3.32, 2.477, -2.1);
endGrain66.rotation.set(0, deg(90), 0);
root.add(endGrain66);
const wallLog18 = new THREE.Mesh(new THREE.CylinderGeometry(0.1495, 0.1495, 6.64, 6, 1, true), logMat);
wallLog18.name = 'wallLog';
wallLog18.position.set(0, 2.477, 2.1);
wallLog18.rotation.set(0, 0, deg(90));
root.add(wallLog18);
const endGrain67 = new THREE.Mesh(circleGeo30, grainMat);
endGrain67.name = 'endGrain';
endGrain67.position.set(-3.32, 2.477, 2.1);
endGrain67.rotation.set(0, deg(-90), 0);
root.add(endGrain67);
const endGrain68 = new THREE.Mesh(circleGeo30, grainMat);
endGrain68.name = 'endGrain';
endGrain68.position.set(3.32, 2.477, 2.1);
endGrain68.rotation.set(0, deg(90), 0);
root.add(endGrain68);
const sideLog17 = new THREE.Mesh(new THREE.CylinderGeometry(0.1379, 0.1379, 4.7307, 6, 1, true), logMat);
sideLog17.name = 'sideLog';
sideLog17.position.set(-3, 2.6042, 0);
sideLog17.rotation.set(deg(90), 0, 0);
root.add(sideLog17);
const endGrain69 = new THREE.Mesh(circleGeo31, grainMat);
endGrain69.name = 'endGrain';
endGrain69.position.set(-3, 2.6042, -2.3653);
endGrain69.rotation.set(0, deg(180), deg(30));
root.add(endGrain69);
const endGrain70 = new THREE.Mesh(circleGeo31, grainMat);
endGrain70.name = 'endGrain';
endGrain70.position.set(-3, 2.6042, 2.3653);
endGrain70.rotation.set(0, 0, deg(30));
root.add(endGrain70);
const sideLog18 = new THREE.Mesh(new THREE.CylinderGeometry(0.1354, 0.1354, 4.7307, 6, 1, true), logMat);
sideLog18.name = 'sideLog';
sideLog18.position.set(3, 2.6042, 0);
sideLog18.rotation.set(deg(90), 0, 0);
root.add(sideLog18);
const endGrain71 = new THREE.Mesh(circleGeo32, grainMat);
endGrain71.name = 'endGrain';
endGrain71.position.set(3, 2.6042, -2.3653);
endGrain71.rotation.set(0, deg(180), deg(30));
root.add(endGrain71);
const endGrain72 = new THREE.Mesh(circleGeo32, grainMat);
endGrain72.name = 'endGrain';
endGrain72.position.set(3, 2.6042, 2.3653);
endGrain72.rotation.set(0, 0, deg(30));
root.add(endGrain72);
const wallLog19 = new THREE.Mesh(new THREE.CylinderGeometry(0.1455, 0.1455, 6.64, 6, 1, true), logMat);
wallLog19.name = 'wallLog';
wallLog19.position.set(0, 2.7314, -2.1);
wallLog19.rotation.set(0, 0, deg(90));
root.add(wallLog19);
const endGrain73 = new THREE.Mesh(circleGeo33, grainMat);
endGrain73.name = 'endGrain';
endGrain73.position.set(-3.32, 2.7314, -2.1);
endGrain73.rotation.set(0, deg(-90), 0);
root.add(endGrain73);
const endGrain74 = new THREE.Mesh(circleGeo33, grainMat);
endGrain74.name = 'endGrain';
endGrain74.position.set(3.32, 2.7314, -2.1);
endGrain74.rotation.set(0, deg(90), 0);
root.add(endGrain74);
const wallLog20 = new THREE.Mesh(new THREE.CylinderGeometry(0.1388, 0.1388, 6.64, 6, 1, true), logMat);
wallLog20.name = 'wallLog';
wallLog20.position.set(0, 2.7314, 2.1);
wallLog20.rotation.set(0, 0, deg(90));
root.add(wallLog20);
const endGrain75 = new THREE.Mesh(circleGeo34, grainMat);
endGrain75.name = 'endGrain';
endGrain75.position.set(-3.32, 2.7314, 2.1);
endGrain75.rotation.set(0, deg(-90), 0);
root.add(endGrain75);
const endGrain76 = new THREE.Mesh(circleGeo34, grainMat);
endGrain76.name = 'endGrain';
endGrain76.position.set(3.32, 2.7314, 2.1);
endGrain76.rotation.set(0, deg(90), 0);
root.add(endGrain76);
const sideLog19 = new THREE.Mesh(new THREE.CylinderGeometry(0.1423, 0.1423, 4.16, 6, 1, true), logMat);
sideLog19.name = 'sideLog';
sideLog19.position.set(-3, 2.8586, 0);
sideLog19.rotation.set(deg(90), 0, 0);
root.add(sideLog19);
const endGrain77 = new THREE.Mesh(circleGeo35, grainMat);
endGrain77.name = 'endGrain';
endGrain77.position.set(-3, 2.8586, -2.08);
endGrain77.rotation.set(0, deg(180), deg(30));
root.add(endGrain77);
const endGrain78 = new THREE.Mesh(circleGeo35, grainMat);
endGrain78.name = 'endGrain';
endGrain78.position.set(-3, 2.8586, 2.08);
endGrain78.rotation.set(0, 0, deg(30));
root.add(endGrain78);
const sideLog20 = new THREE.Mesh(new THREE.CylinderGeometry(0.1427, 0.1427, 4.16, 6, 1, true), logMat);
sideLog20.name = 'sideLog';
sideLog20.position.set(3, 2.8586, 0);
sideLog20.rotation.set(deg(90), 0, 0);
root.add(sideLog20);
const endGrain79 = new THREE.Mesh(circleGeo22, grainMat);
endGrain79.name = 'endGrain';
endGrain79.position.set(3, 2.8586, -2.08);
endGrain79.rotation.set(0, deg(180), deg(30));
root.add(endGrain79);
const endGrain80 = new THREE.Mesh(circleGeo22, grainMat);
endGrain80.name = 'endGrain';
endGrain80.position.set(3, 2.8586, 2.08);
endGrain80.rotation.set(0, 0, deg(30));
root.add(endGrain80);
const gableLog = new THREE.Mesh(new THREE.CylinderGeometry(0.1472, 0.1472, 3.5893, 6, 1, true), logMat);
gableLog.name = 'gableLog';
gableLog.position.set(-3, 3.1131, 0);
gableLog.rotation.set(deg(90), 0, 0);
root.add(gableLog);
const endGrain81 = new THREE.Mesh(circleGeo10, grainMat);
endGrain81.name = 'endGrain';
endGrain81.position.set(-3, 3.1131, -1.7947);
endGrain81.rotation.set(0, deg(180), deg(30));
root.add(endGrain81);
const endGrain82 = new THREE.Mesh(circleGeo10, grainMat);
endGrain82.name = 'endGrain';
endGrain82.position.set(-3, 3.1131, 1.7947);
endGrain82.rotation.set(0, 0, deg(30));
root.add(endGrain82);
const gableLog2 = new THREE.Mesh(new THREE.CylinderGeometry(0.1353, 0.1353, 3.5893, 6, 1, true), logMat);
gableLog2.name = 'gableLog';
gableLog2.position.set(3, 3.1131, 0);
gableLog2.rotation.set(deg(90), 0, 0);
root.add(gableLog2);
const endGrain83 = new THREE.Mesh(circleGeo36, grainMat);
endGrain83.name = 'endGrain';
endGrain83.position.set(3, 3.1131, -1.7947);
endGrain83.rotation.set(0, deg(180), deg(30));
root.add(endGrain83);
const endGrain84 = new THREE.Mesh(circleGeo36, grainMat);
endGrain84.name = 'endGrain';
endGrain84.position.set(3, 3.1131, 1.7947);
endGrain84.rotation.set(0, 0, deg(30));
root.add(endGrain84);
const gableLog3 = new THREE.Mesh(new THREE.CylinderGeometry(0.1473, 0.1473, 2.9786, 6, 1, true), logMat);
gableLog3.name = 'gableLog';
gableLog3.position.set(-3, 3.3675, 0);
gableLog3.rotation.set(deg(90), 0, 0);
root.add(gableLog3);
const endGrain85 = new THREE.Mesh(circleGeo5, grainMat);
endGrain85.name = 'endGrain';
endGrain85.position.set(-3, 3.3675, -1.4893);
endGrain85.rotation.set(0, deg(180), deg(30));
root.add(endGrain85);
const endGrain86 = new THREE.Mesh(circleGeo5, grainMat);
endGrain86.name = 'endGrain';
endGrain86.position.set(-3, 3.3675, 1.4893);
endGrain86.rotation.set(0, 0, deg(30));
root.add(endGrain86);
const gableLog4 = new THREE.Mesh(new THREE.CylinderGeometry(0.1468, 0.1468, 2.9786, 6, 1, true), logMat);
gableLog4.name = 'gableLog';
gableLog4.position.set(3, 3.3675, 0);
gableLog4.rotation.set(deg(90), 0, 0);
root.add(gableLog4);
const endGrain87 = new THREE.Mesh(circleGeo37, grainMat);
endGrain87.name = 'endGrain';
endGrain87.position.set(3, 3.3675, -1.4893);
endGrain87.rotation.set(0, deg(180), deg(30));
root.add(endGrain87);
const endGrain88 = new THREE.Mesh(circleGeo37, grainMat);
endGrain88.name = 'endGrain';
endGrain88.position.set(3, 3.3675, 1.4893);
endGrain88.rotation.set(0, 0, deg(30));
root.add(endGrain88);
const gableLog5 = new THREE.Mesh(new THREE.CylinderGeometry(0.1394, 0.1394, 2.368, 6, 1, true), logMat);
gableLog5.name = 'gableLog';
gableLog5.position.set(-3, 3.622, 0);
gableLog5.rotation.set(deg(90), 0, 0);
root.add(gableLog5);
const endGrain89 = new THREE.Mesh(circleGeo38, grainMat);
endGrain89.name = 'endGrain';
endGrain89.position.set(-3, 3.622, -1.184);
endGrain89.rotation.set(0, deg(180), deg(30));
root.add(endGrain89);
const endGrain90 = new THREE.Mesh(circleGeo38, grainMat);
endGrain90.name = 'endGrain';
endGrain90.position.set(-3, 3.622, 1.184);
endGrain90.rotation.set(0, 0, deg(30));
root.add(endGrain90);
const gableLog6 = new THREE.Mesh(new THREE.CylinderGeometry(0.1333, 0.1333, 2.368, 6, 1, true), logMat);
gableLog6.name = 'gableLog';
gableLog6.position.set(3, 3.622, 0);
gableLog6.rotation.set(deg(90), 0, 0);
root.add(gableLog6);
const endGrain91 = new THREE.Mesh(circleGeo39, grainMat);
endGrain91.name = 'endGrain';
endGrain91.position.set(3, 3.622, -1.184);
endGrain91.rotation.set(0, deg(180), deg(30));
root.add(endGrain91);
const endGrain92 = new THREE.Mesh(circleGeo39, grainMat);
endGrain92.name = 'endGrain';
endGrain92.position.set(3, 3.622, 1.184);
endGrain92.rotation.set(0, 0, deg(30));
root.add(endGrain92);
const gableLog7 = new THREE.Mesh(new THREE.CylinderGeometry(0.1342, 0.1342, 1.7573, 6, 1, true), logMat);
gableLog7.name = 'gableLog';
gableLog7.position.set(-3, 3.8764, 0);
gableLog7.rotation.set(deg(90), 0, 0);
root.add(gableLog7);
const endGrain93 = new THREE.Mesh(circleGeo7, grainMat);
endGrain93.name = 'endGrain';
endGrain93.position.set(-3, 3.8764, -0.8786);
endGrain93.rotation.set(0, deg(180), deg(30));
root.add(endGrain93);
const endGrain94 = new THREE.Mesh(circleGeo7, grainMat);
endGrain94.name = 'endGrain';
endGrain94.position.set(-3, 3.8764, 0.8786);
endGrain94.rotation.set(0, 0, deg(30));
root.add(endGrain94);
const gableLog8 = new THREE.Mesh(new THREE.CylinderGeometry(0.1472, 0.1472, 1.7573, 6, 1, true), logMat);
gableLog8.name = 'gableLog';
gableLog8.position.set(3, 3.8764, 0);
gableLog8.rotation.set(deg(90), 0, 0);
root.add(gableLog8);
const endGrain95 = new THREE.Mesh(circleGeo10, grainMat);
endGrain95.name = 'endGrain';
endGrain95.position.set(3, 3.8764, -0.8786);
endGrain95.rotation.set(0, deg(180), deg(30));
root.add(endGrain95);
const endGrain96 = new THREE.Mesh(circleGeo10, grainMat);
endGrain96.name = 'endGrain';
endGrain96.position.set(3, 3.8764, 0.8786);
endGrain96.rotation.set(0, 0, deg(30));
root.add(endGrain96);
const gableLog9 = new THREE.Mesh(new THREE.CylinderGeometry(0.1413, 0.1413, 1.1466, 6, 1, true), logMat);
gableLog9.name = 'gableLog';
gableLog9.position.set(-3, 4.1309, 0);
gableLog9.rotation.set(deg(90), 0, 0);
root.add(gableLog9);
const endGrain97 = new THREE.Mesh(circleGeo40, grainMat);
endGrain97.name = 'endGrain';
endGrain97.position.set(-3, 4.1309, -0.5733);
endGrain97.rotation.set(0, deg(180), deg(30));
root.add(endGrain97);
const endGrain98 = new THREE.Mesh(circleGeo40, grainMat);
endGrain98.name = 'endGrain';
endGrain98.position.set(-3, 4.1309, 0.5733);
endGrain98.rotation.set(0, 0, deg(30));
root.add(endGrain98);
const gableLog10 = new THREE.Mesh(new THREE.CylinderGeometry(0.1418, 0.1418, 1.1466, 6, 1, true), logMat);
gableLog10.name = 'gableLog';
gableLog10.position.set(3, 4.1309, 0);
gableLog10.rotation.set(deg(90), 0, 0);
root.add(gableLog10);
const endGrain99 = new THREE.Mesh(circleGeo41, grainMat);
endGrain99.name = 'endGrain';
endGrain99.position.set(3, 4.1309, -0.5733);
endGrain99.rotation.set(0, deg(180), deg(30));
root.add(endGrain99);
const endGrain100 = new THREE.Mesh(circleGeo41, grainMat);
endGrain100.name = 'endGrain';
endGrain100.position.set(3, 4.1309, 0.5733);
endGrain100.rotation.set(0, 0, deg(30));
root.add(endGrain100);
const gableLog11 = new THREE.Mesh(new THREE.CylinderGeometry(0.1375, 0.1375, 0.5359, 6, 1, true), logMat);
gableLog11.name = 'gableLog';
gableLog11.position.set(-3, 4.3853, 0);
gableLog11.rotation.set(deg(90), 0, 0);
root.add(gableLog11);
const endGrain101 = new THREE.Mesh(circleGeo42, grainMat);
endGrain101.name = 'endGrain';
endGrain101.position.set(-3, 4.3853, -0.268);
endGrain101.rotation.set(0, deg(180), deg(30));
root.add(endGrain101);
const endGrain102 = new THREE.Mesh(circleGeo42, grainMat);
endGrain102.name = 'endGrain';
endGrain102.position.set(-3, 4.3853, 0.268);
endGrain102.rotation.set(0, 0, deg(30));
root.add(endGrain102);
const gableLog12 = new THREE.Mesh(new THREE.CylinderGeometry(0.1414, 0.1414, 0.5359, 6, 1, true), logMat);
gableLog12.name = 'gableLog';
gableLog12.position.set(3, 4.3853, 0);
gableLog12.rotation.set(deg(90), 0, 0);
root.add(gableLog12);
const endGrain103 = new THREE.Mesh(circleGeo43, grainMat);
endGrain103.name = 'endGrain';
endGrain103.position.set(3, 4.3853, -0.268);
endGrain103.rotation.set(0, deg(180), deg(30));
root.add(endGrain103);
const endGrain104 = new THREE.Mesh(circleGeo43, grainMat);
endGrain104.name = 'endGrain';
endGrain104.position.set(3, 4.3853, 0.268);
endGrain104.rotation.set(0, 0, deg(30));
root.add(endGrain104);
const roofFront = new THREE.Mesh(boxGeo2, roofMat);
roofFront.name = 'roofFront';
roofFront.position.set(0, 3.7495, 1.3099);
roofFront.rotation.set(deg(39.8056), 0, 0);
root.add(roofFront);
const roofBack = new THREE.Mesh(boxGeo2, roofMat);
roofBack.name = 'roofBack';
roofBack.position.set(0, 3.7495, -1.3099);
roofBack.rotation.set(deg(-39.8056), 0, 0);
root.add(roofBack);
const shingles = new THREE.Mesh(boxGeo3, roofMat);
shingles.name = 'shingles';
shingles.position.set(0, 4.6362, -0.4021);
shingles.rotation.set(deg(-45.8056), 0, 0);
root.add(shingles);
const shingles2 = new THREE.Mesh(boxGeo3, roofMat);
shingles2.name = 'shingles';
shingles2.position.set(0, 4.6362, 0.4021);
shingles2.rotation.set(deg(45.8056), 0, 0);
root.add(shingles2);
const shingles3 = new THREE.Mesh(boxGeo3, roofMat);
shingles3.name = 'shingles';
shingles3.position.set(0, 4.0963, -1.05);
shingles3.rotation.set(deg(-45.8056), 0, 0);
root.add(shingles3);
const shingles4 = new THREE.Mesh(boxGeo3, roofMat);
shingles4.name = 'shingles';
shingles4.position.set(0, 4.0963, 1.05);
shingles4.rotation.set(deg(45.8056), 0, 0);
root.add(shingles4);
const shingles5 = new THREE.Mesh(boxGeo3, roofMat);
shingles5.name = 'shingles';
shingles5.position.set(0, 3.5564, -1.6979);
shingles5.rotation.set(deg(-45.8056), 0, 0);
root.add(shingles5);
const shingles6 = new THREE.Mesh(boxGeo3, roofMat);
shingles6.name = 'shingles';
shingles6.position.set(0, 3.5564, 1.6979);
shingles6.rotation.set(deg(45.8056), 0, 0);
root.add(shingles6);
const shingles7 = new THREE.Mesh(boxGeo3, roofMat);
shingles7.name = 'shingles';
shingles7.position.set(0, 3.0165, -2.3458);
shingles7.rotation.set(deg(-45.8056), 0, 0);
root.add(shingles7);
const shingles8 = new THREE.Mesh(boxGeo3, roofMat);
shingles8.name = 'shingles';
shingles8.position.set(0, 3.0165, 2.3458);
shingles8.rotation.set(deg(45.8056), 0, 0);
root.add(shingles8);
const ridgeLog = new THREE.Mesh(new THREE.CylinderGeometry(0.13, 0.13, 7.34, 6), logMat);
ridgeLog.name = 'ridgeLog';
ridgeLog.position.set(0, 5.0103, 0);
ridgeLog.rotation.set(0, 0, deg(90));
root.add(ridgeLog);
const door = new THREE.Group();
door.name = 'door';
door.position.set(0, 0.3, 2.2214);
root.add(door);
const doorPanel = new THREE.Mesh(new THREE.BoxGeometry(0.95, 2, 0.06), darkMat);
doorPanel.name = 'doorPanel';
doorPanel.position.set(0, 1, 0.03);
door.add(doorPanel);
const box173 = new THREE.Mesh(boxGeo4, logMat);
box173.position.set(-0.3, 1, 0.07);
door.add(box173);
const box174 = new THREE.Mesh(boxGeo4, logMat);
box174.position.set(0, 1, 0.07);
door.add(box174);
const box175 = new THREE.Mesh(boxGeo4, logMat);
box175.position.set(0.3, 1, 0.07);
door.add(box175);
const box176 = new THREE.Mesh(boxGeo5, logMat);
box176.position.set(-0.535, 1.05, 0.05);
door.add(box176);
const box177 = new THREE.Mesh(boxGeo5, logMat);
box177.position.set(0.535, 1.05, 0.05);
door.add(box177);
const box178 = new THREE.Mesh(new THREE.BoxGeometry(1.29, 0.14, 0.12), logMat);
box178.position.set(0, 2.1, 0.06);
door.add(box178);
const knob = new THREE.Mesh(new THREE.SphereGeometry(0.04, 6, 4), stoneMat);
knob.name = 'knob';
knob.position.set(0.3325, 0.96, 0.09);
door.add(knob);
const frontWindow = new THREE.Group();
frontWindow.name = 'frontWindow';
frontWindow.position.set(-1.62, 1.75, 2.2214);
root.add(frontWindow);
const glass = new THREE.Mesh(boxGeo6, glassMat);
glass.name = 'glass';
glass.position.set(0, 0, 0.02);
frontWindow.add(glass);
const box182 = new THREE.Mesh(boxGeo7, darkMat);
box182.position.set(0, 0.435, 0.05);
frontWindow.add(box182);
const sill3 = new THREE.Mesh(boxGeo8, darkMat);
sill3.name = 'sill';
sill3.position.set(0, -0.425, 0.08);
frontWindow.add(sill3);
const box184 = new THREE.Mesh(boxGeo9, darkMat);
box184.position.set(-0.435, 0, 0.05);
frontWindow.add(box184);
const box185 = new THREE.Mesh(boxGeo9, darkMat);
box185.position.set(0.435, 0, 0.05);
frontWindow.add(box185);
const box186 = new THREE.Mesh(boxGeo10, darkMat);
box186.position.set(0, 0, 0.045);
frontWindow.add(box186);
const box187 = new THREE.Mesh(boxGeo11, darkMat);
box187.position.set(0, 0, 0.045);
frontWindow.add(box187);
const backWindow = new THREE.Group();
backWindow.name = 'backWindow';
backWindow.position.set(-1.32, 1.75, -2.2214);
backWindow.rotation.set(0, deg(180), 0);
root.add(backWindow);
const glass2 = new THREE.Mesh(boxGeo6, glassMat);
glass2.name = 'glass';
glass2.position.set(0, 0, 0.02);
backWindow.add(glass2);
const box190 = new THREE.Mesh(boxGeo7, darkMat);
box190.position.set(0, 0.435, 0.05);
backWindow.add(box190);
const sill4 = new THREE.Mesh(boxGeo8, darkMat);
sill4.name = 'sill';
sill4.position.set(0, -0.425, 0.08);
backWindow.add(sill4);
const box192 = new THREE.Mesh(boxGeo9, darkMat);
box192.position.set(-0.435, 0, 0.05);
backWindow.add(box192);
const box193 = new THREE.Mesh(boxGeo9, darkMat);
box193.position.set(0.435, 0, 0.05);
backWindow.add(box193);
const box194 = new THREE.Mesh(boxGeo10, darkMat);
box194.position.set(0, 0, 0.045);
backWindow.add(box194);
const box195 = new THREE.Mesh(boxGeo11, darkMat);
box195.position.set(0, 0, 0.045);
backWindow.add(box195);
const frontWindow2 = new THREE.Group();
frontWindow2.name = 'frontWindow';
frontWindow2.position.set(1.62, 1.75, 2.2214);
root.add(frontWindow2);
const glass3 = new THREE.Mesh(boxGeo6, glassMat);
glass3.name = 'glass';
glass3.position.set(0, 0, 0.02);
frontWindow2.add(glass3);
const box198 = new THREE.Mesh(boxGeo7, darkMat);
box198.position.set(0, 0.435, 0.05);
frontWindow2.add(box198);
const sill5 = new THREE.Mesh(boxGeo8, darkMat);
sill5.name = 'sill';
sill5.position.set(0, -0.425, 0.08);
frontWindow2.add(sill5);
const box200 = new THREE.Mesh(boxGeo9, darkMat);
box200.position.set(-0.435, 0, 0.05);
frontWindow2.add(box200);
const box201 = new THREE.Mesh(boxGeo9, darkMat);
box201.position.set(0.435, 0, 0.05);
frontWindow2.add(box201);
const box202 = new THREE.Mesh(boxGeo10, darkMat);
box202.position.set(0, 0, 0.045);
frontWindow2.add(box202);
const box203 = new THREE.Mesh(boxGeo11, darkMat);
box203.position.set(0, 0, 0.045);
frontWindow2.add(box203);
const backWindow2 = new THREE.Group();
backWindow2.name = 'backWindow';
backWindow2.position.set(1.32, 1.75, -2.2214);
backWindow2.rotation.set(0, deg(180), 0);
root.add(backWindow2);
const glass4 = new THREE.Mesh(boxGeo6, glassMat);
glass4.name = 'glass';
glass4.position.set(0, 0, 0.02);
backWindow2.add(glass4);
const box206 = new THREE.Mesh(boxGeo7, darkMat);
box206.position.set(0, 0.435, 0.05);
backWindow2.add(box206);
const sill6 = new THREE.Mesh(boxGeo8, darkMat);
sill6.name = 'sill';
sill6.position.set(0, -0.425, 0.08);
backWindow2.add(sill6);
const box208 = new THREE.Mesh(boxGeo9, darkMat);
box208.position.set(-0.435, 0, 0.05);
backWindow2.add(box208);
const box209 = new THREE.Mesh(boxGeo9, darkMat);
box209.position.set(0.435, 0, 0.05);
backWindow2.add(box209);
const box210 = new THREE.Mesh(boxGeo10, darkMat);
box210.position.set(0, 0, 0.045);
backWindow2.add(box210);
const box211 = new THREE.Mesh(boxGeo11, darkMat);
box211.position.set(0, 0, 0.045);
backWindow2.add(box211);
const sideWindow = new THREE.Group();
sideWindow.name = 'sideWindow';
sideWindow.position.set(-3.1214, 1.75, 0);
sideWindow.rotation.set(0, deg(-90), 0);
root.add(sideWindow);
const glass5 = new THREE.Mesh(boxGeo6, glassMat);
glass5.name = 'glass';
glass5.position.set(0, 0, 0.02);
sideWindow.add(glass5);
const box214 = new THREE.Mesh(boxGeo7, darkMat);
box214.position.set(0, 0.435, 0.05);
sideWindow.add(box214);
const sill7 = new THREE.Mesh(boxGeo8, darkMat);
sill7.name = 'sill';
sill7.position.set(0, -0.425, 0.08);
sideWindow.add(sill7);
const box216 = new THREE.Mesh(boxGeo9, darkMat);
box216.position.set(-0.435, 0, 0.05);
sideWindow.add(box216);
const box217 = new THREE.Mesh(boxGeo9, darkMat);
box217.position.set(0.435, 0, 0.05);
sideWindow.add(box217);
const box218 = new THREE.Mesh(boxGeo10, darkMat);
box218.position.set(0, 0, 0.045);
sideWindow.add(box218);
const box219 = new THREE.Mesh(boxGeo11, darkMat);
box219.position.set(0, 0, 0.045);
sideWindow.add(box219);
const sideWindow2 = new THREE.Group();
sideWindow2.name = 'sideWindow';
sideWindow2.position.set(3.1214, 1.75, -0.924);
sideWindow2.rotation.set(0, deg(90), 0);
root.add(sideWindow2);
const glass6 = new THREE.Mesh(boxGeo6, glassMat);
glass6.name = 'glass';
glass6.position.set(0, 0, 0.02);
sideWindow2.add(glass6);
const box222 = new THREE.Mesh(boxGeo7, darkMat);
box222.position.set(0, 0.435, 0.05);
sideWindow2.add(box222);
const sill8 = new THREE.Mesh(boxGeo8, darkMat);
sill8.name = 'sill';
sill8.position.set(0, -0.425, 0.08);
sideWindow2.add(sill8);
const box224 = new THREE.Mesh(boxGeo9, darkMat);
box224.position.set(-0.435, 0, 0.05);
sideWindow2.add(box224);
const box225 = new THREE.Mesh(boxGeo9, darkMat);
box225.position.set(0.435, 0, 0.05);
sideWindow2.add(box225);
const box226 = new THREE.Mesh(boxGeo10, darkMat);
box226.position.set(0, 0, 0.045);
sideWindow2.add(box226);
const box227 = new THREE.Mesh(boxGeo11, darkMat);
box227.position.set(0, 0, 0.045);
sideWindow2.add(box227);
const chimneyBase = new THREE.Mesh(new THREE.BoxGeometry(0.6871, 0.2757, 0.9687), stoneMat);
chimneyBase.name = 'chimneyBase';
chimneyBase.position.set(3.5271, 0.1379, 0.6538);
root.add(chimneyBase);
const chimneyBase2 = new THREE.Mesh(new THREE.BoxGeometry(0.7308, 0.2757, 0.9241), stoneMat);
chimneyBase2.name = 'chimneyBase';
chimneyBase2.position.set(3.5407, 0.4236, 0.6691);
root.add(chimneyBase2);
const chimneyBase3 = new THREE.Mesh(new THREE.BoxGeometry(0.7082, 0.2757, 0.9044), stoneMat);
chimneyBase3.name = 'chimneyBase';
chimneyBase3.position.set(3.5033, 0.7093, 0.6813);
root.add(chimneyBase3);
const chimneyBase4 = new THREE.Mesh(new THREE.BoxGeometry(0.7408, 0.2757, 0.8793), stoneMat);
chimneyBase4.name = 'chimneyBase';
chimneyBase4.position.set(3.5134, 0.995, 0.6742);
root.add(chimneyBase4);
const chimneyBase5 = new THREE.Mesh(new THREE.BoxGeometry(0.7474, 0.2757, 0.8521), stoneMat);
chimneyBase5.name = 'chimneyBase';
chimneyBase5.position.set(3.5078, 1.2807, 0.6567);
root.add(chimneyBase5);
const chimneyBase6 = new THREE.Mesh(new THREE.BoxGeometry(0.7299, 0.2757, 0.8533), stoneMat);
chimneyBase6.name = 'chimneyBase';
chimneyBase6.position.set(3.5064, 1.5664, 0.6668);
root.add(chimneyBase6);
const chimneyBase7 = new THREE.Mesh(new THREE.BoxGeometry(0.755, 0.2757, 0.8116), stoneMat);
chimneyBase7.name = 'chimneyBase';
chimneyBase7.position.set(3.5355, 1.8521, 0.6772);
root.add(chimneyBase7);
const chimneyStack = new THREE.Mesh(new THREE.BoxGeometry(0.5547, 0.4213, 0.6251), stoneMat);
chimneyStack.name = 'chimneyStack';
chimneyStack.position.set(3.524, 2.2106, 0.67);
root.add(chimneyStack);
const chimneyStack2 = new THREE.Mesh(new THREE.BoxGeometry(0.5485, 0.4213, 0.6009), stoneMat);
chimneyStack2.name = 'chimneyStack';
chimneyStack2.position.set(3.5066, 2.6419, 0.6834);
root.add(chimneyStack2);
const chimneyStack3 = new THREE.Mesh(new THREE.BoxGeometry(0.5481, 0.4213, 0.5945), stoneMat);
chimneyStack3.name = 'chimneyStack';
chimneyStack3.position.set(3.5101, 3.0731, 0.6594);
root.add(chimneyStack3);
const chimneyStack4 = new THREE.Mesh(new THREE.BoxGeometry(0.5747, 0.4213, 0.6027), stoneMat);
chimneyStack4.name = 'chimneyStack';
chimneyStack4.position.set(3.5218, 3.5044, 0.6601);
root.add(chimneyStack4);
const chimneyStack5 = new THREE.Mesh(new THREE.BoxGeometry(0.5636, 0.4213, 0.6073), stoneMat);
chimneyStack5.name = 'chimneyStack';
chimneyStack5.position.set(3.5329, 3.9356, 0.6858);
root.add(chimneyStack5);
const chimneyStack6 = new THREE.Mesh(new THREE.BoxGeometry(0.5659, 0.4213, 0.6062), stoneMat);
chimneyStack6.name = 'chimneyStack';
chimneyStack6.position.set(3.5236, 4.3669, 0.6716);
root.add(chimneyStack6);
const chimneyStack7 = new THREE.Mesh(new THREE.BoxGeometry(0.5357, 0.4213, 0.6091), stoneMat);
chimneyStack7.name = 'chimneyStack';
chimneyStack7.position.set(3.5259, 4.7982, 0.6869);
root.add(chimneyStack7);
const chimneyStack8 = new THREE.Mesh(new THREE.BoxGeometry(0.5726, 0.4213, 0.5781), stoneMat);
chimneyStack8.name = 'chimneyStack';
chimneyStack8.position.set(3.5105, 5.2294, 0.6764);
root.add(chimneyStack8);
const chimneyCap = new THREE.Mesh(new THREE.BoxGeometry(0.7, 0.1, 0.74), stoneMat);
chimneyCap.name = 'chimneyCap';
chimneyCap.position.set(3.5214, 5.5, 0.672);
root.add(chimneyCap);
const porchBase = new THREE.Mesh(new THREE.BoxGeometry(4.5, 0.24, 1.7586), stoneMat);
porchBase.name = 'porchBase';
porchBase.position.set(0, 0.12, 3.1207);
root.add(porchBase);
const deckPlank = new THREE.Mesh(new THREE.BoxGeometry(4.5283, 0.06, 0.2262), darkMat);
deckPlank.name = 'deckPlank';
deckPlank.position.set(-0.0063, 0.27, 2.367);
root.add(deckPlank);
const deckPlank2 = new THREE.Mesh(new THREE.BoxGeometry(4.5255, 0.06, 0.2262), logMat);
deckPlank2.name = 'deckPlank';
deckPlank2.position.set(-0.0049, 0.27, 2.6182);
root.add(deckPlank2);
const deckPlank3 = new THREE.Mesh(new THREE.BoxGeometry(4.5156, 0.06, 0.2262), darkMat);
deckPlank3.name = 'deckPlank';
deckPlank3.position.set(0.0062, 0.27, 2.8694);
root.add(deckPlank3);
const deckPlank4 = new THREE.Mesh(new THREE.BoxGeometry(4.4743, 0.06, 0.2262), logMat);
deckPlank4.name = 'deckPlank';
deckPlank4.position.set(-0.0085, 0.27, 3.1207);
root.add(deckPlank4);
const deckPlank5 = new THREE.Mesh(new THREE.BoxGeometry(4.5098, 0.06, 0.2262), darkMat);
deckPlank5.name = 'deckPlank';
deckPlank5.position.set(-0.0003, 0.27, 3.3719);
root.add(deckPlank5);
const deckPlank6 = new THREE.Mesh(new THREE.BoxGeometry(4.5077, 0.06, 0.2262), logMat);
deckPlank6.name = 'deckPlank';
deckPlank6.position.set(-0.011, 0.27, 3.6231);
root.add(deckPlank6);
const deckPlank7 = new THREE.Mesh(new THREE.BoxGeometry(4.5131, 0.06, 0.2262), darkMat);
deckPlank7.name = 'deckPlank';
deckPlank7.position.set(-0.0074, 0.27, 3.8744);
root.add(deckPlank7);
const porchStep = new THREE.Mesh(new THREE.BoxGeometry(1.1, 0.15, 0.4), stoneMat);
porchStep.name = 'porchStep';
porchStep.position.set(0, 0.075, 4.2);
root.add(porchStep);
const porchPost = new THREE.Mesh(cylinderGeo2, logMat);
porchPost.name = 'porchPost';
porchPost.position.set(-2.11, 1.3173, 3.86);
root.add(porchPost);
const rail = new THREE.Mesh(boxGeo12, logMat);
rail.name = 'rail';
rail.position.set(-2.11, 1.15, 3.0507);
root.add(rail);
const rail2 = new THREE.Mesh(boxGeo13, logMat);
rail2.name = 'rail';
rail2.position.set(-2.11, 0.75, 3.0507);
root.add(rail2);
const rail3 = new THREE.Mesh(boxGeo14, logMat);
rail3.name = 'rail';
rail3.position.set(-1.355, 1.15, 3.86);
root.add(rail3);
const rail4 = new THREE.Mesh(boxGeo15, logMat);
rail4.name = 'rail';
rail4.position.set(-1.355, 0.75, 3.86);
root.add(rail4);
const railPost = new THREE.Mesh(boxGeo16, logMat);
railPost.name = 'railPost';
railPost.position.set(-0.6, 0.75, 3.86);
root.add(railPost);
const porchPost2 = new THREE.Mesh(cylinderGeo2, logMat);
porchPost2.name = 'porchPost';
porchPost2.position.set(2.11, 1.3173, 3.86);
root.add(porchPost2);
const rail5 = new THREE.Mesh(boxGeo12, logMat);
rail5.name = 'rail';
rail5.position.set(2.11, 1.15, 3.0507);
root.add(rail5);
const rail6 = new THREE.Mesh(boxGeo13, logMat);
rail6.name = 'rail';
rail6.position.set(2.11, 0.75, 3.0507);
root.add(rail6);
const rail7 = new THREE.Mesh(boxGeo14, logMat);
rail7.name = 'rail';
rail7.position.set(1.355, 1.15, 3.86);
root.add(rail7);
const rail8 = new THREE.Mesh(boxGeo15, logMat);
rail8.name = 'rail';
rail8.position.set(1.355, 0.75, 3.86);
root.add(rail8);
const railPost2 = new THREE.Mesh(boxGeo16, logMat);
railPost2.name = 'railPost';
railPost2.position.set(0.6, 0.75, 3.86);
root.add(railPost2);
const porchRoof = new THREE.Mesh(new THREE.BoxGeometry(5, 0.1, 2.1412), roofMat);
porchRoof.name = 'porchRoof';
porchRoof.position.set(0, 2.4841, 3.2957);
porchRoof.rotation.set(deg(10), 0, 0);
root.add(porchRoof);
const porchBeam = new THREE.Mesh(new THREE.BoxGeometry(4.4, 0.16, 0.14), logMat);
porchBeam.name = 'porchBeam';
porchBeam.position.set(0, 2.2546, 3.86);
root.add(porchBeam);
root.traverse((o) => {
if (o.isMesh) {
o.castShadow = true;
o.receiveShadow = true;
}
});
return root;
}
export default createLogCabin;
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









