Встроенные геометрии

Не нужно лепить формы вручную — в Three.js десятки готовых геометрий. Разбираем самые ходовые.

Встроенные геометрии задают форму парой-тройкой чисел: размеры и сегментацию (насколько форма детализирована).

Базовый набор

ГеометрияФормаГлавные параметры
BoxGeometryпараллелепипедwidth, height, depth
SphereGeometryсфераradius, widthSegments, heightSegments
PlaneGeometryплоскость (пол, стена)width, height
CylinderGeometryцилиндр / конусradiusTop, radiusBottom, height
TorusGeometry«бублик»radius, tube

Как создавать

const box = new THREE.BoxGeometry(2, 1, 1);          // ширина, высота, глубина
const sphere = new THREE.SphereGeometry(1, 32, 16);  // радиус, сегменты по ширине/высоте
const floor = new THREE.PlaneGeometry(10, 10);       // пол 10x10
const cyl = new THREE.CylinderGeometry(0.5, 0.5, 2); // верх, низ, высота

Сегментация: гладкость против нагрузки

Сфера на самом деле собрана из плоских треугольников. Чем больше сегментов, тем больше треугольников и тем круглее она выглядит. Но за это платит видеокарта. Грубая сфера с 8 сегментами похожа на гранёный кристалл, а с 64 — на идеальный шар, зато треугольников в ней в разы больше.

Прикинем, как растёт число треугольников у сферы при росте сегментации. Для UV-сферы их примерно 2 × widthSegments × (heightSegments − 1).

function triCount(w, h) {
  return 2 * w * (h - 1);
}

console.log('Грубая 8x6:', triCount(8, 6), 'треуг.');
console.log('Средняя 32x16:', triCount(32, 16), 'треуг.');
console.log('Гладкая 64x32:', triCount(64, 32), 'треуг.');

Вывод:

Грубая 8x6: 80 треуг.
Средняя 32x16: 960 треуг.
Гладкая 64x32: 3968 треуг.

Вывод практический: детализацию подбирают под размер объекта на экране. Для главного героя в центре — высокая, для фоновых шариков — низкая.

Когда геометрий не хватает

Встроенные формы хороши для прототипов и простых сцен. Для сложных объектов — персонажей, мебели, машин — формы делают в редакторах (Blender) и загружают как модели через GLTFLoader. Об этом в пятом разделе.

Итог

  • Box, Sphere, Plane, Cylinder, Torus — рабочий набор на каждый день.
  • Сегменты задают гладкость ценой числа треугольников.
  • Детализацию подбирают под размер объекта на экране.
Проверьте себя
1. За что отвечают параметры сегментации, например widthSegments у сферы?
AЗа детализацию формы — сколько треугольников; больше сегментов = глаже, но тяжелее
BЗа цвет сферы
CЗа скорость вращения
DЗа положение в сцене
2. Какую геометрию удобно взять для пола или земли?
ABoxGeometry
BPlaneGeometry
CSphereGeometry
DTorusGeometry
3. Сколько сегментов разумно ставить сфере на заднем плане?
AКак можно больше, чтобы было красиво
BРовно 1000
CПоменьше: издалека лишние треугольники не видны, но грузят GPU
DСегменты не влияют ни на что