СОЗДАНИЕ 3D МОДЕЛЕЙ С ПОМОЩЬЮ ТЕХНОЛОГИИ WEBGL

Шакиров Константин Робертович
Уфимский университет науки и технологий, Нефтекамский филиал
студент 5 курса, Факультет экономико-математический

Аннотация
В статье рассматривается технология WebGL, которая позволяет создавать трехмерную графику в веб-браузерах без необходимости использования дополнительных плагинов. Технология основана на аппаратном ускорении графики на устройствах пользователя, что обеспечивает высокую производительность и качественное отображение трехмерных сцен. WebGL поддерживается большинством современных веб-браузеров, что обеспечивает кросс-платформенность и доступность для широкого круга пользователей. В статье подробно описывается процесс создания трехмерной сцены с использованием технологии WebGL. Рассматриваются основные этапы работы: создание сцены, камеры, источника света, объектов и рендеринга. На примере создания простой пирамиды демонстрируется применение основных принципов работы с WebGL. В заключение статьи приводятся ключевые моменты, отражающие важность и перспективы использования WebGL.

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


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

Библиографическая ссылка на статью:
Шакиров К.Р. Создание 3D моделей с помощью технологии WebGL // Современные научные исследования и инновации. 2023. № 11 [Электронный ресурс]. URL: https://web.snauka.ru/issues/2023/11/101076 (дата обращения: 18.04.2024).

Научный руководитель: Вильданов Алмаз Нафкатович

к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал

Разработка трехмерных моделей с применением технологии WebGL представляет собой актуальное направление в современном веб-программировании, ориентированное на интеграцию высокопроизводительных трехмерных графических изображений в онлайн-среду без необходимости установки дополнительных плагинов. WebGL, или Web Graphics Library, является JavaScript API, предназначенным для рендеринга трехмерной графики в веб-браузерах. Ключевой характеристикой данной технологии является возможность эффективного использования вычислительных мощностей современных графических процессоров, что обеспечивает выдающиеся результаты в визуализации сложных трехмерных структур.

Актуальность рассматриваемой проблематики обусловлена растущим запросом к интерактивным и визуально насыщенным веб-приложениям, а также стремлением к созданию более реалистичных онлайн-сценариев. При помощи WebGL разработчики получают возможность интегрировать трехмерные модели непосредственно в веб-среду, что находит применение в таких областях, как виртуальная реальность, образование, визуализация продуктов и веб-гейминг.

Для начала работы с трехмерной графикой веб-приложений мы включаем необходимые библиотеки: three.js для создания и управления трехмерными сценами, и OrbitControls.js для обеспечения удобного взаимодействия с камерой в пространстве. Подключение этих модулей может быть выполнено следующим образом:

<script type=”module”>

import * as THREE from ‘https://threejs.org/build/three.module.js’;

import { OrbitControls } from ‘https://threejs.org/examples/jsm/controls/OrbitControls.js’;

</script>

Модуль three.js представляет собой мощный инструментарий для работы с трехмерной графикой в веб-среде. Его функционал включает в себя создание и управление объектами, работу с материалами, светом и многими другими аспектами трехмерной визуализации. Модуль OrbitControls предоставляет возможность управления положением камеры и наблюдения за объектами на сцене из различных углов. Библиотеки можно загрузить с официального сайта threejs.org.

Работа с трехмерной графикой веб-приложений с использованием Three.js разделяется на несколько этапов:

  • Создание сцены: Инициализация трехмерной сцены, на которой будут размещаться объекты.
  • Создание камеры: Определение камеры, через которую будет производиться наблюдение за сценой.
  • Настройка света: Добавление и настройка источников света, обеспечивающих освещение сцены.
  • Добавление объектов: Размещение трехмерных объектов на сцене, таких как графические модели или геометрические формы.
  • Создание объекта визуализации: Инициализация объекта, который будет отвечать за визуализацию сцены в указанном контейнере.
  • Рендеринг (визуализация): Отображение сцены на веб-странице с использованием камеры и света.

Создание сцены.

Создаем глобальную переменную scene, которая будет представлять трехмерную сцену в нашем веб-приложении, используя библиотеку three.js. Сцена служит контейнером для всех трехмерных объектов, которые мы хотим отобразить.

var scene;

scene = new THREE.Scene();

Для добавления объектов на сцену или удаления их со сцены, мы будем использовать методы add и remove.

scene.add( object ); scene.remove( object );

Создание камеры.

Для создания трехмерной визуализации веб-приложений в библиотеке three.js, мы объявляем глобальную переменную camera, представляющую перспективную камеру. Перспективная камера в данном контексте воспринимает объекты сцены в соответствии с перспективной проекцией, где удаленные объекты кажутся меньше.

var camera;

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

Инициализация камеры происходит с использованием нескольких параметров: угла обзора (FOV), соотношения сторон экрана (aspect ratio) и диапазона расстояний, которые подлежат рендерингу.

Для удобства манипуляции с трехмерной сценой мы интегрируем контроллер OrbitControls. Этот контроллер позволяет изменять точку обзора, масштабировать и вращать сцену с использованием мыши.

var controls;

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

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

Настройка света.

Для достижения более реалистичной визуализации в сцене веб-приложения в библиотеке three.js, мы прибегаем к использованию источника света. Одним из эффективных средств для этой цели является класс DirectionalLight, который моделирует прямое направленное освещение, аналогичное солнечным лучам.

Мы предварительно объявляем глобальную переменную light для представления источника света в сцене. Создание источника света выполняется с использованием следующих параметров:

light = new THREE.DirectionalLight( 0xFFFFFF, 1.0 );

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

scene.add( light );

Здесь мы указываем цвет света в формате HEX (обычно белый), а также его интенсивность. Задаем позицию света в трехмерных координатах, где (1, 1, 1) соответствует направлению солнечных лучей.

Таким образом, добавление источника света обогащает визуальный опыт, обеспечивая более естественное освещение объектов на сцене в веб-приложении.

Рендеринг и добавление объектов.

Для визуализации трехмерной сцены и ее объектов в библиотеке Three.js привлекается специализированный класс WebGLRenderer. Необходимо выделить переменные для хранения экземпляра этого класса и DOM-элемента, который будет использоваться для его функционирования:

var renderer, container;

В дальнейшем создается раздел div, служащий контейнером на веб-странице:

var container = document.createElement(‘div’);

document.body.appendChild(container);

Инициализация рендерера осуществляется следующим образом:

renderer = new THREE.WebGLRenderer();

Вместе с рендерером создается холст (canvas), который, по умолчанию, имеет размеры 300×150 пикселей. Метод setSize предоставляет возможность изменить размеры холста, приведем его, например, к размерам окна:

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

Затем необходимо указать визуализатору (renderer), где следует поместить созданный холст:

container.appendChild(renderer.domElement);

Рендеринг (отрисовка) производится с помощью созданного объекта renderer. Для этого у него есть метод render, в параметрах которого указываются сцена и камера:

renderer.render( scene, camera );

Добавление объектов производится следующим образом. Сначала объявляется вид геометрии объекта.

var radiusTop = 0; var radiusBottom = 128;

var heigth = 200; var segments = 3;

var geometry = new THREE.CylinderGeometry( radiusTop, radiusBottom, heigth, segments );

Параметры геометрии цилиндра. radiusTop – радиус верхней части в данном случае 0 и получится пирамида, radiusBottom – радиус нижней части, height – высота цилиндра, segments – количество сегментов (частей), из которых состоит цилиндр.

var material = new THREE.MeshPhongMaterial({ color: 0xff0000 });

Создается материал для пирамиды. В данном случае, цвет материала установлен в красный (код цвета 0xff0000).

var piramida = new THREE.Mesh(geometry, material);

Создается объект Mesh (сетка), который представляет собой геометрию и материал.

piramida.position.set(-300, 100, 350);

Устанавливается позиция пирамиды в трехмерном пространстве. Здесь пирамида размещается в точке (-300, 100, 350).

scene.add(piramida);

Пирамида добавляется на сцену (рис. 1).


Рис. 1. Пирамида

Технология WebGL представляет собой мощный инструмент для визуализации трехмерной графики в веб-браузерах без необходимости использования дополнительных плагинов. В заключение можно выделить несколько ключевых моментов, отражающих важность и перспективы использования WebGL:

Мощность и Производительность: WebGL использует аппаратное ускорение графики на устройствах пользователя, что обеспечивает высокую производительность и качественное отображение трехмерных сцен.

Кросс-платформенность: WebGL поддерживается большинством современных веб-браузеров, что обеспечивает кросс-платформенность и доступность для широкого круга пользователей.

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

Расширенные Возможности: WebGL служит основой для множества библиотек и фреймворков, таких как Three.js, Babylon.js и других, упрощающих процесс разработки и повышающих функциональные возможности.

Обучение и Развитие: Технология находит применение в образовании, где она используется для создания интерактивных обучающих приложений, а также в сферах развлечений, архитектуры, медицины и других областях.

Таким образом, WebGL представляет собой важный инструмент для разработчиков, расширяя возможности веб-технологий и обеспечивая пользователей более увлекательным и интерактивным онлайн-опытом.


Библиографический список
  1. Вильданов А.Н., Шафеева Е.П. Построение объектов двумерной графики в HTML5 с помощью canvas / А. Н. Вильданов, Е. П. Шафеева // Информатика в школе. – 2015. – № 4 (107). – С. 24-28. – ISSN 2221-1993.
  2. Вильданов А.Н. 3D-моделирование на WebGL с помощью библиотеки Three.js: учебное пособие. – Уфа: РИЦ БашГУ, 2014. – 114 с. – ISBN: 987-5-7477-3560-6.
  3. Хусаинова К.И., Вильданов А.Н. Моделирование трехмерных фигур с помощью WebGL // Сб.: Достижения и приложения современной информатики, математики и физики: Материалы Всероссийской науч.-практ. конф. – Уфа: РИЦ БашГУ, 2018. – С. 526-533.
  4. Герасимова Т.В. Веб и 3D-графика // Изв. СПбГЭТУ ЭТИ». 2018. № 7. – C. 13-26.
  5. Филинских А.Д., Корсаков К.С. Загрузка моделей в технологии WebGL // Кограф-2018: сб. материалов 28-й Всерос. науч.-практ. конф. по графическим информационным технологиям и системам / Нижегород. гос. техн. ун-т им. Р.Е. Алексеева. – Нижний Новгород, 2018. – С. 125-129.
  6. Three.js – JavaScript 3D library [Электронный ресурс] / Mr.doob. – Электрон. текстовые дан. – Режим доступа: http://threejs.org, свободный. – Загл. с экрана.


Количество просмотров публикации: Please wait

Все статьи автора «Шакиров Константин Робертович»


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

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

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

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться:
  • Регистрация