2,6 mil tris4,29 × 2,63 × 2,22 m
Use no código
Fazer remix no editormarket-stall.js · 701 linhas
Módulo ES autocontido — depende apenas do three. Chame a factory e adicione o grupo à sua cena.
/**
* Market Stall — Codels 3D model library
* License: CC0-1.0 · Units: meters · Y-up · Front: +Z · Origin: center of the base (y = 0)
* Triangles: 2,616 · Size (W × H × D): 4.29 × 2.63 × 2.22 m
*
* Usage:
* import { createMarketStall } from './market-stall.js';
*
* const model = createMarketStall();
* model.position.set(0, 0, 0);
* scene.add(model);
*/
import * as THREE from 'three';
const deg = THREE.MathUtils.degToRad;
// Revolve a 2D profile [[radius, y], ...] around the Y axis.
function lathe(points, segments, phiStart = 0, phiLength = Math.PI * 2) {
return new THREE.LatheGeometry(points.map(([x, y]) => new THREE.Vector2(x, y)), segments, phiStart, phiLength);
}
// 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 createMarketStall() {
const root = new THREE.Group();
root.name = 'MarketStall';
// Materials
const woodMat = new THREE.MeshStandardMaterial({ name: 'wood', color: 0x9c6d42, roughness: 0.9, flatShading: true });
const darkMat = new THREE.MeshStandardMaterial({ name: 'dark', color: 0x674630, roughness: 0.95, flatShading: true });
const awningMat = new THREE.MeshStandardMaterial({ name: 'awning', color: 0xc9443a, roughness: 0.85, flatShading: true });
const creamMat = new THREE.MeshStandardMaterial({ name: 'cream', color: 0xefe4c8, roughness: 0.9, flatShading: true });
const orangeMat = new THREE.MeshStandardMaterial({ name: 'orange', color: 0xe8902a, roughness: 0.7, flatShading: true });
const greenMat = new THREE.MeshStandardMaterial({ name: 'green', color: 0x93b83a, roughness: 0.7, flatShading: true });
const clayMat = new THREE.MeshStandardMaterial({ name: 'clay', color: 0xb8653d, roughness: 0.8, flatShading: true });
// Shared geometries
const boxGeo = new THREE.BoxGeometry(0.2004, 0.89, 0.05);
const boxGeo2 = new THREE.BoxGeometry(0.11, 2.2, 0.11);
const boxGeo3 = new THREE.BoxGeometry(0.11, 2.55, 0.11);
const boxGeo4 = new THREE.BoxGeometry(0.07, 0.07, 1.5);
const boxGeo5 = new THREE.BoxGeometry(2.85, 0.1, 0.08);
const boxGeo6 = new THREE.BoxGeometry(0.3464, 0.03, 2.183);
const extrudeGeo = extrude([[-0.1722, 0], [0.1722, 0], [0.1722, -0.16], [0.1491, -0.2151], [0.0861, -0.2555], [0, -0.2702], [-0.0861, -0.2555], [-0.1491, -0.2151], [-0.1722, -0.16]], 0.025);
const boxGeo7 = new THREE.BoxGeometry(0.025, 0.2, 2.183);
const boxGeo8 = new THREE.BoxGeometry(0.55, 0.16, 0.4);
const boxGeo9 = new THREE.BoxGeometry(0.04, 0.165, 0.04);
const boxGeo10 = new THREE.BoxGeometry(0.56, 0.04, 0.41);
const icosahedronGeo = new THREE.IcosahedronGeometry(0.065, 0);
const cylinderGeo = new THREE.CylinderGeometry(0.08, 0.09, 0.2, 7);
const boxGeo11 = new THREE.BoxGeometry(0.04, 0.425, 0.04);
const boxGeo12 = new THREE.BoxGeometry(0.04, 0.385, 0.04);
const cylinderGeo2 = new THREE.CylinderGeometry(0.3, 0.3, 0.04, 8);
const icosahedronGeo2 = new THREE.IcosahedronGeometry(0.07, 0);
// Parts
const counterPlank = new THREE.Mesh(boxGeo, darkMat);
counterPlank.name = 'counterPlank';
counterPlank.position.set(-1.2923, 0.445, 0.7147);
root.add(counterPlank);
const counterPlank2 = new THREE.Mesh(boxGeo, woodMat);
counterPlank2.name = 'counterPlank';
counterPlank2.position.set(-1.0769, 0.445, 0.7179);
root.add(counterPlank2);
const counterPlank3 = new THREE.Mesh(boxGeo, darkMat);
counterPlank3.name = 'counterPlank';
counterPlank3.position.set(-0.8615, 0.445, 0.7194);
root.add(counterPlank3);
const counterPlank4 = new THREE.Mesh(boxGeo, woodMat);
counterPlank4.name = 'counterPlank';
counterPlank4.position.set(-0.6462, 0.445, 0.7231);
root.add(counterPlank4);
const counterPlank5 = new THREE.Mesh(boxGeo, darkMat);
counterPlank5.name = 'counterPlank';
counterPlank5.position.set(-0.4308, 0.445, 0.7258);
root.add(counterPlank5);
const counterPlank6 = new THREE.Mesh(boxGeo, woodMat);
counterPlank6.name = 'counterPlank';
counterPlank6.position.set(-0.2154, 0.445, 0.7179);
root.add(counterPlank6);
const counterPlank7 = new THREE.Mesh(boxGeo, darkMat);
counterPlank7.name = 'counterPlank';
counterPlank7.position.set(0, 0.445, 0.7218);
root.add(counterPlank7);
const counterPlank8 = new THREE.Mesh(boxGeo, woodMat);
counterPlank8.name = 'counterPlank';
counterPlank8.position.set(0.2154, 0.445, 0.7204);
root.add(counterPlank8);
const counterPlank9 = new THREE.Mesh(boxGeo, darkMat);
counterPlank9.name = 'counterPlank';
counterPlank9.position.set(0.4308, 0.445, 0.7204);
root.add(counterPlank9);
const counterPlank10 = new THREE.Mesh(boxGeo, woodMat);
counterPlank10.name = 'counterPlank';
counterPlank10.position.set(0.6462, 0.445, 0.7239);
root.add(counterPlank10);
const counterPlank11 = new THREE.Mesh(boxGeo, darkMat);
counterPlank11.name = 'counterPlank';
counterPlank11.position.set(0.8615, 0.445, 0.7154);
root.add(counterPlank11);
const counterPlank12 = new THREE.Mesh(boxGeo, woodMat);
counterPlank12.name = 'counterPlank';
counterPlank12.position.set(1.0769, 0.445, 0.7198);
root.add(counterPlank12);
const counterPlank13 = new THREE.Mesh(boxGeo, darkMat);
counterPlank13.name = 'counterPlank';
counterPlank13.position.set(1.2923, 0.445, 0.7209);
root.add(counterPlank13);
const counterBody = new THREE.Mesh(new THREE.BoxGeometry(2.7, 0.85, 0.5), darkMat);
counterBody.name = 'counterBody';
counterBody.position.set(0, 0.425, 0.43);
root.add(counterBody);
const counterTop = new THREE.Mesh(new THREE.BoxGeometry(2.92, 0.06, 0.7), woodMat);
counterTop.name = 'counterTop';
counterTop.position.set(0, 0.92, 0.47);
root.add(counterTop);
const counterRail = new THREE.Mesh(new THREE.BoxGeometry(2.82, 0.08, 0.06), darkMat);
counterRail.name = 'counterRail';
counterRail.position.set(0, 0.35, 0.76);
root.add(counterRail);
const frontPost = new THREE.Mesh(boxGeo2, woodMat);
frontPost.name = 'frontPost';
frontPost.position.set(-1.38, 1.1, 0.78);
root.add(frontPost);
const backPost = new THREE.Mesh(boxGeo3, woodMat);
backPost.name = 'backPost';
backPost.position.set(-1.38, 1.275, -0.69);
root.add(backPost);
const sideBeam = new THREE.Mesh(boxGeo4, darkMat);
sideBeam.name = 'sideBeam';
sideBeam.position.set(-1.38, 1.55, 0);
root.add(sideBeam);
const frontPost2 = new THREE.Mesh(boxGeo2, woodMat);
frontPost2.name = 'frontPost';
frontPost2.position.set(1.38, 1.1, 0.78);
root.add(frontPost2);
const backPost2 = new THREE.Mesh(boxGeo3, woodMat);
backPost2.name = 'backPost';
backPost2.position.set(1.38, 1.275, -0.69);
root.add(backPost2);
const sideBeam2 = new THREE.Mesh(boxGeo4, darkMat);
sideBeam2.name = 'sideBeam';
sideBeam2.position.set(1.38, 1.55, 0);
root.add(sideBeam2);
const backBeam = new THREE.Mesh(boxGeo5, darkMat);
backBeam.name = 'backBeam';
backBeam.position.set(0, 2.45, -0.69);
root.add(backBeam);
const frontBeam = new THREE.Mesh(boxGeo5, darkMat);
frontBeam.name = 'frontBeam';
frontBeam.position.set(0, 2.1, 0.78);
root.add(frontBeam);
const shelf = new THREE.Mesh(new THREE.BoxGeometry(2.6, 0.05, 0.35), woodMat);
shelf.name = 'shelf';
shelf.position.set(0, 1.075, -0.47);
root.add(shelf);
const backBoard = new THREE.Mesh(new THREE.BoxGeometry(2.6, 0.7, 0.04), darkMat);
backBoard.name = 'backBoard';
backBoard.position.set(0, 0.7, -0.67);
root.add(backBoard);
const awningStripe = new THREE.Mesh(boxGeo6, awningMat);
awningStripe.name = 'awningStripe';
awningStripe.position.set(-1.3778, 2.3709, 0.235);
awningStripe.rotation.set(deg(12.6526), 0, 0);
root.add(awningStripe);
const valance = new THREE.Mesh(extrudeGeo, awningMat);
valance.name = 'valance';
valance.position.set(-1.3778, 2.1318, 1.305);
root.add(valance);
const awningStripe2 = new THREE.Mesh(boxGeo6, creamMat);
awningStripe2.name = 'awningStripe';
awningStripe2.position.set(-1.0333, 2.3709, 0.235);
awningStripe2.rotation.set(deg(12.6526), 0, 0);
root.add(awningStripe2);
const valance2 = new THREE.Mesh(extrudeGeo, creamMat);
valance2.name = 'valance';
valance2.position.set(-1.0333, 2.1318, 1.305);
root.add(valance2);
const awningStripe3 = new THREE.Mesh(boxGeo6, awningMat);
awningStripe3.name = 'awningStripe';
awningStripe3.position.set(-0.6889, 2.3709, 0.235);
awningStripe3.rotation.set(deg(12.6526), 0, 0);
root.add(awningStripe3);
const valance3 = new THREE.Mesh(extrudeGeo, awningMat);
valance3.name = 'valance';
valance3.position.set(-0.6889, 2.1318, 1.305);
root.add(valance3);
const awningStripe4 = new THREE.Mesh(boxGeo6, creamMat);
awningStripe4.name = 'awningStripe';
awningStripe4.position.set(-0.3444, 2.3709, 0.235);
awningStripe4.rotation.set(deg(12.6526), 0, 0);
root.add(awningStripe4);
const valance4 = new THREE.Mesh(extrudeGeo, creamMat);
valance4.name = 'valance';
valance4.position.set(-0.3444, 2.1318, 1.305);
root.add(valance4);
const awningStripe5 = new THREE.Mesh(boxGeo6, awningMat);
awningStripe5.name = 'awningStripe';
awningStripe5.position.set(0, 2.3709, 0.235);
awningStripe5.rotation.set(deg(12.6526), 0, 0);
root.add(awningStripe5);
const valance5 = new THREE.Mesh(extrudeGeo, awningMat);
valance5.name = 'valance';
valance5.position.set(0, 2.1318, 1.305);
root.add(valance5);
const awningStripe6 = new THREE.Mesh(boxGeo6, creamMat);
awningStripe6.name = 'awningStripe';
awningStripe6.position.set(0.3444, 2.3709, 0.235);
awningStripe6.rotation.set(deg(12.6526), 0, 0);
root.add(awningStripe6);
const valance6 = new THREE.Mesh(extrudeGeo, creamMat);
valance6.name = 'valance';
valance6.position.set(0.3444, 2.1318, 1.305);
root.add(valance6);
const awningStripe7 = new THREE.Mesh(boxGeo6, awningMat);
awningStripe7.name = 'awningStripe';
awningStripe7.position.set(0.6889, 2.3709, 0.235);
awningStripe7.rotation.set(deg(12.6526), 0, 0);
root.add(awningStripe7);
const valance7 = new THREE.Mesh(extrudeGeo, awningMat);
valance7.name = 'valance';
valance7.position.set(0.6889, 2.1318, 1.305);
root.add(valance7);
const awningStripe8 = new THREE.Mesh(boxGeo6, creamMat);
awningStripe8.name = 'awningStripe';
awningStripe8.position.set(1.0333, 2.3709, 0.235);
awningStripe8.rotation.set(deg(12.6526), 0, 0);
root.add(awningStripe8);
const valance8 = new THREE.Mesh(extrudeGeo, creamMat);
valance8.name = 'valance';
valance8.position.set(1.0333, 2.1318, 1.305);
root.add(valance8);
const awningStripe9 = new THREE.Mesh(boxGeo6, awningMat);
awningStripe9.name = 'awningStripe';
awningStripe9.position.set(1.3778, 2.3709, 0.235);
awningStripe9.rotation.set(deg(12.6526), 0, 0);
root.add(awningStripe9);
const valance9 = new THREE.Mesh(extrudeGeo, awningMat);
valance9.name = 'valance';
valance9.position.set(1.3778, 2.1318, 1.305);
root.add(valance9);
const sideValance = new THREE.Mesh(boxGeo7, awningMat);
sideValance.name = 'sideValance';
sideValance.position.set(-1.562, 2.2709, 0.235);
sideValance.rotation.set(deg(12.6526), 0, 0);
root.add(sideValance);
const sideValance2 = new THREE.Mesh(boxGeo7, awningMat);
sideValance2.name = 'sideValance';
sideValance2.position.set(1.562, 2.2709, 0.235);
sideValance2.rotation.set(deg(12.6526), 0, 0);
root.add(sideValance2);
const fruitCrate = new THREE.Group();
fruitCrate.name = 'fruitCrate';
fruitCrate.position.set(-0.9333, 0.95, 0.47);
fruitCrate.rotation.set(0, deg(-3.8622), 0);
root.add(fruitCrate);
const crate = new THREE.Mesh(boxGeo8, woodMat);
crate.name = 'crate';
crate.position.set(0, 0.08, 0);
fruitCrate.add(crate);
const box49 = new THREE.Mesh(boxGeo9, darkMat);
box49.position.set(-0.2575, 0.0825, -0.1825);
fruitCrate.add(box49);
const box50 = new THREE.Mesh(boxGeo9, darkMat);
box50.position.set(-0.2575, 0.0825, 0.1825);
fruitCrate.add(box50);
const box51 = new THREE.Mesh(boxGeo9, darkMat);
box51.position.set(0.2575, 0.0825, -0.1825);
fruitCrate.add(box51);
const box52 = new THREE.Mesh(boxGeo9, darkMat);
box52.position.set(0.2575, 0.0825, 0.1825);
fruitCrate.add(box52);
const box53 = new THREE.Mesh(boxGeo10, darkMat);
box53.position.set(0, 0.092, 0);
fruitCrate.add(box53);
const fruit = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit.name = 'fruit';
fruit.position.set(-0.202, 0.1723, -0.1283);
fruit.rotation.set(deg(8.5784), deg(45.2945), 0);
fruitCrate.add(fruit);
const fruit2 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit2.name = 'fruit';
fruit2.position.set(-0.1957, 0.18, -0.0007);
fruit2.rotation.set(deg(17.5633), deg(6.7781), 0);
fruitCrate.add(fruit2);
const fruit3 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit3.name = 'fruit';
fruit3.position.set(-0.2072, 0.1732, 0.1157);
fruit3.rotation.set(deg(14.8055), deg(79.3363), 0);
fruitCrate.add(fruit3);
const fruit4 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit4.name = 'fruit';
fruit4.position.set(-0.0716, 0.1839, -0.1112);
fruit4.rotation.set(deg(42.7472), deg(13.8879), 0);
fruitCrate.add(fruit4);
const fruit5 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit5.name = 'fruit';
fruit5.position.set(-0.0717, 0.1825, 0.0073);
fruit5.rotation.set(deg(0.1317), deg(27.8876), 0);
fruitCrate.add(fruit5);
const fruit6 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit6.name = 'fruit';
fruit6.position.set(-0.0583, 0.1831, 0.1199);
fruit6.rotation.set(deg(35.2569), deg(17.7633), 0);
fruitCrate.add(fruit6);
const fruit7 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit7.name = 'fruit';
fruit7.position.set(0.0618, 0.1805, -0.1287);
fruit7.rotation.set(deg(33.9461), deg(45.8644), 0);
fruitCrate.add(fruit7);
const fruit8 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit8.name = 'fruit';
fruit8.position.set(0.0664, 0.1829, 0);
fruit8.rotation.set(deg(20.1892), deg(9.2618), 0);
fruitCrate.add(fruit8);
const fruit9 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit9.name = 'fruit';
fruit9.position.set(0.0698, 0.1732, 0.1254);
fruit9.rotation.set(deg(79.9611), deg(0.068), 0);
fruitCrate.add(fruit9);
const fruit10 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit10.name = 'fruit';
fruit10.position.set(0.1955, 0.1691, -0.1271);
fruit10.rotation.set(deg(32.2113), deg(72.9344), 0);
fruitCrate.add(fruit10);
const fruit11 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit11.name = 'fruit';
fruit11.position.set(0.1927, 0.172, -0.0095);
fruit11.rotation.set(deg(2.7916), deg(26.5696), 0);
fruitCrate.add(fruit11);
const fruit12 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit12.name = 'fruit';
fruit12.position.set(0.2019, 0.1795, 0.1123);
fruit12.rotation.set(deg(54.644), deg(58.4866), 0);
fruitCrate.add(fruit12);
const fruit13 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit13.name = 'fruit';
fruit13.position.set(-0.13, 0.26, -0.0043);
fruitCrate.add(fruit13);
const fruit14 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit14.name = 'fruit';
fruit14.position.set(0, 0.26, 0.0053);
fruitCrate.add(fruit14);
const fruit15 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit15.name = 'fruit';
fruit15.position.set(0.13, 0.26, -0.0143);
fruitCrate.add(fruit15);
const fruitCrate2 = new THREE.Group();
fruitCrate2.name = 'fruitCrate';
fruitCrate2.position.set(0, 0.95, 0.47);
fruitCrate2.rotation.set(0, deg(-3.7494), 0);
root.add(fruitCrate2);
const crate2 = new THREE.Mesh(boxGeo8, woodMat);
crate2.name = 'crate';
crate2.position.set(0, 0.08, 0);
fruitCrate2.add(crate2);
const box71 = new THREE.Mesh(boxGeo9, darkMat);
box71.position.set(-0.2575, 0.0825, -0.1825);
fruitCrate2.add(box71);
const box72 = new THREE.Mesh(boxGeo9, darkMat);
box72.position.set(-0.2575, 0.0825, 0.1825);
fruitCrate2.add(box72);
const box73 = new THREE.Mesh(boxGeo9, darkMat);
box73.position.set(0.2575, 0.0825, -0.1825);
fruitCrate2.add(box73);
const box74 = new THREE.Mesh(boxGeo9, darkMat);
box74.position.set(0.2575, 0.0825, 0.1825);
fruitCrate2.add(box74);
const box75 = new THREE.Mesh(boxGeo10, darkMat);
box75.position.set(0, 0.092, 0);
fruitCrate2.add(box75);
const fruit16 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit16.name = 'fruit';
fruit16.position.set(-0.2097, 0.1801, -0.1113);
fruit16.rotation.set(deg(39.9808), deg(82.5786), 0);
fruitCrate2.add(fruit16);
const fruit17 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit17.name = 'fruit';
fruit17.position.set(-0.2069, 0.1667, 0.001);
fruit17.rotation.set(deg(38.9282), deg(8.2392), 0);
fruitCrate2.add(fruit17);
const fruit18 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit18.name = 'fruit';
fruit18.position.set(-0.2094, 0.1814, 0.1287);
fruit18.rotation.set(deg(39.5719), deg(47.2852), 0);
fruitCrate2.add(fruit18);
const fruit19 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit19.name = 'fruit';
fruit19.position.set(-0.0644, 0.1637, -0.1127);
fruit19.rotation.set(deg(2.4867), deg(52.3365), 0);
fruitCrate2.add(fruit19);
const fruit20 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit20.name = 'fruit';
fruit20.position.set(-0.0678, 0.1735, 0.0009);
fruit20.rotation.set(deg(70.6765), deg(60.0523), 0);
fruitCrate2.add(fruit20);
const fruit21 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit21.name = 'fruit';
fruit21.position.set(-0.06, 0.1588, 0.1269);
fruit21.rotation.set(deg(73.5462), deg(71.2069), 0);
fruitCrate2.add(fruit21);
const fruit22 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit22.name = 'fruit';
fruit22.position.set(0.0679, 0.1575, -0.1133);
fruit22.rotation.set(deg(36.3227), deg(75.0251), 0);
fruitCrate2.add(fruit22);
const fruit23 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit23.name = 'fruit';
fruit23.position.set(0.0667, 0.163, -0.0059);
fruit23.rotation.set(deg(70.9999), deg(85.9324), 0);
fruitCrate2.add(fruit23);
const fruit24 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit24.name = 'fruit';
fruit24.position.set(0.0614, 0.1836, 0.1141);
fruit24.rotation.set(deg(5.2035), deg(82.7138), 0);
fruitCrate2.add(fruit24);
const fruit25 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit25.name = 'fruit';
fruit25.position.set(0.2034, 0.1693, -0.116);
fruit25.rotation.set(deg(76.0657), deg(46.5102), 0);
fruitCrate2.add(fruit25);
const fruit26 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit26.name = 'fruit';
fruit26.position.set(0.2, 0.1726, -0.001);
fruit26.rotation.set(deg(17.2619), deg(22.0591), 0);
fruitCrate2.add(fruit26);
const fruit27 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit27.name = 'fruit';
fruit27.position.set(0.1908, 0.1821, 0.1149);
fruit27.rotation.set(deg(27.6487), deg(7.6436), 0);
fruitCrate2.add(fruit27);
const fruit28 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit28.name = 'fruit';
fruit28.position.set(-0.13, 0.26, -0.0077);
fruitCrate2.add(fruit28);
const fruit29 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit29.name = 'fruit';
fruit29.position.set(0, 0.26, -0.0254);
fruitCrate2.add(fruit29);
const fruit30 = new THREE.Mesh(icosahedronGeo, greenMat);
fruit30.name = 'fruit';
fruit30.position.set(0.13, 0.26, -0.01);
fruitCrate2.add(fruit30);
const fruitCrate3 = new THREE.Group();
fruitCrate3.name = 'fruitCrate';
fruitCrate3.position.set(0.9333, 0.95, 0.47);
fruitCrate3.rotation.set(0, deg(4.1852), 0);
root.add(fruitCrate3);
const crate3 = new THREE.Mesh(boxGeo8, woodMat);
crate3.name = 'crate';
crate3.position.set(0, 0.08, 0);
fruitCrate3.add(crate3);
const box93 = new THREE.Mesh(boxGeo9, darkMat);
box93.position.set(-0.2575, 0.0825, -0.1825);
fruitCrate3.add(box93);
const box94 = new THREE.Mesh(boxGeo9, darkMat);
box94.position.set(-0.2575, 0.0825, 0.1825);
fruitCrate3.add(box94);
const box95 = new THREE.Mesh(boxGeo9, darkMat);
box95.position.set(0.2575, 0.0825, -0.1825);
fruitCrate3.add(box95);
const box96 = new THREE.Mesh(boxGeo9, darkMat);
box96.position.set(0.2575, 0.0825, 0.1825);
fruitCrate3.add(box96);
const box97 = new THREE.Mesh(boxGeo10, darkMat);
box97.position.set(0, 0.092, 0);
fruitCrate3.add(box97);
const fruit31 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit31.name = 'fruit';
fruit31.position.set(-0.1917, 0.1772, -0.1136);
fruit31.rotation.set(deg(23.0756), deg(26.106), 0);
fruitCrate3.add(fruit31);
const fruit32 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit32.name = 'fruit';
fruit32.position.set(-0.19, 0.1691, 0.0012);
fruit32.rotation.set(deg(62.2379), deg(62.0029), 0);
fruitCrate3.add(fruit32);
const fruit33 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit33.name = 'fruit';
fruit33.position.set(-0.2065, 0.17, 0.116);
fruit33.rotation.set(deg(1.1827), deg(76.9054), 0);
fruitCrate3.add(fruit33);
const fruit34 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit34.name = 'fruit';
fruit34.position.set(-0.0625, 0.156, -0.1106);
fruit34.rotation.set(deg(55.2711), deg(78.597), 0);
fruitCrate3.add(fruit34);
const fruit35 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit35.name = 'fruit';
fruit35.position.set(-0.077, 0.1839, -0.0056);
fruit35.rotation.set(deg(54.7993), deg(63.2379), 0);
fruitCrate3.add(fruit35);
const fruit36 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit36.name = 'fruit';
fruit36.position.set(-0.0662, 0.1849, 0.1215);
fruit36.rotation.set(deg(69.8345), deg(87.2834), 0);
fruitCrate3.add(fruit36);
const fruit37 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit37.name = 'fruit';
fruit37.position.set(0.062, 0.1759, -0.1225);
fruit37.rotation.set(deg(44.4678), deg(49.0467), 0);
fruitCrate3.add(fruit37);
const fruit38 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit38.name = 'fruit';
fruit38.position.set(0.0712, 0.1579, -0.0028);
fruit38.rotation.set(deg(74.6091), deg(57.7697), 0);
fruitCrate3.add(fruit38);
const fruit39 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit39.name = 'fruit';
fruit39.position.set(0.0757, 0.1682, 0.1157);
fruit39.rotation.set(deg(73.7119), deg(29.1452), 0);
fruitCrate3.add(fruit39);
const fruit40 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit40.name = 'fruit';
fruit40.position.set(0.1963, 0.1719, -0.1286);
fruit40.rotation.set(deg(16.8653), deg(7.5422), 0);
fruitCrate3.add(fruit40);
const fruit41 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit41.name = 'fruit';
fruit41.position.set(0.2001, 0.1842, -0.0026);
fruit41.rotation.set(deg(87.3495), deg(7.6649), 0);
fruitCrate3.add(fruit41);
const fruit42 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit42.name = 'fruit';
fruit42.position.set(0.2078, 0.1622, 0.1106);
fruit42.rotation.set(deg(83.842), deg(47.5496), 0);
fruitCrate3.add(fruit42);
const fruit43 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit43.name = 'fruit';
fruit43.position.set(-0.13, 0.26, -0.0189);
fruitCrate3.add(fruit43);
const fruit44 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit44.name = 'fruit';
fruit44.position.set(0, 0.26, -0.0056);
fruitCrate3.add(fruit44);
const fruit45 = new THREE.Mesh(icosahedronGeo, orangeMat);
fruit45.name = 'fruit';
fruit45.position.set(0.13, 0.26, 0.0191);
fruitCrate3.add(fruit45);
const jar = new THREE.Mesh(cylinderGeo, creamMat);
jar.name = 'jar';
jar.position.set(-1.05, 1.2, -0.47);
root.add(jar);
const jar2 = new THREE.Mesh(cylinderGeo, clayMat);
jar2.name = 'jar';
jar2.position.set(-0.75, 1.2, -0.47);
root.add(jar2);
const jar3 = new THREE.Mesh(cylinderGeo, creamMat);
jar3.name = 'jar';
jar3.position.set(-0.45, 1.2, -0.47);
root.add(jar3);
const jar4 = new THREE.Mesh(cylinderGeo, clayMat);
jar4.name = 'jar';
jar4.position.set(-0.15, 1.2, -0.47);
root.add(jar4);
const jar5 = new THREE.Mesh(cylinderGeo, creamMat);
jar5.name = 'jar';
jar5.position.set(0.15, 1.2, -0.47);
root.add(jar5);
const jar6 = new THREE.Mesh(cylinderGeo, clayMat);
jar6.name = 'jar';
jar6.position.set(0.45, 1.2, -0.47);
root.add(jar6);
const jar7 = new THREE.Mesh(cylinderGeo, creamMat);
jar7.name = 'jar';
jar7.position.set(0.75, 1.2, -0.47);
root.add(jar7);
const jar8 = new THREE.Mesh(cylinderGeo, clayMat);
jar8.name = 'jar';
jar8.position.set(1.05, 1.2, -0.47);
root.add(jar8);
const crateStack = new THREE.Group();
crateStack.name = 'crateStack';
crateStack.position.set(1.85, 0, 0.55);
root.add(crateStack);
const crateA = new THREE.Group();
crateA.name = 'crateA';
crateA.rotation.set(0, deg(4), 0);
crateStack.add(crateA);
const crate4 = new THREE.Mesh(new THREE.BoxGeometry(0.55, 0.42, 0.5), woodMat);
crate4.name = 'crate';
crate4.position.set(0, 0.21, 0);
crateA.add(crate4);
const box124 = new THREE.Mesh(boxGeo11, darkMat);
box124.position.set(-0.2575, 0.2125, -0.2325);
crateA.add(box124);
const box125 = new THREE.Mesh(boxGeo11, darkMat);
box125.position.set(-0.2575, 0.2125, 0.2325);
crateA.add(box125);
const box126 = new THREE.Mesh(boxGeo11, darkMat);
box126.position.set(0.2575, 0.2125, -0.2325);
crateA.add(box126);
const box127 = new THREE.Mesh(boxGeo11, darkMat);
box127.position.set(0.2575, 0.2125, 0.2325);
crateA.add(box127);
const box128 = new THREE.Mesh(new THREE.BoxGeometry(0.56, 0.04, 0.51), darkMat);
box128.position.set(0, 0.209, 0);
crateA.add(box128);
const crateB = new THREE.Group();
crateB.name = 'crateB';
crateB.position.set(0.02, 0.42, 0);
crateB.rotation.set(0, deg(-9), 0);
crateStack.add(crateB);
const crate5 = new THREE.Mesh(new THREE.BoxGeometry(0.5, 0.38, 0.45), woodMat);
crate5.name = 'crate';
crate5.position.set(0, 0.19, 0);
crateB.add(crate5);
const box131 = new THREE.Mesh(boxGeo12, darkMat);
box131.position.set(-0.2325, 0.1925, -0.2075);
crateB.add(box131);
const box132 = new THREE.Mesh(boxGeo12, darkMat);
box132.position.set(-0.2325, 0.1925, 0.2075);
crateB.add(box132);
const box133 = new THREE.Mesh(boxGeo12, darkMat);
box133.position.set(0.2325, 0.1925, -0.2075);
crateB.add(box133);
const box134 = new THREE.Mesh(boxGeo12, darkMat);
box134.position.set(0.2325, 0.1925, 0.2075);
crateB.add(box134);
const box135 = new THREE.Mesh(new THREE.BoxGeometry(0.51, 0.04, 0.46), darkMat);
box135.position.set(0, 0.191, 0);
crateB.add(box135);
const barrel = new THREE.Mesh(lathe([[0.24, 0], [0.29, 0.18], [0.31, 0.36], [0.29, 0.54], [0.24, 0.72]], 8), woodMat);
barrel.name = 'barrel';
barrel.position.set(-1.82, 0, 0.5);
root.add(barrel);
const barrelLid = new THREE.Mesh(new THREE.CircleGeometry(0.24, 8), darkMat);
barrelLid.name = 'barrelLid';
barrelLid.position.set(-1.82, 0.721, 0.5);
barrelLid.rotation.set(deg(-90), 0, 0);
root.add(barrelLid);
const barrelHoop = new THREE.Mesh(cylinderGeo2, darkMat);
barrelHoop.name = 'barrelHoop';
barrelHoop.position.set(-1.82, 0.12, 0.5);
root.add(barrelHoop);
const barrelHoop2 = new THREE.Mesh(cylinderGeo2, darkMat);
barrelHoop2.name = 'barrelHoop';
barrelHoop2.position.set(-1.82, 0.6, 0.5);
root.add(barrelHoop2);
const basket = new THREE.Group();
basket.name = 'basket';
basket.position.set(-1.7, 0, 1.1);
root.add(basket);
const basketBody = new THREE.Mesh(new THREE.CylinderGeometry(0.24, 0.19, 0.26, 8), woodMat);
basketBody.name = 'basketBody';
basketBody.position.set(0, 0.13, 0);
basket.add(basketBody);
const basketRim = new THREE.Mesh(new THREE.TorusGeometry(0.24, 0.025, 4, 8), darkMat);
basketRim.name = 'basketRim';
basketRim.position.set(0, 0.26, 0);
basketRim.rotation.set(deg(90), 0, 0);
basket.add(basketRim);
const basketHandle = new THREE.Mesh(new THREE.TorusGeometry(0.2, 0.015, 3, 8, Math.PI), darkMat);
basketHandle.name = 'basketHandle';
basketHandle.position.set(0, 0.26, 0);
basketHandle.scale.set(1, 1.3, 1);
basket.add(basketHandle);
const fruit46 = new THREE.Mesh(icosahedronGeo2, greenMat);
fruit46.name = 'fruit';
fruit46.position.set(0.12, 0.27, 0);
basket.add(fruit46);
const fruit47 = new THREE.Mesh(icosahedronGeo2, greenMat);
fruit47.name = 'fruit';
fruit47.position.set(0.0371, 0.27, 0.1141);
basket.add(fruit47);
const fruit48 = new THREE.Mesh(icosahedronGeo2, greenMat);
fruit48.name = 'fruit';
fruit48.position.set(-0.0971, 0.27, 0.0705);
basket.add(fruit48);
const fruit49 = new THREE.Mesh(icosahedronGeo2, greenMat);
fruit49.name = 'fruit';
fruit49.position.set(-0.0971, 0.27, -0.0705);
basket.add(fruit49);
const fruit50 = new THREE.Mesh(icosahedronGeo2, greenMat);
fruit50.name = 'fruit';
fruit50.position.set(0.0371, 0.27, -0.1141);
basket.add(fruit50);
const fruit51 = new THREE.Mesh(icosahedronGeo2, greenMat);
fruit51.name = 'fruit';
fruit51.position.set(0, 0.33, 0);
basket.add(fruit51);
root.traverse((o) => {
if (o.isMesh) {
o.castShadow = true;
o.receiveShadow = true;
}
});
return root;
}
export default createMarketStall;
Avaliações e comentários
0 comentário
Nenhum comentário ainda. Conte como você usou este modelo ou o que poderia melhorar.
Modelos relacionados
Mesma categoria ou tags parecidas









