Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования «Нижегородский государственный архитектурно-строительный университет»
На правах рукописи
Бобков Александр Евгеньевич
Интерактивная визуализация 3D-данных на
виртуальном глобусе в стереоскопических
системах
Специальность 05.01.01 – Инженерная геометрия и компьютерная графика
ДИССЕРТАЦИЯ
на соискание учёной степени
кандидата технических наук
Научный руководитель:
доктор физико-математических наук
Афанасьев Валерий Олегович
Нижний Новгород — 2013
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 4
ГЛАВА 1. Методы построения и визуализации виртуальных глобусов 9
1.1. Прошлое и настоящее виртуальных глобусов 9
1.2. Обзор программных решений и открытых стандартов 21
1.3. Генерация рельефа для виртуальных глобусов 26
1.4. Выводы по 1 главе 37
ГЛАВА 2. Визуализация виртуального глобуса 39
2.1. Варианты отображения виртуального глобуса 39
2.2. Полупрозрачная поверхность глобуса 46
2.3. Применимость для подземных объектов 58
2.4. Выводы по 2 главе 60
ГЛАВА 3. Визуализация данных на виртуальном глобусе 61
3.1. Облака точек 61
3.2. Объемные данные 75
3.3. Выводы по 3 главе 82
ГЛАВА 4. Описание программного комплекса 84
4.1. Программный комплекс 85
4.2. Стереоскопическая визуализация 90
4.3. Навигация и взаимодействие 96
4.4. Выводы по 4 главе 114
ЗАКЛЮЧЕНИЕ 115
БЛАГОДАРНОСТИ 117
СЛОВАРЬ ТЕРМИНОВ 118
СПИСОК ЛИТЕРАТУРЫ 119
ПРИЛОЖЕНИЕ А. Источники геоданных 131
ПРИЛОЖЕНИЕ Б. Шейдеры для объемной визуализации 134
ПРИЛОЖЕНИЕ В. Расчет стереоэффекта 137
ПРИЛОЖЕНИЕ Г. Аппаратное обеспечение 143
ВВЕДЕНИЕ
Общая характеристика работы
Развитие виртуальных глобусов началось около 10 лет назад. Под виртуальным глобусом понимается трехмерная модель планеты Земля, воссозданная с определенной точностью по спутниковым данным, с интерактивным программным обеспечением, которое позволяет работать с трехмерной моделью Земли, рассматривать её на любых масштабах и визуализировать данные (объекты, модели) с привязкой к географическим координатам. Первые глобусы позволяли просматривать высокодетализированные спутниковые снимки, наложенные на трехмерный рельеф. Последние годы растет интерес к использованию виртуальных глобусов для более практических задач визуализации и анализа различных типов данных на глобусе. Во-первых, появились спутниковые данные высокого разрешения, цифровая модель рельефа почти всей Земли в свободном доступе (SRTM). Во-вторых, широкое распространение получил интернет, что позволило хранить большие объемы спутниковых данных на удаленных серверах. Видеокарты позволили интерактивно отображать трехмерный рельеф, высокодетализированную спутниковую подложку и дополнительные эффекты вроде атмосферного рассеяния. Основные области применения: геоинформационные системы (ГИС), системы автоматизированного проектирования и исследования процессов, компьютерные игры и т.п.
Таким образом, в настоящее время виртуальный глобус является мощным инструментом для специалистов разных областей, которым требуется визуализация данных в географическом контексте. Виртуальный глобус может стать единой платформой для визуализации всех типов данных с географической привязкой. Для этого необходимо разрабатывать методы визуализации указанных данных, методы взаимодействия и управления данными в трехмерном пространстве.
В отечественной науке существенный вклад в развитие теоретических основ и практических решений в области геометрического моделирования и визуализации внесен научными школами Бондарева А.Е., Васина Ю.Г., Галактионова В.А., Дебелова В.А., Денискина Ю.И., Долговесова Б.С., Желтова С.Ю., Журкина И.Г., Кеткова Ю.Л., Кучуганова В.Н., Никитина И.Н., Роткова С.И., Сурина А.И., Толока А.В., Турлапова В.Е., Утробина В.А. и ряда других исследователей.
Актуальность работы обусловлена тем, что, не смотря на существование в настоящее время большого количество реализаций различных алгоритмов генерации и визуализации виртуального глобуса (включая атмосферу), визуализации 3D-данных на глобусе (3D-модели, векторные наложения на рельеф) и др., пока остаются нерешёнными задачи визуализации полупрозрачной поверхности на глобусе, визуализации облаков точек и объемных данных на глобусе, необходимые для создания программных систем визуализации научных данных (в частности, подземных геофизических данных), данных лазерного сканирования и других видов данных, которые появляются в настоящее время как следствие использования новых методов и аппаратуры зондирования.
Цель диссертационной работы состоит в создании алгоритмического и программного обеспечения формирования и визуализации пространственной географической информации.
Для достижения поставленной цели необходимо было решить следующие задачи:
- разработать способ визуализации глобуса с полупрозрачной поверхностью с возможностью как надземного, так и подземного просмотра;
- разработать алгоритмы визуализации облаков точек и объемных данных с учетом особенностей виртуального глобуса и виртуального окружения;
- разработать программный комплекс для стереоскопической визуализации данных на виртуальном глобусе, проектирования, конструирования в общегеографическом контексте.
Научная новизна:
- Разработан новый способ визуализации виртуального глобуса, который позволяет, благодаря полупрозрачной поверхности, визуализировать 3D-объекты под поверхностью глобуса и обеспечить отсутствие графических артефактов, связанных с полупрозрачностью, и возможность как надземного, так и подземного просмотра.
- Разработан новый алгоритм визуализации облаков точек, характерной особенность которого является использование географических координат, возможность работы с облаками точек любого размера и динамическая фильтрация точек на графическом процессоре по заданным критериям.
- Разработан новый алгоритм визуализации объемных данных на виртуальном глобусе, который работает с данными в географической системе координат и при визуализации учитывает форму глобуса.
Практическая значимость.
Результаты работы были использованы для создания интерактивного научно-популярного приложения «Виртуальная Долина гейзеров», которое было внедрено и используется в музее Кроноцкого государственного природного биосферного заповедника.
Результаты работы были использованы для реалистичной визуализации горнолыжных трасс для горнолыжного тренажера в Московском физико-техническом институте. Диссертант является соавтором статьи по горнолыжному тренажеру, которая была доложена на конференции Cyberworlds 2011 и получила награду Best Paper Award.
Результаты работы также внедрены в Институте проблем безопасного развития атомной энергетики Российской академии наук, Всероссийском научно-исследовательском институте по эксплуатации атомных электростанций, Институте истории естествознания и техники Российской академии наук, Институте физико-технической информатики.
Основные положения, выносимые на защиту:
- Способ визуализации виртуального глобуса с полупрозрачной поверхностью рельефа, который обеспечивает как надземный, так и подземный просмотр геометрических объектов под поверхностью глобуса и устраняет графические артефакты, вызванные перекрытием слоев рельефа и вспомогательной геометрии.
- Алгоритм визуализации облаков точек на глобусе с уровнями детализации, учетом формы глобуса, контролем плотности точек на экране и фильтрации по заданным критериям на графическом процессоре.
- Алгоритм визуализации объемных данных, заданных в географической системе координат и учитывающий форму глобуса.
Достоверность изложенных в работе результатов обеспечивается корректным применением аппарата компьютерной геометрии и графики, подтверждена экспериментальным тестированием алгоритмов и программ, результатами опытной эксплуатации разработанных программных средств.
Апробация работы.
Основные результаты диссертации докладывались на следующих конференциях: международных конференциях MEDIAS 2010, MEDIAS 2011, MEDIAS 2012 (2010 г., 2012 г., г. Лимассол, Республика Кипр), Графикон 2010 (2010 г., г. Санкт-Петербург), Графикон 2012 (2012 г., г. Москва), «Ситуационные центры и информационно-аналитические системы класса 4i» (2011 г., г. Москва), на 53-й научной конференции МФТИ (2010 г., г. Долгопрудный), на 54-й научной конференции МФТИ (2011 г., г. Долгопрудный), на 3-й научно-технической конференции «Проблемы комплексного геофизического мониторинга Дальнего Востока России» (2011 г., г. Петропавловск-Камчатский).
Результаты работы демонстрируются посетителям Постоянно действующей выставки достижений РАН. В августе 2012 результаты работы были представлены участникам 33-й Генеральной ассамблеи Европейской сейсмологической комиссии и были высоко оценены ими.
Работа велась в том числе в рамках грантов РФФИ 12-07-31043 мол_а, 10-07-00407-а.
Публикации. Основные результаты по теме диссертации изложены в 12 научных работах, 4 из которых опубликованы в изданиях, рекомендованных ВАК Минобрнауки России.
Структура и объем диссертации
Диссертация состоит из введения, 4 глав, заключения, словаря терминов, библиографии и 4 приложений. Общий объем диссертации 143 страницы, из них 113 страницы текста, включая 70 рисунков. Библиография включает 144 наименований на 12 страницах.
- Методы построения и визуализации виртуальных глобусов
1.1. Прошлое и настоящее виртуальных глобусов
1.1.1. Географическая визуализация до виртуальных глобусов
Одно из самых важных применений виртуальных глобусов — это географическая визуализация. В статье [13] приводится определение географической визуализации: это применение графического представления данных для облегчения пространственного понимания вещей, понятий, условий, процессов и событий в человеческом мире.
Считается, что одним из первых случаев применения географической визуализации является «холерная карта» Джона Сноу (рис. 1.1). В 1854 Сноу обозначил на карте Лондона случаи заражения холерой и отметил все водяные насосы для подачи питьевой воды. Большинство случаев заражения концентрировались вокруг одного насоса. Сноу использовал карту для подтверждения свой теории, что источником заражения является этот насос [14].
В результате роста научного знания к середине 20го века появилось множество теорий, описывающих геопространственные процессы (геологические, климатические, экономические и антропологические теории), результаты которых необходимо было отображать на географических картах.
В начале 1960-х годов развитие компьютеров привело к появлению первых геоинформационных систем (ГИС) [15].
ГИС — это система для сбора, хранения, анализа и визуализации геопространственных данных и связанных с ними атрибутов. ГИС развивают идею Джона Сноу по наложению на географические карты дополнительных слоев данных с целью их учета и анализа. Первые ГИС развивались с государственной поддержкой (ГИС Канады) и использовались для городского планирования, переписи населения [16].
Рис. 1.1. Холерная карта Джона Сноу |
В начале 1980-х годов начали появляться коммерческие ГИС. Одна из самых известных компаний-разработчиков ГИС ESRI выпустила свой продукт ARC/INFO в 1982 г. ГИС стали доступны широкому кругу пользователей и превратились в мощный инструмент для работы с картографическими данными и тематическими геоданными [17].
Постепенно стал доступен сетевой доступ к данным, а с развитием высокоскоростного интернета стал распространяться способ работы с ГИС через тонкие клиенты (браузеры). В настоящее время карты уже не являются статическими, а генерируются в процессе работы на основе информации из базы данных по запросу пользователя. Возможно динамические объединение информации из разных источников, разных сайтов, встраивание картографических сервисов на любой сайт.
Параллельно с развитием классических 2D ГИС в 1990-х годах возникает концепция 3D ГИС [18]. 3D ГИС позволяет изучать трехмерный рельеф с любых точек зрения, городские сооружения и инфраструктуру, визуализировать проектируемые здания, планировать развитие территорий, производить оценку высотных характеристик, области видимости, проводить визуальный анализ.
Однако внедрение 3D ГИС идет медленно. В работе [19] перечисляются основные причины этого:
- организация 3D-данных. Существуют разные методы представления 3D-моделей. У каждого есть свои преимущества и недостатки. Не ясно, в каком виде хранить модели в базах данных предпочтительнее и как конвертировать между разными представлениями;
- реконструкция 3D-объектов. 3D ГИС должны иметь возможность просмотра моделей реальных объектов. Для этого необходимо выполнить их 3D-реконструкцию. Быстрые методы реконструкции выдают грубые и не точные модели. Более детальные модели выполняются вручную или полуавтоматически и требуют много времени. Реконструкция большого числа объектов (3D-городов) — крайне затратная операция;
- 3D-визуализация. Для реалистичной визуализации 3D-объектов необходимо решить ряд задач: разработать алгоритмы освещения, затенения, анимации объектов, поддержать уровни детализации, туман, навигацию по трехмерной сцене, взаимодействие с 3D-объектами. При этом технологии постоянно развиваются и усложняются, растут требования к реалистичности.
В нескольких регионах России в 2010-2012 гг. начались пилотные проекты по внедрению 3D ГИС [20-22]. Виртуальные глобусы — это дальнейшее логическое развитие идеи 3D ГИС.
1.1.2. Первые виртуальные глобусы
В работе с 2D- и 3D-представлением геоданных существует большая разница. Для 2D-данных (как растровых, так и векторных) давно разработаны алгоритмы визуализации, анализа, хранения, используются стандартные форматы и множество программных продуктов для разных задач.
Рис. 1.2. Виртуальный глобус в игре X-COM: UFO Defense (1994 г.) |
Но для визуализации виртуального глобуса необходимы трехмерная графика и большие объемы данных, а главным требованием является интерактивная частота кадров (не менее 30 кадров в секунду). При этом не существует общепринятых стандартов к работе с данными на виртуальном глобусе, к навигации в пространстве виртуального глобуса. Всё это замедляет внедрение виртуальных глобусов для решения практических задач.
В 80-е годы и начале 90-х годов основным ограничителем являлась мощность видеокарт. Глобусы использовались для показа простейших векторных данных, таких как границы континентов и государств, орбиты космических аппаратов (рис. 1.2).
В 90-е годы мощность персональных компьютеров позволила использовать более детализированные текстуры земной поверхности. В конце 90-х годов появились такие продукты как Encarta Virtual Globe компании Microsoft (1998 г.) и 3D World Atlas компании Cosmi Corporation (1999 г.) (рис. 1.3). Это были мультимедийные приложения, где глобус сочетался с разнообразной энциклопедической информации о странах мира. Разрешение текстур было невысоким, поэтому они помещались на обычные CD-диски [23, 24].
Рис. 1.3. 3D World Atlas (1999 г.) |
Параллельно с этим в 90-е годы была заложена идеологическая основа виртуальных глобусов. Так в 1992 году вышел роман Нила Стивенсона «Лавина» в жанре киберпанк, в котором было описано приложение «Земля» для доступа к разнообразным данным. Впоследствии роман оказал влияние на создателей виртуального глобуса Google Earth [25].
31 января 1998 г. вице-президент США Альберт Гор произнес речь «Цифровая Земля: понимание нашей планеты в XXI веке», в которой он предложил создать «Цифровую Землю» — приложение, которое должно включать все увеличивающее количество геоданных, быть подсоединено к базам данных и знаний всего мира и обеспечить лучшее описание и понимание окружающего мира и человеческой деятельности [26].
В конце 90-х — начале 2000-х гг. произошел перелом в развитии виртуальных глобусов. Это связано со следующими факторами.
Частные компании, такие как GeoEye и Digital Globe, начали запускать спутники дистанционного зондирования для получения снимков высокого разрешения (до 0,5 метра) [27, 28]. NASA запустило миссию SRTM по созданию общедоступной цифровой модели рельефа для всей Земли [29].
Полученные со спутников данные имеют огромные размеры. Можно грубо сделать следующую оценку: для хранения текстуры всей Земли с разрешением 0.5м/пк нужно 11 петабайт. Даже если выкинуть все моря, океаны, пустыни и полюса, всё равно остаётся внушительное число. На CD-диск эти текстуры уже не поместятся.
В это же самое время появился высокоскоростной доступ к интернету. Возникла идея размещать геоданные на серверах в интернете, а на компьютеры пользователей устанавливать клиентское программное обеспечение (ПО), которое должно скачивать изображения только той части поверхности Земли, которая нужна пользователю.
Также в это время рост рынка компьютерных игр привел к жесткой конкуренции между производителями видеокарт. Слабые игроки были либо вытеснены с рынка, либо куплены более сильными игроками. В начале 2000-х годов остались две основные компании: NVIDIA и ATI (позже перешла под контроль AMD). Конкуренция привела к быстрому развитию видеокарт и переносу графических вычислений на графический процессор [30]. Это развитие позволило интерактивно визуализировать на экране компьютера модель глобуса с текстурами и рельефом высокого разрешения и различными эффектами.
Таким образом, указанные 3 фактора (появление данных ДЗЗ высокого разрешения, развитие интернета и видеокарт) стали толчком для появления виртуальных глобусов нового поколения и роста интереса к глобусам в мире.
Компания Keyhole одной из первых начала развивать свой продукт в 2001 году на базе этой идеи. Впоследствии она была куплена компанией Google. Переименованный в Google Earth продукт вышел в 2005 году для свободного использования [31]. Параллельно NASA выпустила свой продукт World Wind в 2004 году и Microsoft выпустила Virtual Earth (ныне Bing Maps 3D) в 2006 году.
Google Earth стал по-настоящему массовым продуктом и популяризовал идею виртуальных глобусов [32]. Разработчики ГИС также стали внедрять у себя возможность просмотра геопространственных данных на глобусе (ArcGIS, gvSIG). Учёные начали публиковать свои данные в открытом формате KML для просмотра результатов на глобусе.
Далее рассмотрим более подробно глобусы Google Earth и NASA World Wind.
1.1.3. Google Earth
Google Earth — виртуальный глобус компании Google, который был куплен у компании Keyhole (рис. 1.4). GE — бесплатен для некоммерческого использования, но имеет закрытый исходный код. Также имеются платная версия с расширенным функционалом. GE поддерживает операционные системы Windows, Linux, Mac OS X, iOS и Android [33].
В GE используются коммерческие спутниковые и аэрофотоснимки высокого разрешения до 0.15м/пк. Также возможен просмотр исторических снимков.
Рис. 1.4. Виртуальный глобус Google Earth |
GE позволяет просматривать также карту звездного неба и снимки Луны и Марса. Имеется встроенный авиасимулятор. GE позволяет просмотр пользовательских геоданных в формате KML: векторные данные, растровые данные и 3D-модели. Также GE позволяет добавление и редактирование собственных данных и сохранение их в формате KML. Имеется множество встроенных слоев данных: 3D-здания, границы государств, названия географических объектов, дороги, фотографии разных мест.
1.1.4. NASA World Wind
NASA World Wind — это виртуальный глобус, разрабатываемый NASA и сообществом открытого программного обеспечения (рис. 1.5). Он позволяет просматривать спутниковые снимки Земли, Луны, Марса, Юпитера, некоторых его спутников и карту звёздного неба [34].
Рис. 1.5. Виртуальный глобус NASA World Wind 1.4.0 (14.02.2007) |
Основные отличия от Google Earth: полностью бесплатен, в том числе для коммерческого использования; имеет открытый исходный код, который можно использовать для создания своих приложений на базе WW; использует бесплатные снимки Земли: на мелких масштабах — Blue Marble NG, на крупных масштабах — Landsat 7, но при этом позволяет брать данные и из других источников.
Первая версия WW вышла в 2004 году, была написана на C# и работала только под Windows. Разработка этой версии прекращена в 2007 году, и поэтому имеются проблемы совместимости с Windows Vista/Windows 7. Некоторый функционал недоступен, в частности модуль Scientific Visualization Studio, который позволяет просматривать анимацию многих природных явлений (пожаров, ураганов).
1.1.5. Неогеография
Рывок технического прогресса в области виртуальных глобусов и появление Google Earth привели к широкому распространению термина «неогеография». Хотя этот термин и использовался раньше, в современном смысле он был рассмотрен в 2006 году в книге Эндрю Тернера «Введение в неогеографию» [35].
Термин «неогеография» означает совокупность новых методов и средств для работы с геоданными [36]. Можно выделить три основных отличия от традиционного подхода:
- использование географических систем координат (долгота, широта и высота), а не картографических;
- использование растрового представления информации как основного;
- использование открытых форматов данных.
В традиционных ГИС используются картографические проекции, а данные хранятся в основном в векторной форме. Это было необходимо, т.к. во времена первых ГИС компьютеры были менее производительны, чем сейчас, а векторные данные занимают меньше места и требуют меньше вычислительных ресурсов.
Однако картографические проекции приводят к геометрическим искажениям: искажениями длин, площадей и углов. А векторные данные не полно и не точно отражают окружающую действительность.
Современные компьютеры могут легко работать, как с векторными, так и с растровыми данными ДДЗ, наложенными на виртуальный глобус. Также есть возможность отображения любых 3D-моделей на глобусе. Это позволяет отказаться от условных обозначений и заменить их приближенными к реальности 3D-моделями.
Неогеография предполагает обмен геопространственными данными между различными приложениями и для этого использование открытых стандартизованных форматов данных. Одним из таких форматов является KML (Keyhole Markup Language), который был изначально разработан для Google Earth и впоследствии был стандартизован. Сейчас этот формат поддерживают большинство ГИС и виртуальных глобусов.
Однако в среде профессиональных географов термин был встречен неоднозначно. Доктор географических наук А.М. Берлянт подверг критике термин «неогеография» в нескольких свои работах [37]. Основные положения: этот термин используется для влияния на «администраторов, распоряжающихся денежными суммами», неогеография подразумевает отказ от условного, знакового обозначения объектов [38].
1.1.6. Современные тенденции в развитии виртуальных глобусов
Google Earth хорошо подходит для просмотра спутниковых снимков и готовых геопространственных данных. Но полноценная работа и анализ данных невозможны. GE нельзя расширять, усовершенствовать, добавлять свои типы данных и интегрировать с другими приложениями. У GE закрытые исходники и нет программного интерфейса (API), кроме браузерной версии.
Сейчас мы находимся на этапе, когда происходит применение виртуальных глобусов для реальных практических задач, проводятся исследования, разрабатываются новые виртуальные глобусы и идеи их применения. Можно привести несколько работ в этой области.
В Институте геодезии и геоинформатики Университета прикладных наук Северо-Западной Швейцарии с середины 2000-х годов разрабатывается виртуальный глобус i3D для научно-исследовательских целей [39].
В работе Schafhitzel T., Falk M., Ertl T. 2007 года [40] описывается реалистичный рендеринг планет с атмосферой в реальном времени.
В работе Schoning J., Hecht B., Raubal M. 2008 года [41] предлагается улучшение взаимодействия с виртуальным глобусом с помощью сенсорного экрана с множественным касанием (multitouch). Там же указывается на важность ответов на вопрос «Почему здесь это находится?», а не только «Что здесь находится?» при работе с виртуальным глобусом.
В работе Christen M. 2008 года [42] рассматривается идея применения трассировки лучей для рендеринга виртуальных глобусов, а также приводится набор необходимых улучшений для повышения реализма: процедурная генерация текстур на основе спутниковых данных, реалистичные облака, вода и растительность.
В 2009 году был разработан виртуальный глобус Crusta [43] специально для задач геологии. Упор был сделан на точную и интерактивную визуализацию высокодетализированных данных (меньше 1м/пиксель). Глобус использует многогранник из 30 граней, что позволяет уменьшить искажения и устанить сингулярность на полюсах. Далее каждая грань рекурсивно делится на четырехугольники.
В 2010 группа немецких исследователей в рамках проекта EuroSDR (European Spatial Data Research) провела опрос участников геоиндустрии об использовании виртуальных глобусов и затем опубликовала отчет [44]. Основные выводы: виртуальные глобусы оказывают положительное влияние на индустрию и это направление будет развиваться и дальше. Основные проблемы: отсутствие стандартизации этой области и необходимость в больших вычислительных мощностях и новых геоинструментах.
Технология лидарной съемки позволяет восстанавливать трехмерный рельеф по облаку точек. В статье Christen M., Nebiker S. 2011 года описывается модификация алгоритма триангуляции Делоне для быстрого построения трехмерного рельефа виртуального глобуса с уровнями детализации [45].
В статье Nebiker S., Bleisch S., Christen M. авторы предлагают новый подход к построению 3D-моделей городов, основанный на использовании облаков точек лазерного сканирования на виртуальном глобусе [46].
В 2011 была Bleisch S. защищена диссертация по оценке пригодности визуального комбинирования количественных данных при визуализации на виртуальном глобусе [47].
В 2011 году вышла монография «3D Engine Design for Virtual Globes» [48], полностью посвященной вопросам разработки приложений с использованием виртуальных глобусов. В книге рассматриваются основные вопросы и задачи, которые возникают при разработке глобусов: системы координат, математика эллипсоида, проблема точности и дрожания (jittering), рендеринг векторных данных на глобусе, рендеринг рельефа.
Усилия разработчиков тратятся сейчас на поддержку визуализации различных типов векторных данных на глобусе, 3D-моделей, поддержку очень больших массивов данных: задачи динамической подгрузки и выгрузки.
Другое направление развития — увеличение реализма визуализации. Сейчас уже поддержаны визуализация атмосферы для любых высот над Землей, визуализации 3D-моделей зданий больших городов. Интересно отметить проект Outerra, разработчики которого добавляют фрактальную детализацию к данным ДЗЗ, генерируют процедурные дороги, леса и различные природные эффекты (рис. 1.6). Детали реализации разработчики раскрывают в блоге проекта [49]. Существуют такие задачи, как реалистичная вода, динамические тени, смена времен года.
Рис. 1.6. Виртуальный глобус Outerra |
Визуализация данных на виртуальном глобусе также входит и в повседневную жизнь. Многие имеют телефоны со встроенными GPS или ГЛОНАСС датчиками. Это позволяет отображать на глобусе маршруты своих передвижений, добавлять географическую привязку к фотографиям и сообщениям в переписке с другими людьми.
Возникают проекты, в том числе с открытым исходным кодом, которые позволяют формировать виртуальный глобус на основе современных спутниковых снимков и цифровых моделей рельефа. Один из примеров — NASA World Wind Java SDK, выпущенный в 2007 году. Другой — библиотека osgEarth, разработка которой началась в 2008 году на языке С++.
Эти проекты позволяют внедрять возможности виртуального глобуса в другие приложения. Они берут на себя генерацию глобуса из данных ДЗЗ, позволяя пользователям подключать любые типы и источники данных, разрабатывать приложения для анализа данных на основе глобуса. Подробнее они рассмотрены в следующем параграфе.
1.2. Обзор программных решений и открытых стандартов
Существует несколько программных решений, имеющих программный интерфейс (API), который обеспечивает возможность написания производных приложений для работы с данными на виртуальном глобусе.
1.2.1. Google Earth browser plug-in
Первые версии приложения Google Earth имели COM API, который позволял писать расширения. Однако в последних версиях его отключили [50]. Вместо этого в 2008 году Google выпустил специальную версию Google Earth в виде плагина для браузера, который можно встраивать на веб-странички. Этот плагин обладает своим API, который позволяет управлять визуализацией данных в GE с помощью языка JavaScript [50]. Плагин работает только в операционных системах Windows и Mac OS X.
Функционал плагина для браузера повторяет функционал основной версии. Возможны создание, изменение и визуализация векторных данных: меток, ломаных линий, полигонов, 3D-моделей, аннотаций, наложений, управление камерой, запись и воспроизведение виртуальных туров. В основной версии все эти действия пользователь может выполнять мышкой. В браузерной версии эти действия могут быть автоматизированы программным образом. Можно загружать данные из разных источников, анимировать их, реагировать на действия пользователя.
Реализовать принципиально новый функционал API не позволяет. Поэтому возможное применение плагина Google Earth сильно ограничено.
1.2.2. NASA World Wind Java SDK
Первая версия NASA World Wind, вышедшая в 2004 году, была основана на платформе.NET работала только под Windows.
В 2007 году началась разработка новой версии NASA World Wind на языке Java [51]. Она называется World Wind Java SDK, имеет открытый исходный код, работает на любых операционных системах с поддержкой Java и OpenGL, и может встраиваться на веб-странички в виде Java-апплета.
World Wind Java SDK — это не готовое приложение, а набор компонентов, которые можно использовать для разработки собственных приложений для визуализации и анализа геопространственных данных на виртуальном глобусе, можно интегрировать в существующие приложения на Java. Вместе с WW Java SDK идёт набор демонстрационных приложений, каждое из которых иллюстрирует отдельные возможности WW.
Основные возможности: загрузка изображений поверхности Земли и карт высот из разных интернет-источников, доступных по протоколу WMS; использование локальных данных; экспорт текстур и карт высот в виде отдельных GeoTIFF-файлов; чтение векторных форматов файлов (KML, Shapefile); визуализация векторных данных (точки, линии, полигоны); визуализация 3D-моделей и аннотаций. Графический интерфейс пользователя реализуется через библиотеки AWT и Swing.
Благодаря открытости исходного кода, все эти компоненты можно дополнять, расширять и модифицировать под нужны конкретной задачи.
1.2.3. osgEarth
osgEarth — инструментарий с открытым исходным кодом для рендеринга рельефа и данных на рельефе виртуального глобуса [52]. osgEarth выпущен под лицензией LGPL и написан на C++. osgEarth основан на OpenGL и является надстройкой над графическим инструментарием OpenSceneGraph. osgEarth работает на любых операционных системах, которые поддерживают OpenGL, включая мобильные iOS и Android.
Также как и WW Java SDK, osgEarth можно использовать для разработки собственных приложений, либо для интеграции виртуального глобуса в существующие приложения.
Одно из основных отличий osgEarth в том, что исходные растровые данные для построения рельефа не обязательно заранее обрабатывать. osgEarth может работать с «сырыми» данными и генерировать рельеф динамически во время работы приложения. Предобработка данных может ускорить этот процесс. Генерируемый рельеф автоматически кэшируется, что позволяет ускорить работу приложения при последующих запусках.
Основные возможности такие же, как и в WW Java SDK: загрузка изображений поверхности Земли и карт высот из разных интернет-источников по протоколам WMS, WCS, TMS; использование локальных данных; чтение векторных форматов файлов (KML, Shapefile); визуализация векторных данных (точки, линии, полигоны); визуализация 3D-моделей и аннотаций. Добавить графический интерфейс пользовать можно либо с помощью фреймворка Qt, либо встроенной библиотеки виджетов.
Конфигурировать глобус можно либо в коде на C++, либо с помощью специального файла в формате XML. В нем указываются пути к слоям изображений, карт высот, пути к файлам с векторными данными. Можно задавать стили в формате CSS для векторных данных в зависимости от их атрибутов. Также можно использовать JavaScript для этих целей.
osgEarth может разбивать большие массивы векторных данных тайлы с уровнями детализации и подгружать их при приближении. Авторы osgEarth разработали протокол Tile Feature Service (TFS) для быстрой подгрузки таких данных в osgEarth [53].
1.2.4. Протоколы передачи данных
Существует множество открытых стандартов для хранения и передачи геопространственных данных. Стандартизацией занимается Открытый геопространственный консорциум, основанный в 1994 году. Все стандарты поддерживаются множеством приложений и библиотек, как проприетарных, так и свободных.
Web Map Service (WMS) — стандартный протокол для получения растровых изображений через интернет [54]. Был опубликован в 1999 году. Работает поверх протокола HTTP. Изображения могут генерироваться динамически на сервере, либо браться из кэша. WMS поддерживает 2 типа запросов: GetCapabilities для получения параметров WMS-сервера и GetMap для получения изображения с заданными границами, размерами и системой координат.
Недостатком WMS является то, что размеры запрашиваемого изображения могут быть любыми. Это затрудняет кэширование результатов и приводит к необходимости при каждом запросе генерировать выходное изображение заново. Предложено несколько модификаций для решения этого. Например, WMS-C и Tiled Web Map Service, которые допускают только запросы изображений с определенными границам.
Tile Map Service (TMS) — спецификация хранения растровых картографических данных в виде множества тайлов разных уровней детализации, распределенных по папкам [55]. Зная стандартную структуру папок, клиентское приложение может запрашивать необходимые тайлы с сервера по URL.
Web Map Tile Service (WMTS) — протокол для получения растровых изображений, который пришел на смену TMS и решает проблемы WMS [56]. Был опубликован в 2010 году. При получении запроса сервер может отправить либо изображение из кэша, либо сгенерировать его динамически.
Web Coverage Service (WCS) — протокол для получения покрытий через интернет [57]. Под покрытием подразумеваются данные, протяженные в пространстве и изменяющиеся во времени. В отличие от WMS, который возвращает статические изображения, WCS возвращает дополнительно метаданные, которые позволяют далее взаимодействовать с покрытием на клиенте.
Web Feature Service (WFS) — протокол для получения географических объектов через интернет [58]. Позволяет получать список объектов в заданной области, создавать новые объекты, удалять и изменять объекты. Сами данные передаются с сервера на клиент в формате Geography Markup Language (GML).
1.2.5. Форматы данных
Существует большое количество разнообразных форматов для хранения растровых и векторных данных.
GeoTIFF — формат для хранения растровых данных. Добавляет специальные метаданные к изображению: систему координат, проекцию, эллипсоид, датум, размеры и границы изображения.
Geography Markup Language (GML) — формат, основанный на нотации XML, для описания и хранения геопространственных данных. Формат может включать любую географическую информацию. Благодаря своей универсальности, формат используется для обмена данными между различными приложениями.
Keyhole Markup Language (KML) — формат, который используется для визуализации геопространственных данных [59]. Этот формат был разработан и начал использоваться в приложении Google Earth. Сейчас это открытый стандарт [60], и его поддерживает множество разных приложений. KML-файлы часто распространяются в виде ZIP-архива с расширением.kmz. В этом случае архив может также содержать дополнительные файлы: изображения, звуковые файлы, 3D-модели.
KML может содержать информацию геометрию (точки, линии, полигоны, 3D-модели), накладываемые изображения, аннотации. 3D-модели и сами изображения хранятся во внешних файлах, а в KML-файле содержатся только ссылки. Все координаты задаются в географической системе координат WGS84. Высоты можно задавать абсолютно или относительно рельефа. Внешний вид геометрии и задается с помощью стилей.
Дополнительно можно задавать положения камеры при просмотре и даже целые виртуальные «путешествия», которые включают подлеты к заданной точке, паузы, звуковые вставки, запуск аннотаций, изменение видимости геометрии.
Shapefile — формат хранения векторных геопространственных данных. Разработан компанией ESRI [61]. Не является открытым стандартом, однако это стандарт для обмена данными между геоинформационными системами. Помимо геометрических данных позволяет хранить атрибутивные данные.
1.3. Генерация рельефа для виртуальных глобусов
В основе визуализации рельефа для виртуальных глобусов лежат те же алгоритмы, что и для «плоского» рельефа, но с некоторыми модификациями.
При визуализации рельефа можно выделить две основные фазы: (1) генерация геометрии рельефа и (2) текстурирование и освещение этой геометрии.
Рассмотрим подробнее первую фазу. Вторая будет освещена во второй главе.
1.3.1. Генерация трехмерного рельефа
Существует множество разных методов создания трехмерного рельефа. Рассмотрим основные из них.
Полигональные поверхности. Трехмерный рельеф аппроксимируется полигональной поверхностью. Высота точек поверхности берется из карты высот. Есть несколько вариантов построения полигональной поверхности:
- регулярная сетка — вершины расположены через равные интервалы. Каждому пикселю карты высот соответствует своя вершина сетки. Это наиболее простой метод;
- нерегулярная сетка (TIN, Triangular Irregular Network) — в местах быстрого перепада высот плотность вершин делается выше, в более ровных местах — ниже. Это позволяет уменьшить количество полигонов, но требует большего времени на построение.
Генерация, использование и текстурирование нерегулярных сеток – довольно сложная задача. Они могут дать выигрыш, если большая часть рельефа плоская и сам рельеф небольшого размера.
Поэтому на практике для больших территорий применяются регулярные сетки, которые удобнее в работе и проще строятся. А уменьшение количества полигонов можно достичь с помощью уровней детализации. К тому же развитие производительности видеокарт сводит на нет преимущества нерегулярных сеток [62].
Уровни детализации (LOD, Level of Detail). Но для больших территорий использование одной большой полигональной поверхности не выгодно. Большая 3D-модель рельефа занимает видеопамять и процессорное время. В каждый момент времени видна лишь небольшая часть большой территории. А если отдалиться и посмотреть на всю территорию целиком, то детализация поверхности будет слишком избыточной.
Поэтому применяются уровни детализации рельефа. Издалека виден грубый рельеф, а при приближении детализация полигональной поверхности увеличивается.
Существуют алгоритмы для непрерывных уровней детализации. Например, ROAM (Real-Time Optimally Adapting Meshes) [63]. Заранее строится двоичное дерево, каждый узел которого содержит один треугольник, а два дочерних узла – половинки этого треугольника.
Во время работы приложения происходит динамическая подстройка сетки –рядом с наблюдателем число треугольников делается выше, а чем дальше, тем ниже. Это происходит в реальном времени при перемещении наблюдателя. Вычисляются ошибки отклонения вершин, и при необходимости треугольник разбивается на две половины.
При этом расчет сетки полностью ложится на центральный процессор. Поэтому этот метод проигрывает по быстродействию другим алгоритмам, хотя и обеспечивает большую точность.
Наиболее часто применяются дискретные уровни детализации. Формируется пирамида уровней детализации. Каждый следующий уровень имеет разрешение в 2 раза выше. Каждый уровень детализации разбивается на тайлы равного размера. Издалека виден грубый рельеф с низким разрешением. При приближении он заменяется на 4 тайла с более высоким разрешением и т.д. Каждый тайл имеет свою карту высот и свою текстуру.
В этой ситуации возникает проблема сшивки тайлов. Если два находящихся рядом тайла имеют разные уровни детализации, то между ними могут возникать щели. Это решается добавлением «юбок» к тайлам. Юбка — вертикальная полоска треугольников по периметру тайла (рис. 1.7).
В работе Livny Y., Kogan Z., El-Sana J. предложен алгоритм бесшовного стыка тайлов [64].
В случае дискретных уровней детализации может возникать эффект скачков (popping), когда при смене тайлов разных уровней детализации виден резкий скачок некоторых частей рельефа. Этот эффект проявляется при медленной подгрузке новых тайлов с диска или из интернета. Одно из возможных решений: плавная интерполяция между тайлам. Она, конечно, будет замета, но не будет сильно резать глаза.
Рис. 1.7. Слева - щель между тайлами, справа - закрытие щели с помощью юбки |
Geometry Clipmaps. Особняком стоит алгоритм Geometry Clipmaps [65]. Он не использует разбиение геометрии на тайлы. Вокруг наблюдателя генерируется набор плоских вложенных регулярных полигональных сеток. Чем дальше от наблюдателя, чем ниже разрешение сетки. Параметры подбираются так, чтобы размер треугольников на экране был примерно одинаковым. При движении наблюдателя сетки движутся вместе с ним (рис. 1.8).
Высота вершин сетки вычисляется в вершинном шейдере на основе карт высот. Используется пирамида карт высот разного разрешения для разных сеток.
Рис. 1.8. Вложенные сетки в алгоритме Geometry Clipmapping |
При движении наблюдателя сетки движутся вместе с ним. При этом текстура рельефа и карта высот динамически обновляются: часть текстуры удаляется, и на ее место подгружается кусок с диска. Используется тороидальный доступ. Это позволяет использовать текстуры и карты высот теоретически неограниченного размера.
1.3.2. Разбиение поверхности глобуса на тайлы
В методе дискретных уровней детализации необходимо разбивать каждый уровень на прямоугольные кусочки — тайлы. В случае «плоского» рельефа естественным является рекурсивное разбиение пространства на квадраты. В случае глобуса можно придумать много разных вариантов разбиения [48]. Вот некоторые из них:
- разбиение правильного многогранника. За основу берется, например, тетраэдр. Далее каждая грань рекурсивно разбивается на треугольники. При добавлении новых вершин они сдвигаются к поверхности эллипсоида;
- «надутый куб». За основу берется куб. Для каждой грани куба формируется регулярная сетка нужного разрешения. Затем каждая вершина сдвигается к поверхности эллипсоида (рис. 1.9);
- разбиение HEALPix (Hierarchical Equal Area isoLatitude Pixelization), при котором все пиксели занимают одинаковую площадь (рис. 1.10) [66];
- географическая сетка. Разбиение на тайлы происходит вдоль меридианов и параллелей (рис. 1.11).
1.3.3. Географическая система координат
Эллипсоид и геоид
Для задания положения точек на глобусе обычно используется географическая система координат: тройка чисел (долгота, широта, высота). Но на видеокарте все расчеты происходят в прямоугольной декартовой системе координат. Поэтому необходимо задать связь между этими системами координат.
Земля имеет сложную пространственную форму. Для упрощения математических вычислений необходимо уметь описывать форму Земли с разной степенью точности. Самое простое приближение — сфера — подходит только для самых мелких масштабов. Часто используется следующее приближение — эллипсоид (рис. 1.12). Эта геометрическая фигура образована вращением эллипса вокруг малой полуоси.
Рис. 1.9. Разбиение «надутый куб» |
Рис. 1.10. Разбиение HEALPix |
Рис. 1.11. Разбиение по географической сетке |
Ещё одно приближение – геоид, эквипотенциальная поверхность гравитационного поля, совпадающая с морями и океанами и условно продолженная вглубь материков. Поверхность геоида в каждой точке перпендикулярна линии отвеса.
Т.к. эллипсоид по форме не совпадает с геоидом, то один и тот же эллипсоид можно двигать относительно геоида, компенсируя погрешности в одном месте и увеличивая в другом месте. Датум — это набор параметров, которые задают смещение эллипсоида относительно геоида [67]. Датумы могут быть локальными, т.е. обеспечивать наилучшую аппроксимацию геоида в данном месте (например, Североамериканский датум NAD83). Также датумы могут быть глобальными — минимизировать погрешность для всей Земли. В настоящее время наиболее часто используется датум 1984 года World Geodetic System (WGS84). Например, он используется в системе позиционирования GPS.
Рис. 1.12. Геоид и эллипсоид |
В системе WGS84 используется эллипсоид с параметрами: экваториальный радиус — 6378137м, полярный радиус — 6356752.3142м. Географические координаты задаются относительно этого эллипсоида [68].
Мировая декартова система координат (МСК) задается следующим образом. Ось Z проходит через северный полюс, плоскость XY — через экватор, плоскость XY — через нулевой меридиан.
Для перехода от эллипсоида к геоиду необходимо в каждой точке задать высоту геоида над эллипсоидом. Это отклонение невелико и составляет ± 200 м. Существуют модели для расчета этого отклонения. Часто используется модель EGM96. Например, она применяется для корректировки высот в системе позиционирования GPS. Также сейчас существует усовершенствованная модель EGM2008.
Учет формы Земли при построении виртуального глобуса
Форма полигональной поверхности глобуса зависит от цифровой модели рельефа (ЦМР), которая используется при его построении. Если ЦМР не задана, то поверхность принимает форму эллипсоида. Если используется ЦМР, то вершины полигональной сетки сдвигаются по нормали на заданную высоту.
Современные ЦМР, такие как SRTM и ASTER GDEM (приложение А), содержат высоту рельефа над геоидом EGM96. Поэтому для сдвига вершин полигональной сетки нужно делать поправку на высоту геоида над эллипсоидом. Существуют программные библиотеки для проведения расчетов.
При визуализации 3D-данных на глобусе нужно учитывать, как задана высота точек. Есть три альтернативы (рис. 1.13):
- высота задана относительно эллипсоида;
- высота задана относительно геоида (относительно уровня моря);
- высота задана относительно рельефа.
Имея ЦМР и геоид EGM96, можно корректно показать расположение геопространственных 3D-данных.
Таким образом, точность представления данных зависит в первую очередь от самих данных.
Рис. 1.13. Высота точки относительно разных поверхностей |
Вычисление нормали
Во многих задачах связанных с визуализацией часто нужно вычислять нормаль к поверхности эллипсоида в точке. Нужно различать геоцентрическую нормаль и геодезическую нормаль (рис. 1.14). Геоцентрическая нормаль лежит на линии, соединяющей центр эллипсоида и данную точку на поверхности. Геодезическая нормаль — честный перпендикуляр к поверхности.
Геодезическая нормаль вычисляется по формуле:
, | (1.1) |
, | (1.2) |
где – вектор нормали, m – вспомогательный вектор, (a, b, c) – радиусы эллипсоида, (xs, ys, zs) – точка на поверхности эллипсоида.
Рис. 1.14. Геоцентрическая и геодезическая нормали |
Преобразование географических координат в декартовы довольно просто. Иногда бывает нужно и обратное преобразование. Но оно значительно сложнее и может приводить к неоднозначностям.
1.3.4. Особенности виртуальных глобусов
В случае рендеринга виртуального глобуса и данных на глобусе нужно учитывать ряд нюансов и особенностей, которых нет в плоском варианте [48].
Точность координат. В настоящее время видеокарты в основном используют при расчетах тип данных с плавающей точкой одинарной точности (float), который имеет примерно 7 значащих десятичных цифр. Радиус Земли также имеет 7 значащих цифр. Это приводит к ошибкам округления при проведении матричных преобразований. Визуально это проявления в «дрожании» (jittering) объектов рядом с камерой.
Проблема частично решается использованием операций с двойной точностью на CPU. Результаты операций далее переводятся в одинарную точность перед отправкой на GPU.
Точность буфера глубины. Буфер глубины (z-buffer) хранит глубину отрисованных пикселей экрана. В случае виртуального глобуса наблюдатель может смотреть на глобус целиком из космоса, а может подлетать к поверхности глобуса. Это приводит к необходимости иметь очень близко ближнюю плоскость отсечения и очень далеко дальнюю плоскость отсечения. Глубина пикселя зависит от этих расстояний. При вычислении глубины она округляется из-за ограниченной точности буфера глубины. Чем больше расстояние от ближней до дальней плоскости отсечения, тем больше ошибка. И может оказаться так, что дальние объекты будут закрывать ближние.
Проблема частично решается введением логарифмического буфера глубины, что, однако, влияет на производительность приложения [69].
Аккуратность расчетов. Нужно помнить, что Земля — это эллипсоид, а не сфера. И при осуществлении расчетов учитывать разницу между экваториальным и полярным радиусами, разницу между геоцентрической и геодезической нормалями. Например, при движении космических аппаратов вокруг Земли или при позиционировании объектов на поверхности глобуса.
Кривизна. Нужно помнить, что Земля — круглая. Если соединить 2 точки на поверхности прямой линий в декартовых координатах, то эта линия окажется под поверхностью глобуса. Необходимо применять различные методы, чтобы все линии и полигоны оказались на поверхности, а не под поверхностью. Нужно помнить про линию перемены дат, и что на полюсах имеется сингулярность.
Большие объёмы данных. Виртуальный глобус строится на основе спутниковых снимков и карт высот. Если мы заходим представить рельеф всей Земли с разрешением 1 м на пиксель, то нам понадобится текстура 40 млн на 20 млн пикселей размером примерно в 11 петабайт. При этом возникает проблема — ограничение видеопамяти. На современных видеокартах имеется порядка 1 гигабайта памяти. При этом существуют ограничения на размер текстур в памяти — примерно 8192х8192 пикселей. Также существует предел обработки количества вершин модели в секунду.
Поэтому основная проблема заключается в том, как использовать большой объем (гигабайты и петабайты) исходных данных на жестком диске, чтобы показать на экране рельеф с небольшим числом вершин и небольшим размером текстур, который мог бы обновляться с частотой 30 кадров в секунду.
Использование многопоточности. Динамическая загрузка и выгрузка данных из памяти сильно влияет на производительность. Эти операции лучше все выполнять в отдельном потоке.
Алгоритмы рендеринга различных эффектов обычно используют упрощения и предположения, которые не применимы в случае виртуальных глобусов. Например, в обычных приложениях направление «вверх» всегда совпадает с осью Z. В случае глобуса в каждой точке будет своё собственное направление «вверх».
Современные компьютерные игры достигли больших успехов в реалистичном рендеринге природы. Рельеф, деревья, трава, облака, вода — всё генерируется программно с большой детализацией. Но в случае глобусов приходится использовать реальные данные о рельефе, реальную текстуру земной поверхности, которые зачастую имеют низкое разрешение. Если пытаться эти данные улучшать и добавлять детализацию, то не в ущерб достоверности.
1.3.5. Алгоритм Chunked LOD
В итоге с учётом всех особенностей глобуса авторы книги [48] рекомендуют использовать алгоритм Chunked Level of Detail (CLOD), как наиболее сбалансированный по всем характеристикам. Этот же алгоритм используется в инструментарии osgEarth. Изначально он был предложен в 2002 году [70].
Этот метод не требует предварительной обработки геопривязанных изображений, удобно ложится на эллипсоид, обеспечивает приемлемую точность в рамках чисел с одинарной точностью, и работает даже на самых старых видеокартах. Рассмотрим его подробнее.
Рельеф состоит из тайлов (chunk), выстроенных вдоль меридианов и параллелей. Каждый тайл имеет свою геометрию на основе регулярной сетки и текстуру. Каждый тайл относится к некоторому уровню детализации. Все тайлы образуют квадродерево. При приближении к тайлу он заменяется на 4 тайла большей детализации. Для каждого тайла хранится ограничивающий объём, который используется для проверки видимости тайла.
Каждый тайл должен храниться в отдельном файле. При необходимости тайлы подгружаются в память с диска или выгружаются из памяти. Каждый тайл содержит ссылки на файлы с 4 дочерними тайлами.
Структура получаемого квадродерева изображена на рисунке 1.15.
Рис. 1.15. Структура квадродерева |
TerrainTile — содержит сам тайл (геометрию и текстуру). Group — просто группирует подузлы графа. PagedLOD — переключает тайлы с разными уровнями детализации.
1.4. Выводы по 1 главе
В главе приведен анализ современных методов, применяемых для построения и визуализации виртуальных глобусов и географической визуализации, обзор современного состояния дел, на основании которого сделаны следующие выводы:
1. Существуют готовые закрытые продукты для просмотра спутниковых снимков (Google Earth), открытые библиотеки для разработки производных приложений (osgEarth, NASA WorldWind Java SDK), глобусы для научных задач (Crusta, i3D). Исследования ведутся по направлениям: увеличение реализма визуализации глобуса и 3D-объектов на глобусе (освещение, вода, облака, тени, деревья, дома) и внедрение глобуса для решения практических задач. Существуют стандартные протоколы передачи геопространственных данных и стандартные форматы для хранения данных.
2. При визуализации данных на глобусе нужно учитывать ряд особенностей по сравнению с плоским случаем: точность координат типа float, точность буфера глубины, форму Земли (эллипсоид и геоид) и соответствующие особенности вычисления расстояний и нормалей, большие объемы растровых данных.
3. Алгоритмы для генерации трехмерного рельефа глобуса являются производными от алгоритмов для плоского случая. Могут быть использованы регулярные и нерегулярные сетки, уровни детализации: непрерывные и дискретные, алгоритм Geometry Clipmapping. Все они адаптируются для случая виртуального глобуса. При этом существуют несколько вариантов разбиения поверхности глобуса на тайлы. Варианты имеют свои плюсы и минусы.
4. В данной работе исследовании на основе проведенного анализа выбран алгоритм Chunked Level of Detail [48]. В нем используются дискретные уровни детализации, тайлы рельефа образуют квадродерево, каждый тайл основан на регулярной сетке, глобус разбивается на тайлы по географической сетке. В качестве программной реализации выбран инструментарий osgEarth.
- Визуализация виртуального глобуса
2.1. Варианты отображения виртуального глобуса
Виртуальный глобус может применяться для различных задач: от фотореалистичного рендеринга территорий до визуализации научных данных. В разных ситуациях глобус можно отрисовывать с различными настройками, в различных режимах. Для решения одних задач нужна максимальная реалистичность, в других задачах нужно выделить особенности данных, представить данные более наглядно. В этом параграфе рассматриваются существующие основные режимы отображения глобуса.
2.1.1. Варианты условного отображения глобуса
Для визуализации научных или статистических данных не обязателен реалистичный рендеринг. Рендеринг глобуса должен подчеркивать важность данных и служить их лучшему восприятию. Для этого существуют варинаты: растяжение по высоте, вариант с отключенными текстурами, вариант с программной раскраской глобуса.
Растяжение по высоте
В режиме растяжения по высоте высота каждой точки рельефа увеличивается в заданное количество раз (рис. 2.1). Увеличенная высота вершин может сразу учитываться при генерации геометрии, но этот вариант не позволяет динамически менять высоту и выбирать удобное для работы значение мультипликатора высоты.
Поэтому более гибкий подход — выполнять растяжение в вершинном шейдере. Но для этого необходимо знать высоту вершины над эллипсоидом. Вершины полигональной поверхности хранятся в декартовой системе координат. Динамическое вычисление высоты вершины довольно сложное и сильно влияет на производительность. Поэтому высоту каждой вершины проще вычислить заранее и хранить как вершинный атрибут вместе с другими вершинными атрибутами на видеокарте [43].
На современных видеокартах каждый вершинный атрибут — это 4х-компонентный вектор. Высота вершины хранится только в 1й компоненте. В других 3-х компонентах можно передавать в шейдер любые данные о вершине. Например, нормаль к эллипсоиду в этой точке. Это позволит более точно растягивать рельеф.
Рис. 2.16. Режим растяжения по высоте в 10 раз |
Затенение глобуса
В режиме отключенных текстур показывается эллипсоид в оттенках серого (рис. 2.2). С помощью затенения подчеркиваются неровности рельефа. Это удобно в ситуациях, когда текстура имеет более низкое разрешение и мешает сопоставлению визуализируемых данных с рельефом.
В этом режиме реалистичное освещение не требуется. Для лучшего подчеркивания деталей рельефа можно использовать традиционный подход с диффузным освещением по модели Ламберта [71] и бликовым освещением по модели Блинна-Фонга [72]. Источник света можно двигать вместе с камерой.
Модель Ламберта для диффузного освещения:
, | (2.3) |
где — освещенность в точке рельефа, — нормаль к поверхности, — направление на источник света.
Модель Блинна-Фонга для бликового освещения:
, | (2.4) |
(2.5) |
где – вектор направления на наблюдателя, p – коэффициент блеска.
Для интерполяции освещения по поверхности можно использовать модель Фонга, при которой интенсивность освещения вычисляется для каждого пикселя с использованием интерполированной нормали. Нормаль интерполируется между вершинами полигональной сетки.
Чтобы дальше увеличивать качество визуализации, необходимо либо увеличивать плотность вершин, либо применять карту нормалей. При вычислении цвета пикселя нормаль берется из карты нормалей. Карта нормалей подходит для всех уровней детализации, кроме максимального. Она позволяет использовать нормали со следующего уровня детализации без необходимости увеличения числа полигонов. Карту нормалей для каждого тайла можно сгенерировать заранее, но это требует увеличенного времени предобработки.
Условное раскрашивание глобуса
В режиме условного раскрашивания вместо использования текстуры цвет каждого пикселя рельефа вычисляется в шейдере на основе заданного алгоритма. Варианты могут быть самые разные в зависимости от задачи, от области применения глобуса. Самые простые: это раскрашивание по высоте (рис. 2.3) или раскрашивание в зависимости от нормали рельефа (рис. 2.4). На рельеф вместо спутниковых снимков можно накладывать изображения с научными данными, например с сайта NASA [73].
Рис. 2.17. Режим отключенных текстур |
Описанные режимы могут произвольно комбинироваться. Все режимы реализуются на уровне вершинного или фрагментного шейдеров рельефа. В зависимости от выбранных режимов можно динамически генерировать текст шейдера, компилировать и использовать для визуализации глобуса.
Рис. 2.18. Режим раскрашивания по высоте |
Шейдеры в своей работе используют следующие параметры:
- вершинные атрибуты: нормаль к рельефу в мировой системе координат, высоту вершины над эллипсоидом, геодезическую нормаль к эллипсоиду;
- uniform-переменные: степень прозрачности рельефа, степень растяжения по высоте, положение источника света в мировой системе координат, настройки атмосферы;
- дополнительная текстура с картой нормалей;
- дополнительная текстура с изображением ночной Земли (огни городов);
- прочие текстуры, которые можно использовать при визузализации.
Рис. 2.19. Режим раскрашивания по крутизне |
2.1.2. Реалистичное отображение глобуса
Очевидное применение реалистичного рендеринга – это компьютерные игры. Однако такой рендеринг может быть также использован в других областях: при планировании городов, архитектурном проектировании, при реконструкции памятников природного наследия, создании тренажеров и симуляторов.
Для реалистичного рендеринга виртуального глобуса необходимо дополнительно реализовать несколько эффектов.
Атмосферное рассеяние. Чтобы добавить атмосферу к глобусу, нужно создать сферу вокруг глобуса с режимом отбрасывания лицевых граней, чтобы всегда была видна только задняя половина сферы. К этой сфере нужно применить шейдер для расчета эффекта атмосферного рассеяния в зависимости от положения наблюдателя и положения Солнца. Подробнее это рассмотрено ниже.
Облака. Чтобы добавить вид облаков из космоса, достаточно сделать сферу вокруг глобуса с готовой полупрозрачной текстурой облаков. Но у поверхности земли они будут выглядеть размыто. Поэтому по мере приближения к поверхности глобальные облака можно заменять на процедурно сгенерированные с помощью шума Перлина, либо на объемные облака [77, 78].
Освещение. Для расчета освещения необходимо учитывать атмосферное рассеяние, которое рассматривалось выше, и отражательную способность разных территорий. Существуют карты альбедо, которые содержат коэффициент отражения от 0.0 до 0.9. Дополнительно для водных территорий необходимо учесть бликовое освещение [79]. Для этого требуется текстура с маской для различения, где находится вода, а где земля.
Смена времен года. Зная границу снегов зимой можно смоделировать изменение текстуры северных территорий в зависимости от времени года. Для задания граны снегов нужна текстура с маской.
Тени. Тени — одна из самых сложных задач, особенно в случае глобуса. При использовании теневых карт (shadow map) тени получаются размытые из-за недостаточного разрешения теневой карты [80]. Сложность — в определении границ видимой территории, на которую нужно накладывать теневую карту.
Увеличение детализации территорий. Современные карты высот, которые находятся в свободном доступе, имеют низкое разрешение. Чтобы увеличить детализацию, можно добавить высокочастотный шум к рельфу [81].
2.1.3. Атмосферное рассеяние
Атмосферное рассеяние — это основа реалистичного восприятия окружающей среды. Задача учета атмосферного рассеяния состоит в вычислении цвета каждого пикселя неба и поверхности рельефа с учетом положений Солнца и виртуальной камеры [74].
Луч света, попадая на частицы атмосферы, отклоняется в сторону. Это описывается коэффициентом рассеяния и фазовой функцией. Ослабление луча света длиной волны , который проходит путь описывается следующей формулой, в которой используется оптический путь:
(2.6) |