Codels
1124 Tris1,06 × 2,52 × 1,06 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.
/**
 * Phone Booth — Codels 3D model library
 * License: CC0-1.0 · Units: meters · Y-up · Front: +Z · Origin: center of the base (y = 0)
 * Triangles: 1,124 · Size (W × H × D): 1.06 × 2.52 × 1.06 m
 *
 * Usage:
 *   import { createPhoneBooth } from './phone-booth.js';
 *   
 *   const model = createPhoneBooth();
 *   model.position.set(0, 0, 0);
 *   scene.add(model);
 */
import * as THREE from 'three';

const deg = THREE.MathUtils.degToRad;

// Extrude a 2D outline along Z (centered). bevel = [thickness, size, segments].
function extrude(outline, depth, holes = [], bevel = null) {
  const shape = new THREE.Shape(outline.map(([x, y]) => new THREE.Vector2(x, y)));
  for (const hole of holes) shape.holes.push(new THREE.Path(hole.map(([x, y]) => new THREE.Vector2(x, y))));
  const options = bevel
    ? { depth, bevelEnabled: true, bevelThickness: bevel[0], bevelSize: bevel[1], bevelSegments: bevel[2] }
    : { depth, bevelEnabled: false };
  return new THREE.ExtrudeGeometry(shape, options).translate(0, 0, -depth / 2);
}

export function createPhoneBooth() {
  const root = new THREE.Group();
  root.name = 'PhoneBooth';

  // Materials
  const bodyMat = new THREE.MeshStandardMaterial({ name: 'body', color: 0xc41e22, roughness: 0.5, metalness: 0.15, flatShading: true });
  const glassMat = new THREE.MeshStandardMaterial({ name: 'glass', color: 0xcfe2ea, roughness: 0.1, transparent: true, opacity: 0.3 });
  const signMat = new THREE.MeshStandardMaterial({ name: 'sign', color: 0xfffaf0, roughness: 0.4, emissive: 0xfff3d6, emissiveIntensity: 0.9, flatShading: true });
  const darkMat = new THREE.MeshStandardMaterial({ name: 'dark', color: 0x1e2022, roughness: 0.6, flatShading: true });
  const steelMat = new THREE.MeshStandardMaterial({ name: 'steel', color: 0xa9afb4, roughness: 0.35, metalness: 0.7, flatShading: true });
  const concreteMat = new THREE.MeshStandardMaterial({ name: 'concrete', color: 0x9d9a92, roughness: 0.95, flatShading: true });
  const floorMat = new THREE.MeshStandardMaterial({ name: 'floor', color: 0x3b3d40, roughness: 0.9, flatShading: true });
  const goldMat = new THREE.MeshStandardMaterial({ name: 'gold', color: 0xd8ae46, roughness: 0.35, metalness: 0.7, flatShading: true });

  // Shared geometries
  const boxGeo = new THREE.BoxGeometry(0.1, 1.94, 0.1);
  const boxGeo2 = new THREE.BoxGeometry(0.74, 0.28, 0.04);
  const boxGeo3 = new THREE.BoxGeometry(0.74, 0.12, 0.04);
  const boxGeo4 = new THREE.BoxGeometry(0.74, 1.54, 0.008);
  const boxGeo5 = new THREE.BoxGeometry(0.024, 1.54, 0.03);
  const boxGeo6 = new THREE.BoxGeometry(0.74, 0.022, 0.03);
  const extrudeGeo = extrude([[-0.48, 0], [-0.3727, 0.0727], [-0.2546, 0.1262], [-0.1292, 0.159], [0, 0.17], [0.1292, 0.159], [0.2546, 0.1262], [0.3727, 0.0727], [0.48, 0]], 0.96);
  const boxGeo7 = new THREE.BoxGeometry(0.66, 0.12, 0.012);
  const planeGeo = new THREE.PlaneGeometry(0.036, 0.05);
  const cylinderGeo = new THREE.CylinderGeometry(0.05, 0.055, 0.025, 8);

  // Parts
  const plinth = new THREE.Mesh(new THREE.BoxGeometry(1.06, 0.08, 1.06), concreteMat);
  plinth.name = 'plinth';
  plinth.position.set(0, 0.04, 0);
  root.add(plinth);
  const base = new THREE.Mesh(new THREE.BoxGeometry(0.92, 0.1, 0.92), bodyMat);
  base.name = 'base';
  base.position.set(0, 0.13, 0);
  root.add(base);
  const floor = new THREE.Mesh(new THREE.BoxGeometry(0.86, 0.01, 0.86), floorMat);
  floor.name = 'floor';
  floor.position.set(0, 0.185, 0);
  root.add(floor);
  const cornerPost = new THREE.Mesh(boxGeo, bodyMat);
  cornerPost.name = 'cornerPost';
  cornerPost.position.set(-0.41, 1.15, -0.41);
  root.add(cornerPost);
  const cornerPost2 = new THREE.Mesh(boxGeo, bodyMat);
  cornerPost2.name = 'cornerPost';
  cornerPost2.position.set(-0.41, 1.15, 0.41);
  root.add(cornerPost2);
  const cornerPost3 = new THREE.Mesh(boxGeo, bodyMat);
  cornerPost3.name = 'cornerPost';
  cornerPost3.position.set(0.41, 1.15, -0.41);
  root.add(cornerPost3);
  const cornerPost4 = new THREE.Mesh(boxGeo, bodyMat);
  cornerPost4.name = 'cornerPost';
  cornerPost4.position.set(0.41, 1.15, 0.41);
  root.add(cornerPost4);
  const side1 = new THREE.Group();
  side1.name = 'side1';
  root.add(side1);
  const kickPlate = new THREE.Mesh(boxGeo2, bodyMat);
  kickPlate.name = 'kickPlate';
  kickPlate.position.set(0, 0.32, 0.43);
  side1.add(kickPlate);
  const topRail = new THREE.Mesh(boxGeo3, bodyMat);
  topRail.name = 'topRail';
  topRail.position.set(0, 2.06, 0.43);
  side1.add(topRail);
  const glass = new THREE.Mesh(boxGeo4, glassMat);
  glass.name = 'glass';
  glass.position.set(0, 1.23, 0.43);
  side1.add(glass);
  const glazingBar = new THREE.Mesh(boxGeo5, bodyMat);
  glazingBar.name = 'glazingBar';
  glazingBar.position.set(-0.1233, 1.23, 0.434);
  side1.add(glazingBar);
  const glazingBar2 = new THREE.Mesh(boxGeo5, bodyMat);
  glazingBar2.name = 'glazingBar';
  glazingBar2.position.set(0.1233, 1.23, 0.434);
  side1.add(glazingBar2);
  const glazingBar3 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar3.name = 'glazingBar';
  glazingBar3.position.set(0, 0.6525, 0.434);
  side1.add(glazingBar3);
  const glazingBar4 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar4.name = 'glazingBar';
  glazingBar4.position.set(0, 0.845, 0.434);
  side1.add(glazingBar4);
  const glazingBar5 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar5.name = 'glazingBar';
  glazingBar5.position.set(0, 1.0375, 0.434);
  side1.add(glazingBar5);
  const glazingBar6 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar6.name = 'glazingBar';
  glazingBar6.position.set(0, 1.23, 0.434);
  side1.add(glazingBar6);
  const glazingBar7 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar7.name = 'glazingBar';
  glazingBar7.position.set(0, 1.4225, 0.434);
  side1.add(glazingBar7);
  const glazingBar8 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar8.name = 'glazingBar';
  glazingBar8.position.set(0, 1.615, 0.434);
  side1.add(glazingBar8);
  const glazingBar9 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar9.name = 'glazingBar';
  glazingBar9.position.set(0, 1.8075, 0.434);
  side1.add(glazingBar9);
  const doorHandle = new THREE.Mesh(new THREE.BoxGeometry(0.03, 0.14, 0.03), steelMat);
  doorHandle.name = 'doorHandle';
  doorHandle.position.set(0.31, 1.05, 0.465);
  side1.add(doorHandle);
  const side2 = new THREE.Group();
  side2.name = 'side2';
  side2.rotation.set(0, deg(90), 0);
  root.add(side2);
  const kickPlate2 = new THREE.Mesh(boxGeo2, bodyMat);
  kickPlate2.name = 'kickPlate';
  kickPlate2.position.set(0, 0.32, 0.43);
  side2.add(kickPlate2);
  const topRail2 = new THREE.Mesh(boxGeo3, bodyMat);
  topRail2.name = 'topRail';
  topRail2.position.set(0, 2.06, 0.43);
  side2.add(topRail2);
  const glass2 = new THREE.Mesh(boxGeo4, glassMat);
  glass2.name = 'glass';
  glass2.position.set(0, 1.23, 0.43);
  side2.add(glass2);
  const glazingBar10 = new THREE.Mesh(boxGeo5, bodyMat);
  glazingBar10.name = 'glazingBar';
  glazingBar10.position.set(-0.1233, 1.23, 0.434);
  side2.add(glazingBar10);
  const glazingBar11 = new THREE.Mesh(boxGeo5, bodyMat);
  glazingBar11.name = 'glazingBar';
  glazingBar11.position.set(0.1233, 1.23, 0.434);
  side2.add(glazingBar11);
  const glazingBar12 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar12.name = 'glazingBar';
  glazingBar12.position.set(0, 0.6525, 0.434);
  side2.add(glazingBar12);
  const glazingBar13 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar13.name = 'glazingBar';
  glazingBar13.position.set(0, 0.845, 0.434);
  side2.add(glazingBar13);
  const glazingBar14 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar14.name = 'glazingBar';
  glazingBar14.position.set(0, 1.0375, 0.434);
  side2.add(glazingBar14);
  const glazingBar15 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar15.name = 'glazingBar';
  glazingBar15.position.set(0, 1.23, 0.434);
  side2.add(glazingBar15);
  const glazingBar16 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar16.name = 'glazingBar';
  glazingBar16.position.set(0, 1.4225, 0.434);
  side2.add(glazingBar16);
  const glazingBar17 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar17.name = 'glazingBar';
  glazingBar17.position.set(0, 1.615, 0.434);
  side2.add(glazingBar17);
  const glazingBar18 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar18.name = 'glazingBar';
  glazingBar18.position.set(0, 1.8075, 0.434);
  side2.add(glazingBar18);
  const side3 = new THREE.Group();
  side3.name = 'side3';
  side3.rotation.set(0, deg(180), 0);
  root.add(side3);
  const kickPlate3 = new THREE.Mesh(boxGeo2, bodyMat);
  kickPlate3.name = 'kickPlate';
  kickPlate3.position.set(0, 0.32, 0.43);
  side3.add(kickPlate3);
  const topRail3 = new THREE.Mesh(boxGeo3, bodyMat);
  topRail3.name = 'topRail';
  topRail3.position.set(0, 2.06, 0.43);
  side3.add(topRail3);
  const glass3 = new THREE.Mesh(boxGeo4, glassMat);
  glass3.name = 'glass';
  glass3.position.set(0, 1.23, 0.43);
  side3.add(glass3);
  const glazingBar19 = new THREE.Mesh(boxGeo5, bodyMat);
  glazingBar19.name = 'glazingBar';
  glazingBar19.position.set(-0.1233, 1.23, 0.434);
  side3.add(glazingBar19);
  const glazingBar20 = new THREE.Mesh(boxGeo5, bodyMat);
  glazingBar20.name = 'glazingBar';
  glazingBar20.position.set(0.1233, 1.23, 0.434);
  side3.add(glazingBar20);
  const glazingBar21 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar21.name = 'glazingBar';
  glazingBar21.position.set(0, 0.6525, 0.434);
  side3.add(glazingBar21);
  const glazingBar22 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar22.name = 'glazingBar';
  glazingBar22.position.set(0, 0.845, 0.434);
  side3.add(glazingBar22);
  const glazingBar23 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar23.name = 'glazingBar';
  glazingBar23.position.set(0, 1.0375, 0.434);
  side3.add(glazingBar23);
  const glazingBar24 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar24.name = 'glazingBar';
  glazingBar24.position.set(0, 1.23, 0.434);
  side3.add(glazingBar24);
  const glazingBar25 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar25.name = 'glazingBar';
  glazingBar25.position.set(0, 1.4225, 0.434);
  side3.add(glazingBar25);
  const glazingBar26 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar26.name = 'glazingBar';
  glazingBar26.position.set(0, 1.615, 0.434);
  side3.add(glazingBar26);
  const glazingBar27 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar27.name = 'glazingBar';
  glazingBar27.position.set(0, 1.8075, 0.434);
  side3.add(glazingBar27);
  const side4 = new THREE.Group();
  side4.name = 'side4';
  side4.rotation.set(0, deg(270), 0);
  root.add(side4);
  const kickPlate4 = new THREE.Mesh(boxGeo2, bodyMat);
  kickPlate4.name = 'kickPlate';
  kickPlate4.position.set(0, 0.32, 0.43);
  side4.add(kickPlate4);
  const topRail4 = new THREE.Mesh(boxGeo3, bodyMat);
  topRail4.name = 'topRail';
  topRail4.position.set(0, 2.06, 0.43);
  side4.add(topRail4);
  const glass4 = new THREE.Mesh(boxGeo4, glassMat);
  glass4.name = 'glass';
  glass4.position.set(0, 1.23, 0.43);
  side4.add(glass4);
  const glazingBar28 = new THREE.Mesh(boxGeo5, bodyMat);
  glazingBar28.name = 'glazingBar';
  glazingBar28.position.set(-0.1233, 1.23, 0.434);
  side4.add(glazingBar28);
  const glazingBar29 = new THREE.Mesh(boxGeo5, bodyMat);
  glazingBar29.name = 'glazingBar';
  glazingBar29.position.set(0.1233, 1.23, 0.434);
  side4.add(glazingBar29);
  const glazingBar30 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar30.name = 'glazingBar';
  glazingBar30.position.set(0, 0.6525, 0.434);
  side4.add(glazingBar30);
  const glazingBar31 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar31.name = 'glazingBar';
  glazingBar31.position.set(0, 0.845, 0.434);
  side4.add(glazingBar31);
  const glazingBar32 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar32.name = 'glazingBar';
  glazingBar32.position.set(0, 1.0375, 0.434);
  side4.add(glazingBar32);
  const glazingBar33 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar33.name = 'glazingBar';
  glazingBar33.position.set(0, 1.23, 0.434);
  side4.add(glazingBar33);
  const glazingBar34 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar34.name = 'glazingBar';
  glazingBar34.position.set(0, 1.4225, 0.434);
  side4.add(glazingBar34);
  const glazingBar35 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar35.name = 'glazingBar';
  glazingBar35.position.set(0, 1.615, 0.434);
  side4.add(glazingBar35);
  const glazingBar36 = new THREE.Mesh(boxGeo6, bodyMat);
  glazingBar36.name = 'glazingBar';
  glazingBar36.position.set(0, 1.8075, 0.434);
  side4.add(glazingBar36);
  const fascia = new THREE.Mesh(new THREE.BoxGeometry(0.94, 0.2, 0.94), bodyMat);
  fascia.name = 'fascia';
  fascia.position.set(0, 2.22, 0);
  root.add(fascia);
  const roofVault = new THREE.Mesh(extrudeGeo, bodyMat);
  roofVault.name = 'roofVault';
  roofVault.position.set(0, 2.32, 0);
  root.add(roofVault);
  const roofVault2 = new THREE.Mesh(extrudeGeo, bodyMat);
  roofVault2.name = 'roofVault';
  roofVault2.position.set(0, 2.32, 0);
  roofVault2.rotation.set(0, deg(90), 0);
  root.add(roofVault2);
  const cornice = new THREE.Mesh(new THREE.BoxGeometry(0.98, 0.03, 0.98), bodyMat);
  cornice.name = 'cornice';
  cornice.position.set(0, 2.32, 0);
  root.add(cornice);
  const roofCap = new THREE.Mesh(new THREE.CylinderGeometry(0.11, 0.14, 0.05, 8), bodyMat);
  roofCap.name = 'roofCap';
  roofCap.position.set(0, 2.495, 0);
  root.add(roofCap);
  const sign1 = new THREE.Group();
  sign1.name = 'sign1';
  root.add(sign1);
  const telephoneSign = new THREE.Mesh(boxGeo7, signMat);
  telephoneSign.name = 'telephoneSign';
  telephoneSign.position.set(0, 2.22, 0.47);
  sign1.add(telephoneSign);
  const letter = new THREE.Mesh(planeGeo, darkMat);
  letter.name = 'letter';
  letter.position.set(-0.248, 2.22, 0.4775);
  sign1.add(letter);
  const letter2 = new THREE.Mesh(planeGeo, darkMat);
  letter2.name = 'letter';
  letter2.position.set(-0.186, 2.22, 0.4775);
  sign1.add(letter2);
  const letter3 = new THREE.Mesh(planeGeo, darkMat);
  letter3.name = 'letter';
  letter3.position.set(-0.124, 2.22, 0.4775);
  sign1.add(letter3);
  const letter4 = new THREE.Mesh(planeGeo, darkMat);
  letter4.name = 'letter';
  letter4.position.set(-0.062, 2.22, 0.4775);
  sign1.add(letter4);
  const letter5 = new THREE.Mesh(planeGeo, darkMat);
  letter5.name = 'letter';
  letter5.position.set(0, 2.22, 0.4775);
  sign1.add(letter5);
  const letter6 = new THREE.Mesh(planeGeo, darkMat);
  letter6.name = 'letter';
  letter6.position.set(0.062, 2.22, 0.4775);
  sign1.add(letter6);
  const letter7 = new THREE.Mesh(planeGeo, darkMat);
  letter7.name = 'letter';
  letter7.position.set(0.124, 2.22, 0.4775);
  sign1.add(letter7);
  const letter8 = new THREE.Mesh(planeGeo, darkMat);
  letter8.name = 'letter';
  letter8.position.set(0.186, 2.22, 0.4775);
  sign1.add(letter8);
  const letter9 = new THREE.Mesh(planeGeo, darkMat);
  letter9.name = 'letter';
  letter9.position.set(0.248, 2.22, 0.4775);
  sign1.add(letter9);
  const crownBoss = new THREE.Mesh(cylinderGeo, goldMat);
  crownBoss.name = 'crownBoss';
  crownBoss.position.set(0, 2.39, 0.488);
  crownBoss.rotation.set(deg(90), 0, 0);
  sign1.add(crownBoss);
  const sign2 = new THREE.Group();
  sign2.name = 'sign2';
  sign2.rotation.set(0, deg(90), 0);
  root.add(sign2);
  const telephoneSign2 = new THREE.Mesh(boxGeo7, signMat);
  telephoneSign2.name = 'telephoneSign';
  telephoneSign2.position.set(0, 2.22, 0.47);
  sign2.add(telephoneSign2);
  const letter10 = new THREE.Mesh(planeGeo, darkMat);
  letter10.name = 'letter';
  letter10.position.set(-0.248, 2.22, 0.4775);
  sign2.add(letter10);
  const letter11 = new THREE.Mesh(planeGeo, darkMat);
  letter11.name = 'letter';
  letter11.position.set(-0.186, 2.22, 0.4775);
  sign2.add(letter11);
  const letter12 = new THREE.Mesh(planeGeo, darkMat);
  letter12.name = 'letter';
  letter12.position.set(-0.124, 2.22, 0.4775);
  sign2.add(letter12);
  const letter13 = new THREE.Mesh(planeGeo, darkMat);
  letter13.name = 'letter';
  letter13.position.set(-0.062, 2.22, 0.4775);
  sign2.add(letter13);
  const letter14 = new THREE.Mesh(planeGeo, darkMat);
  letter14.name = 'letter';
  letter14.position.set(0, 2.22, 0.4775);
  sign2.add(letter14);
  const letter15 = new THREE.Mesh(planeGeo, darkMat);
  letter15.name = 'letter';
  letter15.position.set(0.062, 2.22, 0.4775);
  sign2.add(letter15);
  const letter16 = new THREE.Mesh(planeGeo, darkMat);
  letter16.name = 'letter';
  letter16.position.set(0.124, 2.22, 0.4775);
  sign2.add(letter16);
  const letter17 = new THREE.Mesh(planeGeo, darkMat);
  letter17.name = 'letter';
  letter17.position.set(0.186, 2.22, 0.4775);
  sign2.add(letter17);
  const letter18 = new THREE.Mesh(planeGeo, darkMat);
  letter18.name = 'letter';
  letter18.position.set(0.248, 2.22, 0.4775);
  sign2.add(letter18);
  const crownBoss2 = new THREE.Mesh(cylinderGeo, goldMat);
  crownBoss2.name = 'crownBoss';
  crownBoss2.position.set(0, 2.39, 0.488);
  crownBoss2.rotation.set(deg(90), 0, 0);
  sign2.add(crownBoss2);
  const sign3 = new THREE.Group();
  sign3.name = 'sign3';
  sign3.rotation.set(0, deg(180), 0);
  root.add(sign3);
  const telephoneSign3 = new THREE.Mesh(boxGeo7, signMat);
  telephoneSign3.name = 'telephoneSign';
  telephoneSign3.position.set(0, 2.22, 0.47);
  sign3.add(telephoneSign3);
  const letter19 = new THREE.Mesh(planeGeo, darkMat);
  letter19.name = 'letter';
  letter19.position.set(-0.248, 2.22, 0.4775);
  sign3.add(letter19);
  const letter20 = new THREE.Mesh(planeGeo, darkMat);
  letter20.name = 'letter';
  letter20.position.set(-0.186, 2.22, 0.4775);
  sign3.add(letter20);
  const letter21 = new THREE.Mesh(planeGeo, darkMat);
  letter21.name = 'letter';
  letter21.position.set(-0.124, 2.22, 0.4775);
  sign3.add(letter21);
  const letter22 = new THREE.Mesh(planeGeo, darkMat);
  letter22.name = 'letter';
  letter22.position.set(-0.062, 2.22, 0.4775);
  sign3.add(letter22);
  const letter23 = new THREE.Mesh(planeGeo, darkMat);
  letter23.name = 'letter';
  letter23.position.set(0, 2.22, 0.4775);
  sign3.add(letter23);
  const letter24 = new THREE.Mesh(planeGeo, darkMat);
  letter24.name = 'letter';
  letter24.position.set(0.062, 2.22, 0.4775);
  sign3.add(letter24);
  const letter25 = new THREE.Mesh(planeGeo, darkMat);
  letter25.name = 'letter';
  letter25.position.set(0.124, 2.22, 0.4775);
  sign3.add(letter25);
  const letter26 = new THREE.Mesh(planeGeo, darkMat);
  letter26.name = 'letter';
  letter26.position.set(0.186, 2.22, 0.4775);
  sign3.add(letter26);
  const letter27 = new THREE.Mesh(planeGeo, darkMat);
  letter27.name = 'letter';
  letter27.position.set(0.248, 2.22, 0.4775);
  sign3.add(letter27);
  const crownBoss3 = new THREE.Mesh(cylinderGeo, goldMat);
  crownBoss3.name = 'crownBoss';
  crownBoss3.position.set(0, 2.39, 0.488);
  crownBoss3.rotation.set(deg(90), 0, 0);
  sign3.add(crownBoss3);
  const sign4 = new THREE.Group();
  sign4.name = 'sign4';
  sign4.rotation.set(0, deg(270), 0);
  root.add(sign4);
  const telephoneSign4 = new THREE.Mesh(boxGeo7, signMat);
  telephoneSign4.name = 'telephoneSign';
  telephoneSign4.position.set(0, 2.22, 0.47);
  sign4.add(telephoneSign4);
  const letter28 = new THREE.Mesh(planeGeo, darkMat);
  letter28.name = 'letter';
  letter28.position.set(-0.248, 2.22, 0.4775);
  sign4.add(letter28);
  const letter29 = new THREE.Mesh(planeGeo, darkMat);
  letter29.name = 'letter';
  letter29.position.set(-0.186, 2.22, 0.4775);
  sign4.add(letter29);
  const letter30 = new THREE.Mesh(planeGeo, darkMat);
  letter30.name = 'letter';
  letter30.position.set(-0.124, 2.22, 0.4775);
  sign4.add(letter30);
  const letter31 = new THREE.Mesh(planeGeo, darkMat);
  letter31.name = 'letter';
  letter31.position.set(-0.062, 2.22, 0.4775);
  sign4.add(letter31);
  const letter32 = new THREE.Mesh(planeGeo, darkMat);
  letter32.name = 'letter';
  letter32.position.set(0, 2.22, 0.4775);
  sign4.add(letter32);
  const letter33 = new THREE.Mesh(planeGeo, darkMat);
  letter33.name = 'letter';
  letter33.position.set(0.062, 2.22, 0.4775);
  sign4.add(letter33);
  const letter34 = new THREE.Mesh(planeGeo, darkMat);
  letter34.name = 'letter';
  letter34.position.set(0.124, 2.22, 0.4775);
  sign4.add(letter34);
  const letter35 = new THREE.Mesh(planeGeo, darkMat);
  letter35.name = 'letter';
  letter35.position.set(0.186, 2.22, 0.4775);
  sign4.add(letter35);
  const letter36 = new THREE.Mesh(planeGeo, darkMat);
  letter36.name = 'letter';
  letter36.position.set(0.248, 2.22, 0.4775);
  sign4.add(letter36);
  const crownBoss4 = new THREE.Mesh(cylinderGeo, goldMat);
  crownBoss4.name = 'crownBoss';
  crownBoss4.position.set(0, 2.39, 0.488);
  crownBoss4.rotation.set(deg(90), 0, 0);
  sign4.add(crownBoss4);
  const payphone = new THREE.Mesh(new THREE.BoxGeometry(0.24, 0.32, 0.12), darkMat);
  payphone.name = 'payphone';
  payphone.position.set(0, 1.36, -0.36);
  root.add(payphone);
  const handset = new THREE.Mesh(new THREE.CapsuleGeometry(0.025, 0.14, 2, 6), darkMat);
  handset.name = 'handset';
  handset.position.set(0, 1.56, -0.36);
  handset.rotation.set(0, 0, deg(90));
  root.add(handset);
  const shelf = new THREE.Mesh(new THREE.BoxGeometry(0.3, 0.04, 0.2), steelMat);
  shelf.name = 'shelf';
  shelf.position.set(0, 0.97, -0.3);
  root.add(shelf);

  root.traverse((o) => {
    if (o.isMesh) {
      o.castShadow = true;
      o.receiveShadow = true;
    }
  });
  return root;
}

export default createPhoneBooth;

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