Codels
1K tris2.24 × 2.67 × 2.13 m

Use it in code

Remix in the editor
Self-contained ES module — only depends on three. Call the factory and add the group to your scene.
/**
 * Newspaper Stand — Codels 3D model library
 * License: CC0-1.0 · Units: meters · Y-up · Front: +Z · Origin: center of the base (y = 0)
 * Triangles: 1,008 · Size (W × H × D): 2.24 × 2.67 × 2.13 m
 *
 * Usage:
 *   import { createNewspaperStand } from './newspaper-stand.js';
 *   
 *   const model = createNewspaperStand();
 *   model.position.set(0, 0, 0);
 *   scene.add(model);
 */
import * as THREE from 'three';

const deg = THREE.MathUtils.degToRad;

export function createNewspaperStand() {
  const root = new THREE.Group();
  root.name = 'NewspaperStand';

  // Materials
  const bodyMat = new THREE.MeshStandardMaterial({ name: 'body', color: 0x2f5e4b, roughness: 0.6, metalness: 0.2, flatShading: true });
  const trimMat = new THREE.MeshStandardMaterial({ name: 'trim', color: 0x23262a, roughness: 0.6, metalness: 0.3, flatShading: true });
  const awningMat = new THREE.MeshStandardMaterial({ name: 'awning', color: 0xc63c2e, roughness: 0.85, flatShading: true });
  const whiteMat = new THREE.MeshStandardMaterial({ name: 'white', color: 0xf1eee6, roughness: 0.8, flatShading: true });
  const woodMat = new THREE.MeshStandardMaterial({ name: 'wood', color: 0xa8743f, roughness: 0.8, flatShading: true });
  const signMat = new THREE.MeshStandardMaterial({ name: 'sign', color: 0xefe2b8, roughness: 0.6, flatShading: true });
  const magAMat = new THREE.MeshStandardMaterial({ name: 'magA', color: 0xe04f3c, roughness: 0.5, flatShading: true });
  const magBMat = new THREE.MeshStandardMaterial({ name: 'magB', color: 0x3d7fd0, roughness: 0.5, flatShading: true });
  const magCMat = new THREE.MeshStandardMaterial({ name: 'magC', color: 0xf0be3a, roughness: 0.5, flatShading: true });

  // Shared geometries
  const boxGeo = new THREE.BoxGeometry(0.06, 2.12, 1.18);
  const boxGeo2 = new THREE.BoxGeometry(0.1, 0.97, 0.06);
  const boxGeo3 = new THREE.BoxGeometry(1.9, 0.02, 0.01);
  const planeGeo = new THREE.PlaneGeometry(0.0288, 0.18);
  const planeGeo2 = new THREE.PlaneGeometry(0.108, 0.0288);
  const planeGeo3 = new THREE.PlaneGeometry(0.0288, 0.1584);
  const planeGeo4 = new THREE.PlaneGeometry(0.126, 0.0288);
  const planeGeo5 = new THREE.PlaneGeometry(0.0288, 0.0756);
  const boxGeo4 = new THREE.BoxGeometry(0.33, 0.012, 0.245);
  const boxGeo5 = new THREE.BoxGeometry(1.8, 0.025, 0.22);
  const boxGeo6 = new THREE.BoxGeometry(0.2, 0.27, 0.012);
  const boxGeo7 = new THREE.BoxGeometry(0.25, 0.015, 0.74);
  const boxGeo8 = new THREE.BoxGeometry(0.25, 0.13, 0.012);
  const cylinderGeo = new THREE.CylinderGeometry(0.012, 0.012, 0.7245, 5);
  const boxGeo9 = new THREE.BoxGeometry(0.9, 1.1, 0.03);
  const boxGeo10 = new THREE.BoxGeometry(0.9, 0.025, 0.1);
  const boxGeo11 = new THREE.BoxGeometry(0.24, 0.3, 0.012);

  // Parts
  const plinth = new THREE.Mesh(new THREE.BoxGeometry(2.08, 0.08, 1.38), trimMat);
  plinth.name = 'plinth';
  plinth.position.set(0, 0.04, 0);
  root.add(plinth);
  const backWall = new THREE.Mesh(new THREE.BoxGeometry(2, 2.12, 0.06), bodyMat);
  backWall.name = 'backWall';
  backWall.position.set(0, 1.14, -0.62);
  root.add(backWall);
  const sideWall = new THREE.Mesh(boxGeo, bodyMat);
  sideWall.name = 'sideWall';
  sideWall.position.set(-0.97, 1.14, 0);
  root.add(sideWall);
  const sideWall2 = new THREE.Mesh(boxGeo, bodyMat);
  sideWall2.name = 'sideWall';
  sideWall2.position.set(0.97, 1.14, 0);
  root.add(sideWall2);
  const counterWall = new THREE.Mesh(new THREE.BoxGeometry(2, 0.9, 0.06), bodyMat);
  counterWall.name = 'counterWall';
  counterWall.position.set(0, 0.53, 0.62);
  root.add(counterWall);
  const header = new THREE.Mesh(new THREE.BoxGeometry(2, 0.25, 0.06), bodyMat);
  header.name = 'header';
  header.position.set(0, 2.075, 0.62);
  root.add(header);
  const windowPost = new THREE.Mesh(boxGeo2, bodyMat);
  windowPost.name = 'windowPost';
  windowPost.position.set(-0.95, 1.465, 0.62);
  root.add(windowPost);
  const windowPost2 = new THREE.Mesh(boxGeo2, bodyMat);
  windowPost2.name = 'windowPost';
  windowPost2.position.set(0.95, 1.465, 0.62);
  root.add(windowPost2);
  const panelLine = new THREE.Mesh(boxGeo3, trimMat);
  panelLine.name = 'panelLine';
  panelLine.position.set(0, 0.3, 0.655);
  root.add(panelLine);
  const panelLine2 = new THREE.Mesh(boxGeo3, trimMat);
  panelLine2.name = 'panelLine';
  panelLine2.position.set(0, 0.62, 0.655);
  root.add(panelLine2);
  const interiorFloor = new THREE.Mesh(new THREE.BoxGeometry(1.88, 0.02, 1.18), trimMat);
  interiorFloor.name = 'interiorFloor';
  interiorFloor.position.set(0, 0.09, 0);
  root.add(interiorFloor);
  const roof = new THREE.Mesh(new THREE.BoxGeometry(2.24, 0.08, 1.54), trimMat);
  roof.name = 'roof';
  roof.position.set(0, 2.24, 0);
  root.add(roof);
  const roofCap = new THREE.Mesh(new THREE.BoxGeometry(2.1, 0.05, 1.4), bodyMat);
  roofCap.name = 'roofCap';
  roofCap.position.set(0, 2.305, 0);
  root.add(roofCap);
  const signBoard = new THREE.Mesh(new THREE.BoxGeometry(1.3, 0.34, 0.06), bodyMat);
  signBoard.name = 'signBoard';
  signBoard.position.set(0, 2.5, 0.53);
  root.add(signBoard);
  const signPanel = new THREE.Mesh(new THREE.BoxGeometry(1.2, 0.26, 0.01), signMat);
  signPanel.name = 'signPanel';
  signPanel.position.set(0, 2.5, 0.565);
  root.add(signPanel);
  const letter = new THREE.Mesh(planeGeo, trimMat);
  letter.name = 'letter';
  letter.position.set(-0.3051, 2.5, 0.571);
  root.add(letter);
  const letter2 = new THREE.Mesh(planeGeo, trimMat);
  letter2.name = 'letter';
  letter2.position.set(-0.2079, 2.5, 0.571);
  root.add(letter2);
  const letter3 = new THREE.Mesh(new THREE.PlaneGeometry(0.0288, 0.1944), trimMat);
  letter3.name = 'letter';
  letter3.position.set(-0.2565, 2.5, 0.571);
  letter3.rotation.set(0, 0, deg(28));
  root.add(letter3);
  const letter4 = new THREE.Mesh(planeGeo, trimMat);
  letter4.name = 'letter';
  letter4.position.set(-0.1341, 2.5, 0.571);
  root.add(letter4);
  const letter5 = new THREE.Mesh(planeGeo2, trimMat);
  letter5.name = 'letter';
  letter5.position.set(-0.0765, 2.5756, 0.571);
  root.add(letter5);
  const letter6 = new THREE.Mesh(new THREE.PlaneGeometry(0.09, 0.0288), trimMat);
  letter6.name = 'letter';
  letter6.position.set(-0.0819, 2.5, 0.571);
  root.add(letter6);
  const letter7 = new THREE.Mesh(planeGeo2, trimMat);
  letter7.name = 'letter';
  letter7.position.set(-0.0765, 2.4244, 0.571);
  root.add(letter7);
  const letter8 = new THREE.Mesh(planeGeo3, trimMat);
  letter8.name = 'letter';
  letter8.position.set(0.0315, 2.5108, 0.571);
  root.add(letter8);
  const letter9 = new THREE.Mesh(planeGeo3, trimMat);
  letter9.name = 'letter';
  letter9.position.set(0.1395, 2.5108, 0.571);
  root.add(letter9);
  const letter10 = new THREE.Mesh(new THREE.PlaneGeometry(0.027, 0.099), trimMat);
  letter10.name = 'letter';
  letter10.position.set(0.0855, 2.4856, 0.571);
  root.add(letter10);
  const letter11 = new THREE.Mesh(new THREE.PlaneGeometry(0.1368, 0.0288), trimMat);
  letter11.name = 'letter';
  letter11.position.set(0.0855, 2.4244, 0.571);
  root.add(letter11);
  const letter12 = new THREE.Mesh(planeGeo4, trimMat);
  letter12.name = 'letter';
  letter12.position.set(0.2565, 2.5756, 0.571);
  root.add(letter12);
  const letter13 = new THREE.Mesh(planeGeo5, trimMat);
  letter13.name = 'letter';
  letter13.position.set(0.2079, 2.5378, 0.571);
  root.add(letter13);
  const letter14 = new THREE.Mesh(planeGeo4, trimMat);
  letter14.name = 'letter';
  letter14.position.set(0.2565, 2.5, 0.571);
  root.add(letter14);
  const letter15 = new THREE.Mesh(planeGeo5, trimMat);
  letter15.name = 'letter';
  letter15.position.set(0.3051, 2.4622, 0.571);
  root.add(letter15);
  const letter16 = new THREE.Mesh(planeGeo4, trimMat);
  letter16.name = 'letter';
  letter16.position.set(0.2565, 2.4244, 0.571);
  root.add(letter16);
  const counter = new THREE.Mesh(new THREE.BoxGeometry(1.88, 0.04, 0.42), woodMat);
  counter.name = 'counter';
  counter.position.set(0, 1, 0.52);
  root.add(counter);
  const newspapers = new THREE.Mesh(new THREE.BoxGeometry(0.32, 0.07, 0.24), whiteMat);
  newspapers.name = 'newspapers';
  newspapers.position.set(-0.55, 1.055, 0.61);
  root.add(newspapers);
  const paperBand = new THREE.Mesh(boxGeo4, magAMat);
  paperBand.name = 'paperBand';
  paperBand.position.set(-0.55, 1.056, 0.61);
  root.add(paperBand);
  const newspapers2 = new THREE.Mesh(new THREE.BoxGeometry(0.32, 0.09, 0.24), whiteMat);
  newspapers2.name = 'newspapers';
  newspapers2.position.set(0, 1.065, 0.61);
  root.add(newspapers2);
  const paperBand2 = new THREE.Mesh(boxGeo4, magBMat);
  paperBand2.name = 'paperBand';
  paperBand2.position.set(0, 1.056, 0.61);
  root.add(paperBand2);
  const newspapers3 = new THREE.Mesh(new THREE.BoxGeometry(0.32, 0.11, 0.24), whiteMat);
  newspapers3.name = 'newspapers';
  newspapers3.position.set(0.55, 1.075, 0.61);
  root.add(newspapers3);
  const paperBand3 = new THREE.Mesh(boxGeo4, magCMat);
  paperBand3.name = 'paperBand';
  paperBand3.position.set(0.55, 1.056, 0.61);
  root.add(paperBand3);
  const shelf = new THREE.Mesh(boxGeo5, woodMat);
  shelf.name = 'shelf';
  shelf.position.set(0, 1.2625, -0.48);
  root.add(shelf);
  const magazine = new THREE.Mesh(boxGeo6, magAMat);
  magazine.name = 'magazine';
  magazine.position.set(-0.75, 1.41, -0.51);
  magazine.rotation.set(deg(-10), 0, 0);
  root.add(magazine);
  const magazine2 = new THREE.Mesh(boxGeo6, magBMat);
  magazine2.name = 'magazine';
  magazine2.position.set(-0.45, 1.41, -0.51);
  magazine2.rotation.set(deg(-10), 0, 0);
  root.add(magazine2);
  const magazine3 = new THREE.Mesh(boxGeo6, magCMat);
  magazine3.name = 'magazine';
  magazine3.position.set(-0.15, 1.41, -0.51);
  magazine3.rotation.set(deg(-10), 0, 0);
  root.add(magazine3);
  const magazine4 = new THREE.Mesh(boxGeo6, whiteMat);
  magazine4.name = 'magazine';
  magazine4.position.set(0.15, 1.41, -0.51);
  magazine4.rotation.set(deg(-10), 0, 0);
  root.add(magazine4);
  const magazine5 = new THREE.Mesh(boxGeo6, magAMat);
  magazine5.name = 'magazine';
  magazine5.position.set(0.45, 1.41, -0.51);
  magazine5.rotation.set(deg(-10), 0, 0);
  root.add(magazine5);
  const magazine6 = new THREE.Mesh(boxGeo6, magBMat);
  magazine6.name = 'magazine';
  magazine6.position.set(0.75, 1.41, -0.51);
  magazine6.rotation.set(deg(-10), 0, 0);
  root.add(magazine6);
  const shelf2 = new THREE.Mesh(boxGeo5, woodMat);
  shelf2.name = 'shelf';
  shelf2.position.set(0, 1.6125, -0.48);
  root.add(shelf2);
  const magazine7 = new THREE.Mesh(boxGeo6, magBMat);
  magazine7.name = 'magazine';
  magazine7.position.set(-0.75, 1.76, -0.51);
  magazine7.rotation.set(deg(-10), 0, 0);
  root.add(magazine7);
  const magazine8 = new THREE.Mesh(boxGeo6, magCMat);
  magazine8.name = 'magazine';
  magazine8.position.set(-0.45, 1.76, -0.51);
  magazine8.rotation.set(deg(-10), 0, 0);
  root.add(magazine8);
  const magazine9 = new THREE.Mesh(boxGeo6, whiteMat);
  magazine9.name = 'magazine';
  magazine9.position.set(-0.15, 1.76, -0.51);
  magazine9.rotation.set(deg(-10), 0, 0);
  root.add(magazine9);
  const magazine10 = new THREE.Mesh(boxGeo6, magAMat);
  magazine10.name = 'magazine';
  magazine10.position.set(0.15, 1.76, -0.51);
  magazine10.rotation.set(deg(-10), 0, 0);
  root.add(magazine10);
  const magazine11 = new THREE.Mesh(boxGeo6, magBMat);
  magazine11.name = 'magazine';
  magazine11.position.set(0.45, 1.76, -0.51);
  magazine11.rotation.set(deg(-10), 0, 0);
  root.add(magazine11);
  const magazine12 = new THREE.Mesh(boxGeo6, magCMat);
  magazine12.name = 'magazine';
  magazine12.position.set(0.75, 1.76, -0.51);
  magazine12.rotation.set(deg(-10), 0, 0);
  root.add(magazine12);
  const awning = new THREE.Mesh(boxGeo7, awningMat);
  awning.name = 'awning';
  awning.position.set(-0.875, 1.95, 1);
  awning.rotation.set(deg(18.9246), 0, 0);
  root.add(awning);
  const valance = new THREE.Mesh(boxGeo8, awningMat);
  valance.name = 'valance';
  valance.position.set(-0.875, 1.77, 1.35);
  root.add(valance);
  const awning2 = new THREE.Mesh(boxGeo7, whiteMat);
  awning2.name = 'awning';
  awning2.position.set(-0.625, 1.95, 1);
  awning2.rotation.set(deg(18.9246), 0, 0);
  root.add(awning2);
  const valance2 = new THREE.Mesh(boxGeo8, whiteMat);
  valance2.name = 'valance';
  valance2.position.set(-0.625, 1.77, 1.35);
  root.add(valance2);
  const awning3 = new THREE.Mesh(boxGeo7, awningMat);
  awning3.name = 'awning';
  awning3.position.set(-0.375, 1.95, 1);
  awning3.rotation.set(deg(18.9246), 0, 0);
  root.add(awning3);
  const valance3 = new THREE.Mesh(boxGeo8, awningMat);
  valance3.name = 'valance';
  valance3.position.set(-0.375, 1.77, 1.35);
  root.add(valance3);
  const awning4 = new THREE.Mesh(boxGeo7, whiteMat);
  awning4.name = 'awning';
  awning4.position.set(-0.125, 1.95, 1);
  awning4.rotation.set(deg(18.9246), 0, 0);
  root.add(awning4);
  const valance4 = new THREE.Mesh(boxGeo8, whiteMat);
  valance4.name = 'valance';
  valance4.position.set(-0.125, 1.77, 1.35);
  root.add(valance4);
  const awning5 = new THREE.Mesh(boxGeo7, awningMat);
  awning5.name = 'awning';
  awning5.position.set(0.125, 1.95, 1);
  awning5.rotation.set(deg(18.9246), 0, 0);
  root.add(awning5);
  const valance5 = new THREE.Mesh(boxGeo8, awningMat);
  valance5.name = 'valance';
  valance5.position.set(0.125, 1.77, 1.35);
  root.add(valance5);
  const awning6 = new THREE.Mesh(boxGeo7, whiteMat);
  awning6.name = 'awning';
  awning6.position.set(0.375, 1.95, 1);
  awning6.rotation.set(deg(18.9246), 0, 0);
  root.add(awning6);
  const valance6 = new THREE.Mesh(boxGeo8, whiteMat);
  valance6.name = 'valance';
  valance6.position.set(0.375, 1.77, 1.35);
  root.add(valance6);
  const awning7 = new THREE.Mesh(boxGeo7, awningMat);
  awning7.name = 'awning';
  awning7.position.set(0.625, 1.95, 1);
  awning7.rotation.set(deg(18.9246), 0, 0);
  root.add(awning7);
  const valance7 = new THREE.Mesh(boxGeo8, awningMat);
  valance7.name = 'valance';
  valance7.position.set(0.625, 1.77, 1.35);
  root.add(valance7);
  const awning8 = new THREE.Mesh(boxGeo7, whiteMat);
  awning8.name = 'awning';
  awning8.position.set(0.875, 1.95, 1);
  awning8.rotation.set(deg(18.9246), 0, 0);
  root.add(awning8);
  const valance8 = new THREE.Mesh(boxGeo8, whiteMat);
  valance8.name = 'valance';
  valance8.position.set(0.875, 1.77, 1.35);
  root.add(valance8);
  const awningArm = new THREE.Mesh(cylinderGeo, trimMat);
  awningArm.name = 'awningArm';
  awningArm.position.set(-0.95, 1.695, 0.99);
  awningArm.rotation.set(deg(69.8142), 0, 0);
  root.add(awningArm);
  const awningArm2 = new THREE.Mesh(cylinderGeo, trimMat);
  awningArm2.name = 'awningArm';
  awningArm2.position.set(0.95, 1.695, 0.99);
  awningArm2.rotation.set(deg(69.8142), 0, 0);
  root.add(awningArm2);
  const rackLeft = new THREE.Group();
  rackLeft.name = 'rackLeft';
  rackLeft.position.set(-1, 0, 0.05);
  rackLeft.rotation.set(0, deg(-90), 0);
  root.add(rackLeft);
  const rackBack = new THREE.Mesh(boxGeo9, trimMat);
  rackBack.name = 'rackBack';
  rackBack.position.set(0, 0.85, 0.015);
  rackLeft.add(rackBack);
  const rackLedge = new THREE.Mesh(boxGeo10, trimMat);
  rackLedge.name = 'rackLedge';
  rackLedge.position.set(0, 0.3325, 0.07);
  rackLeft.add(rackLedge);
  const magazine13 = new THREE.Mesh(boxGeo11, magAMat);
  magazine13.name = 'magazine';
  magazine13.position.set(-0.29, 0.495, 0.06);
  magazine13.rotation.set(deg(-12), 0, 0);
  rackLeft.add(magazine13);
  const magazine14 = new THREE.Mesh(boxGeo11, magBMat);
  magazine14.name = 'magazine';
  magazine14.position.set(0, 0.495, 0.06);
  magazine14.rotation.set(deg(-12), 0, 0);
  rackLeft.add(magazine14);
  const magazine15 = new THREE.Mesh(boxGeo11, magCMat);
  magazine15.name = 'magazine';
  magazine15.position.set(0.29, 0.495, 0.06);
  magazine15.rotation.set(deg(-12), 0, 0);
  rackLeft.add(magazine15);
  const rackLedge2 = new THREE.Mesh(boxGeo10, trimMat);
  rackLedge2.name = 'rackLedge';
  rackLedge2.position.set(0, 0.6825, 0.07);
  rackLeft.add(rackLedge2);
  const magazine16 = new THREE.Mesh(boxGeo11, magBMat);
  magazine16.name = 'magazine';
  magazine16.position.set(-0.29, 0.845, 0.06);
  magazine16.rotation.set(deg(-12), 0, 0);
  rackLeft.add(magazine16);
  const magazine17 = new THREE.Mesh(boxGeo11, magCMat);
  magazine17.name = 'magazine';
  magazine17.position.set(0, 0.845, 0.06);
  magazine17.rotation.set(deg(-12), 0, 0);
  rackLeft.add(magazine17);
  const magazine18 = new THREE.Mesh(boxGeo11, whiteMat);
  magazine18.name = 'magazine';
  magazine18.position.set(0.29, 0.845, 0.06);
  magazine18.rotation.set(deg(-12), 0, 0);
  rackLeft.add(magazine18);
  const rackLedge3 = new THREE.Mesh(boxGeo10, trimMat);
  rackLedge3.name = 'rackLedge';
  rackLedge3.position.set(0, 1.0325, 0.07);
  rackLeft.add(rackLedge3);
  const magazine19 = new THREE.Mesh(boxGeo11, magCMat);
  magazine19.name = 'magazine';
  magazine19.position.set(-0.29, 1.195, 0.06);
  magazine19.rotation.set(deg(-12), 0, 0);
  rackLeft.add(magazine19);
  const magazine20 = new THREE.Mesh(boxGeo11, whiteMat);
  magazine20.name = 'magazine';
  magazine20.position.set(0, 1.195, 0.06);
  magazine20.rotation.set(deg(-12), 0, 0);
  rackLeft.add(magazine20);
  const magazine21 = new THREE.Mesh(boxGeo11, magAMat);
  magazine21.name = 'magazine';
  magazine21.position.set(0.29, 1.195, 0.06);
  magazine21.rotation.set(deg(-12), 0, 0);
  rackLeft.add(magazine21);
  const rackRight = new THREE.Group();
  rackRight.name = 'rackRight';
  rackRight.position.set(1, 0, 0.05);
  rackRight.rotation.set(0, deg(90), 0);
  root.add(rackRight);
  const rackBack2 = new THREE.Mesh(boxGeo9, trimMat);
  rackBack2.name = 'rackBack';
  rackBack2.position.set(0, 0.85, 0.015);
  rackRight.add(rackBack2);
  const rackLedge4 = new THREE.Mesh(boxGeo10, trimMat);
  rackLedge4.name = 'rackLedge';
  rackLedge4.position.set(0, 0.3325, 0.07);
  rackRight.add(rackLedge4);
  const magazine22 = new THREE.Mesh(boxGeo11, magAMat);
  magazine22.name = 'magazine';
  magazine22.position.set(-0.29, 0.495, 0.06);
  magazine22.rotation.set(deg(-12), 0, 0);
  rackRight.add(magazine22);
  const magazine23 = new THREE.Mesh(boxGeo11, magBMat);
  magazine23.name = 'magazine';
  magazine23.position.set(0, 0.495, 0.06);
  magazine23.rotation.set(deg(-12), 0, 0);
  rackRight.add(magazine23);
  const magazine24 = new THREE.Mesh(boxGeo11, magCMat);
  magazine24.name = 'magazine';
  magazine24.position.set(0.29, 0.495, 0.06);
  magazine24.rotation.set(deg(-12), 0, 0);
  rackRight.add(magazine24);
  const rackLedge5 = new THREE.Mesh(boxGeo10, trimMat);
  rackLedge5.name = 'rackLedge';
  rackLedge5.position.set(0, 0.6825, 0.07);
  rackRight.add(rackLedge5);
  const magazine25 = new THREE.Mesh(boxGeo11, magBMat);
  magazine25.name = 'magazine';
  magazine25.position.set(-0.29, 0.845, 0.06);
  magazine25.rotation.set(deg(-12), 0, 0);
  rackRight.add(magazine25);
  const magazine26 = new THREE.Mesh(boxGeo11, magCMat);
  magazine26.name = 'magazine';
  magazine26.position.set(0, 0.845, 0.06);
  magazine26.rotation.set(deg(-12), 0, 0);
  rackRight.add(magazine26);
  const magazine27 = new THREE.Mesh(boxGeo11, whiteMat);
  magazine27.name = 'magazine';
  magazine27.position.set(0.29, 0.845, 0.06);
  magazine27.rotation.set(deg(-12), 0, 0);
  rackRight.add(magazine27);
  const rackLedge6 = new THREE.Mesh(boxGeo10, trimMat);
  rackLedge6.name = 'rackLedge';
  rackLedge6.position.set(0, 1.0325, 0.07);
  rackRight.add(rackLedge6);
  const magazine28 = new THREE.Mesh(boxGeo11, magCMat);
  magazine28.name = 'magazine';
  magazine28.position.set(-0.29, 1.195, 0.06);
  magazine28.rotation.set(deg(-12), 0, 0);
  rackRight.add(magazine28);
  const magazine29 = new THREE.Mesh(boxGeo11, whiteMat);
  magazine29.name = 'magazine';
  magazine29.position.set(0, 1.195, 0.06);
  magazine29.rotation.set(deg(-12), 0, 0);
  rackRight.add(magazine29);
  const magazine30 = new THREE.Mesh(boxGeo11, magAMat);
  magazine30.name = 'magazine';
  magazine30.position.set(0.29, 1.195, 0.06);
  magazine30.rotation.set(deg(-12), 0, 0);
  rackRight.add(magazine30);

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

export default createNewspaperStand;

Ratings & comments

—
No ratings yet — be the first.
5
0
4
0
3
0
2
0
1
0

Sign in to rate and comment.

0 comments

No comments yet. Share how you used this model or what could be better.

Related models

Same category or similar tags