2. Обзор методов решения задач
Задача состоит в возможности работать с 3D-моделями на 3D-сцене. Для этого в Microsoft Vusial C# приходится добавлять специальные библиотеки, платформы специально разработанные для этих действий, чтобы упростить работу в самой среде. Самые распространенные в данные момент это три платформы OpenGL, XNA Game Studio и WPF(Windows Presentation Foundation) . OpenGL (Open Graphics Library -- открытая графическая библиотека, графическое API) -- спецификация, определяющая независимый от языка прораммирования платформонезависимый программный интерфейс для написания приложений, использующих двухмерную и трёхмерную компьютерную графику. На базовом уровне, OpenGL -- это просто спецификация, то есть документ, описывающий набор функций и их точное поведение. Производители оборудования на основе этой спецификации создают реализации -- библиотеки функций, соответствующих набору функций спецификации. Реализация использует возможности оборудования там, где это возможно. Если аппаратура не позволяет реализовать какую-либо возможность, она должна быть эмулирована программно. Производители должны пройти специфические тесты (conformance tests -- тесты на соответствие) прежде чем реализация будет классифицирована как OpenGL реализация. Таким образом, разработчикам программного обеспечения достаточно научиться использовать функции, описанные в спецификации, оставив эффективную реализацию последних разработчикам аппаратного обеспечения. Windows Presentation Foundation (WPF) -- система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), использующая язык XAML. Microsoft XNA (англ. XNAs Not Acronymed) -- набор инструментов с управляемой средой времени выполнения (.NET), созданный Microsoft, облегчающий разработку и управление компьютерными играми. XNA стремится освободить разработку игр от написания «повторяющегося шаблонного кода» и объединить различные аспекты разработки игр в одной системе. Набор инструментов XNA был анонсирован 24 марта 2004 на Game Developers Conference в Сан-Хосе, Калифорния. Первый Community Technology Preview XNA Build был выпущен 14 марта 2006.
Первая платформа наиболее древняя из трех представленных и больше разрабатывалась под С++. Сравнивая две оставшиеся платформы я пришел к выводу, что XNA Studio более удобен в по ряду причин. В плане возможностей работы с 3D-моделями, легкости нахождения информации.
3. Разработка общей архитектуры системы
Логически архитектуру данной системы можно представить в виде:
Рис.1. Логически простроенная архитектура системы
Как видно все можно разделить на три логических блока. В первом производится прием данных от пользователя. После следует вычисления относительно вводимых данных. И последний блок это построение сцены относительно вычислений. Для данного проекта все три блока зациклены, чтобы иметь возможность в любой момент времени реагировать на данные которые мы вводим.
Если раскрывать все блоки, то мы получим архитектуру нашего проекта (Табл. 1).
Таблица 1. Архитектура проекта
Инициализация |
На этапе инициализации проекта проводится инициализация графической и звуковых подсистем, системы ввода данных. |
|
Загрузка ресурсов |
Здесь загружаются ресурсы, такие, как текстуры и трехмерные модели, звуки, шрифты. |
|
Начало цикла |
Основные действия, которые выполняются при работе программы, организованы в виде цикла. Фактически, цикл - это обязательный элемент любой программы с 3д-моделями. |
|
Считывание данных пользовательского ввода |
Пользователь управляет программой с помощью различных устройств ввода данных. В нашем случае это - клавиатура и мышь. Здесь так же может обрабатываться информация, поступающая от других устройств ввода. Например - от джойстика. |
|
Вычисления |
Вычисления включают в себя все вычисления, которые необходимы для организации процесса. В частности, здесь обсчитываются позиции объектов, проводятся вычисления, вычисления, связанные с проверкой столкновений объектов и так далее. Если речь идет об оптимизации быстродействия программы, то такая оптимизация обычно касается именно вычислений, так как на них тратится большая часть времени выполнения цикла. |
|
Проверка критерия прекращения программы |
Цикл продолжается до тех пор, пока программа не будет прекращена. Например, критерием останова может быть истечение времени, выделенного пользователю на выполнение поставленной задачи, какое-то событие, произошедшее в процессе программы, принудительная остановка, если пользователь решил прекратить работать и так далее. |
|
Вывод изображений, проигрывание звуков |
После завершения этапа вычислений в программе имеются данные для визуализации. В частности, имеются данные о новых позициях объектов, о сообщениях, которые нужно вывести на 3д-сцене, о звуках, которые нужно воспроизвести. На данном этапе проводится перемещение объектов по 3д-сцене, вывод сообщений, проигрывание звука. |
|
Конец цикла |
Цикл заканчивается после выполнения условия останова программы. |
|
Освобождение ресурсов |
На последнем этапе работы программы проводится освобождение системных ресурсов, занятых программой и выход из ее. |
В программе раннее описанную архитектуру представляют ряд методов.
Game1() - Общая инициализация. Game1() - это конструктор класса Game1, который выполняется при создании объекта Game в процедуре Main файла Program.cs.
Initialize() - Инициализация. Сюда же добавляют команды для инициализации звуковой подсистемы игры. Надо отметить, что в этом методе инициализируется все, кроме графических ресурсов игры
LoadContent() - Загрузка ресурсов.
Run() - Запуск цикла.
Цикл в стандартном проекте состоит из двух методов.
Update() - Первый из них - это метод Update(), в котором выполняется прием пользовательского ввода, все необходимые вычисления, проверка критериев останова программы.
Draw() - Второй метод цикла - это метод Draw(), который содержит код для визуализации графики.
UnloadContent() - По окончании цикла этот метод освобождает системные ресурсы.
С помощью этих стандартных методов работа с моделирование упрощается достаточно существенно. Теперь осталось разработать модели обеспечивающие поставленную задачу.
4. Разработка модели движения 3D объекта
Понятие 3D подразумевает под собой систему координат. И поэтому чтобы разработать модель движения изначально надо разобрать систему координат которая используется в программе. И после разберем метод который отвечает за движения который называется «Преобразование в трехмерном пространстве».
- 3D Studio max 6- discreet: Новая версия 3d Studio max предлагает еще больше усовершенствованных возможностей.
- Задания по программе 3d Studio Max
- Состав комплекса 3d-моделей:
- 15 Советов по работе в 3d Studio Max
- Часть III - Текстуры 3d max.
- Глава I 3d max и его возможности
- 19. Программа 3d Max
- Пакет Autodesk 3ds Max (3d Studio max). Скриптовое программирование