В Three.js примитивы являются фундаментальными строительными блоками для создания 3D-сцен. Среди них особое место занимают PlaneGeometry и CircleGeometry, используемые для построения плоских поверхностей и окружностей. Эти геометрии применяются как в качестве самостоятельных объектов, так и в составе более сложных моделей, например для создания пола, стен, круглых платформ или интерфейсных элементов.
PlaneGeometry представляет собой плоскую прямоугольную поверхность, определяемую шириной и высотой. Основные параметры конструктора:
new THREE.PlaneGeometry(width, height, widthSegments, heightSegments);
Сегменты делят плоскость на сетку, что важно для применения деформаций, текстурирования и анимаций вершин. Чем больше сегментов, тем плавнее будут эффекты и сглаживание при искажениях.
const geometry = new THREE.PlaneGeometry(5, 5, 10, 10);
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00, side: THREE.DoubleSide });
const plane = new THREE.Mesh(geometry, material);
scene.add(plane);
Особенности:
plane.rotation.x = -Math.PI / 2.THREE.DoubleSide позволяет отображать обе стороны
плоскости, что особенно важно при работе с прозрачными или
текстурированными поверхностями.CircleGeometry используется для создания окружностей и дисков. Конструктор:
new THREE.CircleGeometry(radius, segments, thetaStart, thetaLength);
С помощью thetaStart и thetaLength можно
создавать сектора круга или вычурные
сегменты без необходимости модифицировать вершины вручную.
const geometry = new THREE.CircleGeometry(3, 32);
const material = new THREE.MeshBasicMaterial({ color: 0xff0000, side: THREE.DoubleSide });
const circle = new THREE.Mesh(geometry, material);
scene.add(circle);
Особенности:
circle.rotation.x = -Math.PI / 2.MeshBasicMaterial
для простых визуальных элементов и MeshStandardMaterial для
динамического освещения позволяет гибко управлять сценой.scale.set) и вращать (rotation.set) без
изменения самих вершин.Эти геометрии являются базовыми инструментами для построения сцен любой сложности, обеспечивая простоту в управлении вершинами, сегментацией и текстурами, а также гибкость в трансформациях и анимациях. Их грамотное использование позволяет создавать реалистичные поверхности и визуально привлекательные объекты без необходимости строить сложные меши вручную.