САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ МЕТОДОВ МЕХАНИКИ ДЕФОРМИРУЕМОГО ТЕЛА
Верховцев Андрей Николаевич
Магистерская диссертация
Разработка программы трѐхмерного отображения
истинной тактической обстановки
Направление 01.04.02
Прикладная математика и информатика
Магистерская программа надежность и безопасность сложных систем
Научный руководитель,
доктор физ.-мат. наук,
профессор
Павловский В. А.
Санкт-Петербург
2016
Содержание
Введение ................................................................................................................... 3
1. Постановка задачи............................................................................................... 5
2. Обзор литературы................................................................................................ 8
3. Ход работы ........................................................................................................... 9
3.1 Базовые концепции трѐхмерной компьютерной графики ......................... 9
3.2 Выбор графической платформы ................................................................. 18
3.3 Генерация волн на поверхности воды ....................................................... 20
3.4 Написание необходимых компонентов ..................................................... 22
3.4.1 Установка соединения с ИТО ............................................................... 22
3.4.2 Интеграция с базой данных .................................................................. 24
3.4.3 Генерация волнения водной поверхности ........................................... 24
3.4.4 Построение рельефа дна........................................................................ 26
3.4.5 Прочее ..................................................................................................... 27
Вывод ...................................................................................................................... 28
Заключение ............................................................................................................ 30
Список литературы ............................................................................................... 31
Приложение ........................................................................................................... 33
2
Введение
Трѐхмерная графика (3D графика) – раздел компьютерной графики, в
котором изображение на экране монитора, получается в результате
проецирования на плоскость трѐхмерного пространства. В современном
понимании, трѐхмерная компьютерная графика появилась в 80х годах 20го
столетия, и с тех пор бурно развивается вместе с ростом вычислительных
мощностей компьютеров. Трѐхмерная графика получила столь широкое
распространение,
что
на
сегодняшний
компьютере установлен дополнительный
день
практически
в
любом
процессор, предназначенный
исключительно для вычислений связанных с еѐ выводом. Наиболее активно
трѐхмерная графика применяется в сфере мультимедиа: для спецэффектов в
киноиндустрии и для создания компьютерных игр. 3D графика используется
в инженерных пакетах черчения и проектирования (AutoCAD и Компас).
Также трѐхмерная графика часто применяется для визуализации физических
моделей деформации твѐрдых тел, поведения текучих сред. В рамках
настоящей выпускной работы трѐхмерная компьютерная графика будет
применена для создания видеопотока, наглядно отражающего результат
работы испытываемых аппаратно-программных комплексов.
При проектировании сложных систем таких как системы навигации,
наблюдения или управления, разрабатываются специальные устройства,
называемые
функционально
стендами
моделирования.
воссозданный
на
Стенд
подобии
моделирования
реального
–
оборудования
программно-аппаратный комплекс. В зависимости от назначения, стенд
моделирования может служить инструментом для подготовки технического
персонала, а также платформой для испытания и отладки программного
обеспечения изделия. При применении такого рода устройств на этапе
моделирования, проработка технических решений наиболее удобна и
практична по причине низкой себестоимости в сравнении с проведением
опытов на реальном оборудовании. Стенды моделирования успешно
3
используются
для
отладки
алгоритмов
обработки
информации
в
вышеперечисленных системах. Таким образом, магистерская диссертация
посвящена разработке модуля визуализации для стенда моделирования
системы
освещения
обстановки
широкого
назначения.
Целью
рассматриваемого стенда была отладка как систем наблюдения обитаемых
судов, так и автоматических систем наблюдения и управления научноисследовательских автономных необитаемых аппаратов.
Одной из важных частей стенда моделирования систем наблюдения
является моделирование тактической обстановки, в результате которого на
основе начальных данных формируется движение объекта-носителя системы
и наблюдаемых объектов. Тактической обстановкой, в данном контексте,
будем
называть совокупность сведений о местоположении и параметрах
движения объектов в заданном регионе. Имитатором тактической обстановки
(ИТО) является программа, моделирующая тактическую обстановку на
некотором временном интервале по заданным начальным данным.
Трѐхмерное
графическое
отображение
движения
моделируемых
объектов в рамках создания таких стендов имеет два основных применения.
Во-первых, это наглядное представление информации на экране, доступное
для восприятия не только разработчику, но и специалистам других областей.
Во-вторых, подобная программа, формирующая трѐхмерное изображение
всех объектов с учѐтом их движения и взаимного расположения может быть
использована в качестве имитатора выхода канала видеонаблюдения
(оптоэлектронного канала наблюдения), расположенного на одном из
объектов.
графическую
Изменяя параметры модели, можно получить наглядную
интерпретацию
моделируемой
ситуации.
Разработка
программы трѐхмерной визуализации тактической обстановки, а также
аспекты еѐ применения рассмотрены далее.
4
1. Постановка задачи
Основной
целью
работы
была
разработка
компонента
стенда
моделирования, обеспечивающего трѐхмерное графическое отображение
тактической
обстановки
для
наглядной
демонстрации
результатов
моделирования и обеспечения выполнения стендом ряда специальных задач.
Рассмотрим подробнее вышеописанные области применения программ.
Наглядность трѐхмерного представления информации о движении и
взаимном расположении объектов в трѐхмерном пространстве не вызывает
сомнений: человеку проще воспринимать информации в как можно более
естественном представлении. Так как это информация о взаимном
перемещении объектов, то воспринимать еѐ в виде генерируемой в реальном
времени трехмерной сцены будет значительно проще, чем в имеющихся
альтернативах: табличном или двумерном графическом представлении
информации. Особенно, если речь идѐт об анализе данных не программистом
разработчиком системы, а сторонним экспертом, не имеющим опыта работы
с подобными системами.
Одним из применений, в котором трѐхмерная визуализация особенно
актуальна, является моделирование автоматических систем управления. На
рисунке 1 приведена краткая схема ПО стенда моделирования для отладки
таких систем применительно к автономным необитаемым аппаратам.
В ИТО задаѐтся начальная тактическая обстановка и устанавливается
соединение с разрабатываемой программой. Текущая тактическая обстановка
из ИТО передаѐтся в программу имитации средств наблюдения и навигации
объекта-носителя, которые на еѐ основе формируют массив наблюдаемых
объектов (в том числе препятствий) и оценку координат и параметров
движения носителя.
5
Рисунок 1 – Структура ПО стенда моделирования систем наблюдения и управления
автономным необитаемым аппаратом
Эти данные отличаются от истинных, так как формируются с учѐтом
ошибок и погрешностей измерения. Результаты работы систем наблюдения и
навигации передаются в систему управления, которая на их основе
принимает те или иные решения по управлению движения объектом. Эти
решения передаются в виде управляющего воздействия обратно в ИТО,
который будет менять изначально заложенное движение в соответствии с
поступившими командами. Таким образом, мы получаем замкнутую систему
с обратной связью. С периодичностью один раз в секунду, ИТО отправляет
данные о положении объектов в трѐхмерном пространстве, и на их основе
изменяется положение объектов и носителя в разрабатываемой программе
отображения истинной тактической обстановки (ОИТО).
Очевидно, основным результатом моделирования работы системы
управления в данном случае является поведение объекта, наблюдение за
которым
значительно
удобнее
производить
при
трѐхмерном
его
отображении, нежели путѐм анализа таблиц его параметров и проекции
траектории и движения на разные плоскости.
6
Рисунок 2 – Структура ПО стенда моделирования оптоэлектронного канала
наблюдения
На рисунке 2 представлена упрощѐнная структура ПО, моделирующего
работу оптоэлектронного канала наблюдения. Здесь в ИТО также задаѐтся
начальная
тактическая
обстановка
и
устанавливается
соединение
с
разрабатываемой программой ОИТО. Роль ОИТО в данной системе –
имитация выходного видеопотока, аналогичного получаемому от аппаратнопрограммных средств из оптоэлектронного канала наблюдения, который
будет в дальнейшем обработан программой анализа видеопотока, и вместе с
результатами работы других каналов наблюдения будет выведен в системе
отображения. Здесь программа ОИТО используется не столько для
отображения результатов моделирования, сколько в качестве используемого
при моделировании инструмента. Вывод результатов здесь осуществляют
штатные программы системы отображения с графическим интерфейсом
пользователя. Целью такого моделирования является анализ работы, вопервых, алгоритмов обработки видеопотока, а во-вторых, проработка
технических решений по организации отображения самого видеопотока в
системе управления и интеграции его с остальными результатами
наблюдения для оптимального представления оператору.
Подводя итог сказанному выше, задачей магистерской диссертации,
является разработка модуля визуализации, основная функция которого,
построение тактической обстановки в трѐхмерном пространстве, непрерывно
меняющейся в реальном времени в соответствии с поступающими данными
от программы ИТО.
7
2. Обзор литературы
Кратко изложим обзор использованной в ходе выполнения выпускной
работы литературы и основных публикаций по теме.
Основной справочной литературой, являются книги о специфике и
принципах разработки программного обеспечения, с использованием языка
C# [11], [12]. Книга [15] внесла вклад в расширение алгоритмической базы,
изучении
концепций
и
парадигм
объектно-ориентированного
программирования. Она заслуженно считается классической книгой по
объектной технологии и не зря является первой в списке рекомендуемых
книг по этой теме.
В изучении функционала графической программной платформы
Unity3D, еѐ сильных и слабых сторон помог справочник [13]. Также полезно
было ознакомиться с [14], в качестве вводной части в программирование с
использованием графической платформы.
Концепции и принцип работы современной трѐхмерной компьютерной
графики (в частности реального времени) рассмотрены в [1], [8], [16].
Шейдерное программирование (написание программ исполняемых на
графическом ускорителе) изучалось по книге [17].
Основные математические понятия различных разделов математики, а
также
программная
реализация
алгоритмов
(в
частности
быстрого
преобразования Фурье) подробно и доходчиво изложены справочнике [7],
который также использовался в ходе выполнения работы.
8
3. Ход работы
Исходя из постановки задачи, последовательно пройдем по этапам
реализации.
3.1
Базовые
концепции
трѐхмерной
компьютерной
графики
Из установленного ранее определения, трѐхмерная графика есть
проецирование трѐхмерного пространства на плоскость. Чтобы получить в
результате этого процесса изображение на экране, в первую очередь
необходимо «населить» некоторое пространство трѐхмерными объектами. В
самом простом случае, объемную фигуру можно описать, перечислив
координаты точек и правила по которым эти точки будут соединены
многоугольниками.
На рисунке 3 приведен пример описания пирамиды в трѐхмерном
пространстве (в локальной системе координат объекта, также известной как
local space), на котором перечислены точки (вершины) углов пирамиды, а
также тройки вершин, определяющие соответствующие грани. Файл,
содержащий информацию о геометрии трѐхмерного объекта, называют
трѐхмерной моделью. О том, какая информация может быть записана в
трѐхмерной модели, а также о существующих форматах, более подробно
описано в [1].
Обозначив форму, в которой будет задаваться объект трѐхмерного
пространства, необходимо определить операции, при помощи которых
можно изменять его положение в глобальной системе координат (в
пространстве именуемом world space). Выделяют три основных операции:
перемещение (translation), вращение (rotation) и масштабирование (scaling),
каждая из них осуществляется при помощи соответственно матриц
перемещения, вращения и масштабирования. Применить операцию к объекту
означает применить эту операцию к каждой вершине объекта.
9
Рисунок 3 – Описание геометрии объекта: данные, которыми оперирует компьютер
(слева) и наглядная их интерпретация (справа)
Положение вершины
в пространстве может быть изменено путѐм
добавления к ней вектора перемещения , однако, операцию перемещения
удобнее применять при помощи умножения на матрицу перемещения :
[
]
тогда:
[
]
[
][
[
]
]
10
Это делается для того, чтобы несколько операций, перемещения,
вращения и масштабирования, путѐм взаимного перемножения можно было
объединить в одну матрицу, называемую матрицей преобразования.
Операция масштабирования применяется при помощи умножения
координат вершин объекта на матрицу S следующего вида:
[
]
[
][
тогда:
[
]
]
[
]
Операция вращения имеет свои особенности – необходимо указать ось
вокруг которой будем производить вращение. В самом простом случае, в
трѐхмерном пространстве можно производить вращение вокруг осей X, Y и
Z. Тогда матрица поворота на угол
записывается следующим образом с
учѐтом оси вращения:
[
]
[
]
11
[
]
Чтобы задать ориентацию объекта при последовательном вращении по
нескольким
осям,
необходимо
перемножить
матрицы
вращения
по
соответствующим осям справа налево, тогда общая матрица поворота будет
иметь следующий вид:
( )
где
( )
углы поворота по осям
( )
соответственно.
Стоит отметить, что использование углов Эйлера, для задания
ориентации объекта в пространстве, не всегда удобно. Бывают ситуации,
когда в следствие поворота, теряется одна степень свободы, что приводит к
неожиданному поведению объекта при вращении. Эта проблема известна как
складывание рамок (gimbal lock) [2]. Также, если перед нами стоит задача
постепенного перехода объекта из одной ориентации в другую, траектория
поворота может принять непредсказуемую форму. Обе эти проблемы,
решаются использованием специализированных гиперкомплексных чисел
называемых кватернионами, которые имеют следующий вид:
где
– вещественные числа,
– мнимые единицы, для
которых выполняется следующее свойство:
Числа b, c и d определяют ось вращения в трѐхмерном пространстве, a
– угол на который осуществляется поворот. Более подробно о теории
кватернионов можно посмотреть в [3], [4].
Определив способ задания геометрии объекта и элементарные
операции, позволяющие задать для него произвольное положение в
12
пространстве
(world
space),
можно
перейти
непосредственно
к
проецированию пространства на экран монитора. Этот процесс происходит в
два шага: сначала мы должны перейти от пространства, которое “населяют”
все объекты, в видимое пространство (view space или camera space), а затем
применить непосредственно трансформацию из видимого пространства в
пространство экрана (screen space), при помощи матрицы проецирования.
Изложим эти операции последовательно.
Прежде всего, необходимо определить точку обзора, или положение
камеры,
которое
и
будет
определять
видимое
пространство.
Это
вспомогательное подпространство, центром которого является положение
камеры, используется для того, чтобы впоследствии отсечь все вершины
объектов, которые не попадают в область видимости, и производить
операцию проецирования и перспективные преобразования только для
“видимых” объектов. Матрица преобразования в видимое пространство,
определяемая как инверсия матрицы преобразования необходимой для
задания положения и ориентирования камеры в пространстве world space,
применѐнная ко всем объектам, переместит весь “мир” в видимое
пространство (рисунок 4).
Находясь в пространстве камеры, перед тем как «сплющить»
изображение, необходимо отсечь всѐ, что не входит в область обзора камеры.
Это
осуществляется
при
помощи
куба,
который
иногда
называют
проецируемым пространством (projection space). Это пространство имеет
размерности от -1 до 1 по всем осям, следовательно, вершины которые не
лежат в этом интервале, находятся вне зоны видимости и тем самым
отсекаются.
13
Рисунок 4 – Два чайника в world space (слева) и в видимом пространстве (справа)
Чтобы
перейти
от
видимого
пространства
к
проецируемому,
необходима ещѐ одна матрица, значения которой зависят от типа
проецирования. Наиболее часто используемые – ортографическое (без учѐта
перспективы) и, соответственно, перспективное проецирование.
Для
того
чтобы
осуществить
ортографическое
проецирование,
необходимо определить размеры области видимости камеры: ширину и
высоту, а также ближнюю и дальнюю плоскости отсечения (рисунок 5).
Рисунок 5 – Область видимости камеры без учѐта перспективы
14
Зная эти величины, мы можем задать матрицу трансформации, которая
переведѐт координаты параллелепипеда, в координаты куба. Эта матрица
имеет следующий вид:
[
]
На рисунке 6 представлен результат применения матрицы:
Рисунок 6 – Полученное проецируемое пространство без учѐта перспективы
При перспективном проецировании область видимости определяется
двумя дополнительными параметрами: горизонтальным и вертикальным
углами обзора (рисунок 7).
15
Рисунок 7 – Область видимости камеры с учѐтом перспективы
Матрица трансформирования приобретает следующий вид:
(
)
(
)
(
[
где
)
]
горизонтальный и вертикальный углы обзора
соответственно. Результат применения матрицы проиллюстрирован на
рисунке 8.
Рисунок 8 – Полученное проецируемое пространство с учѐтом перспективы
16
В
результате
выполненных
преобразований,
получены
данные
необходимые для выведения изображения на экран. Каждый пиксель экрана
окрашивается в цвет проецируемого объекта, в который он попадает. На
рисунке 9 в упрощенной форме проиллюстрирован процесс заполнения
экрана цветом.
Рисунок 9 – Окрашивание пикселей экрана монитора
Цвет трѐхмерного объекта в общем случае определяется его текстурой.
Текстура – плоская обѐртка для объемного объекта, определяющая его цвет.
Правила наложения текстуры определяются, так называемой, картой
текстуры. При помощи текстуры также можно охарактеризовать некоторые
свойства поверхности объекта, например его гладкость/шероховатость или
реакцию на освещение. В рамках базовых концепций трѐхмерной графики
этот вопрос не представляет большого интереса, более подробно об этом
можно узнать в [5].
Процесс преобразования данных о положении объектов в трѐхмерном
пространстве (трѐхмерной сцены) в изображение на экране называется
рендеринг. В зависимости от сложности сцены, например при визуализации
фотореалистичного изображения, с использованием сложных алгоритмов
распространения света, этот процесс может занимать достаточно длительный
промежуток времени. Предположим следующее: если мы будем постепенно
изменять положение некоторого объекта сцены, в реальном времени (и
непрерывно наблюдать за ним при помощи камеры), то при условии того что
процесс рендеринга будет происходить с достаточной частотой мы сможем
17
добиться так называемой “иллюзии движения”, то есть бесшовного потока
изображений, достоверно отражающего перемещение объекта. Более того,
мы сможем воздействовать на объект произвольно, и изображение на экране
будет создаваться “на лету”. В этом заключается концепция рендеринга в
реальном времени (real-time rendering) – основы интерактивных (т. е.
предполагающих
пользовательский
ввод)
3D
приложений,
например
компьютерных игр. Естественно такой подход предполагает применение
“упрощенных”
алгоритмов
визуализации,
хотя
стоит
отметить,
что
современный персональный компьютер, может визуализировать довольно
сложные трѐхмерные сцены с частотой 30 кадров в секунду и выше.
3.2 Выбор графической платформы
Так как в настоящей работе идет речь о разработке интерактивного
трѐхмерного программного продукта, необходимо написать или использовать
готовую программную платформу, объединяющую в себе следующий
функционал: визуализацию трѐхмерной графики (renderer) и обработку
пользовательского ввода. Это базовый функционал программной платформы,
которую принято называть Game (3D) Engine (Игровая Платформа).
Выделение игровых платформ в отдельный класс программных продуктов,
обуславливается тем, что это программы, существенно упрощающие
разработку игровых приложений путѐм решения типовых задач с ней
связанных. Разработка игровой платформы является сложной инженерной
задачей,
однако на сегодняшний день, различными компаниями создано
множество коммерчески распространяемых графических платформ, каждая
из которых имеет некоторую специализацию, притом базовый функционал
остается одним и тем же. При разработке программы, которой посвящена
данная работа, выбор пал на игровую платформу Unity3D. Эта коммерческая
программная система, нашла применение, в разработке множества успешных
программных продуктов, чем хорошо себя зарекомендовала на мировом
18
уровне.
Пример
трехмерной
сцены,
построенной
с
использованием
графической платформы Unity3D, представлен на рисунке 10.
Рисунок 10 – Пример трехмерной сцены визуализированной в реальном времени с
использованием графической платформы Unity3D
В разрабатываемой программе реалистичность изображения будет
являться далеко не первостепенной задачей. Можно выделить основные
причины, по которым была выбрана именно эта платформа:
1. Мультиплатформенность – проекты, написанные с использованием данной
платформы, можно без проблем компилировать под все основные
операционные системы.
2. Модель распространения – существуют две версии Unity3D: индивидуальная
(бесплатная) и профессиональная, причѐм ограничения бесплатной версии
данного программного продукта не являются существенными.
3. Полноценная среда разработки – свобода в написании кода компонентов
программы, возможность привлечения сторонних библиотек, написанных
при помощи любых языков программирования, для расширения встроенного
функционала.
19
4. Возможность
использования
языка
C#
для
написания
компонентов
программы.
3.3 Генерация волн на поверхности воды
Основой динамики жидкости являются уравнения Навье-Стокса,
однако, их использование для расчѐта движения несжимаемой жидкости в
реальном времени не практично по причине колоссальной вычислительной
сложности. В рамках решаемой задачи наибольший интерес вызывает
характер движения воды на океанической поверхности, следовательно,
необходимо разработать такую математическую модель, которая подходит
для вычисления в реальном времени и обеспечивает правдоподобное
поведение водной поверхности. Моделированием водной поверхности
занимались многие разработчики, как результат, существует достаточно
подходов к моделированию и анимации поверхности воды. Большая часть из
них основана на аналитической модели суперпозиции волн, и решение здесь
либо задается сразу в виде линейной комбинации тригонометрических
функций со специально подобранными коэффициентами, либо получается в
результате применения обратного преобразования Фурье со специально
заданным
спектром.
Кратко
изложим
наиболее
успешную
модель,
предложенную Джерри Тессендорфом (Jerry Tessendorf) [6]. Его подход
нашел применение для создания спецэффектов в таких фильмах как
“Титаник” (Titanic 1997) и “Водный мир” (Waterworld 1995).
Реализация волнения водной поверхности подразумевает создание поля
высот (
), где
– некоторая точка на плоскости, – время. Поле высот
состоит из набора синусоид, с различными амплитудами и фазами. В методе
Тессендорфа, предлагается генерировать эти амплитуды и фазы, основываясь
на эмпирических данных океанографии, а затем при помощи быстрого
преобразования Фурье, получить сумму соответствующих синусоид. Быстрое
20
преобразование Фурье – алгоритм быстрого вычисления дискретного
преобразования Фурье (ДПФ), он подробно изложен в [7].
Рассмотрим уравнение, в котором необходимо применить быстрое
преобразование Фурье для получения суммы:
( ̅ )
∑ ̃(̅ )
( ̅ ) – высота в позиции
Здесь
( ̅
(
̅
)
) во времени . ̃ ( ̅ ) –
комплексное число, содержащее амплитуду и фазу волны во время , а вектор
̅ указывает направление движения волны. Длина вектора ̅ зависит от длины
волны
следующим образом:
Обозначим за
размер поля высот и за
быстрого преобразования Фурье (
размерность сетки для
должно быть степенью двойки).
Определим вектор ̅ следующим образом:
̅
(
)
(
)
Далее необходимо сгенерировать амплитуды и фазы для каждого
̃ ( ̅ ). Океанографами выведен спектр соответствующий ветряным волнам
на море, называемый спектр Филлипса, который определяется следующим
уравнением:
( ̅)
, где
(
– скорость ветра и
(
)
)
| ̂ ̂|
– ускорение свободного падения;
̂ – направление ветра (шляпка обозначает нормализацию);
– численное значение амплитуды.
21
В первую очередь создаѐтся начальный набор амплитуд и фаз:
̃ ( ̅)
Здесь,
и
√
(
)√
( ̅)
две независимые случайные величины нормального
распределения с математическим ожиданием 0 и средним квадратичным
отклонением 1. Далее вычисляется набор частотных амплитуд в зависимости
от ̅ и :
̃(̅ )
где,
̃ ( ̅)
(
( ) )
̃ ( ̅)
( ) )
(
( ) – частота волны, которая устанавливается в зависимости от
соответствующей длины волны следующим соотношением:
( )
После применения данного алгоритма, получается набор амплитуд и
частот изменяющийся во времени. Далее, применяя быстрое преобразование
Фурье, мы получим необходимую карту вершин ( ̅ ).
3.4 Написание необходимых компонентов
Процесс разработки включал в себя решение нескольких основных
задач. Необходимо было установить соединение с программой ИТО и
принять от неѐ сигнал, реализовать возможность динамического чтения из
базы данных программного комплекса для построения трѐхмерных моделей
объектов,
разработать
алгоритм
реалистичного
волнения
водной
поверхности, визуализировать рельеф океанического дна. Более подробно
решение этих и других задач рассмотрено далее.
3.4.1 Установка соединения с ИТО
После
задания
тактической
обстановки
в
ИТО,
запускается
разработанная программа. В ней указывается IP адрес и порт сокета, через
который будет происходить соединение. Сокет соединение реализовано при
22
помощи стандартных библиотек C# .Net. В таблице 1 представлен протокол
обмена данными между программами.
№ поля
Описание поля
1
Кодовое слово
начала нового
сообщения
Число объектов
Массив данных по
объектам
Идентификационный
номер объекта
Идентификатор
класса объекта
2
3
3.1
3.2
3.3
Абсолютная
географическая
широта объекта, °
Абсолютная
географическая
долгота объекта, °
Глубина объекта, м
Курс объекта, рад.
Крен объекта, рад.
Дифферент объекта,
рад.
Скорость объекта,
м/с
3.4
3.5
3.6
3.7
3.8
3.9
Тип данных,
размер (в байтах)
unsigned int, 4
Допустимые значения
unsigned int, 4
массив, -
[0; 50]
-
unsigned int, 4
от 1
unsigned short, 2
double, 8
0 – абстрактный
объект;
1 – торпеда (Т);
2 – подводная лодка
(ПЛ);
3 – автономный
необитаемый
подводный аппарат
(АНПА);
41 – автономная
гидроаккустическая
станция (АГС);
42 – автономный
гидроаккустический
излучатель (АГС-И).
[-90; 90]
double, 8
[-180; 180]
float, 4
float, 4
float, 4
float, 4
[0; 500]
*0; 2π)
(-π; π+
(-π; π+
float, 4
[0;80)
0xFACEFACE
Таблица 1 – Состав сообщения от «Шлюза ИТО-АНПА».
На основе обработанной информации формируется список данных,
длина которого зависит от количества объектов участвующих в тактической
обстановке.
23
В момент получения первого пакета данных у программы будут все
необходимые данные для построения трехмерной сцены, а именно,
количество объектов, их тип и координаты. При получении второго и
последующих пакетов, объекты сцены начинают реагировать на изменения, и
в течение одной секунды, трехмерная сцена будет переходить в состояние
соответствующее последнему полученному пакету данных. Таким образом
отображаемая
тактическая обстановка
будет отличаться
от данных,
полученных от ИТО ровно на одну секунду.
3.4.2 Интеграция с базой данных
Каждому типу объекта в базе данных комплекса соответствует файл
формата .3ds, содержащий трехмерную модель объекта. Этот формат был
выбран в связи с тем, что он хранит в себе не только информацию о
геометрии объекта, но также, в случае необходимости, можно хранить в нем
и данные об анимации объекта [8]. Изначально было предложено
использовать формат .fbx, однако его спецификация (структура записи
данных) является закрытой. При появлении каждого нового объекта в сцене,
данные о его модели считываются из базы данных комплекса и
представляются в формате графической платформы для вывода в трехмерной
сцене. Чтение файлов .3ds реализовано при помощи сторонней библиотеки,
под названием Assimp (Open Asset Import Library) [9]. База моделей объектов
может изменяться вне зависимости от разработанного программного
продукта.
3.4.3 Генерация волнения водной поверхности
На момент написания выпускной магистерской диссертации, описанная
ранее модель, не до конца отработана для включения в программу. Еѐ
реализация сопряжена с некоторыми дополнительными сложностями, а
именно с выбором способа применения полученной карты вершин. Учитывая
24
то, что сама по себе модель позволяет достичь впечатляющих визуальных
эффектов, вычисление спектра и расчѐт поворотных множителей, даже при
применении быстрого преобразования Фурье, является довольно сложной
вычислительной задачей, поэтому требуется определить уровни детализации.
Напомним, речь идет о визуализации океанической поверхности большого
масштаба и необходимо принять во внимание тот факт что точка обзора,
может меняться пользователем произвольно, следовательно отображать с
максимальной детализацией требуется только те участки воды, которые
находятся в непосредственной близости к камере, и упрощать уровень
детализации по мере удаления.
Одним из способов направленных на решение проблемы уровней
детализации,
является
метод
проекционной
сетки
(Projected
Grid)
изложенный в [10]. Суть метода заключается в построении равномерной
сетки в плоскости экрана и проецировании еѐ на плоскость океанической
поверхности (Рисунок 11). Такой подход заставляет узлы сетки кучнее
располагаться по мере приближения к камере, после чего следует применять
к ним полученную по методу Тессендорфа карту вершин для симуляции
волнений.
Рисунок 11 – Проекционная сетка
25
При
своей
простоте, метод все же
обладает существенными
недостатками. В некоторых случаях сетка не проецируется на плоскость
воды (рисунок 12) или при еѐ проецировании, полученная трапеция имеет
слишком большую площадь. Сильно растянутая сетка будет иметь
недостаточную плотность вблизи камеры – появятся графические артефакты.
Рисунок 12 – Случай некорректного проецирования
Учитывая необходимость свободного перемещения камеры, возможно
придется рассмотреть другой способ задания плоскости для визуализации,
например, в виде радиальной сетки.
3.4.4 Построение рельефа дна
Данная задача имеет некоторые общие черты с симуляцией волнения
водной поверхности. Аналогично то, что необходимо строить поверхность,
на основании данных записанных в некоторую карту вершин, и снова
необходимо учитывать дистанцию удаления рельефа от камеры, на
основании чего, принимать решение, строить ли рельеф поверхности и, если
строить, то с каким уровнем детализации. Однако здесь не стоит вопроса о
26
непосредственной генерации карты вершин, она передается из программы
ИТО в зависимости от положения камеры.
Предполагается строить рельеф размера достаточного, для того чтобы
покрывать область видимости камеры, используя для этого карту вершин,
записанную в текстуру фиксированного разрешения. Таким образом, чем
ближе камера будет находиться ко дну, тем меньше будет размер строимой
области рельефа, и тем выше его детализация.
На настоящий момент решение этой задачи имеет меньший приоритет
по сравнению с остальными, поэтому построение рельефа дна планируется к
реализации в будущем, после визуализации волнения водной поверхности.
3.4.5 Прочее
К прочим задачам можно отнести создание интерфейса взаимодействия
с пользователем, создание формы, в которую при установке соединения
вписывается IP адрес и порт сокета, инструменты для управления
положением камеры в пространстве, список объектов с возможностью
переключения камеры в режим наблюдения.
27
Вывод
Разработан
компонент
стенда
моделирования,
обеспечивающий
трѐхмерное графическое отображение тактической обстановки для наглядной
демонстрации результатов моделирования работы системы управления,
позволяющий
проводить
наблюдение
за
объектом
или
создавать
изображения подаваемые на вход программе анализа видеопотока.
Для иллюстрации результатов работы программы приведѐм тестовый
эпизод. На рисунке 13 представлен пример задания тактической обстановки в
программе ИТО. В этом эпизоде мы задаѐм пять тестовых объектов,
устанавливаем скорость с которой они будут плыть и направление движения.
В целях эксперимента, предпишем каждому из них плыть держа курс на
север, с различной скоростью. По нажатию кнопки “пуск” объекты начнут
перемещение. Затем запустим программу отображения истинной тактической
обстановки, и установим соединение с программой ИТО. После установки
соединения, заданная тактическая ситуация визуализируется с применением
трѐхмерной графики в программе отображения истинной тактической
обстановки.
На
рисунке
14
можно
увидеть
результат
работы
разрабатываемой программы. В процессе работы программы ИТО можно
свободно менять параметры движения объектов, удалять существующие и
добавлять новые.
Непосредственно
в
самой
программе
отображения
истинной
тактической обстановки, можно осуществлять привязку камеры к объектам
или же свободно изменять еѐ положение в трѐхмерном пространстве.
Таким образом, при запуске разработанной программы, пользователю
представлен результат работы ИТО в наглядной форме. Для удобства
наблюдения за объектами в сцене положение камеры не фиксировано и
может быть задано произвольно при помощи соответствующих команд, или
управляться непосредственно через интерфейс программного комплекса.
28
Рисунок 13 – Интерфейс программы ИТО. Создание тактической обстановки
Рисунок 14 – Полученная трехмерная сцена
Другие примеры изображений, построенных с применением
разработанной программы, можно найти в приложении.
29
Заключение
Разработана программа, выполняющая подключение и выводящая на
экран изображение, соответствующее истинной трехмерной графической
интерпретации тактической ситуации, аналогичное состоянию моделируемой
системы, основываясь на полученных от ИТО данных. Имеется возможность
использовать программу для генерации изображения, подаваемого на вход
программе для анализа видеопотока.
Программа
опирается
на
общую
базу
данных
имитационно-
моделирующего комплекса, которая может быть модифицирована вне
зависимости от настоящего программного продукта.
Разработанная
программа
нашла
применение
в
проведении
моделирования на стендах и успешно внедрена в работающие имитационномоделирующие комплексы. Программа наглядно отображает информацию и
позволяет организовывать видеозахват экрана с трансляцией его в сеть для
обеспечения моделирования оптоэлектронного канала.
В будущем, планируется применить описанную модель для генерации
волнения водной поверхности, а также решить задачу построения и
отображения океанического рельефа дна.
30
Список литературы
1.
Kenton McHenry, Peter Bajcsy, An Overview of 3D Data Content, File
Formats and Viewers. – University of Illinois, 2008
2.
New perspective on the gimbal lock problem / Danail S. Brezov, Clementina
D. Mladenova, Ivailo M. Mladenov – AIP Publishing
3.
Гордеев В.Н. Кватернионы и Трѐхмерная Геометрия – Киев, 2012
4.
Andrew J. Hanson, Visualizing Quaternions, 1st Edition – Computer Science
Department, Indiana University
5.
Mark
Masters,
Essential
3D
Texturing
Terms,
http://blog.digitaltutors.com/cover-bases-common-3d-texturing-terminology/
6.
Jerry Tessendorf, Simulating Ocean Water – ACM SIGGRAPH, 2001
7.
Numerical Recipes in C / William H. Press, Saul A. Teukolsky, William T.
Vetterling, Brian P. Flannery – Cambridge University Press
8.
3D-Studio File Format / Martin van Velsen, Robin Fercoq, Jim Pitts, Albert
Szilvasy
9.
Assimp Documentation and C/C++ Reference, http://assimp.sourceforge.net
10.
Claes Johanson, Real-Time Water Rendering – Lund University
11.
Джозеф Албахари, Бен Албахари, C# 6.0. Справочник. Полное описание
языка. – O’Reilly, 2015
12.
Эндрю Стиллмен, Дженнифер Грин, Изучаем C#. – O’Reilly, 2012
13.
Joe Hocking, Unity in Action: Multiplatform Game Development in C# with
Unity 5, 1st Edition – Manning, 2015
14.
Alex Okita, Learning C# Programming with Unity3D – CRC Press Book,
2014
15.
Бертран
Мейер,
Объектно-ориентированное
конструирование
программных систем – Интернет Университет, 2005
16.
Tomas Akenine-Moller, Eric Haines, Naty Hoffman, Real-Time Rendering,
Third Edition – CRC Press Book, 2008
31
17.
David Wolff, OpenGL 4.0 Shading Language Cookbook – PACKT
Publishing, 2011
32
Отзывы:
Авторизуйтесь, чтобы оставить отзыв