564 Tris0,75 × 1,07 × 0,63 m
Im Code verwenden
Im Editor remixentrash-bin.js · 92 Zeilen
Eigenständiges ES-Modul — hängt nur von three ab. Ruf die Factory auf und füge die Gruppe deiner Szene hinzu.
/**
* Trash Bin — Codels 3D model library
* License: CC0-1.0 · Units: meters · Y-up · Front: +Z · Origin: center of the base (y = 0)
* Triangles: 564 · Size (W × H × D): 0.75 × 1.07 × 0.63 m
*
* Usage:
* import { createTrashBin } from './trash-bin.js';
*
* const model = createTrashBin();
* model.position.set(0, 0, 0);
* scene.add(model);
*/
import * as THREE from 'three';
const deg = THREE.MathUtils.degToRad;
export function createTrashBin() {
const root = new THREE.Group();
root.name = 'TrashBin';
// Materials
const bodyMat = new THREE.MeshStandardMaterial({ name: 'body', color: 0x3f7d5a, roughness: 0.55, metalness: 0.3, flatShading: true });
const frameMat = new THREE.MeshStandardMaterial({ name: 'frame', color: 0x3a3f44, roughness: 0.5, metalness: 0.6, flatShading: true });
// Shared geometries
const torusGeo = new THREE.TorusGeometry(0.07, 0.013, 3, 8, Math.PI);
// Parts
const footRing = new THREE.Mesh(new THREE.CylinderGeometry(0.27, 0.275, 0.04, 12), frameMat);
footRing.name = 'footRing';
footRing.position.set(0, 0.02, 0);
root.add(footRing);
const can = new THREE.Mesh(new THREE.CylinderGeometry(0.29, 0.26, 0.82, 12, 1, true), bodyMat);
can.name = 'can';
can.position.set(0, 0.45, 0);
root.add(can);
const rib = new THREE.Mesh(new THREE.CylinderGeometry(0.279, 0.279, 0.035, 12), bodyMat);
rib.name = 'rib';
rib.position.set(0, 0.2175, 0);
root.add(rib);
const rib2 = new THREE.Mesh(new THREE.CylinderGeometry(0.2867, 0.2867, 0.035, 12), bodyMat);
rib2.name = 'rib';
rib2.position.set(0, 0.4375, 0);
root.add(rib2);
const rib3 = new THREE.Mesh(new THREE.CylinderGeometry(0.2943, 0.2943, 0.035, 12), bodyMat);
rib3.name = 'rib';
rib3.position.set(0, 0.6575, 0);
root.add(rib3);
const rim = new THREE.Mesh(new THREE.TorusGeometry(0.294, 0.016, 4, 12), frameMat);
rim.name = 'rim';
rim.position.set(0, 0.848, 0);
rim.rotation.set(deg(90), 0, 0);
root.add(rim);
const sideHandle = new THREE.Mesh(torusGeo, frameMat);
sideHandle.name = 'sideHandle';
sideHandle.position.set(-0.2901, 0.72, 0);
sideHandle.rotation.set(deg(90), deg(180), deg(-90));
root.add(sideHandle);
const sideHandle2 = new THREE.Mesh(torusGeo, frameMat);
sideHandle2.name = 'sideHandle';
sideHandle2.position.set(0.2901, 0.72, 0);
sideHandle2.rotation.set(deg(90), 0, deg(-90));
root.add(sideHandle2);
const lid = new THREE.Group();
lid.name = 'lid';
lid.position.set(0, 0.86, 0);
root.add(lid);
const lidRim = new THREE.Mesh(new THREE.CylinderGeometry(0.315, 0.315, 0.04, 12), bodyMat);
lidRim.name = 'lidRim';
lidRim.position.set(0, 0.02, 0);
lid.add(lidRim);
const lidDome = new THREE.Mesh(new THREE.SphereGeometry(0.305, 12, 3, 0, Math.PI * 2, 0, Math.PI / 2), bodyMat);
lidDome.name = 'lidDome';
lidDome.position.set(0, 0.04, 0);
lidDome.scale.set(1, 0.32, 1);
lid.add(lidDome);
const lidHandle = new THREE.Mesh(new THREE.TorusGeometry(0.07, 0.014, 3, 8, Math.PI), frameMat);
lidHandle.name = 'lidHandle';
lidHandle.position.set(0, 0.1276, 0);
lid.add(lidHandle);
root.traverse((o) => {
if (o.isMesh) {
o.castShadow = true;
o.receiveShadow = true;
}
});
return root;
}
export default createTrashBin;
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









