Смекни!
smekni.com

Генерация и построение изображений ландшафта в реальном времени (стр. 1 из 8)

Московский Государственный Технический Университет им. Н.Э. Баумана

Факультет «Информатика и системы управления»

Кафедра «Программное обеспечение ЭВМ и информационные технологии»

Курсовой проект

по машинной графике

Расчётно-пояснительная записка

Тема:

«Генерация и построение изображений ландшафта в реальном времени»

Содержание:

Введение

Конструкторский раздел

Алгоритмы загрузки и генерации ландшафта

Представление данных о ландшафте

Генерация рельефа с помощью шума Перлина

Генерация рельефов с использованием холмового алгоритма

Алгоритмы визуализации ландшафта и окружающей среды

Использование карт освещенности

Наложение текстур

Смешивание текстур

Мипмапы

Билинейная фильтрация

Трилинейная фильтрация

Алгоритм z-буффера

Освещение

Модель освещения Фонга

Просчет теней

Перемещение и вращение камеры

Технологический раздел

Выбор среды разработки и технологий программирования

Структура программы

Пользовательский интерфейс

Входные и выходные данные

Системные требования

Эксперементально-исследовательский раздел

Зависимость времени построение карты освещенности от количества источников света

Зависимость времени построения карты освещенности от ее размера размера

Эффективность использования карт освещения

Заключение

Список использованной литературы

Введение

Все большую роль в современной жизни играют компьютеры. После того как они вышли за пределы военных и научно-исследовательских организаций, они приобрели статус неотъемлемой части практически любого современного вида деятельности, будь то производство машин или операции с ценными бумагами, проектирование зданий или транспортировка грузов, обучение или индустрия развлечений. Компьютеры используются везде.

И для каждой области необходимы свои собственные приложения, адаптированные для выполнения конкретных функций и задач. Благодаря этому в настоящее время постоянно появляются новые предметы изучения и исследования. Так, например, достаточно новым проявлением таких тенденций выступает машинная графика. Это целая наука, занимающаяся построением графических изображений посредством вычислительных систем. Появление машинной графики было вызвано многими важными задачами, среди которых присутствуют такие, как визуализация результатов, полученных при обработке данных, моделирование реальных процессов и др. Одной из важнейших областей, вызвавших формирование машинной графики как науки, послужила военная область. Для обучения пилотов самолетов, водителей танков и другой техники, подготовки к действиям в боевых условиях было необходимо создавать симуляторы реальных технических средств. Было гораздо безопасней посадить человека за симулятор для получения первоначальных навыков, чем на реальный объект. А для создания симуляторов потребовалось получать реалистичные изображения различных объектов, например местности, на которой ведутся учения, причем эти изображения должны быть получены в реальном времени, то есть так, чтобы в зависимости от действий обучаемого соответственно менялись и параметры системы, такие как положение на местности, высота и др. Через несколько лет стало понятно, что такие системы можно использовать не только для обучения новичков, но и для планирования реальных боевых операций на любой территории, о которой есть определенные данные. Об аналогичных системах мечтали и Географические Информационные Системы (ГИС).

В ответ на эти запросы сначала появилась такая область машинной графики, как «трехмерное моделирование»(3D-моделирование), а затем, некоторое время спустя, ветвь 3D-моделирования, которая занималась проектированием и созданием трехмерных реалистичных изображений ландшафтов.

В настоящее время 3D-моделирование является важнейшей областью машинной графики, так как построение трехмерного изображения, близкого к реальному, является достаточно сложной задачей. Но, благодаря обширному кругу потребителей и невообразимо быстрому росту производительности вычислительных систем, эта область активно развивается.

Область 3D-моделирования можно разделить на 2 подобласти. Одна из них – это генерация трехмерных изображений в реальном времени, а другая – генерация высоко реалистичных трехмерных изображений. Высокореалистичные изображения требуют очень больших объемов вычислений, в то время как в первой подобласти применяется система условных допущений, позволяющая применять более простые алгоритмы, и тем самым значительно уменьшить объем вычислений, что, правда, сказывается на качестве изображения. Чтобы получить компромисс качества и скорости визуализации, я использовал комбинированный подход: вывод изображения в реальном времени, но просчет карты высот и карты освещенности заблаговременно. В скором будущем, вероятно, эти две области могут слиться, так как современные тенденции роста производительности вычислительных систем подают большие надежды. Даже сейчас уже изображения, построенные в реальном времени, становятся все более похожими на высокореалистичные изображения, появляются новые алгоритмы, совмещающие в себе обе области. Например, основная часть изображения строится алгоритмом, работающем в реальном времени, а некоторые участки, требующие специальной обработки – с помощью алгоритмов, строящих высокореалистичные изображения, что, однако не значительно сказывается на работе в реальном времени.

Как уже было сказано, алгоритмы 3D-моделирования делятся на две группы. В первую входят такие алгоритмы, как алгоритм Робертса, алгоритм Варнока, алгоритм, использующий z-буфер, которые в свою очередь используют простейшие алгоритмы построения линий, треугольников, закрашивание замкнутых областей. Также к этой группе можно отнести алгоритмы, выполняющие текстурирование и отсечение. Последние так же используются и для второй группы алгоритмов, обеспечивающих построение высокореалистичных изображений. В эту группу входят такие алгоритмы как трассировка лучей.

Для ускорения построения изображений в реальном времени осуществляется аппаратная реализация части алгоритмов, например в современных системах аппаратно реализованы алгоритмы построения и текстурирования треугольников, удаления ступенчатости и другие. Это находит отражение в таких библиотеках, как OpenGL и Direct3D. Эти библиотеки, использующие аппаратно реализованные алгоритмы, во-первых значительно увеличивают эффективность программы (действия аппаратно выполняются гораздо быстрее), во-вторых позволяют значительно разгрузить центральный процессор, который может взять на себя в этом случае некоторые дополнительные функции, и в-третьих, позволяют программисту абстрагироваться от простейших алгоритмов, давно изученных и оптимизированных, и направить свою умственную деятельность на более сложные алгоритмы с целью их улучшения и, возможно, создания новых. Эффективность такого рода библиотек подтверждает массовость их применения (практически не осталось систем, не использующих какие-либо из этих библиотек) и огромный прорыв в индустрии машинной графики (в частности в индустрии компьютерных развлечений) после перехода к аппаратной реализации алгоритмов машинной графики. Даже такие системы-гиганты как 3DStudioMax, LightWave, AutoCAD, которые, казалось бы, должны были давно обзавестись собственными библиотеками, используют стандартные OpenGL и Direct3D.

В данной записке речь пойдет о системе, производящей генерацию карты высот, карты освещенности и текстуры различными алгоритмами и построение изображения реалистичного трехмерного ландшафта в реальном времени. Для решения этой задачи, как уже было упомянуто, в машинной графике существует целая ветвь. Она занимается разработкой алгоритмов преобразования входных данных и построением на их основе ландшафтов. Мной было рассмотрено несколько подобных методик и алгоритмов. Для генерации карты высот: Шум Перлина, Холмовой алгоритм. Для создания карты освещенности: модель Фонга, просчет простых теней. Для вывода изображения в реальном времени: мипмапы, алгоритм z-буффера, текстурирование.

Конструкторский раздел

Алгоритмы загрузки и генерации ландшафта

Представление данных о ландшафте

Существует несколько основных принципов представления данных для хранения информации о ландшафтах:

·Первый - использование регулярной сетки высот (или еще другое название Карта Высот - HeightMap).

·Второе - использование иррегулярной сетки вершин и связей, их соединяющих (т.е. хранение простой триангулизированной карты).

·Третий - хранение карты ландшафта, но в данном случае хранятся не конкретные высоты, а информация об использованном блоке. В этом случае создается некоторое количество заранее построенных сегментов, а на карте указываются только индексы этих сегментов.

В своем проект я выбрал первый способ представления ландшафтов.

Данные представлены в виде двухмерного массива. Уже заданы две координаты (x, y - по высоте и ширине массива), и третья координата задается значением в конкретной ячейке, это высота.

Обычно карту высот хранят в файлах изображений. Это позволяет легко вносить изменения и более-менее наглядно просматривать данные. Тогда двумя координатами будет положение конкретного пикселя на картинке, а третья координата будет представлена цветом (чем выше значение, прямая зависимость от яркости пикселя - тем больше значение высоты для этой точки). Обычно такие картинки содержатся в монохромном варианте. С помощью этого способа можно представить достаточно обширные пространства.

Плюсы данного подхода:

  1. Простота реализации: легкость нахождения координат (и высоты) на карте, простая генерация ландшафта по карте высот или методом шума Перлина.
  2. Наглядность: в любой программе просмотра графических файлов можно сразу увидеть или изменить всю информацию.
  3. Скорость: благодаря конвейерной архитектуре процессора, просчет и вывод таких карт высот производится очень быстро (динамическое освещение, т.к освещенность вершины напрямую зависит от расстояния от этой вершины до источника освещения).

Также есть минусы: