Codels
1 тыс. треуг.0,38 × 0,30 × 0,38 m

Использовать в коде

Ремикс в редакторе
Самодостаточный ES-модуль — зависит только от three. Вызовите фабрику и добавьте группу в сцену.
/**
 * 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;

Оценки и комментарии

—
Оценок пока нет — будьте первым.
5
0
4
0
3
0
2
0
1
0

Войдите, чтобы ставить оценки и оставлять комментарии.

0 комментариев

Комментариев пока нет. Расскажите, как вы использовали эту модель или что можно улучшить.

Похожие модели

Та же категория или похожие теги