Автореферат по теме
«Методы и средства разработки трёхмерных игровых приложений»
Составитель: Пивненко А.В.
Содержание:
- Введение
- Цель и задачи работы
- Предполагаемая научная новизна
- Предполагаемая практическая ценность
- Обзор существующих исследований и разработок
- Планируемые и полученные результаты
- Заключение
Введение
Магистерская работа посвящена проблеме разработки трехмерных игровых приложений. Основная её часть - разработка эффективной системы трехмерной визуализации.
В настоящее время компьютерная трехмерная графика становиться всё более распространенной. Её область применения расширяется с каждым днем, это и архитектура, и компьютерные игры, и различные системы моделирования и проектирования. Для её эффективной реализации необходимо использовать вычислительные ресурсы видеокарты компьютера.
DirectX – это библиотека, которая позволяет создавать приложения, в полной мере использующие не только 3-х мерную графику, но также звук, устройства ввода и сетевые возможности современного компьютера. DirectX – это набор мультимедийных драйверов, которые зачастую в обход стандартных сервисов ОС позволяют напрямую обращаться к конечному оборудованию используя все его аппаратные возможности. Более того, некоторые Win32 сервисы используют DirectX ядро для своих собственных нужд. Набор мультимедийных АПИ и драйверов высокого уровня - пожалуй, это будет наилучшим определением.
На сегодняшний день существует множество систем трехмерной визуализации, как с закрытым кодом, так и с открытым. У всех есть свои достоинства и недостатки и все они направлены на максимально быстрый синтез трухмерной динамическй сцены.
Цель и задачи работы
Основнои целью является создание законченного игрового приложения. В задачи входит рассмотрение существующих систем трехмернои визуализации и создание своеи системы.
Предполагаемая научная новизна
Новая система трехмернои визуализации. Возможно улучшение некоторых метов визуализации.
Предполагаемая практическая ценность
Практическая ценность заключается в продаже готового продукта.
Обзор существующих исследований и разработок
1 Обзор системы визуализации OGRE3D
Ogre - графический объектно-ориентированный движок с открытым исходным кодом (Object-oriented Graphics Rendering Engine), который написан и поддерживается небольшой командой, но участие в его разработке принимает всё Ogre-сообщество. Те кто используют Ogre считают его одним из лучших графических движков в мире.
Ogre работает под наиболее распространеннными ОС и на
практически любом железе - смотрите Hardware page
для подробного описания. Для работы с Ogre требуется С++ компилятор. В настоящий момент поддерживаются Visual C++ 6/7/7.1 и gcc. Bloodshed и Borland официальноне поддерживаются. Наконец, необходимы 3d программы для создания трехмерных моделей, такие как 3dsMax, Maya, Blender, и т.д.
Ogre - графический, и только графический движок. Это значит что ничего другого кроме вывода и обработки графики он не делает. Но это значит еще и то,
что к нему можно прикрутить сторонние библиотеки для создания полноценной игры, а именно:
- Звук
- Организация сети
- Ввод (манипуляторы, джойстики)
- Расчет столкновений
Ogre не содержит эти библиотеки, но рпедоставляет интерфейс, который позволяет легко подключать внешние модули.
Ogre - движок реального времени. Многие графические пакеты
реднерят автономно или медленно, часто с использованием ray tracing.
Эти две технологии имеют существенные различия. Можно делать автономные изображения очень детальные и реалистические. Но для этого требуются часы или даже дни. При реднеринге в реальном времени каждое изображение создается за десятые или сотые доли секунды. Возможности сегодняшних видеокарт позволяют создавать в реальном времени очень качественные фотореалистичные изображения. Именно поэтому качество графики на в вашем приложении напрямую зависит не только от движка, но и от производительности вашего компьютера.[2]
2 Обзор THE NEBULA DEVICE
Вчерашние "зубры" 3D-графики устаревают, отстают от жизненных реалий, а их создатели постепенно теряют интереск развитию проекта. Движок стареет, дальнейшее его развитие становится бессмысленным— слишком большие изменения надо вносить в ядро. Проще создать новый движок. Таковудел всех движков, в том числе и бесплатных. Но если платные движки (различногокачества) появляются регулярно, то их коллеги-бессребреники из сообщества OpenSource высокой рождаемостью похвастаться не могут. Качественный бесплатный движок— редкость. Движок The Nebula Device разработки немецкой студии Radon Labs, создателей недавно вышедшей Project Nomads — один из представителей редкого семейства высококачественных бесплатных движков.
Разработчики дают вам полное право бесплатно пользоваться плодами их трудов и извлекать прибыльиз проектов на хорошо раскрученной Nebula. Лицензируйте на здоровье, платить не придется.
Пессимисты пробурчат, что, мол, бесплатный сыр бывает тольков мышеловке, но, поверьте, это как раз тот случай, когда аксиомы народной мудростине работают. Конечно, радоновцы не наивные альтруисты, и, делая свой движок бесплатным, руководствовались отнюдь не заповедями любви к ближнему, а законами рынка.
Приступая к работе над The Nomads (первоначальное название игры) разработчики встали перед дилеммой: сделать свой движок или лицензироватьужеимеющиеся разработки. Линияоризонта, отстоящая от игрока на десятки километров, летающие глыбы островов, красивое небо и, самое главное, облака (отсюда и название движка) — ни один из существовавших движков не былвсостоянии детально проработать все это. Выбора не оставалось — пришлось писатьдвижок с чистого листа. После чего разработчики могли либо продавать лицензии, оставив Project Nomads только на бумаге дизайн-документа. А могли вписать в определениеNebula словосочетание "open source", то сделать код открытым для всех. Выбравпоследний вариант, создатели не прогадали. Помощь в развитии проекта стали оказыватьмногочисленные энтузиасты (естественно, открытие исходных кодов проекта — этоеще и хорошая рекламная акция), плагины и модификации которых сделали ProjectNomads одной из самых красивых игр, а Nebula Device — известным и перспективнымдвижком.
С визуальной точки зрения Nebula может поспорить с такими монстрами, как Unreal Warfare, LithTech Jupiter и Doom 3 engine. Для Nebula эти движки — не кумиры, а чуть более удачливые коллеги, выигрывающие за счет своей известности и мастерства создателей, но проигрывающие из-за высоких для начинающего разработчика цен. Nebula же, несмотря на бесплатность, малоизвестна. ем же так хорош этот бесплатный движок?
Используемые графические библиотеки — один из ключевых моментовв работе любого движка. В Nebula Device в отличие от большинства бесплатных (даи платных тоже) движков наличествует поддержка как OpenGL, так и Direct3D. Есливозьметесь разрабатывать свою игру, лучше изначально использовать именно Direct3D, — кто знает, может быть, вам суждено создать шедевр, который завоюет все мыслимые платформы, а при портировании игры на приставки (где можно заработать куда большеденег и нет проблемс оптимизацией движка под разные конфигурации PC) придется ориентироваться только на Direct3D. Да и программироватьпод него несколько проще. Если же по каким-то причинам вы решите-таки программироватьпод OpenGL, то переключение между режимами осуществляется безо всяких проблем.
Мультиплатформенность Nebula забивает очередной гвоздь в крышкуроба конкурентов. Windows, Linux, Xbox (Project Nomads существует в версиях подо все эти платформы), Mac OS X (версия игры скоро появится). Сравните с конкурентами — столь демократичных движков не так много даже в коммерческой когорте.
Наличие готового движка для начинающего разработчика — ещене повод бросаться на амбразуру игрового рынка — от необходимости разбиратьсяв языках программирования вас никто не освобождал. Nebula (написана на C++) поддерживает несколько скриптовых языков — Tc1/Tk, Python и Lua. Вам ничего не говорят эти названия? Не проблема: при помощи плагина (напишите сами или возьмите готовые) вы можете встроить в движок поддержку любого языка.
Поддержка множества стандартов, мультиплатформенность движка, возможность подключать в качестве плагинов дополнительные языки программирования — все это несомненные плюсы длялюбого движка. Но без функциональности и удобства использования они ничего незначат. Движок должен быть эргономичным, и Nebula обладает этими качествами вполной мере. Несколько примеров для наглядности. Есть возможность клонированиясложных (состоящих из нескольких примитивов) объектов вместо утомительного воссозданиякаждого отдельно. Удобно и эффективно. Изменение свойств объекта и эффект, полученныйв результате этого действия, можно посмотреть без утомительной процедуры compile/link/debug.
Из всего вышесказанного у вас могло сложиться мнение, что Nebula идеален. Это не совсем так, не обошлось без пары чайных ложек дегтя. Бочкимедаони, конечно, не испортят, но некоторое неудобство в работесоздадут. Не все гладко с поддержкой форматов трехмерных редакторов. Для хранения моделей движок использует главным образом нестандартные форматы N3D и NVX. О существовании иных форматов, кроме широко распространенного OBJ, (и то поддержка осуществляется через плагин), Nebula не догадывается. К счастью, форматы для хранения текстур избежали дискриминации: кроме понятного только движку NTX, Nebula с легкостью оперирует изображениями в BMP, JPG, GIF, TGA, TIFF, PNG и многими другими распространенными форматами. А NTX — это промежуточное звено, инструмент для загрузки текстур без декомпрессии. То же самое можно сказать и про модельный NVX.[3]
3 Обзор IRRLICHT
IRRLICHT - движок мультиплатформеный (Win95/98/2000/NT/XP, Linux, Mac, Sun Solaris/SPARC. Ведутся работы по портированию на КПК). На данный момент последней версией является IrrLicht v1.2.
Работает с Microsoft VisualStudio6.0™, VisualStudio.NET 7.0-8.0™, Metrowerks Codewarrior, Bloodshed Dev-C++ (с компилятором g++3.2-4.0), Code::Blocks.
Есть порт движка под .NET, так что теперь его можно использовать со всеми .NET-языками, как то: C#, VisualBasic, Delphi.NET, etc.
IrrLicht поддерживает DirectX8.1, DirectX9.0c, OpenGL 1.5, а также 2 собственных software-renderer'а, один из них на очень профессиональном уровне рендерит.
Эффекты:
- Реалистичные водные поверхности
- Динамическое освещение
- Динамические тени (буфер трафарета)
- Billboards
- Bump mapping
- Parallax mapping
- Прозрачность
- Lightmaps
- Гибкая система частиц для огня, дыма, снега и т.д.
- Sphere mapping
- Texture animation
- Skyboxes
- Туман
В движке реализовано полноценное GUI (с поддержкой скинов), анимация (Morph target (с линейной интерполяцией) и скелетная).[4]
Планируемые и полученные результаты
На данный момент создана предварительная система визуализации трехмерных объектов с аппаратным ускорением. Её схема предствавленна на рисунке.
Схема конвеера визуализации
Из планируемы результатов можно выделить: поддерка текстур, скелетная анимация, система цастиц.[1]
Заключение
Данная работа – очень важный шаг, переход на качественно новый уровень программирования. Несомненно, знания полученные при её написании станут фундаментом для дальнейшей работы.
Список источников:
- Ламот, Андре «Программирование трёхмерных игр для Windows», «Вильямс», 2004. – 1424с.
- Знакомство с ogre3d http://www.ogre3d.org.ru
- Движок The Nebula Device http://www.gamemaking.ru/portal/modules/sections/index.php?op=viewarticle &artid=131
- IrrLicht http://vladgamedev.com/readarticle.php?article_id=6
|