1 B üçgen0,38 × 0,30 × 0,38 m
Kodda kullan
Editörde remix’lepumpkin.js · 106 satır
Bağımsız bir ES modülü — yalnızca three paketine bağımlıdır. Fabrika fonksiyonunu çağırıp dönen grubu sahnene ekle.
/**
* Pumpkin — Codels 3D model library
* License: CC0-1.0 · Units: meters · Y-up · Front: +Z · Origin: center of the base (y = 0)
* Triangles: 1,004 · Size (W × H × D): 0.38 × 0.30 × 0.38 m
*
* Usage:
* import { createPumpkin } from './pumpkin.js';
*
* const model = createPumpkin();
* model.position.set(0, 0, 0);
* scene.add(model);
*/
import * as THREE from 'three';
const deg = THREE.MathUtils.degToRad;
export function createPumpkin() {
const root = new THREE.Group();
root.name = 'Pumpkin';
// Materials
const skinMat = new THREE.MeshStandardMaterial({ name: 'skin', color: 0xe9711b, roughness: 0.6, flatShading: true });
const coreMat = new THREE.MeshStandardMaterial({ name: 'core', color: 0xc95f12, roughness: 0.7, flatShading: true });
const stemMat = new THREE.MeshStandardMaterial({ name: 'stem', color: 0x6a7a32, roughness: 0.85, flatShading: true });
// Shared geometries
const sphereGeo = new THREE.SphereGeometry(1, 9, 7);
// Parts
const pumpkin = new THREE.Group();
pumpkin.name = 'pumpkin';
pumpkin.scale.setScalar(0.4);
root.add(pumpkin);
const core = new THREE.Mesh(new THREE.SphereGeometry(0.4, 10, 6), coreMat);
core.name = 'core';
core.position.set(0, 0.31, 0);
core.scale.set(1, 0.72, 1);
pumpkin.add(core);
const lobe1 = new THREE.Mesh(sphereGeo, skinMat);
lobe1.name = 'lobe1';
lobe1.position.set(0, 0.31, 0.2);
lobe1.rotation.set(0, deg(-90), 0);
lobe1.scale.set(0.3, 0.31, 0.32);
pumpkin.add(lobe1);
const lobe2 = new THREE.Mesh(sphereGeo, skinMat);
lobe2.name = 'lobe2';
lobe2.position.set(0.1414, 0.31, 0.1414);
lobe2.rotation.set(0, deg(-45), 0);
lobe2.scale.set(0.3, 0.31, 0.32);
pumpkin.add(lobe2);
const lobe3 = new THREE.Mesh(sphereGeo, skinMat);
lobe3.name = 'lobe3';
lobe3.position.set(0.2, 0.31, 0);
lobe3.scale.set(0.3, 0.31, 0.32);
pumpkin.add(lobe3);
const lobe4 = new THREE.Mesh(sphereGeo, skinMat);
lobe4.name = 'lobe4';
lobe4.position.set(0.1414, 0.31, -0.1414);
lobe4.rotation.set(0, deg(45), 0);
lobe4.scale.set(0.3, 0.31, 0.32);
pumpkin.add(lobe4);
const lobe5 = new THREE.Mesh(sphereGeo, skinMat);
lobe5.name = 'lobe5';
lobe5.position.set(0, 0.31, -0.2);
lobe5.rotation.set(0, deg(90), 0);
lobe5.scale.set(0.3, 0.31, 0.32);
pumpkin.add(lobe5);
const lobe6 = new THREE.Mesh(sphereGeo, skinMat);
lobe6.name = 'lobe6';
lobe6.position.set(-0.1414, 0.31, -0.1414);
lobe6.rotation.set(0, deg(135), 0);
lobe6.scale.set(0.3, 0.31, 0.32);
pumpkin.add(lobe6);
const lobe7 = new THREE.Mesh(sphereGeo, skinMat);
lobe7.name = 'lobe7';
lobe7.position.set(-0.2, 0.31, 0);
lobe7.rotation.set(0, deg(180), 0);
lobe7.scale.set(0.3, 0.31, 0.32);
pumpkin.add(lobe7);
const lobe8 = new THREE.Mesh(sphereGeo, skinMat);
lobe8.name = 'lobe8';
lobe8.position.set(-0.1414, 0.31, 0.1414);
lobe8.rotation.set(0, deg(225), 0);
lobe8.scale.set(0.3, 0.31, 0.32);
pumpkin.add(lobe8);
const stem = new THREE.Mesh(new THREE.CylinderGeometry(0.035, 0.055, 0.2, 5), stemMat);
stem.name = 'stem';
stem.position.set(0.005, 0.6518, 0);
stem.rotation.set(deg(8), deg(25), deg(-10));
pumpkin.add(stem);
const stemBase = new THREE.Mesh(new THREE.CylinderGeometry(0.075, 0.05, 0.03, 5), stemMat);
stemBase.name = 'stemBase';
stemBase.position.set(0, 0.573, 0);
pumpkin.add(stemBase);
root.traverse((o) => {
if (o.isMesh) {
o.castShadow = true;
o.receiveShadow = true;
}
});
return root;
}
export default createPumpkin;
Puanlar ve yorumlar
0 yorum
Henüz yorum yok. Bu modeli nasıl kullandığını ya da neyin daha iyi olabileceğini paylaş.
Benzer modeller
Aynı kategori ya da benzer etiketler









