Материал: Программа для ландшафтного дизайна

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Возможно, ответ в возможностях современного железа, и что для их использования предоставляют OpenGL и DirectX. Прежде всего, нынешние видеокарты - это программируемые устройства. Теперь некоторый код можно выполнять прямо на графическом процессоре (GPU). Эти программы называют шейдерами. Они позволяют создавать сложнейшие эффекты в реальном времени. Изначально эти программы можно было писать только на "фирменных" языках производителей видеокарт - ATI и nVidia. Оба языка очень похожи на ассемблер, но, увы, несовместимы. А кому захочется писать два разных кода для реализации одного и того же эффекта? И вот в DirectX 8.0 появляется универсальный язык программирования шейдеров. Он тоже похож на ассемблер, но позволяет обойтись одним шейдером для обоих типов видеокарт. И снова закавыка: кому сейчас нравится программировать на языках низкого уровня? И вот Microsoft представляет в своем DX 9.0 уже C-подобный язык 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.2 Windows-окно

Для создания нового окна пользователь должен использовать функцию:

bool CreateNewDisplay(OS_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[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 и выше в зависимости от назначения. Либо можно приобрести бесплатно для некоммерческого использования.

.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 различных средств высечения, включая средство для квадрата, средство для пирамиды, средство для холма, средство для шума, средство для равнины, средство для гладкости;

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

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

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

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

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

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

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

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

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

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

Цена 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] позволяет создать реалистичную местность в кратчайшие сроки.Terrain Creator может автоматически сгенерировать всю местность одним щелчком мыши. Карты высот, текстуры поверхности и распределение растительности на местности также могут быть автоматизированы. Нужно лишь установить несколько параметров и PnP Terrain Creator сделает все остальное сам. Можно использовать стандартные алгоритмы, представленные в PnP Terrain Creator или даже применять и испытывать свои собственные.

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