Научные труды Дальрыбвтуза. 2024. Т. 69, № 3. С. 183-195.
Scientific Journal of the Far Eastern State Technical Fisheries University. 2024. Vol. 69, no 3. P. 183-195.
РЫБНОЕ ХОЗЯЙСТВО, АКВАКУЛЬТУРА И ПРОМЫШЛЕННОЕ РЫБОЛОВСТВО Научная статья
УДК 639.3; 532.3; 004.92; 004.94
DOI: doi.org/10.48612/dalrybvtuz/2024-69-18
EDN: QRFAGU
Деформация трехмерных моделей на ГПУ для задач виртуальной реальности
на примере рыбы в УЗВ
Алексей Олегович Ражев1, Александр Алексеевич Недоступ2, Леонид Алексеевич Кондрашов3
1 3 Лаборатория цифровых технологий, Калининград, Россия
1 2 Калининградский государственный технический университет, Калининград, Россия
1 [email protected], ORCID: 0000-0002-0983-834X
2 [email protected], ORCID: 0000-0002-3851-0984
Аннотация. В задачах виртуальной реальности необходимо в реальном времени и с приемлемым качеством визуализировать моделируемые натурные процессы. В статье рассмотрены постановка и решение задачи разработки математической модели и программного кода на графическом процессоре, способных в режиме реального времени производить деформацию статической трехмерной модели объекта визуализации по заданным характеристикам, изменяющимся во времени, на примере визуализации рыб в виртуальной установке замкнутого водоснабжения, представляющей техническую систему для выращивания рыб. Предложены метод, математическая база и вычислительный алгоритм деформации статических трехмерных моделей мягких тел, полученных с применением устройств пространственного сканирования, способные видоизменять (деформировать) тело в процессе визуализации на графическом процессоре. Деформация проводится с применением секущих поверхностей, описываемых математическими зависимостями, связанными как с параметрами деформации, так и с модельным временем. Вычисляются координаты всех вершин поверхностной сетки тела и всех нормалей к поверхности, определенных в трехмерной модели. В статье приведена реализация алгоритма на вершинном шейдере, написанном на языке программирования HLSL. Приведен результат визуализации рыбы при изгибе.
Ключевые слова: математическая модель, виртуальная реальность, ГПУ, HLSL, рыба Финансирование: Исследование выполнено в ООО «Лаборатория цифровых технологий» за счет гранта Российского научного фонда № 23-21-00010, https://rscf.ru/project/23-21-00010/.
Для цитирования: Ражев А. О., Недоступ А. А., Кондрашов Л. А. Деформация трехмерных моделей на ГПУ для задач виртуальной реальности на примере рыбы в УЗВ // Научные труды Дальрыбвтуза, 2024. Т. 69, № 3. С. 183-195.
© Ражев А. О., Недоступ А. А., Кондрашов Л. А., 2024
183
FISHERIES, AQUACULTURE AND INDUSTRIAL FISHERIES
Original article
Deformation of three-dimensional models on the GPU for virtual reality applications on the
example of fish RAS
Alexey O. Razhev1, Aleksandr A. Nedostup2, Leonid A. Kondrachov3
13 DigiTech Laboratory
1,2 Kaliningrad State Technical University, Kaliningrad, Russia
1 [email protected], ORCID: 0000-0002-0983-834X
2 [email protected], ORCID: 0000-0002-3851-0984
Abstract. In virtual reality applications, it is necessary to visualize simulated natural processes in real time and with acceptable quality. The article discusses the formulation and solution of the problem of developing a mathematical model and program code on a graphics processor unit capable of deforming a static three-dimensional model of a visualization object in real time in accordance with the specified time-dependent characteristics. For example, the visualization of fish in a virtual installation of an aquaculture recirculating system, which is a technical system for growing fish, is considered. A method, a mathematical base and a computational algorithm for deformation of static three-dimensional models of soft bodies obtained using spatial scanning devices capable of modifying (deforming) the body during visualization on a graphics processor are proposed. Deformation is carried out using secant surfaces described by mathematical dependencies related to both deformation parameters and model time. The coordinates of all vertices of the surface mesh of the body and all normal to the surface defined in the three-dimensional model are calculated. The article presents the implementation of the algorithm on a vertex shader created on HLSL programming language. The result of visualization of fish during bending is given.
Keywords: multiphysical similarity, RAS, recirculating aquaculture system, hydrobiont, carp Funding: The research was carried out in DigiTech Laboratory at the expense of a grant from the Russian Science Foundation (project No. 23-21-00010), https://rscf.ru/project/23-21-00010/.
For citation: Razhev A. O., Nedostup A. A., Kondrachov L. A. Deformation of three-dimensional models on the GPU for virtual reality applications on the example of fish RAS. Scientific Journal of the Far Eastern State Technical Fisheries University. 2024; 69(3): 183-195. (in Russ.).
Введение
В задачах виртуальной реальности необходимо в реальном времени и с приемлемым качеством визуализировать моделируемые натурные процессы. Для эффективного решения указанных задач требуются как мощное вычислительное оборудование, так и оптимизированные под используемое оборудование математические модели и алгоритмы.
При компьютерной имитации физических процессов можно выделить следующие основные этапы:
1. Определение характеристик математической модели моделируемой системы, объектов системы.
2. Определение входных параметров внешних воздействий на систему и ее объекты.
184
3. Предсказание поведения объектов системы (предсказательная модель) с учетом законов физики (динамики движения и т.д.), взаимодействия объектов внутри системы, возможных их столкновений (коллизий), влияния на систему внешних факторов.
4. Вычисление положения и ориентации объектов в пространстве и их формы, выходных параметров системы и ее объектов.
5. Визуализация, систематизация и накопление результатов моделирования для последующего анализа.
6. Визуализация пространственной сцены с применением различных технических средств, в том числе и стереоскопических [1].
7. Обработка результатов с целью последующего проецирования на натурную систему, в том числе с использованием технологий дополненной реальности [2], систем принятия решений и управления натурной системой.
В современных персональных ЭВМ расчет и визуализация трехмерных сцен происходит с использованием ресурсов как центрального, так и графического процессорного устройства (ГПУ) [3]. Для визуализации пространственной сцены требуется информация о форме, положении и ориентации в пространстве визуализируемых объектов. Информация о положении и об ориентации в пространстве формируется в процессе имитации (этап 4). Информация о форме твердых тел извлекается из их заранее подготовленных цифровых 3D-моделей. Для визуализации мягких (формоизменяемых) тел информация о форме должна генерироваться в процессе имитации (этап 4). В качестве примера рассмотрим задачу визуализации поведения рыб в виртуальной установке замкнутого водоснабжения (УЗВ). УЗВ представляет собой техническую систему для выращивания рыб [4], применяемую в рыбоводных хозяйствах. В качестве объектов визуализации рассматривается рыба, ограниченная рамками бассейна. Движение рыбы обеспечивается изменением ее формы, в результате которого возникают гидродинамические силы и вращательные моменты, придающие рыбе требуемые линейное и угловое ускорения. В предсказательной модели движения рыбы [5, 6] вычисляются требуемые ускорения, на основе которых определяются ее скорость, перемещение и ориентация в пространстве.
Таким образом, имея информацию о положении и ориентации в пространстве в текущий момент времени, можно визуализировать рыбу как твердое тело по заранее подготовленной ее трехмерной модели. Для этой цели можно использовать 3D-сканер либо другое оборудование, в том числе с лидаром [7] либо ToF-камерой [8], например, мобильный смартфон моделей iPh-one или Samsung.
Визуализация статической модели сокращает вычислительные затраты, одновременно ухудшая качество восприятия реальности. Для приближения качества визуализации к реальности необходимо одновременно с движением рыбы повторять ее форму, т.е. производить деформацию трехмерной модели.
Объекты и методы исследований
Задачей исследования является разработка математической модели и программного кода на графическом процессоре, способных в режиме реального времени производить деформацию статической трехмерной модели объекта визуализации по заданным характеристикам, изменяющимся во времени, и отображение деформированного объекта (гибкого тела) [9]. При этом визуализируемая сцена может содержать множество как однотипных, так и разного типа деформируемых объектов, характеристики деформации которых вычисляются индивидуально и в реальном времени.
При визуализации на графическом процессоре объекты трехмерной сцены (тела) описываются поверхностями с дискретизацией треугольными примитивами (гранями). Вершины и ребра примитивов создают поверхностную сетку тела (рис. 1).
Рис. 1. Поверхностная сетка тела при визуализации на ГПУ. Составлено авторами Fig. 1. The surface mesh of the body when visualizing on the GPU. Compiled by the authors
Процесс визуализации пространственной сцены на графическом процессоре называется рендерингом. Рендеринг осуществляется поэтапно на программно-аппаратном графическом конвейере [3]. Конфигурация графического конвейера задается программным способом в зависимости от решаемой задачи. На рис. 2 приведена конфигурация, применяемая для решения поставленной задачи. Аппаратные этапы (стадии) конвейера отображены в виде белых прямоугольников, программные (шейдеры) - в виде темных прямоугольников.
Рис. 2. Графический конвейер. Составлено авторами Fig. 2. Graphic pipeline. Compiled by the authors
На входе графический конвейер принимает массивы данных с информацией о вершинах и связях между вершинами. На первом этапе конвейера (этап сборки) происходит подготовка данных для вершинного шейдера. Вершинный шейдер выполняет расчет итоговых координат вершин на плоскости устройства визуализации (поверхности визуализации) и их удаления от поверхности визуализации (глубины), производя их трансформацию и проекцию на плоскость (ортогональную или перспективную), а также расчет цветов вершин согласно используемой цветовой модели с учетом источников освещения и ориентации к ним граней примитивов (поверхности тела). На следующем этапе осуществляется группировка вершин по примитивам и их растеризация согласно настройкам аппаратного растеризатора и информации о координатах на плоскости визуализации, текстурных координатах, глубине и цвете вершин. Растериза-тор преобразует каждый примитив в набор пикселей с привязкой информации о глубине и
цвете, выполняя расчет цвета и глубины пикселя методом интерполяции глубин и цветов вершин.
Пиксельный шейдер выполняет пересчет цвета пикселя с учетом цвета текстуры по текстурным координатам по заданному алгоритму.
На последнем этапе происходит объединение наборов пикселей от всех примитивов с учетом глубины. Для этой цели используется двухмерный буфер глубины, в каждой ячейке которого хранится значение текущей (по мере поступления пикселей от пиксельного шейдера) глубины наименее удаленного (с наименьшей глубиной) от поверхности визуализации пикселя. Глубина каждого поступившего пикселя сопоставляется с информацией о минимальной глубине в буфере, на основании чего принимается решение об отображении пикселя на поверхности визуализации с обновлением значения глубины в буфере глубины, либо об исключении пикселя из дальнейшей обработки.
Задача деформации статической трехмерной модели тела заключается в пересчете координат ее вершин и нормалей к поверхности в соответствии с заданными характеристиками деформации. Таким образом, расчет деформации должен быть реализован на вершинном шей-дере.
Рассмотрим решение поставленной задачи методом иерархического разбиения мягкого (гибкого, формоизменяемого) тела на вложенные друг в друга компоненты и последующей их деформацией цепочкой последовательных трансформаций. Каждому компоненту поставим в соответствие определенную цепочку трансформаций. На вершине иерархии будет расположен компонент, представляющий собой целиком мягкое тело. На следующем уровне - компоненты, представляющие собой части тела, которые, в свою очередь, могут также состоять из частей. Количество уровней иерархии (вложенностей компонентов) в общем случае не ограничено. Таким образом, компоненты нижних уровней будут претерпевать последовательные трансформации, начиная с заданных для компонента и далее вверх по иерархии, и заканчивая трансформациями, заданными для всего тела.
Обозначим множество вершин поверхностной сетки тела (множество вершин верхнего уровня иерархии) (см. рис. 1) Й1д, а и - множества вершин компонентову и k соответственно. Здесьуе [1.. .П2] и kе [1.. .П2] - порядковые номера вложенных компонентов;у Ф к; П2 - количество вложенных в тело компонентов. В приведенном обозначении первый индекс указывает уровень иерархии (начиная с 1 для верхнего уровня), а второй индекс - порядковый номер компонента. Тогда получаем
П2,. , П2,к , О. пО^ =0.
Считаем вышесказанное справедливым как для множества компонентов тела, так и для множеств вложенных в компонент компонентов.
В процессе визуализации трехмерной сцены для корректного отображения тел в пространстве необходимо учитывать источник (источники) освещения. Для учета освещенности необходимо рассчитать углы падения световых лучей на поверхность тела. С этой целью в каждой вершине на поверхности тела хранится информация о нормали к этой поверхности. При растеризации графических примитивов (частей поверхности тела) освещенность в каждом пикселе примитива рассчитывается аппаратным растеризатором интерполяцией значений освещенности его вершин.
Любое линейное пространственное преобразование можно разложить на последовательность преобразований сдвига, поворота и масштабирования. В общем случае количество и последовательность преобразований каждого типа не ограничено. При преобразовании сдвига выполняется поступательное перемещение множества вершин в пространстве, т.е. координаты всех вершин множества изменяются на один и тот же вектор смещения в пространстве 1.
у' = V + 1 .
При преобразовании поворота множество вершин поворачивается относительно текущего (с учетом предыдущих преобразований) начала координат на заданный пространственный угол (меняет ориентацию в пространстве). При преобразовании масштабирования с сохранением пропорций координаты каждой вершины множества умножаются на масштабный коэффициент ^ (объект, описываемый множеством вершин, изменяет размер):
V ' = уу.
В ГПУ линейные пространственные преобразования математически выполняются с использованием аппарата линейной алгебры: путем последовательного умножения матриц на вектор (реализация умножения заложена в аппаратную часть ГПУ, что обеспечивает ускорение процесса преобразований):
v v4 j
Пм
v i
\ f \ ^ у
v v4 j
где v и v, - вектор до и после преобразования соответственно; У4 и \\ - компоненты, повышающие размерность векторов до 4, для координат вершин У4 = 1; Mг■ - матрица размерностью 4 х 4, описывающая 1-е преобразование.
При выполнении пространственных преобразований только при помощи операций умножения, тем самым унифицировав все типы преобразований, мы переходим к размерности всех векторов - 4, а размерности всех матриц - 4 х 4 (преобразование сдвига невозможно осуществить с использованием трехмерных векторов и матриц 3 х 3).
Для замены операции векторного сложения при преобразовании сдвига вершин (У4 = 1) на операцию умножения матрицы на вектор произведем замену:
(^1)т +(1;0)т = Т (^1)т, где т - операция транспонирования; T - матрица сдвига:
T
10 0 tx
0 10 ty
0 0 1 tz
0 0 0 1
Описанный выше подход является стандартным для задач машинной графики.
Кроме пространственных преобразований координат вершин необходимо также выполнять преобразования ориентации векторов нормалей к поверхностям в пространстве (преобразование поворота). При этом преобразования сдвига к нормалям применяться не должны, а в случае применения преобразования масштабирования в цепочке последовательных преобразований по окончании преобразований вектор нормали необходимо нормализовать (привести его длину к 1). С целью возможности использования для преобразований координат вершин и нормалей к поверхности тела одних и тех же матриц для векторов нормалей устанавливается У4 = 0. При этом получаем
(п ' ,0)Т = Т (п,0)Т =(п,0)т.
Каждую вершину Vb поверхностной сетки тела до деформации представим парой векторов
Vb = { pb; пь },
где
р6 = (х; Уу ; ^ )т; п ь = (хп; Уп; 2п )т;
рь - положение вершины в пространстве; хУ, уУ, - пространственные координаты вершины в системе координат с ортонормированным базисом е1, е2, ез, привязанной к телу; е1=е2=ез=1; пь - орт нормали к поверхности тела в точке рь; Хп, уп, ?п - компоненты орта нормали.
Зададим для каждой трансформации в цепочке трансформаций компонента (или тела) локальную ортогональную систему координат с базисом ех, еу, е2, нормированной длиной ¡х компонента (расстоянием между наиболее удаленными вершинами поверхностной сетки компонента в проекции на ех) с сохранением его пропорций (рис. 3):
ех = еу = е2 = ¡х. (1)
Рис. 3. Локальная система координат. Составлено авторами Fig. 3. Local coordinate system. Compiled by the authors
Нормирование длины компонента (тела) перед трансформацией необходимо для возможности применения секущих поверхностей, описываемых одними и теми же параметрическими зависимостями, для однотипных тел различного размера (например, большая и маленькая рыба одного вида).
Для преобразования координат положения вершин и нормалей к поверхности из базиса е1, е2, ез в базис ех, еу, е2 и обратно применим преобразования
Л /'„/Л гп \ л ( Л ( Л
V
v1 У
= M
v1 У
Pb
1
= M
-1
vх у
к1
0
M
v" У
ЧЛ
v0 у
nb
v0 у
= M
-1
v0 у
(2)
где р и р' - положение вершины в базисе ех, еу, е2 до и после трансформации соответственно;
Р = (х; у; 2)Т; р' = (х'; у'; г')Т;
рь и рь' - положение вершины в базисе е1, е2, ез до и после трансформации соответственно; Пу - орт нормали к поверхности тела в точке р в базисе ех, еу, е2 до трансформации; пь - орт нормали к поверхности тела в точке рь в базисе е1, е2, ез до трансформации; пь' - орт нормали к поверхности тела в точке рь' в базисе е1, е2, ез после трансформации; Пу' - орт нормали к поверхности тела в точке р' в базисе ех, еу, е2 после трансформации; М - матрица преобразования; М-1 - обратная матрица преобразования.
Матрица преобразования является произведением трех матриц
1/ 0 0 0
0 1/ 0 0
0 0 1/ 0
0 0 0 1
M = TSR&, S =
где T - матрица сдвига; S - матрица нормирования (масштабирования); Rb - матрица поворота.
Рассмотрим подробнее процесс одной трансформации в цепочке трансформаций. Проведем через компонент тела секущую плоскость хОу. Определим процесс трансформации секущей плоскости, заданной уравнением в векторной форме Б(ро) = 0, в секущую поверхность Б' (ро') = 0 как операцию преобразования координат множества принадлежащих ей точек, результатом которой будет являться множество этих же точек с измененными координатами, принадлежащих секущей поверхности. Запишем зависимость между координатами произвольной точки до и после трансформации в векторной форме:
Р0' = f (Р0)> (3)
где pо - точка до трансформации; pо' - точка после трансформации;
р0 =(х0;у0;0)т; р0' =(х0';у0;г0) ;
f - функция трансформации.
Проведем на секущей плоскости хОу одну или несколько кривых. На операцию трансформации наложим условие неизменности длины любой дуги заданных кривых при трансформации секущей плоскости в секущую поверхность. Запишем уравнение кривой 1 на секущей плоскости хОу в параметрическом виде:
= ( - (X); у, (X); 0)Т, (4)
где хг(Х), уг(Х) - функции параметра X. Тогда для той же кривой ■ на секущей поверхности после трансформации получаем
^э'(Х) = f (Ь0 (X)). (5)
С учетом условия неизменности длины любой дуги кривой до (4) и после (5) трансформации получаем
(X)/ ¿Ц = \сИ(Ь0(X)) / . (6)
Таким образом, задача сводится к поиску функции Г, удовлетворяющей условию (6) для всех заданных кривых.
Координаты точек, не лежащих на секущей поверхности (находящихся по обе стороны от секущей поверхности), вычислим по формуле
Р' = Р0'+^п, (7)
где п - орт нормали к секущей поверхности после трансформации в точке ро'.
Поскольку г - координата ро всегда нулевая, получаем
n
öf (Р0) öf (P0)
dx
-x-
öy
öf (P0) öf(P0)
öx
x
öy
где х - операция векторного произведения.
Таким образом, применив для всех вершин мягкого тела в недеформированном состоянии выражение (7), мы можем найти координаты всех вершин после деформации тела.
Кроме трансформации координат вершин для корректной визуализации деформированного тела с учетом его освещенности необходимо трансформировать и нормали к его поверхности. То есть нужно найти
n
Rn
(8)
где R - матрица поворота.
Вычислим матрицу поворота R. Рассмотрим частный случай, когда нормаль к секущей поверхности n = ez. Тогда поворот не осуществляется, а матрица поворота
Г1 о 0"
R =010 0 0 1
В остальных случаях матрица поворота вокруг единичного вектора er на угол 0 по часовой стрелке при обзоре по направлению er, 0 е [0.. .л] [10]
cos 9+( 1 - cos Q)efX (1- cos Q)erxety - (sin §)er. (1-cos e)eryerx + (sm9)erz cose+(1-cose)e2 (1-cose>„e„ -(sme^ (1-cosQ)erzety + (s:ine)e„ где erx, ery, erz - проекции вектора er на оси координат.
Косинус и синус угла между n = (nx, ny, nz) и ez находятся по формулам:
cos e = nez = n, sine = ^1 -1 1 а ось вращения задается единичным вектором
R
(1-COSe)erxerz + (sine)ery
(1-Cose)eryerZ - (sine)erx
cose+(1-cose)e2
■n.
er = r / r, r = n x ez =( ny; -nx ;0)
где r - модуль вектора r. Тогда
R =
n + (1- n )nj/ r2
-(1- n )ПуПх / r 2 / r
-(1- nz )ПуПх / f 2
n + (1- n )n2/ r r nyj 1 - n2 / r
-n
-n
л/!-^ / r ■ VM?" / r
n
(9)
Применим (7) и (8) для каждой вершины пространственной сетки компонента (тела), найдем новые значения положений всех вершин и всех нормалей в результате трансформации.
В случае нескольких последовательных трансформаций (цепочки трансформаций) необходимо выполнить данный расчет для каждой трансформации. При этом выходные значения положения и нормалей вершин предыдущей трансформации являются входными для следующей и промежуточными - для всей цепочки трансформаций. Для сохранения промежуточных значений вершин в ГПУ предусмотрен механизм организации потоков. При помощи потоков можно перенаправлять выходные данные, формируемые вершинным шейдером, на вход того же (или другого) вершинного шейдера для дальнейшей их обработки, изменяя параметры обработки.
Результаты и их обсуждение
Предложенный метод можно применять при визуализации рыбы в процессе движения в установке замкнутого водоснабжения (УЗВ). При реализации большинства деформаций тела рыбы можно ограничиться двумя уровнями иерархии. На верхнем уровне деформируется (изгибается) все тело. На нижнем - по отдельности плавники, жаберные крышки, нижняя челюсть и др. Далее рассмотрим реализацию только верхнего уровня иерархии - изгиба тела рыбы. Нижний уровень реализуются аналогично, но по другим параметрическим уравнениям плоскости деформации.
Произведем преобразование (2), после которого в локальной системе координат с базисом ех, еу, е2 тело рыбы будет симметрично пересекаться секущей плоскостью хОу, линия
хребта совпадать с осью Ох, голова направлена по направлению оси Ох, а неподвижная при изгибе точка на хребте находится в начале координат (см. рис. 3).
Нормы базисных векторов определим согласно (1). В результате длина рыбы будет приведена к 1 с сохранением пропорций (см. размерные линии на рис. 3).
Зададим функции параметра X для уравнения кривой на секущей поверхности до трансформации (в данном примере будем использовать одну кривую, 1 = 1):
х^) = X, у^) = 0. (1о)
Подставив (10) в (4) при X = х , получаем
ад = ( х;0;0)Т. (11)
Вычислим левую часть уравнения (6):
|йЬ0 (X) / ¿X| = | йЬ0 (х) / йх| = 1. Зададим функцию трансформации следующим образом:
f(Р0)=f((х0;У);°)Т)=(V;у;т-2) , (12)
где т - параметр, определяющий степень и направление прогиба рыбы, при имитационном моделировании являющийся функцией времени. В (12) неизвестным компонентом векторной функции Г является хо'. Для его нахождения решим уравнение (6). Левая часть уравнения посчитана выше и равна 1. Для нахождения правой части (6) подставим (11) в (12):
(Ь0 (X)) / ¿X = (ь0 (х)) / йх| = ^(й-' / йх)2 + 4ш2х2 .
Возведя в квадрат левую и правую части (6) и выразив дифференциал, получим
йх0'/йх = ±41 - 4т2 х2 при т е[-0.5/хтх ...0.5/хпшх ], (13)
где Хтах - максимальное по модулю значение х.
Для нахождения неизвестной хо' проинтегрируем левую и правую части (13) по йх. При точном интегрировании правой части получаем выражение, содержащее тригонометрическую функцию arcsin, многократное вычисление которой на графическом процессоре достаточно ресурсоемко. Поскольку при визуализации в задачах имитации рыбы в УЗВ не требуется высокой точности, можно проводить приближенное интегрирование, предварительно разложив правую часть (13) в ряд Маклорена. Для ряда 4-го порядка получаем
л/Т-4тУ -1 - 2т2х2 - 2т4х4.
Тогда
О о
х0' - ±|(1 -2т2х2 -2т4х4)йх = ±х(1 -^т2х2 -^т4х4) + с(х), (14)
где с(х) - интеграл от остаточного члена разложения.
Для нахождения неизвестной с(х) подставим в (14) значения х = о, хо' = 0 в неподвижной точке, совпадающей с началом координат. Получаем с(х) = 0. При условии, что хо'х > 0 (до и после изгибной деформации точка находится по одну и ту же сторону от плоскости Оуг), получаем
f 2 2 л 1 — ш2 x2 — ш4 x4 3 5
V 3 5 У
Подставив (15) в (12), получаем итоговую функцию трансформации
f
/ / о о л лт
1 2 2 2 2 4 4
1 — ш x — ш x
x
V ^ 3 5
; y; mx2
(15)
Для вычисления нормали к секущей поверхности вычислим частные производные
дГ(р0) / Эх = (1 - 2т2х2 - 2т4х4; 0; 2тх)Т, дГ(р0) / ду = (0;1;0)т.
Тогда векторное произведение
дг(Ро) х дг(Ро) = (_2тх; 0; 1 - 2т2х2 - 2т4х4 )Т,
дх дУ а нормаль к секущей поверхности
п = (-2тх;0;1- 2т2х2 - 2т4х4 )Т / ^4т2х2 + (1 - 2т2х2 - 2т4х4 )2. (17)
По формулам (7), (16) и (17) находим координаты положений всех вершин, а по формулам (8), (17) и (9) - нормали в вершинах к поверхности тела рыбы.
На рис. 4 показана поверхностная сетка тела рыбы до и после деформации. Красным цветом выделена кривая на секущей поверхности при т = 0,5, а зеленым цветом изображено направление нормалей к секущей поверхности в различных ее точках (в начале координат и на границах объекта по оси Ох).
Рис. 4. Деформация рыбы при m = 0,5. Составлено авторами Fig. 4. Fish deformation at m = 0,5. Compiled by the authors
На рис. 5 (а, б) показан результат работы алгоритма при различных т, определяющих степень и направление прогиба т.
а) m = 0 б) m = 0,625
Рис. 5. Результат визуализации рыбы. Составлено авторами Fig. 5. Fish visualization result. Compiled by the authors
При визуализации динамических процессов, которыми является движение рыбы, параметр m является функцией от времени.
Заключение
Предложенные математическая база и вычислительный алгоритм деформации статических трехмерных моделей мягких тел, полученных с применением устройств пространственного сканирования, способны видоизменять (деформировать) тело в процессе визуализации на графическом процессоре в режиме реального времени. Деформация проводится с применением секущих поверхностей, описываемых математическими зависимостями, связанными как с параметрами деформации, так и с модельным временем. Количество секущих поверхностей определяется как числом зависимых от времени деформаций его частей, так и степенью требуемой реалистичности визуализации. Незначительные для решаемой задачи деформации можно не проводить, тем самым сократив их количество и уменьшить время расчета одной временной итерации. Для нескольких секущих поверхностей вершины поверхностной сетки визуализируемого тела разбивается на иерархически вложенные подмножества (компоненты), каждый компонент трансформируется с применением отдельной секущей поверхности. При сложных деформациях возможно последовательное применение к одному компоненту нескольких последовательных трансформаций.
Вычислительный алгоритм работает на графическом процессоре, являясь частью конвейера рендеринга. В статье приведен пример вершинного шейдера, написанного на языке программирования шейдеров HLSL для DirectX. Для OpenGL шейдер пишется аналогично.
Предложенный метод можно применять для широкого круга задач виртуальной и дополненной реальности. В частности, данный метод будет применен для визуализации поведения рыб в виртуальной установке замкнутого водоснабжения (УЗВ) в рамках выполнения научного проекта «Разработка математических моделей, технологий дополненной реальности и машинного зрения для задач автоматизации сбора данных в рыбоводных хозяйствах».
Представленные математическая модель и алгоритм были реализованы в виде программного модуля для разрабатываемого в ООО «ЛЦТ» с участием авторов статьи программного обеспечения «Система автоматизированного проектирования орудий рыболовства и технических средств аквакультуры» (САПР-ОР). Программное обеспечение разрабатывается с применением инструментария Embarcadero RAD Studio [11] на языках программирования С++ и HLSL.
Список источников
1. Рожков С. Н., Овсянникова Н. А. Стереоскопия в кино-, фото-, видеотехнике. Терминологический словарь. М. : Парадиз, 2ОО3. 136 с. ISBN 5-98547-003-2.
2. Котельева А. В., Барсов В. В. Проблемы и перспективы дополненной реальности // Информационные системы и технологии: фундаментальные и прикладные исследования. 2017. Т. 1, № 1. С. 454-457.
3. D. Luebke, Mark J. Harris. (2004) GPGPU: general purpose computation on graphics hardware. SIGGRAPH '04: ACM SIGGRAPH 2004 Course Notes. doi:10.1145/1103900.1103933.
4. Michael B. Timmons and James B. Ebeling (2013). Recirculating Aquaculture (3rd ed.). Ithaca Publishing Company Publishers. ISBN 978-09712б4б5б.
5. Недоступ А. А., Альтшуль Б. А., Ражев А. О., Дятченко С. В., Бедарева О. М., Багрова А. А. Математическое моделирование поведенческих характеристик стаи рыб при облове разноглубинным тралом // Морские интеллектуальные технологии. 2019. Т. 4, № 4(46). С. 181185.
6. Gun-Ho LEE, Chun Woo LEE, Young-Bong KIM, Pingguo He. (2007) Simulating the behavior of Atlantic mackerel and their capture by pelagic trawls / 8th International workshop - Methods for the Development and Evaluation of Maritime Technologies DEMAT 2007. Vol. 5. Germany. Rostock. P. 285-295.
7. Lindner P., Wanielik G. (2009). 3D LIDAR Processing for Vehicle Safety and Environment Recognition. IEEE Workshop on Computational Intelligence in Vehicles and Vehicular Systems. ISBN 978-1 -4244-2770-3. D0I:10.1109/CIVVS.2009.4938725.
8. Hansard Miles, Lee Seungkyu, Choi Ouk, Horaud Radu (2012). Time-of-flight cameras: Principles, Methods and Applications. SpringerBriefs in Computer Science. ISBN 978-1-4471-46575. doi:10.1007/978-1-4471-4658-2.
9. Бухтяк М. С., Никульчиков А. В. Моделирование деформации сотовой панели // Вестник Томского государственного университета. Математика и механика. 2013. № 2(22). С. 516.
10. Климчик А. С., Гомолицкий Р. И., Фурман Ф. В., Сёмкин К. И. Разработка управляющих программ промышленных роботов : курс лекций. Минск : Белорусский государственный университет информатики и радиоэлектроники, 2008. 131 с.
11. Копылов А. З., Лычагин Ю. В., Осипов В. И. Среда разработки ПО Embarcadero RAD Studio 10.3 Rio: практ. пособие. СПб. : Балт. гос. техн. ун-т, 2019. 27 с.
Сведения об авторах
А. О. Ражев - кандидат технических наук, генеральный директор, главный инженер Лаборатории цифровых технологий, ведущий научный сотрудник.
А. А. Недоступ - кандидат технических наук, доцент, заведующий кафедрой промышленного рыболовства.
Л. А. Кондрашов - инженер Лаборатории цифровых технологий.
Information about the authors
A. O. Razhev - PhD, General Director, Chief Engineer of DigiTech Laboratory, Leading Researcher.
A. A. Nedostup - PhD, Associate Professor, Head of the Department of Commercial Fisheries.
L. A. Kondrashov - Engineer of DigiTech Laboratory.
Статья поступила в редакцию 04.03.2024; одобрена после рецензирования 10.09.2024; принята к публикации 18.09.2024.
The article was submitted 04.03.2024; approved after reviewing 10.09.2024; accepted for publication 18.09.2024.