Files
computer-graphics/lab1/report.tex

1005 lines
67 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass[a4paper, final]{article}
%\usepackage{literat} % Нормальные шрифты
\usepackage[14pt]{extsizes} % для того чтобы задать нестандартный 14-ый размер шрифта
\usepackage{tabularx}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage{amsmath}
\usepackage[left=25mm, top=20mm, right=20mm, bottom=20mm, footskip=10mm]{geometry}
\usepackage{ragged2e} %для растягивания по ширине
\usepackage{setspace} %для межстрочно го интервала
\usepackage{moreverb} %для работы с листингами
\usepackage{indentfirst} % для абзацного отступа
\usepackage{moreverb} %для печати в листинге исходного кода программ
\usepackage{pdfpages} %для вставки других pdf файлов
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{afterpage}
\usepackage{longtable}
\usepackage{float}
\usepackage{graphicx}
\usepackage{subcaption}
% \usepackage[paper=A4,DIV=12]{typearea}
\usepackage{pdflscape}
% \usepackage{lscape}
\usepackage{array}
\usepackage{multirow}
\renewcommand\verbatimtabsize{4\relax}
\renewcommand\listingoffset{0.2em} %отступ от номеров строк в листинге
\renewcommand{\arraystretch}{1.4} % изменяю высоту строки в таблице
\usepackage[font=small, singlelinecheck=false, justification=centering, format=plain, labelsep=period]{caption} %для настройки заголовка таблицы
\usepackage{listings} %листинги
\usepackage{xcolor} % цвета
\usepackage{hyperref}% для гиперссылок
\usepackage{enumitem} %для перечислений
\newcommand{\specialcell}[2][l]{\begin{tabular}[#1]{@{}l@{}}#2\end{tabular}}
\setlist[enumerate,itemize]{leftmargin=1.2cm} %отступ в перечислениях
\hypersetup{colorlinks,
allcolors=[RGB]{010 090 200}} %красивые гиперссылки (не красные)
% подгружаемые языки — подробнее в документации listings (это всё для листингов)
\lstloadlanguages{ SQL}
% включаем кириллицу и добавляем кое−какие опции
\lstset{tabsize=2,
breaklines,
basicstyle=\footnotesize,
columns=fullflexible,
flexiblecolumns,
numbers=left,
numberstyle={\footnotesize},
keywordstyle=\color{blue},
inputencoding=cp1251,
extendedchars=true
}
\lstdefinelanguage{MyC}{
language=SQL,
% ndkeywordstyle=\color{darkgray}\bfseries,
% identifierstyle=\color{black},
% morecomment=[n]{/**}{*/},
% commentstyle=\color{blue}\ttfamily,
% stringstyle=\color{red}\ttfamily,
% morestring=[b]",
% showstringspaces=false,
% morecomment=[l][\color{gray}]{//},
keepspaces=true,
escapechar=\%,
texcl=true
}
\textheight=24cm % высота текста
\textwidth=16cm % ширина текста
\oddsidemargin=0pt % отступ от левого края
\topmargin=-1.5cm % отступ от верхнего края
\parindent=24pt % абзацный отступ
\parskip=5pt % интервал между абзацами
\tolerance=2000 % терпимость к "жидким" строкам
\flushbottom % выравнивание высоты страниц
% Настройка листингов
\lstset{
language=C++,
extendedchars=\true,
inputencoding=utf8,
keepspaces=true,
% captionpos=b, % подписи листингов снизу
}
\begin{document} % начало документа
% НАЧАЛО ТИТУЛЬНОГО ЛИСТА
\begin{center}
\hfill \break
\hfill \break
\normalsize{МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ\\
федеральное государственное автономное образовательное учреждение высшего образования «Санкт-Петербургский политехнический университет Петра Великого»\\[10pt]}
\normalsize{Институт компьютерных наук и кибербезопасности}\\[10pt]
\normalsize{Высшая школа технологий искусственного интеллекта}\\[10pt]
\normalsize{Направление: 02.03.01 <<Математика и компьютерные науки>>}\\
\hfill \break
\hfill \break
\hfill \break
\hfill \break
\large{Лабораторная работа №1}\\
\large{<<Изучение технологии создания реалистического объекта в среде Blender 3D>>}\\
\large{по дисциплине}\\
\large{<<Комьютерная графика>>}\\
% \hfill \break
% \hfill \break
\hfill \break
\end{center}
\small{
\begin{tabular}{lrrl}
\!\!\!Студент, & \hspace{2cm} & & \\
\!\!\!группы 5130201/20102 & \hspace{2cm} & \underline{\hspace{3cm}} &Тищенко А. А. \\\\
\!\!\!Преподаватель & \hspace{2cm} & \underline{\hspace{3cm}} & Курочкин М. А. \\\\
&&\hspace{4cm}
\end{tabular}
\begin{flushright}
<<\underline{\hspace{1cm}}>>\underline{\hspace{2.5cm}} 2025г.
\end{flushright}
}
\hfill \break
% \hfill \break
\begin{center} \small{Санкт-Петербург, 2025} \end{center}
\thispagestyle{empty} % выключаем отображение номера для этой страницы
% КОНЕЦ ТИТУЛЬНОГО ЛИСТА
\newpage
\tableofcontents
\newpage
\section*{Введение}
\addcontentsline{toc}{section}{Введение}
3D-моделирование — это процесс создания трёхмерной модели объекта.
В современном мире 3D-моделирование играет важную роль. Трёхмерная компьютерная графика позволяет создавать максимально реалистичные модели объекта. Сегодня 3D-моделирование используется в проектировании зданий, в ландшафтном дизайне, дизайне интерьеров, а также в компьютерных играх и программах, в
промышленности и медицине, а также во многих других сферах. Примером использования компьютерной графики является реставрация янтарной комнаты.
Одной из задач 3D-моделирования является построение реалистических моделей
объектов реального мира.
Реалистичность модели определяется следующими параметрами:
\begin{enumerate}
\item Соответствие формы объекта реальной форме.
\item Соответствие материала объекта особенностям объекта: цвет, текстура, шероховатость, отражаемость и другие.
\end{enumerate}
Программные пакеты, позволяющие моделировать объекты виртуальной реальности и создавать на основе этих моделей изображения, очень разнообразны, и различаются по функционалу, сложности, аппаратным требованиям, цене и так далее.
В данной работе будет рассматриваться программный пакет Blender 4.3.
\newpage
\section {Постановка задачи}
В данной работе необходимо:
\begin{enumerate}
\item Ознакомиться с возможностями пакета Blender, которые позволяют создавать реалистическую модель;
\item Выбрать три объекта реального мира и построить их визуализации в пакете Blender с учётом уникальных особенностей моделируемого объекта;
\item Отразить характерные особенности объекта, такие как:
\begin{itemize}
\item Геометрическая форма
\item Текстура и материал
\item Цвет
\item Освещение
\end{itemize}
\item Предоставить пошаговое руководство пользователя по получению результата.
\end{enumerate}
\newpage
\section{Описание функциональных возможностей пакета Blender}
Blender — это мощный и универсальный пакет для 3D-моделирования, анимации, рендеринга, скульптинга, композитинга и видео-монтажа. Он является бесплатным и с открытым исходным кодом, что делает его доступным для профессионалов и любителей.
Blender используется в различных областях:
\begin{itemize}
\item 3D-моделирование — создание и редактирование трехмерных объектов.
\item Анимация — разработка движущихся персонажей, эффектов и сцен.
\item Рендеринг — визуализация изображений с использованием движков Cycles и Eevee.
\item Скульптинг — цифровая лепка сложных форм.
\item Текстурирование и UV-развертка — нанесение текстур на 3D-объекты.
\item Физическая симуляция — моделирование воды, дыма, огня, тканей и т. д.
\item Композитинг и постобработка — редактирование изображений и видео.
\item Монтаж видео — встроенный видеоредактор для базового монтажа.
\item Программирование (Python API) — создание аддонов и автоматизация процессов.
\end{itemize}
\subsection{Возможности программы}
\subsubsection{3D-моделирование}
Blender предлагает широкий набор инструментов для моделирования:
\begin{itemize}
\item Полигональное моделирование — редактирование вершин, рёбер и граней.
\item NURBS и кривые — моделирование с использованием кривых Безье.
\item Метаболлы — создание органических форм.
\item Booleans (булевы операции) — вычитание, объединение и пересечение объектов.
\item Модификаторы — неразрушающее изменение геометрии (Subdivision Surface, Mirror, Array и др.).
\item Ретопология — оптимизация сетки для анимации и рендеринга.
\end{itemize}
\subsubsection{Цифровой скульптинг}
Blender позволяет создавать детализированные модели с высокой точностью:
\begin{itemize}
\item Dyntopo (динамическая топология) — адаптивное деление сетки.
\item Remesh — улучшение геометрии для дальнейшей работы.
\item Маскировка — изоляция областей при скульптинге.
\item Мультиразрешение — детализация сетки без потери формы.
\item Кисти (Brushes) — набор инструментов для лепки (Clay, Inflate, Grab и др.).
\end{itemize}
\subsubsection{Анимация и риггинг}
Blender имеет мощные инструменты для анимации:
\begin{itemize}
\item Keyframe Animation — покадровая анимация с интерполяцией.
\item Armature (Кости) — создание скелетов для персонажей.
\item Inverse Kinematics (IK) — автоматическое вычисление движения конечностей.
\item Shape Keys (Формы ключей) — создание мимики и морфинга объектов.
\item Graph Editor — контроль кривых анимации.
\item Grease Pencil — 2D-анимация в 3D-пространстве.
\end{itemize}
\subsubsection{Рендеринг}
Blender поддерживает несколько рендер-движков:
\begin{itemize}
\item Cycles — физически точный рендерер с трассировкой лучей (поддерживает GPU/CPU).
\item Eevee — рендеринг в реальном времени с использованием растеризации.
\item Workbench — быстрый рендер для предпросмотра моделей.
\item Freestyle — стилизованный рендер (например, для комиксов).
\end{itemize}
\subsubsection{Текстурирование и UV-развертка}
Blender предоставляет мощные инструменты для работы с текстурами:
\begin{itemize}
\item UV Mapping — развертка модели для наложения текстур.
\item Texture Painting — рисование текстур прямо на модели.
\item Shader Editor — создание сложных материалов с помощью узлов (nodes).
\item Procedural Textures — генерация текстур на основе алгоритмов.
\end{itemize}
\subsubsection{Физическая симуляция}
Blender позволяет имитировать физические явления:
\begin{itemize}
\item Cloth Simulation — симуляция тканей.
\item Fluid \& Smoke Simulation — симуляция воды, дыма, огня.
\item Soft Body — деформации мягких тел.
\item Rigid Body — симуляция твердых тел.
\item Particles — система частиц (пыль, искры, снег и т. д.).
\end{itemize}
\subsubsection{Композитинг и постобработка}
Blender включает узловую систему композитинга:
\begin{itemize}
\item Color Correction — корректировка цветов и уровней.
\item Blur \& Glare Effects — эффекты размытия и свечения.
\item Depth of Field (DOF) — имитация фокусировки камеры.
\item Green Screen (Chroma Key) — работа с хромакеем.
\end{itemize}
\subsubsection{Видеомонтаж (VSE - Video Sequence Editor)}
Blender также может использоваться как видеоредактор:
\begin{itemize}
\item Обрезка и склейка клипов.
\item Добавление эффектов и переходов.
\item Работа с аудиодорожками.
\end{itemize}
\subsubsection{Программирование и автоматизация (Python API)}
Blender позволяет создавать скрипты и аддоны:
\begin{itemize}
\item Автоматизация рутинных задач.
\item Создание новых инструментов.
\item Редактирование сцен и объектов через код.
\end{itemize}
\newpage
\section{Описание объектов моделирования}
\subsection{Объект моделирования №1}
Объектом №1 является покерная фишка (Рис.~\ref{fig:chip/real/front}-\ref{fig:chip/real/side-view-right}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/chip/real/front.jpg}
\caption{Объект моделирования №1, вид с лицевой стороны.}
\label{fig:chip/real/front}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/chip/real/back.jpg}
\caption{Объект моделирования №1, вид с обратной стороны.}
\label{fig:chip/real/back}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/chip/real/side-view-left.jpg}
\caption{Объект моделирования №1, вид на лицевую сторону под углом слева.}
\label{fig:chip/real/side-view-left}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/chip/real/side-view-right.jpg}
\caption{Объект моделирования №1, вид на лицевую сторону под углом справа.}
\label{fig:chip/real/side-view-right}
\end{figure}
\newpage
\textbf{Форма:} Покерная фишка представляет собой круглую плоскую дисковидную форму. На поверхности фишки есть небольшое колцевидное углубление.
\textbf{Материал:} Фишка изготовлена из пластика и покрыта белой краской. Номинал и узоры нанесены синей краской. Поверхность ближе к матовой.
\textbf{Особенности:} На фишке видны множественные дефекты покраски - отдельные точки и пятна синей краски, в особенности на лицевой стороне.
\newpage
\subsection{Объект моделирования №2}
Объектом №2 является зажим от пакета с хлебом (Рис.~\ref{fig:clamp/real/front}-\ref{fig:clamp/real/writing}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/clamp/real/front.jpg}
\caption{Объект моделирования №2, вид с лицевой стороны.}
\label{fig:clamp/real/front}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/clamp/real/back.jpg}
\caption{Объект моделирования №2, вид с обратной стороны.}
\label{fig:clamp/real/back}
\end{figure}
\newpage
\begin{figure}[h!]
\centering
\includegraphics[width=0.35\linewidth]{img/clamp/real/top.jpg}
\caption{Объект моделирования №2, вид сверху.}
\label{fig:clamp/real/top}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/clamp/real/writing.jpg}
\caption{Объект моделирования №2, развёртка для демонстрации надписи.}
\label{fig:clamp/real/writing}
\end{figure}
\textbf{Форма:} Зажим от пакета имеет форму деформированной плоскости с двумя цилиндрическими ободками сверху и снизу.
\textbf{Материал:} Зажим изготовлен из пластика и покрыта красной краской. Внутри ободков находятся кусочки проволоки, за счёт которых зажим запоминает приданную ему форму. Надпись со сроком годности нанесена белой краской.
\textbf{Особенности:} Объект имеет уникальную форму, которая была придана ему вручную специально для этой лабораторной работы. Также уникальной особенностью является надпись на объекте. В ней содержится срок годности и номер бригады -- <<09.03.25.2 - 2>>.
\newpage
\section{Описание технологии разработки моделей}
\subsection{Объект моделирования №1}
\subsubsection{Реальные размеры изделия}
Диаметр - 40 мм
Высота - 2 мм
Ложбинка - 0.4 мм
\subsubsection{Моделирование}
Нажимаем на цифру 7 на Num Pad, чтобы перейти на вид сверху. Затем нажимаем Shift + A и в разделе Image выбираем Reference. В открывшемся окне проводника выбираем изображение лицевой стороны покерной фишки и нажимаем Add~Image~(Рис.~\ref{fig:chip/modeling/1-add-reference}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/chip/modeling/1-add-reference.png}
\caption{Добавление изображения фишки.}
\label{fig:chip/modeling/1-add-reference}
\end{figure}
\newpage
Нажимаем Shift + A и в разделе Mesh выбираем Cylinder (Рис.~\ref{fig:chip/modeling/2-add-cylinder}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/chip/modeling/2-add-cylinder.png}
\caption{Добавление цилиндра.}
\label{fig:chip/modeling/2-add-cylinder}
\end{figure}
Нажимаем Alt + Z, чтобы перейти в режим прозрачности и видеть изображение фишки сквозь цилиндр.
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/chip/modeling/3-alt-z.png}
\caption{Режим прозрачности.}
\label{fig:chip/modeling/3-alt-z}
\end{figure}
Выбираем изображение, а затем с помощью масштабирования (клавиша S) и смещения (клавиша G) выравниваем центр цилиндра с центром фишки на изображении. Перемещаем курсор с зажатой клавишей Shift для более точного позиционирования. Результат на Рис.~\ref{fig:chip/modeling/4-positioning}.
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/chip/modeling/4-positioning.png}
\caption{Результат подгонки изображения под размер цилиндра.}
\label{fig:chip/modeling/4-positioning}
\end{figure}
\newpage
Нажимаем на цилиндр и переходим в режим редактирования (клавиша Tab). В режиме выбора граней (клавиша 3) и с зажатой клавишей Shift выбираем верхнюю и нижнюю грани цилиндра (Рис.~\ref{fig:chip/modeling/5-select-faces}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/chip/modeling/5-select-faces.png}
\caption{Выбор верхней и нижней граней цилиндра.}
\label{fig:chip/modeling/5-select-faces}
\end{figure}
\newpage
Возвращаемся на вид сверху (клавиша 7 на Num Pad). Нажимаем клавишу I, чтобы добавить внтреннюю грань. Выравниваем её по внешней стороне ложбинки на фишке, ориентируясь на изображения. При этом перемещаем курсор с зажатой клавишей Shift для более точного позиционирования.
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/chip/modeling/6-insert-faces.png}
\caption{Добавление новых рёбер на верхней и нижней гранях цилиндра.}
\label{fig:chip/modeling/6-insert-faces}
\end{figure}
Снова нажимаем на клавишу I. Новую грань выравниваем по внутренней стороне ложбинки на фишке (Рис.~\ref{fig:img/chip/modeling/7-insert-inner-faces}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/chip/modeling/7-insert-inner-faces.png}
\caption{Добавление новых рёбер на верхней и нижней гранях цилиндра.}
\label{fig:img/chip/modeling/7-insert-inner-faces}
\end{figure}
Изображение больше не понадобится и его можно скрыть. Возвращаемся в объектный режим (клавиша Tab), нажимаем на изображение, а затем нажимаем на клавишу H.
Нажимаем на цилиндр, а затем нажимаем на клавишу N, чтобы открыть боковое меню с размерами модели. В разделе Dimensions указываем реальные размеры изделия. В поле X и Y указываем значения 40mm, в поле Z указываем 2mm. Затем нажимаем точку на Num Pad, чтобы приблизиться к модели (Рис.~\ref{fig:chip/modeling/8-sizing}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.9\linewidth]{img/chip/modeling/8-sizing.png}
\caption{Указание размеров фишки.}
\label{fig:chip/modeling/8-sizing}
\end{figure}
Нажимаем сочетание клавиш Ctrl + A и в появившемся меню выбираем вариант Scale (Рис.~\ref{fig:chip/modeling/9-scale}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{img/chip/modeling/9-scale.png}
\caption{Применение функции Scale к модели.}
\label{fig:chip/modeling/9-scale}
\end{figure}
Переходим в режим редактирования (клавиша Tab). С зажатой клавишей Alt нажимаем на грань внутри ложбинки, чтобы выделить все грани ложбинки. Нажимаем на клавишу 1 на Num Pad, чтобы переключиться на вид сбоку. Затем нажимаем на клавишу E, чтобы создать углубление. В боковом меню (клавиша N) в разделе Median в поле Z указываем значение 0.6mm. Затем нажимаем сочетание клавиш Ctrl + 7 на Num Pad, чтобы переключиться на вид снизу. Аналогичным образом выделяем грани ложбинки, переключаемся на вид сбоку и создаём углубление. В боковом меню в разделе Median в поле Z указываем значение -0.6mm (Рис.~\ref{fig:chip/modeling/10-trench}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.9\linewidth]{img/chip/modeling/10-trench.png}
\caption{Добавление ложбинки.}
\label{fig:chip/modeling/10-trench}
\end{figure}
На этом этапе можно отключить режим прозрачности (Alt + z). Переходим в объектный режим (клавиша Tab) и в разделе Modifiers добавляем модификатор Subdivision Surface из раздела Generate. В параметрах Levels Viewport и Render указываем значение 3. Нажимаем на цилиндр правой кнопкой мыши и выбираем пункт Shade Smooth (Рис.~\ref{fig:chip/modeling/11-shade-smooth}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.9\linewidth]{img/chip/modeling/11-shade-smooth.png}
\caption{Сглаживание модели.}
\label{fig:chip/modeling/11-shade-smooth}
\end{figure}
На данном этапе углы модели выглядят слишком скруглёнными. Переходим в режим редактирования (клавиша Tab). Нажимаем сочетание клавиш Ctrl + R и создаём новые грани, почти в плотную к граням, на которых происходит перепад высот. Создаём такие же грани в ложбинке. В режиме выбора поверхностей (клавиша 3) нажимаем на центральную часть фишки и нажимаем на клавишу I, чтобы создать новую грань в центральной части фишки. Затем переключаемся на вид снизу (Ctrl + 7 на Num Pad) и проделываем те же операции (Рис.~\ref{fig:chip/modeling/12-new-edges}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/chip/modeling/12-new-edges.png}
\caption{Добавление новых рёбер для уточнения модели.}
\label{fig:chip/modeling/12-new-edges}
\end{figure}
Теперь добавим подложку, на которой разместим текстуру стола. В боковом меню (клавиша N) в разделе Location в поле Z указываем значение 1mm, чтобы приподнять модель. Затем нажимаем Shift + A и в разделе Mesh выбираем Plane (Рис.~\ref{fig:chip/modeling/13-plane}). Затем нажимаем H, чтобы временно скрыть добавленную поверхность.
\begin{figure}[h!]
\centering
\includegraphics[width=0.9\linewidth]{img/chip/modeling/13-plane.png}
\caption{Добавление плоскости.}
\label{fig:chip/modeling/13-plane}
\end{figure}
\subsubsection{Текстурирование}
Переходим в раздел UV Editing в верхнем меню программы. В правом окне переключаемся в объектный режим (клавиша Tab), нажимаем на модель и нажимаем на точку на Num Pad, чтобы приблизиться к ней (Рис.~\ref{fig:chip/texturing/1-start}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/chip/texturing/1-start.png}
\caption{Раздел UV Editing.}
\label{fig:chip/texturing/1-start}
\end{figure}
В разделе Render Properties в поле Render Engine выбираем EEVEE, ставим галочку на разделе Raytracing и в его подразделе Fast GI Approximation в поле Threshold указыем значение 1. После чего нажимаем сочетание клавиш Z + 2, чтобы переключиться в режим предпросмотра материалов.
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{img/chip/texturing/2-settings.png}
\caption{Настройка движка EEVEE для корректного отображения текстур.}
\label{fig:chip/texturing/2-settings}
\end{figure}
Открываем раздел Material Properties и добавляем новый материал, нажимая на кнопку New. В поле Base Color указываем значение \#9FAAB1FF. Затем нажимаем на + и снова на New, чтобы добавить ещё один материал. В разделе Base Color нажимаем на жёлтый кружок и выбираем пункт Image Texture (Рис.~\ref{fig:chip/texturing/3-image-texture}). В открывшемся окне проводника выбираем изображение фишки сверху. Изображение фишки снизу добавляем аналогичным образом.
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{img/chip/texturing/3-image-texture.png}
\caption{Добавление изображения текстуры.}
\label{fig:chip/texturing/3-image-texture}
\end{figure}
Переходим в режим редактирования (клавиша Tab). Переходим на вид сверху (клавиш 7 на Num Pad). В режиме выбора поверхностей (клавиша 3), выделяем все видимые поверхности. В разделе с материалами выбираем материал с изображением фишки сверху и нажимаем на кнопку Assign (Рис.~\ref{fig:chip/texturing/4-assigning}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.9\linewidth]{img/chip/texturing/4-assigning.png}
\caption{Применение материалов с текстурой к выбранным граням.}
\label{fig:chip/texturing/4-assigning}
\end{figure}
На панели слева распологаем проекцию поверхностей на текстуре таким образом, чтобы форма поверхности совпадала с изображением. Аналогичным образом накладываем материал с текстурой обратной стороны фишки (Рис.~\ref{fig:chip/texturing/5-uv-editing}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/chip/texturing/5-uv-editing.png}
\caption{Подгонка изображения текстуры.}
\label{fig:chip/texturing/5-uv-editing}
\end{figure}
Теперь можно вернуть поверхность, добавленную на этапе моделирования (Alt~+~H). В разделе Material Properties добавляем новый материал и в поле Base Color указываем текстуру стола. С помощью клавишы S в левом окне можно подогнать размеры текстуры (Рис.~\ref{fig:chip/texturing/6-table}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/chip/texturing/6-table.png}
\caption{Добавление текстуры стола.}
\label{fig:chip/texturing/6-table}
\end{figure}
\newpage
\subsubsection{Освещение и камера}
Переходим в раздел Shading в верхнем меню программы. Нажимаем на модель и нажимаем на точку на Num Pad, чтобы приблизиться к ней. После чего используем сочетание клавиш Z + 8, чтобы перейти в режим предпросмотра результата.
Затем на панели редактирования материалов нужно переключиться на вкладку World. Нажать сочетание клавиш Shift + A и в разделе Texture выбрать Image Texture. Выход Color узла Image Texture необходимо подключить ко входу Color узла Background. В Image Texture указывается путь до HDRI текстуры окружения, которая поставляется вместе с Blender -- \texttt{C:\textbackslash Program Files\textbackslash Blender Foundation\textbackslash Blender 4.3\textbackslash 4.3\textbackslash datafiles\textbackslash studiolights\textbackslash world\textbackslash }. В параметре Strength узла Background указываем значение 0.200 (Рис.~\ref{fig:chip/lighting/1_start}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/chip/lighting/1_start.png}
\caption{Настройка общего освещения сцены.}
\label{fig:chip/lighting/1_start}
\end{figure}
Переключаемся на вид сбоку (клавиша 1 на Num Pad), нажимаем Shift + A и в разделе Light выбираем Point. С помощью клавиши G располагаем источник света слева сверху над моделью. Для этого в боковом меню (клавиша N) в разделе Location в поле X указываем -0.3m, в поле Z указываем 0.2m. В разделе Object Data Properties в поле Power устанавливаем значение 4.5W. Затем дублируем источник света с помощью сочетания клавиш Shift + D и располагаем с противоположной стороны. Источнику света слева задаём синеватый оттенок (\#C5FBFF) в поле Color раздела Object Data Properties (Рис.~\ref{fig:chip/lighting/2_points}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/chip/lighting/2_points.png}
\caption{Расположение дополнительных источников освещения.}
\label{fig:chip/lighting/2_points}
\end{figure}
\newpage
Теперь добавим камеру. Для этого нажимаем сочетание клавиш Shift + A и выбираем пункт Camera. Теперь располагаем её ровно над моделью, чтобы получить изображение вида сверху. В боковом меню (клавиша N) в разделе Location в Z указываем значение 0.15m, а в разделе Rotation в поле X укажем значение 0. В разделе Object Data Properties в подразделе Lens в поле Focal Length указываем значение 110mm. Нажимаем 0 на Num Pad, чтобы переключиться на вид с камеры (Рис.~\ref{fig:chip/lighting/3_camera}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/chip/lighting/3_camera.png}
\caption{Расположение камеры.}
\label{fig:chip/lighting/3_camera}
\end{figure}
\newpage
\subsubsection{Рендеринг финальных изображений}
Для настройки рендеринга открываем Render Properties. В поле Render Engine выбираем значение Cycles. В разделе Sampling/Render в поле Max Samples указываем значение 128, чтобы ускорить рендеринг (Рис.~\ref{fig:chip/render/1_settings}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.33\linewidth]{img/chip/render/1_settings.png}
\caption{Настройки рендеринга.}
\label{fig:chip/render/1_settings}
\end{figure}
Нажимаем клавишу F12 и ожидаем некоторое время до окончания процесса рендеринга.
Результаты представлены на Рис.~\ref{fig:compare-front}--\ref{fig:compare-side}.
\begin{figure}[h!]
\centering
\begin{subfigure}{0.47\linewidth}
\centering
\includegraphics[width=\linewidth]{img/chip/render/front.png}
\caption{Модель объекта.}
\end{subfigure}
\hfill
\begin{subfigure}{0.47\linewidth}
\centering
\includegraphics[width=\linewidth]{img/chip/real/front.jpg}
\caption{Объект моделирования.}
\end{subfigure}
\caption{Сравнение модели объекта и объекта моделирования. Вид с лицевой стороны.}
\label{fig:compare-front}
\end{figure}
\begin{figure}[h!]
\centering
\begin{subfigure}{0.47\linewidth}
\centering
\includegraphics[width=\linewidth]{img/chip/render/back.png}
\caption{Модель объекта.}
\end{subfigure}
\hfill
\begin{subfigure}{0.47\linewidth}
\centering
\includegraphics[width=\linewidth]{img/chip/real/back.jpg}
\caption{Объект моделирования.}
\end{subfigure}
\caption{Сравнение модели объекта и объекта моделирования. Вид с обратной стороны.}
\label{fig:compare-back}
\end{figure}
\begin{figure}[h!]
\centering
\begin{subfigure}{0.47\linewidth}
\centering
\includegraphics[width=\linewidth]{img/chip/render/side-view.png}
\caption{Модель объекта.}
\end{subfigure}
\hfill
\begin{subfigure}{0.47\linewidth}
\centering
\includegraphics[width=\linewidth]{img/chip/real/side-view-right.jpg}
\caption{Объект моделирования.}
\end{subfigure}
\caption{Сравнение модели объекта и объекта моделирования. Вид сбоку справа.}
\label{fig:compare-side}
\end{figure}
\newpage
\phantom{text}
\newpage
\subsection{Объект моделирования №2}
\subsubsection{Реальные размеры изделия}
Ширина - 21 мм
Высота - 7 мм
Диаметр ободков - 1 мм
Толщина пластика между ободками - 0.3 мм
\subsubsection{Моделирование}
Нажимаем на цифру 7 на Num Pad, чтобы перейти на вид сверху. Затем нажимаем Shift + A и в разделе Image выбираем Reference. В открывшемся окне проводника выбираем изображение зажима и нажимаем Add~Image~(Рис.~\ref{fig:clamp/modeling/1-add-reference}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/modeling/1-add-reference.png}
\caption{Добавление изображения зажима.}
\label{fig:clamp/modeling/1-add-reference}
\end{figure}
Нажимаем Shift + A и в разделе Mesh выбираем Plane (Рис.~\ref{fig:clamp/modeling/2-add-plane}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/modeling/2-add-plane.png}
\caption{Добавление плоскости.}
\label{fig:clamp/modeling/2-add-plane}
\end{figure}
Переходим в режим редактирования (клавиша Tab) и в режиме выбора вершин (клавиша 1) с зажатой клавишей Shift выбираем три любых вершины добавленной плоскости. Нажимаем на клавишу X и в появившемся меню выбираем пункт Vertex, чтобы удалить эти вершины. Выделяем оставшуюся вершину и с помощью клавишы G переносим её в крайнюю точку ободка зажима. Затем нажимаем клавишу E, чтобы добавить новую точку. Таким образом делаем окантовку для всего зажима (Рис.~\ref{fig:clamp/modeling/3-border}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/modeling/3-border.png}
\caption{Создание окантовки.}
\label{fig:clamp/modeling/3-border}
\end{figure}
\newpage
Переходим в объектный режим. Выделяем изображение и скрываем (клавиша H), оно больше не понадобится. Теперь выделяем полученную линию окантовки и в боковом меню (клавиша N) в разделе Dimensions в поле X указываем реальную ширину объекта -- 21mm. После чего значение поля X из раздела Scale копируем в поле Y того же раздела, чтобы сохранить пропорции при масштабировании (Рис.~\ref{fig:clamp/modeling/4-sizes}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/modeling/4-sizes.png}
\caption{Задание реальных размеров.}
\label{fig:clamp/modeling/4-sizes}
\end{figure}
\newpage
Переключаемся на вид сбоку (клавиша 1 на Num Pad), затем копируем окантовку (сочетание клавиш Shift + D) и поднимаем немного выше. Затем нажимаем по новому объекту правой кнопкой мыши и в разделе Convert To выбираем пункт Curve.
Нажимаем сочетание клавиш Shift + A и в разделе Mesh выбираем пункт Circle. Затем в боковом меню (клавиша N) в разделе Dimensions в полях X и Y указываем диаметр ободков -- 1mm. Нажимаем на добавленный круг правой кнопкой мыши и в разделе Convert To выбираем пункт Curve (Рис.~\ref{fig:clamp/modeling/5-circle}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/modeling/5-circle.png}
\caption{Конвертация круга из меша в кривую.}
\label{fig:clamp/modeling/5-circle}
\end{figure}
Выбираем добавленный круг и нажимаем сочетание клавиш Ctrl + A и в появившемся списке выбираем пункт Scale. Затем выбираем скопированную окантовку, открваем раздел Object Data Properties и в подразделе Geometry/Bevel выбираем вариант Object. Нажимаем на иконку пипетки и выбираем круг и нажимаем на галочку у поля Fill Caps (Рис.~\ref{fig:clamp/modeling/6-bevel}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.85\linewidth]{img/clamp/modeling/6-bevel.png}
\caption{Создание ободка.}
\label{fig:clamp/modeling/6-bevel}
\end{figure}
Полученный ободок и круг пока можно скрыть (клавиша H). В объектном режиме выбираем исходную окантовку зажима и переходим в режим редактирования (клавиша Tab). Выбираем все вершины (клавиша A) и расширяем окантовку вверх (сочетание клавиш E + Z). Возвращаемся в объектный режим (клавиша Tab). В боковом меню (клавиша N) в разделе Dimensions в поле Z указываем высоту чуть меньше реальной высоты объекта -- 6.5mm. В разделе Location в поле Z указываем значение 0.5mm. Нажимаем сочетание клавиш Ctrl + A и выбираем пункт Scale (Рис.~\ref{fig:clamp/modeling/7-sides}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.85\linewidth]{img/clamp/modeling/7-sides.png}
\caption{Создание боковых сторон зажима.}
\label{fig:clamp/modeling/7-sides}
\end{figure}
Продолжаем работать с ободком. В разделе Modifier Properties нажимаем на кнопку Add Modifier и добавляем модификатор Subdivision Surface из раздела Generate. В поле Level указываем значение 2. Затем добавляем ещё один модификатор из раздела Generate -- Solidify. В поле Mode выбираем значение Complex. В поле Thickness указываем половину от толщины пластика -- 0.15mm. В поле Offset указываем значение 0. Затем нажимаем сочетание клавиш Ctrl + A, чтобы применить модификатор Solidify (Рис.~\ref{fig:clamp/modeling/8-modifiers}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.9\linewidth]{img/clamp/modeling/8-modifiers.png}
\caption{Придание толщины зажиму.}
\label{fig:clamp/modeling/8-modifiers}
\end{figure}
Переходим в режим редактирования (клавиша Tab). Нажимаем сочетание Ctrl + R, чтобы добавить новые грани и убрать излишнее сглаживание по краям объекта. Возвращаемся в объектный режим (клавиша Tab). Нажимаем на объект правой кнопкой мыши и выбираем пункт Shade Smooth (Рис.~\ref{fig:clamp/modeling/9-new-edges}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.9\linewidth]{img/clamp/modeling/9-new-edges.png}
\caption{Добавление новых граней.}
\label{fig:clamp/modeling/9-new-edges}
\end{figure}
Возвращаем скрытый ободок (Alt + H). В Modifier Properties добавляем модификатор Subdivision Surface из раздела Generate. В поле Levels указываем значение 2. Нажимаем на ободок правой кнопкой мыши и выбираем пункт Shade Smooth. В боковом меню (клавиша N) в разделе Location в поле Z указываем значение 0.5mm (Рис.~\ref{fig:clamp/modeling/10-bottom}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/modeling/10-bottom.png}
\caption{Установка и сглаживание нижнего ободка.}
\label{fig:clamp/modeling/10-bottom}
\end{figure}
Переходим в режим редактирования (клавиша Tab). Выделяем крайние точки на ободке и чуть-чуть сдвигаем (клавиша G) с зажатой клавишей Shift, чтобы грани ободка и основной части зажима не накладывались друг на друга (Рис.~\ref{fig:clamp/modeling/11-faces}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/modeling/11-faces.png}
\caption{Устранение артефактов на стыке граней.}
\label{fig:clamp/modeling/11-faces}
\end{figure}
Возвращаемся в объектный режим (клавиша Tab). Копируем нижний ободок с помощью сочетания клавиш Alt + D. В боковом меню (клавиша N) в разделе Locataion в поле Z указываем значение 7mm (Рис.~\ref{fig:clamp/modeling/12-copy}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.9\linewidth]{img/clamp/modeling/12-copy.png}
\caption{Установка верхнего ободка.}
\label{fig:clamp/modeling/12-copy}
\end{figure}
Теперь добавим подложку, на которой разместим текстуру стола. Нажимаем Shift + A и в разделе Mesh выбираем Plane (Рис.~\ref{fig:clamp/modeling/13-plane}). Затем нажимаем H, чтобы временно скрыть добавленную поверхность.
\begin{figure}[h!]
\centering
\includegraphics[width=0.8\linewidth]{img/clamp/modeling/13-plane.png}
\caption{Добавление плоскости.}
\label{fig:clamp/modeling/13-plane}
\end{figure}
\newpage
\subsubsection{Текстурирование}
Переходим в раздел UV Editing в верхнем меню программы. В правом окне переключаемся в объектный режим (клавиша Tab), нажимаем на модель и нажимаем на точку на Num Pad, чтобы приблизиться к ней (Рис.~\ref{fig:clamp/texturing/1-start}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/texturing/1-start.png}
\caption{Раздел UV Editing.}
\label{fig:clamp/texturing/1-start}
\end{figure}
В разделе Render Properties в поле Render Engine выбираем EEVEE, ставим галочку на разделе Raytracing и в его подразделе Fast GI Approximation в поле Threshold указыем значение 1. После чего нажимаем сочетание клавиш Z + 2, чтобы переключиться в режим предпросмотра материалов (Рис.~\ref{fig:clamp/texturing/2-settings}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{img/clamp/texturing/2-settings.png}
\caption{Настройка движка EEVEE для корректного отображения текстур.}
\label{fig:clamp/texturing/2-settings}
\end{figure}
Выбираем нижний ободок и открываем раздел Material Properties. Нажимаем на кнопку New, чтобы добавить новый материал. В поле Base Color указываем значение \#A61625 (Рис.~\ref{fig:clamp/texturing/3-color}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.8\linewidth]{img/clamp/texturing/3-color.png}
\caption{Покраска ободков.}
\label{fig:clamp/texturing/3-color}
\end{figure}
Переходим в раздел Shading. Выбираем основную часть зажима и добавляем новый материал для него. Для этого нажимаем на кнопку New на панели ниже. Затем нажимаем сочетание клавиш Shift + A и в разделе Color выбираем Hue/Saturation/Value. В поле Color добавленного узла указываем значение \#A61625. Снова нажимаем Shift + A и в разделе Texture выбираем Image Texture, в которой указываем путь до текстуры с надписью (Рис.~\ref{fig:clamp/real/writing-no-bg}), в поле Extension указываем значение Clip, чтобы изображение с надписью не повторялось. Добавляем ещё один узел из раздела Color -- Mix Color. Соединяем узлы как показано на Рис.~\ref{fig:clamp/texturing/4-nodes}.
\begin{figure}[h!]
\centering
\includegraphics[width=0.9\linewidth]{img/clamp/texturing/4-nodes.png}
\caption{Графовое представление материала основной части зажима.}
\label{fig:clamp/texturing/4-nodes}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=0.5\linewidth]{img/clamp/real/writing-no-bg.png}
\caption{Текстура надписи на объекте моделирования.}
\label{fig:clamp/real/writing-no-bg}
\end{figure}
Возвращаемся на вкладку UV Editing. Переключаемся в режим выбора граней (клавиша 3) и выделяем все грани, на которых будет расположена надпись. Нажимаем клавишу U и в разделе Unwrap выбираем пункт Angle Based, чтобы создать развёртку этих граней. Теперь в левом окне подгоняем развёртку под изображение, используя клавишы G, S и R (Рис.~\ref{fig:clamp/texturing/5-uv}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/texturing/5-uv.png}
\caption{Корректировка UV развёртки текстуры с надписью.}
\label{fig:clamp/texturing/5-uv}
\end{figure}
Теперь можно вернуть поверхность, добавленную на этапе моделирования (Alt~+~H). В разделе Material Properties добавляем новый материал и в поле Base Color указываем текстуру стола. С помощью клавишы S в левом окне можно подогнать размеры текстуры (Рис.~\ref{fig:clamp/texturing/6-table}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/texturing/6-table.png}
\caption{Добавление текстуры стола.}
\label{fig:clamp/texturing/6-table}
\end{figure}
\newpage
\subsubsection{Освещение и камера}
Переходим в раздел Shading в верхнем меню программы. После чего используем сочетание клавиш Z + 8, чтобы перейти в режим предпросмотра результата.
Затем на панели редактирования материалов нужно переключиться на вкладку World. Нажать сочетание клавиш Shift + A и в разделе Texture выбрать Image Texture. Выход Color узла Image Texture необходимо подключить ко входу Color узла Background. В Image Texture указывается путь до HDRI текстуры окружения, которая поставляется вместе с Blender -- \texttt{C:\textbackslash Program Files\textbackslash Blender Foundation\textbackslash Blender 4.3\textbackslash 4.3\textbackslash datafiles\textbackslash studiolights\textbackslash world\textbackslash interior.exr} (Рис.~\ref{fig:clamp/lighting/1-start}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/lighting/1-start.png}
\caption{Настройка общего освещения сцены.}
\label{fig:clamp/lighting/1-start}
\end{figure}
Нажимаем Shift + A и в разделе Light выбираем Point. В боковом меню (клавиша N) в разделе Location в поле X указываем 0.01m, в поле Y указываем -0.4m, в поле Z указываем 0.5m. В разделе Object Data Properties в поле Power устанавливаем значение 4.5W. Нажимаем на точку на Num Pad, чтобы перейти к источнику света, и переключаемся на вид сверху (клавиша 7 на Num Pad). Затем дублируем источник света дважды с помощью сочетания клавиш Shift + D. Копии располагаем рядом с исходным источником для имитации лампочек в люстре, именно такое освещения было в момент создания фотографий. Источникам света задаём цвет \#CCDEFF в поле Color раздела Object Data Properties (Рис.~\ref{fig:clamp/lighting/2-points}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/lighting/2-points.png}
\caption{Расположение дополнительных источников освещения.}
\label{fig:clamp/lighting/2-points}
\end{figure}
\newpage
Теперь добавим камеру. Для этого нажимаем сочетание клавиш Shift + A и выбираем пункт Camera. Теперь располагаем перед моделью, чтобы получить вида сбоку как на фотографии. В боковом меню (клавиша N) в разделе Location в поле X указываем 0.062m, в поле Y указываем -0.09m, в поле Z указываем 0.066m, а в разделе Rotation в поле X укажем значение 60, в поле Z -- 34. В разделе Object Data Properties в подразделе Lens в поле Focal Length указываем значение 140mm. Нажимаем 0 на Num Pad, чтобы переключиться на вид с камеры (Рис.~\ref{fig:clamp/lighting/3-camera}).
\begin{figure}[h!]
\centering
\includegraphics[width=1\linewidth]{img/clamp/lighting/3-camera.png}
\caption{Расположение камеры.}
\label{fig:clamp/lighting/3-camera}
\end{figure}
\newpage
\subsubsection{Рендеринг финальных изображений}
Для настройки рендеринга открываем Render Properties. В поле Render Engine выбираем значение Cycles. В разделе Sampling/Render в поле Max Samples указываем значение 128, чтобы ускорить рендеринг (Рис.~\ref{fig:chip/render/1_settings}).
\begin{figure}[h!]
\centering
\includegraphics[width=0.33\linewidth]{img/chip/render/1_settings.png}
\caption{Настройки рендеринга.}
\label{fig:chip/render/1_settings}
\end{figure}
Нажимаем клавишу F12 и ожидаем некоторое время до окончания процесса рендеринга.
Результаты представлены на Рис.~\ref{fig:clamp-compare-front}--\ref{fig:clamp-compare-top}.
\begin{figure}[h!]
\centering
\begin{subfigure}{0.46\linewidth}
\centering
\includegraphics[width=\linewidth]{img/clamp/render/front.png}
\caption{Модель объекта.}
\end{subfigure}
\hfill
\begin{subfigure}{0.47\linewidth}
\centering
\includegraphics[width=\linewidth]{img/clamp/real/front.jpg}
\caption{Объект моделирования.}
\end{subfigure}
\caption{Сравнение модели объекта и объекта моделирования. Вид с лицевой стороны.}
\label{fig:clamp-compare-front}
\end{figure}
\begin{figure}[h!]
\centering
\begin{subfigure}{0.425\linewidth}
\centering
\includegraphics[width=\linewidth]{img/clamp/render/other-side.png}
\caption{Модель объекта.}
\end{subfigure}
\hfill
\begin{subfigure}{0.47\linewidth}
\centering
\includegraphics[width=\linewidth]{img/clamp/real/other-side.jpg}
\caption{Объект моделирования.}
\end{subfigure}
\caption{Сравнение модели объекта и объекта моделирования. Вид сбоку справа.}
\label{fig:clamp-compare-back}
\end{figure}
\begin{figure}[h!]
\centering
\begin{subfigure}{0.47\linewidth}
\centering
\includegraphics[width=\linewidth]{img/clamp/render/side.png}
\caption{Модель объекта.}
\end{subfigure}
\hfill
\begin{subfigure}{0.40\linewidth}
\centering
\includegraphics[width=\linewidth]{img/clamp/real/side.jpg}
\caption{Объект моделирования.}
\end{subfigure}
\caption{Сравнение модели объекта и объекта моделирования. Вид сбоку слева.}
\label{fig:clamp-compare-side}
\end{figure}
\begin{figure}[h!]
\centering
\begin{subfigure}{0.54\linewidth}
\centering
\includegraphics[width=\linewidth]{img/clamp/render/top.png}
\caption{Модель объекта.}
\end{subfigure}
\hfill
\begin{subfigure}{0.35\linewidth}
\centering
\includegraphics[width=\linewidth]{img/clamp/real/top.jpg}
\caption{Объект моделирования.}
\end{subfigure}
\caption{Сравнение модели объекта и объекта моделирования. Вид сверху.}
\label{fig:clamp-compare-top}
\end{figure}
\newpage
\section*{Заключение}
\addcontentsline{toc}{section}{Заключение}
\newpage
\section*{Список литературы}
\addcontentsline{toc}{section}{Список литературы}
\vspace{-1.5cm}
\begin{thebibliography}{0}
\end{thebibliography}
\end{document}