Разработка трехмерного интерактивного приложения
Исследование идеи, согласно которой компьютерные игры являются одним из двигателей прогресса компьютерной индустрии. Рассмотрение процесса продажи программного обеспечения. Анализ рендеринга – процесса визуализации объектов трехмерного пространства.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 01.10.2017 |
Размер файла | 8,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное агентство связи
Государственное образовательное учреждение высшего профессионального образования
«Сибирский государственный университет телекоммуникаций и информатики»
(ГОУ ВПО "СибГУТИ")
Дипломный проект
«Разработка трехмерного интерактивного приложения»
ФИВТ.06063.П63 ПЗ
Дипломник: Кузнецов И.В.
Факультет ИВТ Группа П-63
Руководитель ст. преп. Щеглов М.Е.
Новосибирск 2011
Содержание
- Введение
- 1. Постановка задачи
- 1.1 Основные понятия
- 1.2 Цель работы
- 2. Выбор средств разработки
- 2.1 Обзор и выбор графической библиотеки
- 2.2 Описание библиотеки DirectX
- 2.3 Графический конвейер
- 2.4 HLSL
- 2.5 Обзор и выбор алгоритмов визуализации
- 3. Программная реализация
- 3.1 Игровой процесс
- 3.2 Организация приложения
- 3.3 MenuStrategy
- 3.4 LevelLoaderStrategy
- 3.5 GamePlayStrategy
- 3.6 Визуализация
- 3.7 Класс игрока
- 3.8 Сетевое взаимодействие
- 4. Руководство пользователя
- 5. Безопасность жизнедеятельности
- 5.1 Характеристика вредных факторов при работе с ПК
- 5.2 Размещение и оснащение рабочих мест с ПК
- 5.3 Причина и профилактика зрительного утомления
- 5.4 Пожарная безопасность
- 6. Оценка эффективности разработки
- Заключение
- Библиография
Введение
Все, кто имеет дело с компьютером, так или иначе сталкивались с компьютерными играми, и подавляющее большинство может сходу назвать несколько игр, которые им особенно понравились.
Многое захватывает в таком творчестве. И не сам процесс игры, а разработка игровой вселенной, ее проектирование и реализация. Когда можно слить воедино сценарий, графику, музыку, искусно задуманный и умело запрограммированный алгоритм -- создать единый фантастический мир, живущий по законам, которые ты же для него и придумал.
Сейчас распространена идея, согласно которой компьютерные игры являются одним из двигателей прогресса компьютерной индустрии. Разработчики, ввиду обостряющейся конкуренции старающиеся предложить пользователям все максимально качественное и красивое (читай ресурсоемкое), стимулируют развитие рынка комплектующих ПК для конечного пользователя, а также дают "покупочную" мотивацию многим потребителям. Если пользователь хочет, чтобы на компьютере все работало хорошо, ему приходится постоянно делать апгрейд.
В последнее время продажи программного обеспечения увеличиваются незначительно, в то время как продажи игровых программ возрастают экспоненциально. Игры для платформы Microsoft составляют подавляющее большинство. Игровое программное обеспечение - это третья по размерам доходов отрасль индустрии программного обеспечения после текстовых процессоров и электронных таблиц.
1. Постановка задачи
1.1 Основные понятия
Перед тем как приступить к описанию теоретической части, необходимо ввести некоторые понятия, используемые в компьютерной графике и необходимые для создания приложения:
Объекты в трехмерном пространстве позиционируются в трёхмерной системе координат (в данной работе - левосторонней Декартовой системе координат).
Объект - в данном контексте, множество полигонов имеющих общие вершины, текстуры и материалы. Как правило, один объект содержит в себе вершинный и индексный буферы, текстуру и материал. Объект может состоять из нескольких подобъектов имеющих идентичную с ним структуру.
Вершина - это базовый элемент трёхмерного мира, описывающийся положением (координатами) в трёхмерной системе координат, нормалью к полигону, составной частью которого является вершина и текстурными координатами.
Полигон - геометрический примитив, задающий количество последовательно соединяемых вершин не лежащих на одной прямой. В данной работе все вершины объединяются по три, т.е. под полигоном будут пониматься треугольники.
Текстура - двумерное растровое изображение, которое в процессе рендеринга (отрисовки) отображается на поверхность объекта. Представлена в качестве двумерного массива, элементами которого являются тексели.
Тексел - элемент текстуры, задающий цвет одного пикселя. Представлен в виде четвёрки целых, положительных чисел r g b a, в диапазоне от 0 до 255, где r g b - красная, зелёная, синяя составляющая цвета соответственно, а - степень прозрачности.
Рендеринг - процесс визуализации объектов трехмерного пространства. Текстурные координаты - определяют соответствие между текселями текстуры и пикселями поверхности полигона, на который эта текстура будет отображена.
Нормаль - перпендикуляр к плоскости, задаваемой тройкой вершин принадлежащей одному полигону. Используется при расчёте освещения для определения яркости пикселей изображения. Описывается тройкой вещественных чисел принимающих значения в диапазоне от 0 до 1 и задающих вектор нормали.
Shader (Шейдер) - общее название для программ, исполняемых видеоадаптером.
Pixel Shader (Пиксельный шейдер) - программа, выполняемая видеоадаптером во время процесса растеризации для каждого пикселя изображения.
Vertex Shader (Вершинный шейдер) - программа, выполняемая видеоадаптером во время обработки вершин.
Материал - в данном контексте, представляет собой совокупность шейдера, параметров, задающих его поведение и текстур.
Источник освещения - абстрактная структура, используемая для расчётов результирующего цвета и яркости пикселя изображения и построения теней.
Матрица - в данном контексте матрица размерностью 4x4. Матрицы используются для переноса, поворота, проецирования и масштабирования объектов путём умножения координат вершины на элементы матрицы.
Матрица проекции - определяет, каким образом будет осуществляться проекция точек трёхмерного мира на экран компьютера. В данном случае преобразование будет происходить из трёхмерной системы координат.
Матрица вида - определяет точку, из которой пользователь «наблюдает» трёхмерный мир, углы обзора по горизонтали и вертикали, направление его «взора», а так же переднюю и заднюю плоскости отсечения.
Матрица мира - определяет повороты, масштаб и положение объекта перед отображением на экран.
Камера - структура, которая содержит в себе матрицу вида, а так же отвечает за её преобразования.
Растеризация - процесс отображения видимых точек трёхмерного мира на плоскость экрана монитора. компьютерный программный рендеринг
Пиксель - точка экрана - минимальный элемент изображения. Разрешение изображения на экране измеряется в пикселях. Характеризуется глубиной цвета в битах и текущим значением цвета.
Спрайт - фигура из двух полигонов с наложенной текстурой, представляющая собой квадрат.
Биллборд - спрайт все время повернутый поверхностью к игроку.
Скайбокс - фигура, предназначенная для имитации неба.
Уровень - совокупность объектов и игроков, взаимодействующих друг с другом.
Загрузчик уровня - сущность, загружающая все необходимые объекты в память из файлов, а также осуществляющая настройку параметров уровня перед игровым процессом.
Геймплей - игровой процесс с точки зрения игрока. Геймплей включает в себя разные аспекты компьютерной игры, в том числе технические, такие как внутриигровая механика, совокупность определенных методов взаимодействия игры с игроками.
1.2 Цель работы
Требуется разработать программное приложение, представляющее собой игру в 3D графике с определенным игровым процессом и возможностью взаимодействия по сети. Реализовать ряд визуальных эффектов.
Приложение должно содержать:
· Меню с возможностью выбора создания сервера или клиента, а также выбор уровня.
· Загрузчик, производящий чтение данных уровня из файла.
· Сетевое взаимодействие для двух игроков.
· Игровой процесс, включающий в себя состязание между игроками.
Ряд визуальных эффектов, которые необходимо реализовать:
· Бликовое освещение
· Normal Mapping
· Тени
· Bloom
· Lens Flare
2. Выбор средств разработки
2.1 Обзор и выбор графической библиотеки
Первоочередной задачей для реализации задуманного является выбор графической библиотеки, способной обеспечить требуемые функциональные возможности программного средства. На сегодняшний день существует две графические библиотеки способные предоставить необходимые возможности, это OpenGL и DirectX. Рассмотрим каждую из них более подробно.
OpenGL
Описание
OpenGL (Open Graphics Library -- открытая графическая библиотека, графическое API) -- спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.
Включает более 250 функций для рисования сложных трёхмерных сцен из простых примитивов.
OpenGL ориентируется на следующие две задачи:
Скрыть сложности адаптации различных 3D-ускорителей, предоставляя разработчику единый API.
Скрыть различия в возможностях аппаратных платформ, требуя реализации недостающей функциональности с помощью программной эмуляции.
Основным принципом работы OpenGL является получение наборов векторных графических примитивов в виде точек, линий и многоугольников с последующей математической обработкой полученных данных и построением растровой картинки на экране и/или в памяти. Векторные трансформации и растеризация выполняются графическим конвейером (graphics pipeline), который по сути представляет собой дискретный автомат. Абсолютное большинство команд OpenGL попадают в одну из двух групп: либо они добавляют графические примитивы на вход в конвейер, либо конфигурируют конвейер на различное исполнение трансформаций.
OpenGL является низкоуровневым процедурным API, что вынуждает программиста диктовать точную последовательность шагов, чтобы построить результирующую растровую графику (императивный подход). Это является основным отличием от дескрипторных подходов, когда вся сцена передается в виде структуры данных (чаще всего дерева), которое обрабатывается и строится на экране. С одной стороны, императивный подход требует от программиста глубокого знания законов трёхмерной графики и математических моделей, с другой стороны -- даёт свободу внедрения различных инноваций.
Для обеспечения лучшей переносимости, в OpenGL определены собственные типы. Все эти типы образуются от названий типов в языке С++, только перед именем типа ставятся две буквы GL. Например, типы int, или float в OpenGL переопределены под названием GLint, и GLfloat соответственно. И последнее, синтаксис OpenGL более понятный по отношению к С (но не С++), чем синтаксис Direct3D. [1]
Достоинства и недостатки
Достоинством OpenGL является переносимость. Поскольку библиотека является открытой, любая компания, которая хочет иметь поддержку OpenGL на своей платформе, просто покупает лицензию у SGI, а затем делает его реализацию на своей платформе.
Недостаток OpenGl - отсутствие поддержки со стороны разработчиков. Ограниченное использование возможностей современных видеокарт.
DirectX
Описание
DirectX основывается на объектной модели COM. Это означает, что для работы с ней необходимо создать указатели на классы и использовать их, что является предпочтительней, чем просто вызовы функций, которые не вызывают никаких ассоциаций. Объект COM аналогичен классу в С++. DirectX также обеспечивает функциональную библиотеку Direct3D. Библиотека Direct3D предоставляет в распоряжение пользователя множество функций, которые были сильно оптимизированы. Среди прочий операций, эта библиотека загружает и сохраняет mesh'и, выполняет операции над матрицами и векторами и предоставляет больше сотни расширенных С++ структур данных.
Достоинства и недостатки
К достоинствам можно отнести то, что Direct3D обеспечивает пользователя функциями для проверки доступного графического оборудования на компьютере. Синтаксис и структура DirectD3D развилась до формы, как заявляют многие разработчики, более интуитивно понятной, чем предыдущие версии, что делает процесс создания игр более простым, нежели это было раньше. Благодаря использованию COM модели, приложения, написанные для старых версий DirectX, могут работать с новыми версиями. Microsoft регулярно обновляет DirectX SDK, который включает в себя: заголовочные файлы библиотек DirectX, развёрнутую документацию по DirectX, примеры программ, выполненные с использованием DirectX.
Недостатком является то, что DirectX создан исключительно для операционной системы Windows и непереносим на другие платформы. А также весьма громоздкий код инициализации.
На основании вышеизложенных фактов, было принято решение об использовании DirectX, поскольку он на библиотечном уровне поддерживает матричные преобразования, а так же обеспечивает доступ к аппаратным возможностям видеоадаптера.
Поскольку DirectX поддерживается только операционными системами семейства Windows, целевой операционной системой была выбрана Windows 7 как наиболее современный представитель данного семейства операционных систем.
2.2 Описание библиотеки DirectX
Развитие
DirectX - совокупность технологий, разработанных корпорацией Microsoft с целью превратить Windows в оптимальную платформу для мультимедийных приложений и компьютерных игр с полноцветной графикой, видео, трехмерной анимацией и объемным звуком. DirectX дает возможность разработчикам игровых программ и приложений мультимедиа создавать продукты, не привязанные жестко к тем или иным аппаратным средствам, пользователи же могут приобретать игры и программы мультимедиа для Windows, не беспокоясь об их несовместимости с аппаратурой своего компьютера. До появления DirectX практически все игры для компьютеров PC реализовывались на платформе MS-DOS. Каждую программу разработчикам приходилось комплектовать множеством видео- и аудиодрайверов (с тем, чтобы охватить как можно больше установленных у пользователей аппаратных компонентов) и при этом применять расширители DOS для преодоления барьера в 640 Кбайт. Среда Windows, упростившая взаимодействие пользователей с ПК благодаря удобному графическому интерфейсу, не облегчила жизнь программистов: в Windows графические программы функционировали слишком медленно. Как ни пародоксально это звучит, Windows, являясь графической средой, не была приспособлена для выполнения быстрых графических операций. Пытаясь поправить ситуацию, Microsoft разработала для создателей компьютерных игр и графических приложений технологию WinG, которая обеспечивала более быстрое выполнение графических операций, чем интерфейс GDI (Graphics Device Interface) Windows. В то же время корпорация не ограничивалась только решением проблем производительности. Разработчики стремились к тому, чтобы программисты могли создавать игровые и прикладные программы, не задумываясь о том, какие аппаратные компоненты имеются у конкретного пользователя. Сама операционная среда должна была содержать все необходимые драйверы и взять на себя взаимодействие программы с аппаратурой ПК, такой как аудио, видеоплаты и принтеры. Между тем даже после выхода в свет ОС Windows 95 платформа Microsoft по-прежнему не соответствовала заявленным обещаниям. Только сегодня с появлением усовершенствованных технологий, получивших обобщенное название DirectX, положение начинает меняться. [1]
Технология DirectX, теперь уже версии 11.0, позволяет программистам создавать в Windows приложения со встроенным доступом к аппаратным средствам. При этом им не нужно знать специфику аппаратной конфигурации определенного компьютера - явного программирования конкретной платы не требуется. Фактически DirectX исполняет роль промежуточного звена между программой и драйвером, преобразуя обобщенные команды в команды, специфические для того или иного устройства. Если первоначально DirectX была ориентирована на превращение Windows в полноценную платформу для компьютерных игр, всегда стимулировавших развитие аппаратных средств ПК, то по мере проникновения в массовые приложения технологий мультимедиа комплект программных интерфейсов DirectX становится важной частью операционной системы.
DirectX API
Практически все части DirectX API представляют собой наборы COM -совместимых объектов.
В целом, DirectX подразделяется на:
· DirectX Graphics, набор интерфейсов, ранее (до версии 8.0) делившихся на:
o DirectDraw: интерфейс вывода растровой графики (его разработка давно прекращена);
o Direct3D (D3D): интерфейс вывода трёхмерных примитивов;
· DirectInput: интерфейс, используемый для обработки данных, поступающих с клавиатуры, мыши, джойстика и пр. игровых контроллеров;
· DirectPlay: интерфейс сетевой коммуникации игр;
· DirectSound: интерфейс низкоуровневой работы со звуком (формата Wave);
· DirectMusic: интерфейс воспроизведения музыки в форматах Microsoft;
· DirectShow: интерфейс, используемый для ввода/вывода аудио и/или видео данных;
· DirectX Instruments -- технология, позволяющая на основе мультимедийного API DirectX создавать и использовать программные синтезаторы. В отличие от DX-плагинов, такие программы могут полностью управляться по MIDI и служат главным образом не для обработки, а для синтеза звука. Технология DXi была популярна в 2001--2004 гг., особенно в программных продуктах Cakewalk, но со временем проиграла «войну форматов» технологии VST от Steinberg;
· DirectSetup: часть, ответственная за установку DirectX;
· DirectX Media Objects: реализует функциональную поддержку потоковых объектов (например, кодировщики/декодировщики);
· Direct2D: интерфейс вывода двухмерной графики;
Direct3D
Компонент Direct3D помогает интегрировать с приложениями Windows 3D-графику. Он применяется для разработки интерактивных приложений трехмерной графики и программ реального времени. Несомненными его достоинствами являются независимость от устройств, общая модель драйверов (гарантирующая поддержку минимального набора средств и возможностей), простота включения в приложения функций трехмерной графики. Кроме того, Direct3D предлагает разработчикам аппаратных средств спецификацию, помогающую создавать платы, изначально поддерживающие различные средства Direct3D. Одним из наиболее важных качеств Direct3D является прозрачный доступ к графическим ускорителям. Если аппаратная платформа не поддерживает какой-то функции, Direct3D реализует ее эквивалент программным путем. В процессе своего исполнения приложение может определять наличие аппаратных компонентов и использовать их возможности. Кроме того, Direct3D реализует быстрый программно выполняемый рендеринг, для чего применяется полный конвейер рендеринга 3D-графики. При наличии соответствующей аппаратной поддержки часть операций такого рода осуществляется аппаратурой компьютера.
Один из наиболее важных элементов Direct3D - механизм рендеринга, отвечающий за определение сцены (как набора точек в трехмерном пространстве), различные спецификации текстур, источников света и камер. Функционально механизм рендеринга реализуется с помощью трех модулей: трансформации, освещенности и растеризации. Выполняемые каждым из них операции можно ускорить аппаратными средствами, причем такое ускорение осуществляется прозрачно для пользователя и приложения. Разработчику лишь нужно предусмотреть в приложении функции опознавания соответствующих аппаратных компонентов.
Компоненты DirectInput, DirectSound и DirectMusic
DirectInput реализует поддержку в приложениях периферийных устройств управления, как джойстики, клавиатура, мышь. В то же время DirectInput не ограничивается игровыми контроллерами и реализует интерфейс ввода данных с таких устройств, как графические планшеты.
Компонент DirectSound и DirectMusic исполняет роль интерфейса с аппаратурой, предназначенной для воспроизведения звука. Они обеспечивают проигрывание файлов .WAV и позволяют применять буферы разного типа (основные, вспомогательные, статические и потоковые). В основной буфер (используемый в данный момент компьютером) помещаются файлы из вспомогательных буферов (отведенных для каждого файла .WAV). Небольшие файлы для ускорения доступа можно помещать в статические буферы, а более длинные - циклически загружать в потоковые буферы по частям. Кроме того, DirectSound предоставляет микшер, управляющий различными параметрами воспроизведения (от громкости до эффектов объемного звучания, применяемых к вспомогательным буферам).
Технология DirectX оказалась необходима вследствие открытости платформы PC, которая оснащается все новыми и более сложными мультимедийными периферийными устройствами разных производителей. Хотя при наличии соответствующих видео и аудио стандартов разработчики могли бы создавать свои программы, ориентируясь непосредственно на аппаратное обеспечение и не пользуясь никакой прослойкой типа DirectX, это противоречило бы заложенному в основу платформы Windows и Windows NT принципу исключения прямого доступа к аппаратным ресурсам (для предотвращения отказов ОС из-за неправильно написанных приложений).
DirectX предоставляет разработчикам новые возможности для творчества: им не нужно беспокоиться о том, какой адаптер дисплея, звуковая плата или процессор ускорения трехмерной графики установлен на ПК пользователя. Поскольку технология DirectX изначально рассчитана на появление усовершенствований в программном и аппаратном обеспечении, разработчики и пользователи могут быть уверены, что их приложения будут оптимально использовать новые аппаратные технологии.
2.3 Графический конвейер
Нынешние графические карты предоставляют пользователю возможность замены некоторых частей графического конвейера шейдером. Шейдер -- это специальная программа, которая использует определенные программируемые регистры видеокарты для создания различных графических эффектов.
На рисунке показана упрощенная модель графического конвейера, которая условно делится на две части: обработка геометрии и обработка фрагментов (пикселей).
Рисунок 2.1 Обработка геометрии
На первой стадии графического конвейера выполняется преобразование координат (применение мировой, видовой и проекционной матриц) вершины, перевод вершины в пространство отсечения, расчет освещения, применение материалов, определение цвета каждой вершины с учетом всех источников света и генерация текстурных координат.
После выполнения этих операций наступает компоновка примитива. В этой части конвейера, вершины группируются в треугольники и подаются в растеризатор.
Растеризатор делит треугольник на фрагменты (пиксели), для которых интерполируются текстурные координаты и цвет. Затем для каждого фрагмента происходит выполнение следующих операций: проверка принадлежности пикселя, наложение текстур (заданные для фрагмента координаты текстуры определяют интерполированный цвет из элементов текстурного изображения -- текселей, значение этого цвета комбинируется с цветом фрагмента), применение эффектов тумана, альфа-тест, тест шаблона (stencil-test), тест глубины, смешивание, дизеринг и логические операции. После обработки всех этих методов полученный фрагмент помещается в буфер кадра, который впоследствии выводиться на экран.
Рисунок 2.2 Обработка фрагментов
В каждую из этих частей графического конвейера можно вставить свой определенный шейдер. Существует два различных шейдера: вершинный шейдер (vertex shader) и пиксельный шейдер (pixel shader).
Вершинный шейдер выполняется для каждой вершины (в данном контексте -- это структура, состоящая из нескольких вершинных атрибутов, одним из которых должна быть позиция вершины), проходящей по графическому конвейеру, и его нужно установить в разделе обработки вершин. В нем можно изменять атрибуты, такие как нормаль, позиция, текстурные координаты, цвет вершины и т.д. Эти данные вершинный шейдер получает из вершинного буфера.
Во время использования вершинного шейдера следующие части графического конвейера не выполняются: трансформация из мирового пространства в пространство отсечения, нормализация, освещение и материалы, генерация текстурных координат. Соответственно и устанавливаемые render states тоже не будут оказывать никакого эффекта на вершинный шейдер.
Пиксельные шейдеры в свою очередь предоставляют широкие возможности по обработке фрагментов. Они позволяют пользователю по шагам управлять процессом наложения текстур, определения глубины и вычисления цвета фрагментов. Что это дает? Во-первых, можно создавать в играх попиксельное освещение. Во-вторых, позволяет создавать красивые эффекты с частицами (например, огонь, дым, капли дождя). И многое другое.
Пиксельные шейдеры выполняются для каждого фрагмента в фазе растеризации треугольников. Фрагмент (или пиксель) -- точка, с оконными координатами, полученная растеризатором после выполнения над ней ряда операций. Проще говоря, результирующая точка в буфере кадра, совокупность этих точек потом формирует изображение. Пиксельные шейдеры оперирует над фрагментами до заключительных стадий, т.е. до тестов глубины, альфы и stencil. Пиксельный шейдер получает интерполированные данные (цвет, текстурные координаты) из вершинного шейдера. [4]
2.4 HLSL
В 2002 году Microsoft выпустила высокоуровневый язык программирования шейдеров High Level Shader Language (HLSL). HLSL - это язык программирования высокого уровня, предназначенный для написания программ (шейдеров) для вершинных и пиксельных процессоров. HLSL является C-подобным языком программирования с многочисленными заимствованиями из C++ и C#. В тоже время в HLSL имеется ряд важных расширений, полезных при программировании графического процессора. Программа, написанная на HLSL, компилируется в один ассемблеро-подобных языков DirectX. Таким образом, процесс компиляции HLSL программы очень напоминает компиляцию C#-программы сначала на промежуточный язык (IL), а затем в машинный для конкретного центрального процессора (рисунок).
Рисунок 2.3 Компиляция HLSL-программы
Самой крупной логической единицей HLSL является эффект (Effect). Каждый эффект хранятся в отдельном текстовом файле с расширением .fx. Эффект состоит из нескольких техник (technique). Техника - это способ визуализации материала. К примеру, эффект визуализации мраморного материала может содержать три техники для различных графических процессоров: технику High для ускорителей класса High End, Medium для ускорителей среднего класса, и Low - максимальная производительность при низком качестве изображения. Каждой технике сопоставлен пиксельный и вершинный шейдер, при этом несколько техник могут использовать общий шейдер.
2.5 Обзор и выбор алгоритмов визуализации
Просчет освещения
Существует несколько алгоритмов расчета освещения.
Распределение по Фонгу
В модели Фонга, интенсивность спекулярного освещения вычисляется с помощью формулы:
Где R является отраженным вектором света от поверхности, а V является вектором вида.
В модели затенения Блинн-Фонг, интенсивность спекулярной составляющей рассчитывается как:
Где N является нормалью сглаженной поверхности и H - вектор, идущий между L , вектором до источника света, и V, вектором вида.
Число n является параметром гладкости поверхности. [3]
Распределение по Гауссу
Немного лучше в плане производительности, модель освещения, использующая распределение по Гауссу. Здесь функция вычисления спекулярного освещения:
где М является константой между 0 и 1, которая является параметром гладкости поверхности. [3]
Распределение по Бекману
Модель освещения по Бекману является физически ориентированной.
В ней формула расчета спекулярной составляющей выглядит так:
где М коэффициент шероховатости. По сравнению с эмпирическими моделями выше, эта функция дает абсолютную величину коэффициента отражения, не вводя произвольные постоянные. [3]
Недостатком является то, что он требует больших вычислении.
Анизотропное распределение Гейдрих-Зейделя
Распределение по Гейдрих-Зейделю - это простое анизотропное распределение, основанное на Фонг модели. Этот алгоритм может быть использован для моделирования поверхностей, которые имеют небольшие параллельные канавки или волокна, например, шлифованный металл и волосы. Интенсивности спекурярной составляющей:
где N - анизотропный показатель, V - вектор вида, L - положение источника света, а T - вектор направления, параллельный канавкам или волокнам в точке на поверхности.[3]
Модель Кука-Торренса
Сперкулярная составляющая в модели Кука-Торренса:
.
Здесь D является компонентом, учитывающим шероховатость поверхности. Для его вычисления используют распределение Бекмана, а F - коэффициент Френеля:
.
Для повышения производительности коэффициент Френеля вычисляется с помощью аппроксимации Шлика. G - геометрическая составляющая, учитывающая самозатенение:
.
Выбранный алгоритм
В проекте использовалась модель освещения Кука-Торренса, так как она показывает самые лучшие визуальные результаты. Эта модель требует много вычислений, но вычислительные способности современных видеокарт уже позволяют выполнять в реалтайме сложные алгоритмы.
Normal Mapping
Нормалмаппинг - это техника симуляции неровностей на плоской поверхности без больших вычислительных затрат и изменения геометрии. Для каждого пикселя поверхности выполняется вычисление освещения, исходя из значений в специальной карте нормалей (normal map). Нормали из этой карты заменяют нормали модели. Карты нормалей обычно являются текстурами с сохраненными в них заранее просчитанными значениями нормалей, представленными в виде компонент цвета RGB (впрочем, есть и специальные форматы для карт нормалей, в том числе со сжатием).
Одно из наиболее интересных применений техники - существенное увеличение детализации низкополигональных моделей при помощи карт нормалей, полученных обработкой такой же модели высокой геометрической сложности.
Карты нормалей предоставляют более эффективный способ для хранения подробных данных о поверхностях, по сравнению с простым использованием большого количества полигонов. Единственное серьезное их ограничение в том, что они не очень хорошо подходят для крупных деталей, ведь нормалмаппинг на самом деле не добавляет полигонов и не изменяет форму объекта, он только создает видимость этого. Это всего лишь симуляция деталей, на основе расчета освещения на пиксельном уровне. На крайних полигонах объекта и больших углах наклона поверхности это очень хорошо заметно. Поэтому наиболее разумный способ применения нормалмаппинга состоит в том, чтобы сделать низкополигональную модель достаточно детализированной для того, чтобы сохранялась основная форма объекта, и использовать карты нормалей для добавления более мелких деталей.
Карты нормалей обычно создаются на основе двух версий модели, низко и высокополигональной. Низкополигональная модель состоит из минимума геометрии, основных форм объекта, а высокополигональная содержит все необходимое для максимальной детализации. Затем, при помощи специальных программ они сравниваются друг с другом, разница рассчитывается и сохраняется.
Карты нормалей изначально были представлены в виде обычных RGB текстур, где компоненты цвета R, G и B (от 0 до 1) интерпретируются как координаты X, Y и Z. Каждый тексель представлен как нормаль точки поверхности. Карты нормалей могут быть двух видов: с координатами в model space (общей системе координат) или tangent space (термин на русском - "касательное пространство", локальная система координат треугольника). В проекте использовался второй вариант. Когда карты нормалей представлены в model space, то они должны иметь три компоненты, так как могут быть представлены все направления, а когда в локальной системе координат tangent space, то можно обойтись двумя компонентами, а третью получить в пиксельном шейдере.
Рисунок 2.4 Пример карты нормалей
Современные приложения реального времени до сих пор сильно проигрывают пререндеренной анимации по качеству изображения, это касается, прежде всего, качества освещения и геометрической сложности сцен. Количество вершин и треугольников, рассчитываемых в реальном времени, ограничено. Поэтому очень важны методы, позволяющие снизить количество геометрии. Нормалмаппинг хоть и имеет несколько недостатков (самый явный - так как модель остается низкополигональной, это легко видно по ее угловатым границам), но итоговое качество рендеринга заметно улучшается, оставляя геометрическую сложность моделей низкой. [4]
Тени
Существует две основные методики отрисовки теней:
· Shadow volume
· Shadow maps
Shadow volumes
Объект, отбрасывающий тень, называется Shadow Caster, объект, на которого отбрасывается тень -- Shadow Receiver.
В идеале вся сцена является и Shadow Caster'ом, и Shadow Receiver'ом, но часто можно указать Shadow Caster'ы и Shadow Receiver'ы более детально, и получить на этом неслабую экономию ресурсов. Например, если у нас есть более-менее плоский ландшафт с объектами на нем, то логично не делать ландшафт Shadow Caster'ом.
Рисунок 2.5 Метод Shadow Volumes
При самозатенении Shadow Caster является еще и Shadow Receiver'ом своей же тени.
Вся идея данного метода заключается в построении такого объекта, что бы все что попадает внутрь него считалось затененным (рисунок). Отсюда и Shadow Volume -- теневой объем.
То есть для каждого объекта в сцене мы строим Shadow Volume -- особый невидимый объект, такой, чтобы все, что попадало в тень от этого объекта, находилось внутри него. Понятно, что этот объем -- это сам Shadow Caster, вытянутый по направлению от источника (рисунок).
Рисунок 2.6 Теневой объем
Shadow maps
Принцип построения теней в методе Shadow maps достаточно прост. Всё, что видно с позиции источника света, то освещено, остальное же находится в тени.
Принцип работы можно разделить на два этапа:
Рендеринг в текстуру глубины сцены с позиции источника света. Рендеринг происходит без использования материалов, чтобы уменьшить затраты ресурсов. Такую текстуру называют shadow map.
Рендеринг сцены с тенями, с использованием данных, полученных на первом этапе. [5]
Рисунок 2.7 Метод Shadow Maps
Выбранный алгоритм
В проекте использовался метод Shadow maps. Преимуществами этого алгоритма над Shadow volumes являются:
· независимость от сложности геометрии;
· слабые требования к качеству геометрии;
· качественная реализация сглаженных теней.
В проекте также использовалось дополнение к алгоритму, с помощью которого тени сглаживались. При втором шаге тени отрисовываются в текстуру отдельно от всей геометрии, затем тени размываются с помощью blur фильтра и накладываются при построцессинге. Помимо визуального преимущества это также разгружает пиксельный шейдер при отрисовке материалов.
Эффект Bloom
Bloom - это один из кинематографических эффектов постобработки, при помощи которого наиболее яркие участки изображения делаются еще более яркими. Это эффект очень яркого света, проявляющийся в виде свечения вокруг ярких поверхностей, после применения bloom фильтра такие поверхности не просто получают дополнительную яркость, свет от них (ореол) частично воздействует и на более темные области, соседствующие с яркими поверхностями в кадре.
В 3D графике Bloom фильтр делается при помощи дополнительной постобработки - смешивания смазанного фильтром blur кадра (всего кадра или отдельных ярких его областей, фильтр обычно применяется несколько раз) и исходного кадра.
· Алгоритм bloom фильтра, применяемый в проекте:
· сцена рендерится в текстуру;
· в текстуре отсекаются пиксели, в которых все три составляющие цвета RGB меньше определенного значения;
· полученная текстура размывается два раза с помощью blur фильтра;
· результат смешивается с исходным изображением сцены, и выводится на экран.
Рисунок 2.8 Пример постэффекта Bloom
Эффект Lens Flare
Имитация засвета кадра при попадании солнечных лучей в камеру. Один из самых впечатляющих эффектов. Сложность реализации состоит в том, чтобы засвет появлялся, только если солнце находится в поле зрения. Для реализации используется интерфейс запросов на перекрытие IDirect3DQuery9 с типом D3DQUERYTYPE_OCCLUSION.
Алгоритм выполнения:
· Заранее подготовленная текстура блика с засветами накладывается на биллборд большого размера.
· Координаты биллборда устанавливаются на векторе, идущем от камеры до позиции солнца. Расстояние до камеры всегда постоянное.
· На месте солнца устанавливаем простой примитив в виде куба маленького размера.
· Сначала необходимо отрисовать всю геометрию уровня вместе с кубом. Это нужно что бы получиться данные через интерфейс запросов на перекрытие.
· Получаем данные о количестве пикселей отрисованного куба.
· Если число пикселей больше 0 тогда отрисовываем биллборд. [2]
Рисунок 2.9
3. Программная реализация
3.1 Игровой процесс
У каждого игрока есть персональный диск, являющийся оружием. Игрок может совершать направленный бросок диска, пытаясь попасть им в оппонента. Каждое удачное попадание игрока отнимает некое количество очков жизни у противника. Побеждает игрок, отнявший все очки жизни у оппонента. При промахе диск, отбиваясь рикошетом о стены, через некоторое время возвращается к хозяину.
На уровне время от времени появляются «усилители». Усилители - это объекты, улучшающие временно или навсегда параметры игрока или его диска. Усилители могут увеличивать здоровье, скорость перемещения игрока, силу атаки диска и т.д. Что бы усилитель подействовал, игроку сначала необходимо его подобрать.
3.2 Организация приложения
В основе приложения лежит бесконечная петля, выполняющая определенный алгоритм.
Управление алгоритмами было построено на основе шаблона проектирования «стратегии», который позволяет менять процесс выполнения программы в зависимости от ситуации.
Существует основной статический класс игровой петли GameLoop. При запуске приложения он производит инициализацию DirectX, чтение файла настроек и прочие подготовки к работе. Класс содержит указатель на объекты класса IGameStrategy и на каждой итерации запускает метод update() этих объектов. Наследники IGameStrategy и являются алгоритмами определяющие поведение программы в данный момент времени.
Риунок 3.1 Класс GameLoop
Всего в программе три основных алгоритма:
MenuStrategy
LevelLoaderStrategy
GamePlayStrategy
Рисунок 3.2 Класс IGameStrategy
3.3 MenuStrategy
Объект класса MenuStrategy содержит в себе массив объектов различных наследников класса CMenu и текущий алгоритм обработки выбранного объекта.
Рисунок 3.3 Организация меню
MenuStrategy также содержит в себе объект класса MenuBGround, который отвечает за отрисовку фона.
Каждый наследник класса CMenu представляет собой страницу меню, либо инициатор какого-либо действия, и содержит в себе графические данные о странице, ссылки для перехода на другие меню, а также методы поведения в зависимости от алгоритма обработки. Страница содержит трехмерную сцену, объектами которой являются пункты меню.
Рисунок 3.4 Класс CMenu
Алгоритмы обработки текущего меню - это наследники виртуального класса IMenuShowStrategy. Всего их 4 вида:
· ShowPage - задает поведение меню в процессе ожидания и взаимодействия с игроком, контролирует анимацию выбора пунктов меню;
· Appearing - контролирует анимацию появления текущей страницы меню;
· ItemSelecting - контролирует анимацию исчезновения текущей вкладки меню, после выбора какого-либо пункта меню;
· GoToLinkMenu - контролирует переход из одной вкладки меню в другую.
Рисунок 3.5 Класс IMenuShowStrategy
CMenuBGround содержит обработчик параметров фона, анимирующий фон в зависимости от текущего алгоритма обработки меню. Их также 4 вида:
· StartAnimation - анимация фона во время появления вкладки меню;
· NormalState - анимация фона во время бездействия пользователя;
· WideLineAnimation - анимация фона во время переключения фокуса с одного пункта меню на другой;
· DissapLineAnimation - анимация фона во время исчезновения вкладки меню.
Рисунок 3.6 Класс СMenuBGAnimation
Фон представляет собой анимированную процедурную текстуру, отрисовкой которой занимается соответствующий пиксельный шейдер.
Каждый пункт меню визуализируется шейдером, имитируещим стекляную поверхность.
Рисунок 3.7 Визуализированное меню
3.4 LevelLoaderStrategy
Файл уровня
После выбора уровня во вкладке класса SelectLevel объект класса MenuStrategy уничтожается. На его место создается объект LevelLoaderStrategy с параметрами, полученными из SelectLevel.
Происходит настройка соединения с удаленным игроком с помощью статического класса Network, а затем начинается загрузка уровня.
Рисунок 3.8 Организация загрузчика
Загрузчик читает из выбранного файла уровня данные о нужных моделях, материалах и т.д. и производит загрузку их в глобальный объект класса CLevel.
За одну итерацию происходит чтение одной строки из файла уровня и обновление фона загрузчика. Отрисовка фона аналогична таковой в меню.
Рисунок 3.9 Класс CLevel
В файле уровня содержатся:
· начальные позиции игроков;
· адреса файлов и типов материалов;
· адреса моделей файлов и параметры их расположения в пространстве;
· адрес на файл параметров небесного куба (скай бокса);
· параметры основного источника света (солнца);
· параметры границ уровня;
· параметры эмиттеров для систем частиц.
Загрузка материалов
Файлы материалов содержат:
· ссылки на текстуру, карту нормалей, карту вершин;
· ссылку на файл шейдера;
· параметры, свойственные этому материалу.
Типизация материалов необходима для определения параметров передаваемых в шейдер в процессе рендеринга. Всего реализовано три типа материалов:
· простые;
· глянцевые;
· глянцевые с отражением.
Рисунок 3.10 Классы материалов
Простые материалы обычно используются для отображениясветящихся объектов, для них не просчитываются затененность и блики.
Рисунок 3.11 - Пример простого материала (светящиеся линии)
Глянцевые материалы используются для отображения большинства объектов, степень глянцевости передается параметром в файле.
Глянцевые материалы с отражениями добавляют к предыдущему типу возможность имитации зеркальных поверхностей. В качестве отражения используется кубическая текстура.
Рисунок 3.12 - Пример глянцевого материала с отражениями (пол с отражением неба)
Все материалы загружаются в контейнер материалов.
Контейнер материалов - объект статического класса MaterialContainer, предназначен для избегания повторной загрузки текстур и шейдеров в память. При создании нового объекта загрузчиком уровня происходит сверка материалов этого объекта с уже загруженными материалами, находящимися в контейнере. Если аналогичный материал найден, то указатель на него добавляется в массив материалов объекта.
Загрузка моделей
В файле уровня содержатся позиция, углы поворота, параметры масштабирования и ссылка на файл модели объекта.
Алгоритм загрузки модели прописан в классе BaseObject.
В процессе загрузки происходит оптимизация модели, и расчет Tangent Space, необходимого для реализации алгоритма освещения.
Загрузка скайбокса
Скайбокс предназначен для имитации неба.
В файле скайбокса содержатся ссылка на кубическую текстуру неба, ссылка на файл шейдера, угол поворота неба, и скорость вращения. Вращение скайбокса добавляет динамизма в сцену.
Загрузка основного источника света
При загрузке солнца происходит чтение цветовых данных в формате RGB освещения, определяющие общую цветовую гамму уровня. Также в параметрах содержится текстура солнца, которая накладывается на билборд, параметры расположения билборда в пространстве и ссылка на файл шейдера.
Границы уровня
Перемещение игрока ограничено в пределах прямоугольного параллелепипеда, задающегося двумя точками. Параметры границ хранятся в статическом классе CollisionDetect.
Завершение
После завершения чтения файлов происходит загрузка и настройка объектов, характерных для всех уровней.
К этим объектам относятся модели игроков, оружия и усилителей.
Рисунок 3.13 Наследники BaseObject
3.5 GamePlayStrategy
Когда уровень загружен, объект LevelLoaderStrategy уничтожается и на его месте создается объект GamePlayStrategy.
У каждого объекта в сцене есть метод update(), выполняющий обновление его параметров. Изменение параметров объекта может зависеть от его поведения или от правил взаимодействия этого объекта с другими.
В процессе выполнения алгоритма GamePlayStrategy, происходит вызов метода update списка всех объектов уровня.
Также происходит обновление сетевого взаимодействия, в процессе которого синхронизируются параметры игроков и уровня у клиента и сервера.
После изменения всех параметров происходит визуализация (рендеринг) сцены.
Рисунок 3.14 Организация GamePlayStrategy
3.6 Визуализация
Визуализацию сцены выполняет статический объект класса Renderer. Он содержит в себе список указателей на объекты для отрисовки. Объекту Renderer необходим свой список отличный от списка в CLevel, чтобы рисовать только те объекты, которые в этом нуждаются. Например, нет необходимости для игрока отрисовывать его же модель.
Рисунок 3.15 Класс Renderer
Визуализация происходит в несколько этапов:
1. Подготовка рендеринга в текстуру. Это необходимо для совершения дальнейшего постпроцессинга.
2. Обновление матриц вида и проекции, используя параметры текущей камеры. Во время выполнения GamePlayStrategy выбранной камерой является камера основного игрока.
3. Создание карты глубины и карты теней, необходимых для эффекта ShadowMap. В процессе их создания происходит рендеринг в два прохода в текстуры и без материалов. На первом проходе сцена визуализируется из камеры, находящейся на прямой, соединяющей позицию игрока и позицию солнца. Позиция этой камеры изменяется в зависимости от расстояния от солнца до игрока. На втором проходе происходит рендеринг из камеры игрока. Рендеринг использует текстуру глубины, полученную на предыдущем проходе. В результате мы получаем карту теней.
4. Отрисовка объектов с использованием карты теней, параметров освещения и материалов.
5. Отрисовка системы частиц.
6. Результатом всех предыдущих действий является текстура. Далее к текстуре применяется эффект постпроцессинга Bloom.
7. Вывод полученного изображения на экран.
Яркий пример полученной в проекте визуализации алгоритма Кука-Торренса, совмещенного с тенями и эффектом Bloom, представлен на рисунке 3.16.
Рисунок 3.16 - Пример освещения с тенями
3.7 Класс игрока
Класс CPlayer является наследником класса CBaseObject, поэтому он имеет свою модель и материалы, и Renderer способен его визуализировать. Класс MainPlayer наследник CPlayer. Отличия заключается в том, что наследником управляет непосредственно пользователь, в то время как CPlayer предназначен для отображения остальных игроков, подсоединенных по сети.
За управление отвечает объект статического класса Input.
Рисунок 3.17 Класс CPlayer
Рисунок 3.18 Наследники IAction
CPlayer содержит объекты класса IAction. С их помощью можно выполнять различные длительные анимированные действия, запускаемые пользователем. Например, если перемещение вперед требует постоянного нажатия на клавишу, то что бы подпрыгнуть, необходимо равнозамедленно переместить игрока вверх, затем вниз. При этом устанавливается запрет на перемещение в стороны и на повторный прыжок.
3.8 Сетевое взаимодействие
Для реализации сетевого взаимодействия использовалась библиотека Path.
Объект статического класса Network обновляется на каждой итерации игрового цикла. В процессе обновления происходит заполнение данными игрового процесса в структуру GameProtocol, и отправка этой структуры удаленному игроку. Приняв ее, игрок синхронизирует ее со своими данными.
Рисунок 3.19 Класс Network
Система частиц
Статический класс CBaseParticleSys - это сущность управляющая системами частиц. Она содержит список из систем частиц и обновляет их на каждой итерации игрового цикла.
Система частиц в свою очередь представлена как список билбордов с общим материалом и общим поведением. В проекте использовалось два типа систем частиц:
Постоянная система возобновляет частицы взамен уничтоженных.
Так же для этого типа предусмотрена возможность испускания частиц с площади поверхности.
Конечная система после испускания заданного количества частиц самоуничтожается.
Рисунок 3.20 Система частиц
Рисунок 3.21 - Пример системы частиц
4. Руководство пользователя
При запуске игры пользователь попадает в экран с логотипом. Нажатием на Enter происходит переход в главное меню.
Для выбора пункта меню используйте стрелки, для выбора пункта клавишу Enter (Рисунок).
Рисунок 4.1 Управление в меню
Управление в игре:
W - перемещение вперед
S - перемещение назад
A - шаг влево
D - шаг вправо
Левая кнопка мыши - бросок диска
У вас определенное количество очков здоровья. Для победы вам необходимо снизить количество очков здоровья противника до 0, при этом сохранив свои. Для нанесения урона вы должны, совершая броски диском, попадать им в противника (Рисунок).
Также на уровне время от времени появляются «усилители», которые могут увеличить на время ваши характеристики.
Всего усилителей 5 видов:
SpeedUp - увеличивает скорость перемещения персонажа;
DiskSpeedUp - увеличивает скорость перемещения диска;
PowerUp - увеличивает силу атаки диска;
HealthUp - повышает здоровье игрока;
ExtraHealthUp - повышает здоровье игрока больше его обычного предела.
Рисунок 4.2 Экран с игровым процессом
Рисунок 4.3 Экран с изображением персонажа противника
5. Безопасность жизнедеятельности
5.1 Характеристика вредных факторов при работе с ПК
- излучения;
- возможность попадания под действие тока;
- астенопия;
- психофизиологическая напряженность труда.
Работающий компьютер генерирует следующие виды излучений: рентгеновское, ультрафиолетовое, электромагнитное, инфракрасное, электростатическое.
Доля рентгеновского излучения невелика. Изображение на экране возникает в результате свечения монитора на внутренней поверхности экрана под действием электронного пучка. Сталкиваясь с поверхностью, электроны генерируют тормозное, в том числе рентгеновское, излучения.
Источник ультрафиолетового излучения - плазменный разряд на внутренней поверхности экрана.
Источник инфракрасного излучения - блок питания, а также электронно-лучевая трубка.
Компьютер является источником электромагнитного излучения.
Основную опасность для здоровья пользователя (и в определенной степени для находящихся вблизи от компьютера лиц) представляет электромагнитное излучение в диапазоне 20 Гц - 400 кГц, создаваемое отклоняющей системой кинескопа и видеомонитора. Имеются многочисленные экспериментальные данные, свидетельствующие о влиянии электромагнитных полей на живой организм (на молекулярном и клеточном уровне) - нервную, эндокринную, иммунную и кроветворную системы организма.
Установлено, что самой опасной является низкочастотная составляющая электромагнитного поля (до 100 Гц), способствующая изменению биохимической реакции в крови на клеточном уровне. Это приводит к возникновению у человека симптомов раздражительности, нервного напряжения и стресса, вызывает осложнения в течении беременности и увеличение в несколько раз вероятности выкидышей, способствует нарушению репродуктивной функции и возникновению рака.
Видеомонитор компьютера создает вокруг себя электромагнитное поле как низкой, так и высокой частоты, что способствует появлению электростатического поля и ведет к деионизации воздуха вокруг монитора, а это в свою очередь влияет на развитие клеток тканей организма, увеличивает вероятность возникновения катаракты.
Под действием электромагнитного поля заряженные частицы пыли, присутствующие в воздухе, ускоряются и разлетаются, оседая на предметах вокруг компьютера, попадая на лицо, руки оператора. Это вызывает ощущение «стягивания» кожи, а у чувствительных людей - аллергию, конъюнктивиты, блефариты (воспалительные заболевания слизистых оболочек глаз, век).
Подобные документы
Разработка пользовательского интерфейса. Характеристика процесса покадрового рендеринга графики. Ознакомление с архитектурой программного приложения. Анализ системы визуализации – сложной, продуманной структуры для предоставления информации пользователю.
дипломная работа [7,8 M], добавлен 10.07.2017Особенности разработки и реализации модулей двухмерной и трехмерной визуализации. Основные задачи трехмерного модуля управления. Анализ функций модуля управления ParamColorDrawer. Характерные особенности схемы функционирования программного средства.
реферат [2,2 M], добавлен 07.03.2012Подбор игрового движка и описание его основных характеристик. Разработка структуры, алгоритма и интерфейса программы. Проектирование иерархии классов. Выделение типового приема визуализации. Тестирование правильности работы программного обеспечения.
курсовая работа [3,1 M], добавлен 19.01.2017Понятие и основные свойства точки, определение ее места в пространстве. Алгоритм построения сечения пространственных тел. Способы визуализации трехмерного пространства. Создание компьютерного приложения для проектирования в трехмерном пространстве.
курсовая работа [636,0 K], добавлен 04.02.2010Рассмотрение проблемы создания трехмерного динамического изображения вращения пирамиды. Особенности построения в среде Microsoft Visual Studio пользовательского интерфейса, позволяющего изменять параметры визуализации и взаимодействовать с программой.
курсовая работа [221,7 K], добавлен 06.02.2013Анализ существующих программ трехмерного моделирования. Сравнение программ для создания трехмерной графики. Технологии трехмерного моделирования в Cinema 4D. Проект создания текстовой анимации на основе инструментов "Organicball", "Formula" и "Cloud".
дипломная работа [2,4 M], добавлен 14.11.2017Исследование классификации компьютерных игр, двигателей прогресса индустрии для персональных компьютеров. Характеристика общей структуры, протокола и текста программы, сценария и процесса игры. Изучение алгоритмизации и программирования на языке Паскаль.
реферат [2,1 M], добавлен 16.09.2011Значение вербальных и знаковых информационных моделей для исследования объектов, процессов, явлений. Роль метода формализации в процессе создания компьютерной модели. Использование программы AutoCAD для трехмерного моделирования и визуализации объекта.
курсовая работа [866,5 K], добавлен 08.01.2015Обзор средств создания обучающих программ и формирование требований к электронному учебнику. Исследование этапов разработки интерактивного обучающего ресурса. Выбор инструментов реализации. Создание интерфейсной части приложения, проектирование тестов.
дипломная работа [3,2 M], добавлен 20.05.2013Рассмотрение системы трехмерного твердотельного моделирования. Анализ средств программирования, информационное обеспечение и описание объектной модели Компас-3d. Описание алгоритма программы в среде Borland Delphi 7 и составление инструкции пользователя.
дипломная работа [1,7 M], добавлен 03.07.2012