Codels
2544 Tris7,58 × 5,55 × 7,09 m

Im Code verwenden

Im Editor remixen
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