ПРИМЕНЕНИЕ БИБЛИОТЕКИ THREE.JS ДЛЯ ВИЗУАЛИЗАЦИИ ПРОСТЫХ ТРЁХМЕРНЫХ ГЕОМЕТРИЧЕСКИХ ОБЪЕКТОВ В ВЕБ-СРЕДЕ

Давлетзянов Демид Владимирович
Нефтекамский филиал Уфимского Университета Науки и Технологий
студент 4 курса, Факультет экономико-математический

Аннотация
В статье рассматривается подход к созданию интерактивной трёхмерной визуализации простых геометрических объектов в браузерной среде с использованием библиотеки Three.js. В качестве примера реализована модель простого креста, сформированного из примитивов типа BoxGeometry. Описывается архитектура приложения, принципы построения сцены, настройки камеры и освещения, а также использование пользовательских средств управления. Показано, что Three.js является эффективным инструментом для разработки наглядных 3D-моделей в образовательных и прикладных задачах.

Ключевые слова: , , , , ,


Рубрика: 05.00.00 ТЕХНИЧЕСКИЕ НАУКИ

Библиографическая ссылка на статью:
Давлетзянов Д.В. Применение библиотеки Three.js для визуализации простых трёхмерных геометрических объектов в веб-среде // Современные научные исследования и инновации. 2025. № 12 [Электронный ресурс]. URL: https://web.snauka.ru/issues/2025/12/104046 (дата обращения: 09.04.2026).

Научный руководитель: Вильданов Алмаз Нафкатович
к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал

Введение. Развитие веб-технологий привело к возможности использования трёхмерной графики непосредственно в интернет-браузерах. Стандарт WebGL обеспечивает доступ к аппаратному ускорению графики, однако его использование требует глубоких знаний в области компьютерной графики. В связи с этим широкое распространение получили высокоуровневые библиотеки, упрощающие процесс создания 3D-сцен.
Одной из наиболее популярных библиотек является Three.js, предоставляющая удобные средства для создания и визуализации трёхмерных объектов. Целью данной работы является демонстрация применения библиотеки Three.js для визуализации простого геометрического объекта и анализа основных этапов построения трёхмерной сцены.
Для реализации трёхмерной визуализации были использованы следующие технологии:

  1. Язык гипертекстовой разметки HTML5;
  2. Язык программирования JavaScript;
  3. Библиотека Three.js версии r128;
  4. Графический API WebGL;
  5. Модуль OrbitControls для управления камерой.

Использование CDN-подключений позволяет обеспечить корректную работу приложения на различных платформах без дополнительной установки программного обеспечения.

Приложение построено по классической архитектуре Three.js и включает следующие основные элементы:

  1. Сцену (THREE.Scene), содержащую все объекты визуализации;
  2. Перспективную камеру (THREE.PerspectiveCamera);
  3. Рендерер (THREE.WebGLRenderer), осуществляющий вывод изображения;
  4. Источники освещения;
  5. Трёхмерную модель объекта;
  6. Средства пользовательского управления камерой.

Подобная структура обеспечивает модульность и возможность дальнейшего расширения функциональности.

Построение трёхмерной модели. Модель креста формируется из двух параллелепипедов, созданных с использованием класса BoxGeometry. Вертикальный элемент имеет размеры 6×60×3, горизонтальный — 40×6×3 и смещён относительно центра по оси Y.
Для объединения элементов используется объект THREE.Group, позволяющий рассматривать модель как единое целое. В качестве материала применяется MeshPhongMaterial, обеспечивающий корректное освещение и визуальное восприятие формы объекта.

Освещение сцены реализовано с помощью двух источников света: рассеянного (AmbientLight) и направленного (DirectionalLight). Такое сочетание позволяет добиться равномерной освещённости и визуального подчёркивания формы объекта.
Для управления камерой используется модуль OrbitControls, обеспечивающий вращение сцены, масштабирование и плавное перемещение точки наблюдения. Это повышает интерактивность и удобство работы с трёхмерной моделью.

HTML код приложения:

<!DOCTYPE html>

<html lang=”ru”>

<head>

    <title>three.js — Простой крест</title>

    <meta charset=”utf-8″>

    <meta name=”viewport” content=”width=device-width, initial-scale=1.0″>

</head>

<body>

<div id=”info”>Простой крест</div>

<script src=”https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js”></script>

<script src=”https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/controls/OrbitControls.min.js”></script>

<script>

    var camera, scene, renderer;

    var controls;

    init();

    animate();

    function init() {

        scene = new THREE.Scene();

        scene.background = new THREE.Color(0xf0f0f0);

        camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000);

        camera.position.set(0, 0, 100);

        renderer = new THREE.WebGLRenderer({ antialias: true });

        renderer.setSize(window.innerWidth, window.innerHeight);

        document.body.appendChild(renderer.domElement);

        var ambientLight = new THREE.AmbientLight(0xffffff, 0.6);

        scene.add(ambientLight);

        var directionalLight = new THREE.DirectionalLight(0xffffff, 0.8);

        directionalLight.position.set(1, 1, 1);

        scene.add(directionalLight);

        createSimpleCross();

        controls = new THREE.OrbitControls(camera, renderer.domElement);

        controls.enableDamping = true;

        controls.dampingFactor = 0.05;

        window.addEventListener(‘resize’, onWindowResize, false);

    }

    function createSimpleCross() {

        var group = new THREE.Group();

        var verticalGeometry = new THREE.BoxGeometry(6, 60, 3);

        var verticalMaterial = new THREE.MeshPhongMaterial({ color: 0xffff00 });

        var vertical = new THREE.Mesh(verticalGeometry, verticalMaterial);

        group.add(vertical);

        var horizontalGeometry = new THREE.BoxGeometry(40, 6, 3);

        var horizontalMaterial = new THREE.MeshPhongMaterial({ color: 0xffff00 });

        var horizontal = new THREE.Mesh(horizontalGeometry, horizontalMaterial);

        horizontal.position.y = 8;

        group.add(horizontal);

        scene.add(group);

    }

    function onWindowResize() {

        camera.aspect = window.innerWidth / window.innerHeight;

        camera.updateProjectionMatrix();

        renderer.setSize(window.innerWidth, window.innerHeight);

    }

    function animate() {

        requestAnimationFrame(animate);

        controls.update();

        renderer.render(scene, camera);

    }

</script>

</body>

</html>


В результате выполнения программы в браузере отображается интерактивная трёхмерная модель простого креста. Пользователь может изменять ракурс обзора и масштаб, что позволяет детально рассмотреть объект с различных сторон.


Рисунок 1. Интерактивная трёхмерная модель простого креста

Полученные результаты подтверждают, что библиотека Three.js является эффективным инструментом для визуализации простых и сложных трёхмерных объектов в веб-приложениях, включая образовательные и демонстрационные системы.

Заключение. В работе рассмотрен пример использования библиотеки Three.js для создания интерактивной трёхмерной визуализации. Показано, что применение высокоуровневых средств позволяет существенно упростить процесс разработки 3D-графики в веб-среде. Рассмотренный пример может служить основой для дальнейших исследований и разработки более сложных визуальных моделей.


Библиографический список
  1. Cabello R. Three.js documentation [Электронный ресурс]. — Режим доступа: https://threejs.org (дата обращения: 27.12.2025).
  2. Khronos Group. WebGL Specification [Электронный ресурс]. — Режим доступа: https://www.khronos.org/webgl (дата обращения: 27.12.2025).
  3. Dirksen J. Learning Three.js: The JavaScript 3D Library for WebGL. — Birmingham: Packt Publishing, 2018. — 432 p.


Все статьи автора «Давлетзянов Демид Владимирович»


© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте.