1K tris2.24 × 2.67 × 2.13 m
Use it in code
Remix in the editornewspaper-stand.js · 498 lines
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
0 comments
No comments yet. Share how you used this model or what could be better.
Related models
Same category or similar tags









