<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современные научные исследования и инновации» &#187; Шакиров Константин Робертович</title>
	<atom:link href="http://web.snauka.ru/issues/author/kost-shakiroff/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Sat, 18 Apr 2026 09:41:14 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Создание 3D моделей с помощью технологии WebGL</title>
		<link>https://web.snauka.ru/issues/2023/11/101076</link>
		<comments>https://web.snauka.ru/issues/2023/11/101076#comments</comments>
		<pubDate>Wed, 01 Nov 2023 10:27:26 +0000</pubDate>
		<dc:creator>Шакиров Константин Робертович</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[three.js]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2023/11/101076</guid>
		<description><![CDATA[Научный руководитель: Вильданов Алмаз Нафкатович к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал Разработка трехмерных моделей с применением технологии WebGL представляет собой актуальное направление в современном веб-программировании, ориентированное на интеграцию высокопроизводительных трехмерных графических изображений в онлайн-среду без необходимости установки дополнительных плагинов. WebGL, или Web Graphics Library, является JavaScript API, предназначенным для рендеринга трехмерной графики в веб-браузерах. Ключевой [...]]]></description>
			<content:encoded><![CDATA[<p style="background: white; text-align: center;"><strong>Научный руководитель: </strong><strong><em>Вильданов Алмаз Нафкатович</em></strong></p>
<p style="background: white; text-align: center;"><span style="color: black;"><em>к.ф.-м.н., </em></span><em>Уфимский университет науки и технологий, Нефтекамский филиал</em></p>
<p style="text-align: justify;"><span>Разработка трехмерных моделей с применением технологии WebGL представляет собой актуальное направление в современном веб-программировании, ориентированное на интеграцию высокопроизводительных трехмерных графических изображений в онлайн-среду без необходимости установки дополнительных плагинов. WebGL, или Web Graphics Library, является JavaScript API, предназначенным для рендеринга трехмерной графики в веб-браузерах. Ключевой характеристикой данной технологии является возможность эффективного использования вычислительных мощностей современных графических процессоров, что обеспечивает выдающиеся результаты в визуализации сложных трехмерных структур.<br />
</span></p>
<p style="text-align: justify;"><span>Актуальность рассматриваемой проблематики обусловлена растущим запросом к интерактивным и визуально насыщенным веб-приложениям, а также стремлением к созданию более реалистичных онлайн-сценариев. При помощи WebGL разработчики получают возможность интегрировать трехмерные модели непосредственно в веб-среду, что находит применение в таких областях, как виртуальная реальность, образование, визуализация продуктов и веб-гейминг.<br />
</span></p>
<p style="text-align: justify;"><span>Для начала работы с трехмерной графикой веб-приложений мы включаем необходимые библиотеки: three.js для создания и управления трехмерными сценами, и OrbitControls.js для обеспечения удобного взаимодействия с камерой в пространстве. Подключение этих модулей может быть выполнено следующим образом:<br />
</span></p>
<p style="text-align: justify;"><span>&lt;script type=&#8221;module&#8221;&gt;<br />
</span></p>
<p style="text-align: justify;"><span> import * as THREE from &#8216;https://threejs.org/build/three.module.js&#8217;;<br />
</span></p>
<p style="text-align: justify;"><span> import { OrbitControls } from &#8216;https://threejs.org/examples/jsm/controls/OrbitControls.js&#8217;;<br />
</span></p>
<p style="text-align: justify;"><span>&lt;/script&gt;<br />
</span></p>
<p style="text-align: justify;"><span>Модуль three.js представляет собой мощный инструментарий для работы с трехмерной графикой в веб-среде. Его функционал включает в себя создание и управление объектами, работу с материалами, светом и многими другими аспектами трехмерной визуализации. Модуль OrbitControls предоставляет возможность управления положением камеры и наблюдения за объектами на сцене из различных углов. Библиотеки можно загрузить с официального сайта threejs.org.<br />
</span></p>
<p style="text-align: justify;"><span>Работа с трехмерной графикой веб-приложений с использованием Three.js разделяется на несколько этапов:<br />
</span></p>
<ul>
<li><span style="text-align: justify;">Создание сцены: Инициализация трехмерной сцены, на которой будут размещаться объекты.</span></li>
<li><span style="text-align: justify;">Создание камеры: Определение камеры, через которую будет производиться наблюдение за сценой.</span></li>
<li><span style="text-align: justify;">Настройка света: Добавление и настройка источников света, обеспечивающих освещение сцены.</span></li>
<li><span style="text-align: justify;">Добавление объектов: Размещение трехмерных объектов на сцене, таких как графические модели или геометрические формы.</span></li>
<li><span style="text-align: justify;">Создание объекта визуализации: Инициализация объекта, который будет отвечать за визуализацию сцены в указанном контейнере.</span></li>
<li><span style="text-align: justify;">Рендеринг (визуализация): Отображение сцены на веб-странице с использованием камеры и света.</span></li>
</ul>
<p style="text-align: justify;"><span><strong>Создание сцены.<br />
</strong></span></p>
<p style="text-align: justify;"><span>Создаем глобальную переменную scene, которая будет представлять трехмерную сцену в нашем веб-приложении, используя библиотеку three.js. Сцена служит контейнером для всех трехмерных объектов, которые мы хотим отобразить.<br />
</span></p>
<p style="text-align: justify;"><span>var scene;<br />
</span></p>
<p style="text-align: justify;"><span>scene = new THREE.Scene();<br />
</span></p>
<p style="text-align: justify;"><span>Для добавления объектов на сцену или удаления их со сцены, мы будем использовать методы add и remove.<br />
</span></p>
<p style="text-align: justify;"><span>scene.add( object ); scene.remove( object );<br />
</span></p>
<p style="text-align: justify;"><span><strong>Создание камеры.<br />
</strong></span></p>
<p style="text-align: justify;"><span>Для создания трехмерной визуализации веб-приложений в библиотеке three.js, мы объявляем глобальную переменную camera, представляющую перспективную камеру. Перспективная камера в данном контексте воспринимает объекты сцены в соответствии с перспективной проекцией, где удаленные объекты кажутся меньше.<br />
</span></p>
<p style="text-align: justify;"><span>var camera;<br />
</span></p>
<p style="text-align: justify;"><span>camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 1000 );<br />
</span></p>
<p style="text-align: justify;"><span>Инициализация камеры происходит с использованием нескольких параметров: угла обзора (FOV), соотношения сторон экрана (aspect ratio) и диапазона расстояний, которые подлежат рендерингу.<br />
</span></p>
<p style="text-align: justify;"><span>Для удобства манипуляции с трехмерной сценой мы интегрируем контроллер OrbitControls. Этот контроллер позволяет изменять точку обзора, масштабировать и вращать сцену с использованием мыши.<br />
</span></p>
<p style="text-align: justify;"><span>var controls;<br />
</span></p>
<p style="text-align: justify;"><span>controls = new OrbitControls( camera, renderer.domElement );<br />
</span></p>
<p style="text-align: justify;"><span>Эти шаги предоставляют нам не только создание и настройку камеры, но и обеспечивают возможность взаимодействия с трехмерной сценой в веб-приложении, придавая пользовательскому опыту уровень интерактивности и удобства.<br />
</span></p>
<p style="text-align: justify;"><span><strong>Настройка света.<br />
</strong></span></p>
<p style="text-align: justify;"><span>Для достижения более реалистичной визуализации в сцене веб-приложения в библиотеке three.js, мы прибегаем к использованию источника света. Одним из эффективных средств для этой цели является класс DirectionalLight, который моделирует прямое направленное освещение, аналогичное солнечным лучам.<br />
</span></p>
<p style="text-align: justify;"><span>Мы предварительно объявляем глобальную переменную light для представления источника света в сцене. Создание источника света выполняется с использованием следующих параметров:<br />
</span></p>
<p style="text-align: justify;"><span>light = new THREE.DirectionalLight( 0xFFFFFF, 1.0 );<br />
</span></p>
<p style="text-align: justify;"><span>light.position.set( 1, 1, 1 );<br />
</span></p>
<p style="text-align: justify;"><span>scene.add( light );<br />
</span></p>
<p style="text-align: justify;"><span>Здесь мы указываем цвет света в формате HEX (обычно белый), а также его интенсивность. Задаем позицию света в трехмерных координатах, где (1, 1, 1) соответствует направлению солнечных лучей.<br />
</span></p>
<p style="text-align: justify;"><span>Таким образом, добавление источника света обогащает визуальный опыт, обеспечивая более естественное освещение объектов на сцене в веб-приложении.<br />
</span></p>
<p style="text-align: justify;"><span><strong>Рендеринг и добавление объектов.<br />
</strong></span></p>
<p style="text-align: justify;"><span>Для визуализации трехмерной сцены и ее объектов в библиотеке Three.js привлекается специализированный класс WebGLRenderer. Необходимо выделить переменные для хранения экземпляра этого класса и DOM-элемента, который будет использоваться для его функционирования:<br />
</span></p>
<p style="text-align: justify;"><span>var renderer, container;<br />
</span></p>
<p style="text-align: justify;"><span>В дальнейшем создается раздел div, служащий контейнером на веб-странице:<br />
</span></p>
<p style="text-align: justify;"><span>var container = document.createElement(&#8216;div&#8217;);<br />
</span></p>
<p style="text-align: justify;"><span>document.body.appendChild(container);<br />
</span></p>
<p style="text-align: justify;"><span>Инициализация рендерера осуществляется следующим образом:<br />
</span></p>
<p style="text-align: justify;"><span>renderer = new THREE.WebGLRenderer();<br />
</span></p>
<p style="text-align: justify;"><span>Вместе с рендерером создается холст (canvas), который, по умолчанию, имеет размеры 300&#215;150 пикселей. Метод setSize предоставляет возможность изменить размеры холста, приведем его, например, к размерам окна:<br />
</span></p>
<p style="text-align: justify;"><span>renderer.setSize(window.innerWidth, window.innerHeight);<br />
</span></p>
<p style="text-align: justify;"><span>Затем необходимо указать визуализатору (renderer), где следует поместить созданный холст:<br />
</span></p>
<p style="text-align: justify;"><span>container.appendChild(renderer.domElement);<br />
</span></p>
<p style="text-align: justify;"><span>Рендеринг (отрисовка) производится с помощью созданного объекта renderer. Для этого у него есть метод render, в параметрах которого указываются сцена и камера:<br />
</span></p>
<p style="text-align: justify;"><span>renderer.render( scene, camera );<br />
</span></p>
<p style="text-align: justify;"><span>Добавление объектов производится следующим образом. Сначала объявляется вид геометрии объекта.<br />
</span></p>
<p style="text-align: justify;"><span>var radiusTop = 0; var radiusBottom = 128;<br />
</span></p>
<p style="text-align: justify;"><span>var heigth = 200; var segments = 3;<br />
</span></p>
<p style="text-align: justify;"><span>var geometry = new THREE.CylinderGeometry( radiusTop, radiusBottom, heigth, segments );<br />
</span></p>
<p style="text-align: justify;"><span>Параметры геометрии цилиндра. radiusTop &#8211; радиус верхней части в данном случае 0 и получится пирамида, radiusBottom &#8211; радиус нижней части, height &#8211; высота цилиндра, segments &#8211; количество сегментов (частей), из которых состоит цилиндр.<br />
</span></p>
<p style="text-align: justify;"><span>var material = new THREE.MeshPhongMaterial({ color: 0xff0000 });<br />
</span></p>
<p style="text-align: justify;"><span>Создается материал для пирамиды. В данном случае, цвет материала установлен в красный (код цвета 0xff0000).<br />
</span></p>
<p style="text-align: justify;"><span>var piramida = new THREE.Mesh(geometry, material);<br />
</span></p>
<p style="text-align: justify;"><span>Создается объект Mesh (сетка), который представляет собой геометрию и материал.<br />
</span></p>
<p style="text-align: justify;"><span>piramida.position.set(-300, 100, 350);<br />
</span></p>
<p style="text-align: justify;"><span>Устанавливается позиция пирамиды в трехмерном пространстве. Здесь пирамида размещается в точке (-300, 100, 350).<br />
</span></p>
<p style="text-align: justify;"><span>scene.add(piramida);<br />
</span></p>
<p style="text-align: justify;"><span>Пирамида добавляется на сцену (рис. 1).<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2023/12/120123_1028_3D1.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рис. 1. Пирамида<br />
</span></p>
<p style="text-align: justify;"><span>Технология WebGL представляет собой мощный инструмент для визуализации трехмерной графики в веб-браузерах без необходимости использования дополнительных плагинов. В заключение можно выделить несколько ключевых моментов, отражающих важность и перспективы использования WebGL:<br />
</span></p>
<p style="text-align: justify;"><span>Мощность и Производительность: WebGL использует аппаратное ускорение графики на устройствах пользователя, что обеспечивает высокую производительность и качественное отображение трехмерных сцен.<br />
</span></p>
<p style="text-align: justify;"><span>Кросс-платформенность: WebGL поддерживается большинством современных веб-браузеров, что обеспечивает кросс-платформенность и доступность для широкого круга пользователей.<br />
</span></p>
<p style="text-align: justify;"><span>Визуализация и Интерактивность: Технология позволяет создавать впечатляющие веб-приложения с высококачественной трехмерной графикой, анимацией и возможностью взаимодействия пользователя с контентом.<br />
</span></p>
<p style="text-align: justify;"><span>Расширенные Возможности: WebGL служит основой для множества библиотек и фреймворков, таких как Three.js, Babylon.js и других, упрощающих процесс разработки и повышающих функциональные возможности.<br />
</span></p>
<p style="text-align: justify;"><span>Обучение и Развитие: Технология находит применение в образовании, где она используется для создания интерактивных обучающих приложений, а также в сферах развлечений, архитектуры, медицины и других областях.<br />
</span></p>
<p style="text-align: justify;"><span>Таким образом, WebGL представляет собой важный инструмент для разработчиков, расширяя возможности веб-технологий и обеспечивая пользователей более увлекательным и интерактивным онлайн-опытом.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2023/11/101076/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
