Программа для ландшафтного дизайна - Дипломная работа

бесплатно 0
4.5 65
Изучение принципов работы генератора ландшафтов. Требования к данному программному средству. Обзор алгоритмов построения ландшафтов. Используемые дополнительные библиотеки. Руководство пользователя. Расчет себестоимости и цены программного продукта.


Аннотация к работе
Однако большинство генераторов ландшафтов строят рельеф на основе принятой в картографии так называемой карты высот, представляющей собой изображение с концентрическими областями разного цвета, где каждому оттенку соответствует какая-либо высота относительно уровня моря. 4) Работа с текстурами a) Возможность загружать и отображать различные текстуры b) Создание несколько слоев текстур местности Остальные 8 бит могут использоваться для хранения информации о каких-либо особенностях ландшафта, например, расположение зданий, строений, мостов, растительности и так далее. г. легкость нахождения координат (и высоты) на карте. е. так как вершинные точки расположены регулярно и достаточно близко, можно более правильно и достаточно аккуратно производить динамическое освещение (зачастую, освещенность вершины напрямую зависит от расстояния от этой вершины до источника освещения). Она позволяет пользователю создавать windows-окна, обрабатывать нажатия мыши и клавиатуры, а также создавать диалоговые окна и добавлять элементы управления. · Работа с текстурами(Texturemaps): o Dreamlands может создавать, загружать и отображать различные текстуры. o Открытие изображения текстур или спутниковых данных в формате.bmp o Создание текстуры местности, где цвета индексированны по высоте. o Создание несколько слоев текстур местности.В ходе дипломного проекта был разработан программный продукт, позволяющий создавать и редактировать 3D-ландшафт. Разработанный программный продукт обладает легким в использовании интерфейсом, позволяет открывать и редактировать сохраненные, создавать новые ландшафты. Во время редактирования позволяет создавать холмы, впадины, равнины, покрывать ландшафты загружаемыми текстурами, с учетом высоты ландшафта.

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

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

Искусственные ландшафты могут стать основой для разнообразных 3D-сцен в трехмерных играх, при подготовке телевизионных заставок и клипов. К тому же генераторы ландшафтов - настоящая находка для историков, палеонтологов и географов: первым и вторым они смогут помочь понять, как выглядела наша планета в тот или иной исторический период, а при изучении географии могут быть экстраординарным образовательным инструментом, более интересным, чем обычные учебники. Даже в совершенно далеком от 3D-искусства бизнесе искусственные пейзажи тоже могут оказаться полезными, например для наглядного представления расположения каких-то объектов компании.

Итак, рассмотрим основные принципы, заложенные в фундамент многих генераторов ландшафтов.

1. Постановка задачі

1.1 Проблемная область

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

Кроме того, почти все генераторы ландшафтов очень тесно интегрированы с другими 3D пакетами, так что потребуется реализовать поддержку стандартных форматов.

1.2 Словарь терминов генератор ландшафт программный пользователь

Если речь идет о трехмерном ландшафте в компьютерной графике, то в первую очередь следует раскрыть такой термин, как «трехмерная графика».

Трехмерная графика [15] (3D Graphics, Три измерения изображения) - раздел компьютерной графики, совокупность приемов и инструментов (как программных, так и аппаратных), предназначенных для изображения объемных объектов. Больше всего применяется для создания изображений на плоскости экрана или листа печатной продукции в архитектурной визуализации, кинематографе, телевидении, компьютерных играх, печатной продукции, а также в науке и промышленности.

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

Для получения трехмерного изображения на плоскости требуются следующие шаги: 1. моделирование - создание трехмерной математической модели сцены и объектов в ней.

Сцена (виртуальное пространство моделирования) включает в себя несколько категорий объектов: Геометрия (построенная с помощью различных техник модель, например здание)

Материалы (информация о визуальных свойствах модели, например цвет стен и отражающая/преломляющая способность окон)

Источники света (настройки направления, мощности, спектра освещения)

Виртуальные камеры (выбор точки и угла построения проекции)

Силы и воздействия (настройки динамических искажений объектов, применяется в основном в анимации)

Дополнительные эффекты (объекты, имитирующие атмосферные явления: свет в тумане, облака, пламя и пр.)

Задача трехмерного моделирования - описать эти объекты и разместить их в сцене с помощью геометрических преобразований в соответствии с требованиями к будущему изображению.

2. рендеринг (визуализация) - построение проекции в соответствии с выбранной физической моделью.

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

3. вывод полученного изображения на устройство вывода - дисплей или принтер.

API (application programming interface) [10] (рус. интерфейс прикладного программирования) - набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений.

Кадровый буфер (англ. framebuffer) [11] (другие названия: буфер кадра, видеобуфер, фреймбуфер) - реальное или виртуальное электронное устройство, или область памяти для кратковременного хранения одного или нескольких кадров в цифровом виде перед его отправкой на устройство видеовывода.

1.3 Требования к программному средству

Цель данного дипломного проекта является разработка программного продукта, для создания трехмерного ландшафта.

Что при этом должно быть реализовано: 1) Легкий в использовании интерфейс программы

2) Создание a) Создание нового ландшафта b) Открытие сохраненного ландшафта

3) Изменение высот ландшафта a) Создание холмов b) Создание равнин c) Создание впадин d) Выравнивание e) Сглаживание

4) Работа с текстурами a) Возможность загружать и отображать различные текстуры b) Создание несколько слоев текстур местности

5) Использование фона неба(SKYBOX)

6) Настройка уровня освещения и теней

7) Сохранения ландшафта в формате для хранения 3D объектов

2. Теория и выбор

2.1 Обзор алгоритмов построения ландшафтов

Существует несколько основных принципов представления данных для хранения информации о ландшафтах [14]: 1. Первый - использование регулярной сетки высот (или еще другое название Карта Высот - HEIGHTMAP).

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

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

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

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

Рисунок 3.1 - Карта высот (слева) и Полученный ландшафт(справа)

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

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

У этого метода существует и несколько плюсов: а. наглядность, в любой программе просмотра графических файлов можно сразу увидеть всю информацию;

б. простота изменения этих самых данных, так как существует множество программ для работы с растровой графикой;

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

2.1.2 Иррегулярная сетка

Еще один способ представления данных для ландшафтов - иррегулярная сетка вершин и связей их соединяющих. Зачастую такие решения применяются в специализированных пакетах для игр или специальных пакетах для работы с трехмерной графикой (3DMAX, Maya). И хранятся в виде трехмерных моделей. Это дает основной выигрыш по сравнению с картами высот: используется значительно меньше информации для построения ландшафта. Необходимо хранить только значения высот каждой вершины и связи эти вершины соединяющие. Это дает выигрыш в скорости при передаче огромных массивов информации по AGP, в процессе визуализации ландшафта.

Но кроме плюсов у этого способа имеется и множество недостатков: А. алгоритмы построения ландшафтов в основном предназначены для регулярных карт высот. Оптимизация таких алгоритмов под этот способ потребует значительных усилий;

Б. сложности при динамическом освещении - вершины расположены достаточно далеко друг от друга и неравномерно;

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

Рисунок 3.2 - Иррегулярная сетка

2.1.3 Посегментная карта высот

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

б) Кроме самих ландшафтов в таких блоках можно хранить и информацию о зданиях, строениях, растениях, специфических ландшафтных решениях (например, пещеры или скалы, нависающие друг над другом);

в) Возможность создания нескольких вариантов одного и того же сегмента, но при разной степени детализации. В зависимости от скорости или загруженности компьютера можно выбирать более или менее детализованные варианты (так называемые LOD ландшафты - LOD - Level Of Detail).

Минусов у такого способа тоже хватает: а) проблема стыковки разных сегментов;

б) неочевидность данных. Взглянув на картинку, не возможно моментально представить, как это должно будет выглядеть.

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

3. Выбор средств реализации

3.1 OPENGL, DIRECTX и GDI

В первую очередь нужно выбрать аппаратно-ускоряемую библиотеку(API) для создания компьютерной графики.

На сегодняшний день основных их три - это OPENGL [7], DIRECTX [9], GDI [8].

Простые приложения, которые не требуют быстрой графики, могут использовать GDI. Однако GDI не обеспечивает качественной анимации, поскольку в нем нет возможности синхронизации с кадровым буфером. Также, в GDI нет растеризации для отрисовки 3D-графики. Современные графические приложения используют DIRECTX или OPENGL, что дает программистам доступ к большему количеству аппаратных возможностей.

Отсюда вывод: GDI не подходит для разработки данного программного продукта. Теперь стоит вопрос: “Какой из двух вариантов API выбрать?” DIRECTX или OPENGL?[13]

Сравним эти две технологии. DIRECTX построен по объектно-ориентированной схеме, а OPENGL по процедурной. Что лучше? Программа на GL одинаково "хорошо" выглядит и на C , и на чистом C, чего не скажешь о DX (хотя это надуманное преимущество, сейчас мало кто пишет на C, особенно под Windows). А вот простота архитектуры GL - неоспоримый плюс: GL работает исключительно с примитивами (треугольники, отрезки и точки) и управляется набором булевых переменных, которые позволяют включать или отключать некоторые функции - например, накладывать текстуру или нет, использовать ли освещение и т. д. Код для отображения "первого треугольника" занимает примерно пятьдесят строк. В DX эта цифра куда больше. С одним-то треугольником у GL все хорошо, но как только захочется использовать что-нибудь из современных 3D-эффектов - появляются расширения GL, и еще недавно простой и понятный код тонет в непонятных и ничего не значащих для человека, не посвященного в тайны 3D-графики, строках.

Как ни странно, ведутся споры о производительности. Проверить это проще простого, но зачем? - ведь результат легко предсказуем. Он будет одинаков для обеих библиотек, поскольку сейчас практически все функции реализуются напрямую через аппаратные ускорители. Расхождение результатов может быть только изза погрешности измерений; сюда относится и оптимизация тестирующего кода, и специфика конкретных драйверов, но в целом для выполнения кода на GL и DX видеокарта должна выполнять одни и те же действия, а значит, и дискуссии о быстродействии беспочвенны. Конечно, можно копать глубже и спорить о качестве шейдерных компиляторов HLSL[High-level Shader Language - С-подобный язык для написания шейдеров в DIRECTX 9.0] и GLSL[OPENGL Shading Language - аналог HLSL для OPENGL], но лезть в такие дебри не стоит, тем более что оба решения далеки от совершенства.

Возможно, ответ в возможностях современного железа, и что для их использования предоставляют OPENGL и DIRECTX. Прежде всего, нынешние видеокарты - это программируемые устройства. Теперь некоторый код можно выполнять прямо на графическом процессоре (GPU). Эти программы называют шейдерами. Они позволяют создавать сложнейшие эффекты в реальном времени. Изначально эти программы можно было писать только на "фирменных" языках производителей видеокарт - ATI и NVIDIA. Оба языка очень похожи на ассемблер, но, увы, несовместимы. А кому захочется писать два разных кода для реализации одного и того же эффекта? И вот в DIRECTX 8.0 появляется универсальный язык программирования шейдеров. Он тоже похож на ассемблер, но позволяет обойтись одним шейдером для обоих типов видеокарт. И снова закавыка: кому сейчас нравится программировать на языках низкого уровня? И вот Microsoft представляет в своем DX 9.0 уже С-подобный язык HLSL. ARB (разработчики OPENGL) в ответ выкатил аналогичную технологию GLSL. Как уже говорилось, обе эти технологии далеки от совершенства, прежде всего изза слабой оптимизации компиляторов.

Итак, две библиотеки с практически одинаковыми возможностями и быстродействием. Отличия лишь в сложности написания кода. И даже здесь явного лидерства нет. Все зависит от уровня используемых в программе эффектов. Если достаточно базовой функциональности OPENGL (то есть не будут использоваться расширений), то разумнее использовать именно GL, а если дело дойдет до продвинутых эффектов, тут предпочтительнее DIRECTX.

Так что же выбрать? Следует решить, какие эффекты будут необходимы: возможно ли обойтись стандартной функциональностью GL, или непременно нужно использовать более “продвинутые” эффекты. И, наконец, личные предпочтения.

Чтоб разрабатываемый продукт был более зрелищным, следует выбрать DIRECTX, да и есть опыт в использовании данной технологии.

3.2 Среда разработки

При выборе среды разработки программирования для проекта требуется принимать во внимание следующие требования: · Возможность работы с DIRECTX

· Высокая скорость разработки

· Наличие опыта работы в данной среде

В качестве среды была выбрана Visual Studio 2008, т.к. удовлетворяет всем требованием и является мощной средой для разработки, обеспечивающая высокое качество кода на протяжении всего цикла разработки ПО, от проектирования до разработки.

В качестве языка программирования был выбран C в следствии его универсальности.

Подробнее о C : C (произносится «си плюс плюс») [6] - компилируемый статически типизированный язык программирования общего назначения. Поддерживая разные парадигмы программирования, сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником - языком C, - наибольшее внимание уделено поддержке объектно-ориентированного и обобщенного программирования. Название «C » происходит от языка C, в котором унарный оператор обозначает инкремент переменной.

Являясь одним из самых популярных языков программирования, C широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры). Существует несколько реализаций языка C - как бесплатных, так и коммерческих. Их производят Проект GNU, Microsoft, Intel и Embarcadero (Borland). C оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.

При создании C Бьерн Страуструп стремился сохранить совместимость с языком C. Множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C , довольно велико - отчасти благодаря тому, что синтаксис C был основан на синтаксисе C.

3.3 Используемые дополнительные библиотеки

Для меньших затрат на разработку панели управления редактором ландшафта целесообразней воспользоваться библиотекой «Operating System Manager» [12], разработанной Ричардом Лионом.

Библиотека написана на C . Она позволяет пользователю создавать windows-окна, обрабатывать нажатия мыши и клавиатуры, а также создавать диалоговые окна и добавлять элементы управления. Все классы библиотеки «Operating System Manager»,структуры и функции, все содержится в пространстве имен OS, и все сведения об найденных ошибках посылается “std::cerr”.

3.3.1 Применение

Пользователь должен определить их как: int ENTRYPOINT(OS_App *os)

Указатель os позволяет использовать класс Operating System Manager, пользователь не должен менять этот указатель или удалять его, т.к. библиотека позаботится об этом сама, когда пользователь выйдет из основных функций.

Класс позволяет: · Запросить текущее разрешение рабочего стола

· Запросить поддерживаемые разрешения монитора, для работы приложения

· Запросить прошедшее время в миллисекундах с начала работы приложения

· Закрыть приложения

· Настроить видимость курсора над окном

· Настроить позицию курсора

· Получить позицию курсора

· Создать папку на компьютере пользователя

3.3.2 Windows-окно

Для создания нового окна пользователь должен использовать функцию: bool CREATENEWDISPLAY(OS_Window **window)

Если функция возвращает значение “истина”, то параметр window будет являться указателем на окно. Пользователь не должен изменять или удалять указатель window, вместо этого он должен вызвать: window->Release();

Класс окна позволяет: · Создание окно

· Способность показать окно

· Закрытие окно, если пользователь этого запросил

· Указать размеры окна

· Настроить стиль окна

· Очисть память, выделенную под окно

· Запросить состояние клавиатуры

· Запросить состояние мши

3.3.3 Диалоговое окно

Чтобы создать новое диалоговое окно пользователь должен использовать функцию: bool CREATENEWDIALOG(OS_Dialog **dialog)

Если функция возвращает значение “истина”, то параметр dialog будет являться указателем на диалоговое окно. Пользователь не должен изменять или удалять указатель window, вместо этого он должен вызвать: dialog ->Release();

Класс диалогового окна позволяет: · Создание диалогового окно выбора папки

· Создание файла открыть/сохранить

· Создание диалогового окна

· Закрытие диалогового окна, если пользователь этого запросил

· Кнопки (Button)

· Добавление кнопки в диалоговое окно

· Запрос, если кнопка была нажата

· Добавление переключателя в диалоговое окно

· Выбор переключателя, используемого по умолчанию

· Элемент TEXTBOX

· Добавление элемента TEXTBOX в диалоговое окно

· Настройка текста элемента TEXTBOX

· Добавление численных элементов TEXTBOX, которые позволяют вводить только числа.

· Установка значения численного элемента TEXTBOX

· Получение значения из численного элемента TEXTBOX

· Элемент Label

· Добавление элемента Label в диалоговое окно

· Добавление как статический текст

· Элемент GROUPBOX

· Добавление элемента GROUPBOX в диалоговое окно( это чисто визуально, фактической группировки эта функция не делает

· Элемент SCROLLBAR

· Добавление элемента SCROLLBAR в диалоговое окно

· Получение значения от SCROLLBAR

· Элемент COMBOBOX

· Добавление элемента COMBOBOX в диалоговое окно

· Добавление поля в список элемента COMBOBOX

· Указание начала текущего выделения из списка

· Установить текущий выбор в элементе COMBOBOX

· Возможность добавления контроля подсказки к любому элементу управления - всплывающая подсказка, когда курсор зависнет над определенным элементом управления.

3.4 Анализ аналогов

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

3.4.1 Dreamlands

Рисунок 3.3. - логотип Dreamlands

Dreamlands [1] - генератор местности.

Перечислим все его возможности: · Работа с картами высот(Heightmaps): o Он может создавать, загружать и отображать различные карты высот. Карты высот могут быть использованы разработчиками для определения полигонов или воксела местности визуализации и/или обнаружения столкновений. o Использование фрактальных функций, создание шума o Открытие изображения карт высот или спутниковых данных в формате.bmp

· Работа с текстурами(Texturemaps): o Dreamlands может создавать, загружать и отображать различные текстуры. o Открытие изображения текстур или спутниковых данных в формате.bmp o Создание текстуры местности, где цвета индексированны по высоте. o Создание несколько слоев текстур местности. Для игровых движков нового поколения возможно создание плитки высокого разрешения и мультитекстурирование(наложение нескольких текстур на один полигон). Для движков предыдущего поколения все слои могут быть объединены в единый.

· Также в Dreamlands можно создать карту освещения и теней.

· Работа с фоном(Skybox): o Dreamlands может создать Skybox высокого разрешение, оптимизировать для плоской местности.

· Геометрии: o Dreamlands может создать NXN геометрии для бесконечной местности.

· Экспорт: o Dreamlands экспорта данных в различные форматы легко. o Данные карт высот: можно экспортировать в виде.raw файл или 24-битного.bmp изображения o Данные текстур: можно экспортировать в виде.bmp или.dds файла o Данные геометрии: можно экспортировать в виде 3DSTUDIOMAX.3ds файл или Milkshape.txt текстового файла.

Стоимость лицензии на использование Dreamlands составляет от $100 и выше в зависимости от назначения. Либо можно приобрести бесплатно для некоммерческого использования.

3.4.2 Panorama - Terrain Editor 1.0

Panorama [5] - это редактор местности и пейзажа, где создаются много текстурные пейзажи. Пейзажи могут быть созданы, нарисованы и отправлены.

Рисунок 3.4. - Panorama - Terrain Editor 1.0

Характеристики программы: - простой в использовании windows интерфейс;

- быстро создает прекрасно выглядящие местности;

- до 8x8 64x64 сегментов местностей (большие местности);

- отправляет в Blitz3D (.b3d), Directx (.x) и Wavefront (.obj) форматы;

- возможность добавления любого текстурного слоя, что позволяет создавать много текстурные местности;

- сохраняет любой текстурный масштаб для любых текстурных уровней;

- рисует текстуры при помощи гладкой кисти;

- рисует текстурные слои цветами, что позволяет иметь неограниченное количество виртуальных текстурных комбинаций;

- квадратные и овальные формы кисти;

- 6 различных средств высечения, включая средство для квадрата, средство для пирамиды, средство для холма, средство для шума, средство для равнины, средство для гладкости;

- три различных режима управления камерой, которые обеспечивают простое управление;

- направление и возвышение солнца;

- цвет солнечного света;

- внешний цвет света;

- большое количество размеров текстуры;

- возможность создания красивой мягкой тени;

- имеется средство, с помощью которого можно мгновенно затушевывать плавными цветовыми переходами всю местность;

- средство, с помощью которого Вы сможете заполнять местность текстурой, определяя минимальную, максимальную высоту и/или угол наклона;

- возможность настройки параметров камеры;

- каркасный режим;

- включена функция Blitz3D загрузки и многое другое.

Цена Panorama - Terrain Editor: $24.00

3.4.3 T.ED Terrain and Environment Editor

T.ED [4] - профессиональный редактор местности и окружающей среды.

Рисунок 3.5. - T.ED

T.ED предназначен в основном для разработчиков игр и 3D художников. Существуют две основные категории в отношении местности в играх: «Static Mesh» и «Dynamic LOD». T.ED может помочь в развитии обеих.

Особенности: · Легкий в использовании интерфейс окна

· Разнообразные инструменты для редактирования, что даже позволяет создавать свесы и вертикальные стены.

· Много новых инструментов, включая автотекстурирование по высоте и наклону.

· Использование техники смешивания alpha-limit, чтобы устранить проблемы с вершиной alpha Z-порядка.

· Возможность редактирования больших территорий в режиме реального времени до 1024x1024.

· Может быть использовано 1000 моделируемых текстур с помощью вершины цвета в сочетании с 6 предварительно загруженными текстурами

· Создание привлекательных, реалистичных смешанные ландшафтов.

· Создание карты освещения

· Рендеринг supertexture для тех, кто не хочет или не может использовать alpha-вершину.

· Настраиваемое (и сохраняемое) моделирование окружающей среды для тумана, воды, солнечного света и т.д.

· B3D и DIRECTX. X для легкой загрузки в игры и другие программ.

· Бесплатные обновления

Стоит данный продукт $28, возможно скачать пробную версию с официального сайта.

3.4.4 Earth Sculptor

Еще один редактор [2] местности в реальном времени, разработанный исключительно для быстрой разработки 3D ландшафтов для разработки игр, географической визуализации и мультимедиа.

Рисунок 3.6. - Earth Sculptor

Особенности: · Быстрое аппаратное 3D-ускорение для рендеринга местности

· Рендеринг автоматического освещения и карты теней

· Высокое разрешение света, цвета и детализация текстур

· До 8 текстуры подряд

· Карта размером до 4097x4097

· Ландшафт текстуры размером до 4096x4096

· В режиме реального времени отражение в воде

· 8 инструментов для редактирования местности: поднимание, опускание, выравнивание, захват, сглаживание, разрушение, сжатие и скат

· Многократная отмена и повтор редактирования

· Сохранение карт высот в качестве текстур 16-разрядных PNG, не патентованных форматов

· Дополнительно. OBJ экспортером выходы оптимизирован сетках

· Внешнее редактирование текстур и карт высот

· Разрабатывается для Windows и OPENGL

3.4.5 PNP Terrain Creator

PNP Terrain Creator [3] позволяет создать реалистичную местность в кратчайшие сроки.

PNP Terrain Creator может автоматически сгенерировать всю местность одним щелчком мыши. Карты высот, текстуры поверхности и распределение растительности на местности также могут быть автоматизированы. Нужно лишь установить несколько параметров и PNP Terrain Creator сделает все остальное сам. Можно использовать стандартные алгоритмы, представленные в PNP Terrain Creator или даже применять и испытывать свои собственные.

Мощные и расширяемые функции фильтра для рандомизации, сглаживание и все другие манипуляции с картой высот позволяет редактировать большие площади.

Рисунок 3.7. - PNP Terrain Creator

Особенности PNP Terrain Creator: · Базовая функциональность

- Крупномасштабные местности управления государственным сектором

- 2D редактирования карт высот

- 3D-редактирование карт высот

· Редактирование карт высот

- Настраиваемые эффекты спада

- Настраиваемые фильтры карты высот

- Автоматическое создание карт высот

· Текстурирование ландшафта

- Многие поддерживаемые форматы файлов текстур

- Автоматическое текстурирование местности

- Создание карты освещения

· Размещение объектов

- Поддержка многих форматов файлов для размещения объекта

- Размещение объектов на местности в 3D

· Ландшафт растительности

- Поддержка многих форматов файлов для размещения деревьев и травы

- Размещение деревьев на местности в 2D

- Размещение деревьев на местности в 3D

- Размещение лесов на местности в 2D/3D

- Размещение покрытия травы на местности 3D

- Автоматическое распределения растительного покрова

· Воды

- Пользовательские настройки воды

- Настройка уровня грунтовых вод в 2D и 3D

· Звуки окружающей среды

- Поддержка многих звуковых форматов

- Размещение источника звуков природы на местности в 2D и 3D

- Сложные функции зависимости воспроизведения звука природы

- Размещение области воспроизведения случайных звуков

- 3D моделирование звуков окружающей среды

· Импорт / экспорт возможности

- Поддержка многих форматов местности для импорта

- Поддержка многих форматов местности для экспорта

Стоимость PNP Terrain Creator €45 за стандартное издание и €170 за профессиональные. Доступна бесплатная версия с ограничениями.

4. Практическая реализация

4.1 Реализация программного продукта

В качестве алгоритма реализации ландшафта был выбран алгоритм с использованием карты высот.

Функция, с которой начинается работа приложения: int ENTRYPOINT(OS::OS_App *os)

{

CERRREDIRECT error;

if(! error.Redirect(os->GETAPPLICATIONPATH() "Error\\error.txt"))

{ os->Close();

return -1;

}

//Просьба указать пользователю размеры экрана

OS::Vec2i SCREENRESOLUTION;

if(! GETREQUESTEDSCREENRESOLUTION(os, SCREENRESOLUTION))

{ os->Close();

return -1;

}

//Создание окна

OS::OS_Window *window = 0;

if(! OS::CREATENEWDISPLAY(&window))

{ os->Close();

return -1;

}

//Захват разрешения рабочего стола

OS::Vec2i DESKTOPRESOLUTION = os->GETDESKTOPRESOLUTION();

OS::Vec2i SCREENCENTER(DESKTOPRESOLUTION.x / 2, DESKTOPRESOLUTION.y / 2);

OS::Vec2i WINDOWCENTER(SCREENRESOLUTION.x / 2, SCREENRESOLUTION.y / 2);

//Захват позиции окна

OS::Vec2i WINDOWPOSITION(SCREENCENTER.x - WINDOWCENTER.x, SCREENCENTER.y - WINDOWCENTER.y);

//Создание дисплея if(!window->CREATEDISPLAY(OS::Rect(WINDOWPOSITION.x, WINDOWPOSITION.y, SCREENRESOLUTION.x, SCREENRESOLUTION.y), "Редактор Ландшафта", WF_WINDOWED | WF_MAXIMISE | WF_MINIMISE))

{ window->Release();

os->Close();

return -1;

} window->SHOWDISPLAY();

//Создание и Запуск Редактора ландшафта

TERRAINEDITOR *TERRAINEDITOR = new TERRAINEDITOR();

if(! TERRAINEDITOR->Run(os, window))

{ delete TERRAINEDITOR;

window->Release();

os->Close();

return -1;

}

//Очистка памяти delete TERRAINEDITOR;

window->Release();

os->Close();

return 0;

}

Рисунок 4.1 - Диаграмма классов (классы)

Рисунок 4.2 - Диаграмма классов (структуры и константы)

4.2 Руководство пользователя

Рисунок 4.3 - Разработанный Редактор Ландшафта

4.2.1 Запуск Редактора

Как только редактор был запушен, будет предложено выбрать разрешения для окна редактора:

Рисунок 4.4 - Выбор размера окна редактора

После выбора разрешения будет предложено создать новый ландшафт либо загрузить существующий:

Рисунок 4.5 - Создание ландшафта

4.2.2 Создание нового ландшафта

После выбора «Создать Новый Ландшафт» будет предложено указать размер ландшафта:

Рисунок 4.6 - Выбор параметров Ландшафта

Первый параметр определяет размер и детализацию будущего ландшафта (число вершин по ширине и длине), второй определяет расстояние между вершинами.

4.2.3 Загрузка существующего ландшафта

После выбора «Загрузить Сохраненный Ландшафт» появится диалоговое окно, где нужно выбрать файл ландшафта, который пользователь хочет загрузить:

Рисунок 4.7 - Открытие сохраненного ландшафта

4.2.4 Панель управление редактором

Рисунок 4.8 - Панель Управления Редактора Ландшафта

· Кнопки

«Изменить Фон» вызывает диалоговое окно и позволяет выбрать новый SKYBOX.

«Сохранить» вызывает диалоговое окно для сохранения ландшафта

«Выйти» закрывает приложение, все несохраненные изменения будут потеряны

· «Изменение Высоты или Текстуры»

«Выбор изменения высот»

«Курсор» позволяет нажимать на ландшафт, не изменяя его (удобно для навигации по ландшафту)

«Увеличение», при нажатии на ландшафт вершины внутри курсора будут увеличиваться в высоте. Чем вершина ближе к центру курсора, тем она быстрей растет. Площадь изменения определяется «размером» и «силой» курсора.

«Уменьшение», тоже самое что и «увеличение», но уменьшает высоту вершин.

«Сглаживание», при нажатии на ландшафт сглаживает вершины, находящиеся внутри курсора.

«Выравнивание», при нажатии на ландшафт высота вершин внутри курсора стремится к нулю.

«Выбор изменения текстуры»

«Текущая» показывает, какая текстура выбрана

«Текстура» со списком рядом позволяет выбрать текстуру из загруженных скролл «Количество слоев» означает число раз, которое текстура будет повторяться на всем ландшафте

«Загрузить текстуру» открывает диалоговое окно для загрузки файла текстуры

· «Параметры курсора» скролл «Размер курсора» управляет размером области курсора на ландшафте скролл «Сила Курсора» управляет силой изменения высоты вершин ландшафта при редактировании

· «Параметры Рендеринга»

«Рендеринг Ландшафта» показывает ландшафт с текстурой

«Рендеринг Ландшафта и Каркаса» показывает также как и в предыдущем варианте, но и с и видом каркаса ландшафта

«Рендеринг Только Каркас» показывает только каркас ландшафта.

«Свет по X (Y, Z)» направление света на каждой оси

· «Алгоритмы Генерации ландшафта»

«Случайная Генерация ландшафта» выбирает случайное количество итераций для каждого алгоритма

4.2.5 Сохранение Ландшафта

Чтобы сохранить ландшафт, просто нажмите кнопку «Сохранить» в нижней части панели управления редактором. После этого появится диалоговое окно "Сохранить как".

Рисунок 4.9 - Сохранение Ландшафта

4.2.6 Изменение Skybox

Для изменения Skybox просто нажмите кнопку «Изменить Фон» в нижней части Панели Управления Редактора. После этого появится диалоговое окно, где требуется указать Skybox, который пользователь хочет использовать.

4.2.7 Выход из Редактора

Для выхода из Редактора нажать кнопку «X», расположенную в правом верхнем углу Редактора Ландшафта или кнопку «Выйти», расположенную в нижней части Панели Управления Редактора.

5. Безопасность жизнедеятельности

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

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

Разработанный программный продукт обладает легким в использовании интерфейсом, позволяет открывать и редактировать сохраненные, создавать новые ландшафты. Во время редактирования позволяет создавать холмы, впадины, равнины, покрывать ландшафты загружаемыми текстурами, с учетом высоты ландшафта. Имеется регулируемое освещение с тенями. Есть возможность автоматической генерации ландшафта с использованием «Fault» [17], «Fault Sine» [18], «Fault Cosine» [18], «Circles» [16], «Smoothing» [18] алгоритмов. Помимо всего прочего есть возможность выгружать ландшафт в формат.X c целью использования сторонними приложениями.

Разработанный продукт может использоваться ландшафтными дизайнерами, для визуальной демонстрации, может - разработчиками игр для создания ландшафтов. Освоение разработанного продукта может показаться интересным делом практически любому пользователю, ведь для получения чудесного пейзажа совсем не обязательно уметь рисовать (да и знания по 3D-моделированию не нужны) - достаточно лишь разобраться с настройками программы и включить воображение.

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

Список литературы
1 Dreamlands [Электронный ресурс]: Генератор ландшафта. - Режим доступа: http://www.dreamlands.to. - Загл. с экрана. - яз. англ.

2 EARTHSCULPTOR [Электронный ресурс] : Редактор ландшафта. - Режим доступа: http://www.earthsculptor.com. - Загл. с экрана. - яз. англ.

3 PNP Terrain Creator [Электронный ресурс] : Генератор ландшафта. - Режим доступа: http://pnp-terraincreator.com. - Загл. с экрана. - яз. англ.

4 T.ED Professional Terrain and Environment Editor [Электронный ресурс] : Генератор ландшафта. - Режим доступа: http://www.thegamecreators.com - Загл. с экрана. - яз. англ.

5 Panorama - Terrain Editor [Электронный ресурс] : Редактор ландшафта. - Режим доступа: http://www.gameart.dk/ - Загл. с экрана. - яз. англ.

6 Википедия - С [Электронный ресурс]. Режим доступа: http://ru.wikipedia.org/wiki/C - яз. рус.

7 Википедия - OPENGL [Электронный ресурс]. Режим доступа: http://ru.wikipedia.org/wiki/OPENGL - яз. рус.

8 Википедия - GDI [Электронный ресурс]. Режим доступа: http://ru.wikipedia.org/wiki/GDI - яз. рус.

9 Википедия - DIRECTX [Электронный ресурс]. Режим доступа: http://ru.wikipedia.org/wiki/DIRECTX - яз. рус.

10 Википедия - API (Интерфейс программирования приложений) [Электронный ресурс]. Режим доступа: http://ru.wikipedia.org/wiki/API - яз. рус.

11 Википедия - Кадровый буфер [Электронный ресурс]. Режим доступа: http://ru.wikipedia.org/wiki/Кадровый_буфер - яз. рус.

12 Operating System Manager [Электронный ресурс]. Режим http://www.richard-lyon.com/projects/operating-system-manager/ - яз. англ

13 Компьютера Online - OPENGL vs. Direct3D [Электронный ресурс]. Режим http://www.computerra.ru/hitech/244024 - яз. рус.

14 Генерация трехмерных ландшафтов [Электронный ресурс]. Режим http://www.ixbt.com/video/3dterrains-generation.shtml - яз. рус.

15 Википедия - Трехмерная графика [Электронный ресурс]. Режим доступа: http://ru.wikipedia.org/wiki/Трехмерная_графика - яз. рус.

16 Terrain Tutorial - The Circles Algorithm [Электронный ресурс]. Режим доступа: http://www.lighthouse3d.com/opengl/terrain/index.php?circles - Загл. с экрана. - яз. англ.

17 Terrain Tutorial - The Fault Algorithm [Электронный ресурс]. Режим доступа: http://www.lighthouse3d.com/opengl/terrain/index.php3?fault - Загл. с экрана. - яз. англ.

18 Terrain Tutorial - Two Possible Variations [Электронный ресурс]. Режим доступа: http://www.lighthouse3d.com/opengl/terrain/index.php3?faultvar - Загл. с экрана. - яз. англ.

Наиболее употребляемые текстовые сокращения

ВС - вычислительная система

ПЗ - пояснительная записка

АСУ - автоматизированная система управления

ДП - дипломный проект

ПЗ - пояснительная записка

СИБГУТИ - Сибирский государственный университет телекоммуникаций и информатики

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



Дисциплины научных работ



Хотите, перезвоним вам?