- •1 Постановка задачи и определение требований
- •Выводы по разделу один
- •2 Обзор существующих реализаций и описание основных преимуществ выбранной реализации перед аналогами
- •1.2.1 Обзор существующих реализаций
- •Выводы по разделу два Таким образом, наилучшем выбором платформы для разработки является Flash.
- •3 Выбор инструментальных средств разработки
- •4.1 Исследование технологий 3d-рендеринга на платформе Adobe Flash
- •5 Архитектура программного комплекса
- •5.1 Алгоритмические особенности программного комплекса
- •5.1.1 Анализ поставленной задачи
- •5.2 Алгоритм функционирования программного комплекса
- •5.2.1 Обобщенный алгоритм работы комплекса
- •5.2.2 Загрузка объектов в 3d-среду
- •5.2.3 Отрисовка 3d-мира
- •5.2.4 Обработка команд пользователя
- •5.2.5 Описание технологий. Binary Space Partitioning (bsp) дерево
- •5.2.6 Отсечение (клиппинг)
- •5.3 Варианты дальнейшего развития программного комплекса
- •5.4. Функциональные особенности программного комплекса
- •5.4.1 Концепция функционирования программного комплекса
- •6.2 Требования к содержимому тестов
- •6.3 Пример работы программного комплекса
- •7 ТехнологическАя часть
- •Программный комплекс соответствует технологическим нормам.
- •8 Организационно-экономический раздел
- •8.1 Смета затрат на проведение работ
- •8.2 Командировочные расходы
- •8.3 Заработная плата
- •Продолжение таблицы 8.9
- •8.4 Покупные изделия
- •8.5 Накладные расходы
- •8.6 Смета затрат
- •9 Раздел безопасности жизнедеятельности
- •9.1 Анализ достоинств интерфейса пользователя разработанной программы
- •9.2 Рекомендации по организации рабочего места пользователя
- •9.2.1 Рекомендации по выбору помещения для размещения рабочего места
- •9.2.2 Требования к микроклимату, содержанию аэроионов и вредных химических веществ в воздухе на рабочих местах, оборудованных пэвм
- •9.2.3 Требования к уровням шума и вибрации на рабочих местах, оборудованных пэвм
- •9.2.4 Требования к освещению на рабочих местах, оборудованных пэвм
- •9.2.5 Требования к уровням электромагнитных полей на рабочих местах, оборудованных пэвм
- •9.2.6 Общие требования к организации рабочих мест пользователей пэвм
- •9.2.7 Требования к организации и оборудованию рабочих мест с пэвм для обучающихся в общеобразовательных учреждениях и учреждениях начального и высшего профессионального образования
- •9.3 Электробезопасность
- •9.4 Пожарная безопасность
- •Библиографический список
- •Приложение а
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
- •Продолжение приложение а Продолжение листинга а.1
5.2.3 Отрисовка 3d-мира
Для оптимизации работы комплекса и увеличения FPS используется несколько основополагающих приемов.
В первую очередь просчитывается позиция камеры и производится загрузка объектов, которые могут быть видны наблюдателю, и выгрузка объектов мира, которые пользователь не может увидеть из данной точки наблюдения. Код представлен в листинге 5.19.
Листинг 5.19 – Загрузка видимых объектов и выгрузка невидимых
if(camera.y < -900 && camera.x < 24 && camera.x > -1200){ //Мы в 802 if(!aud802loaded){ //Нужно загрузить окружение for (i = 0. i < aud802.length. ++i) { rootContainer.addChild(aud802[i]). message = aud802[i].name + " Loaded successfull". } infoButton.visible = true. videoButton.visible = true. aud802loaded = !aud802loaded. } } else{ if(aud802loaded){ //Нужно выгрузить окружение for (i = 0. i < aud802.length. ++i) { aud802[i].parent.removeChild(aud802[i]). message = aud802[i].name + " Unloaded successfull". }
Продолжение листинга 5.19 infoButton.visible = false. videoButton.visible = false. aud802loaded = !aud802loaded. } }
При использовании данного приема число полигонов в кадре не превышает 5000, что является приемлемым уровнем. Без этой методики количество полигонов может достигать 30 000 (если смотреть на кафедру от лестницы до 808 аудитории), так как в поле видимости камеры попадают все объекты внутри аудиторий. При такой нагрузке число кадров в секунду редко бывает выше 3-4, что снижает общий комфорт работы. Для наглядности, ниже представлена работа данной методики.
На рисунке 5.6 представлена аудитория без объектов
Рисунок 5.6 – Аудитория без объектов
При нахождении камеры внутри аудитории все объекты динамически подгружаются. Данный метод позволяет значительно экономить вычислительные мощности, увеличивая тем самым быстродействие.
Аудитория с подгруженными объектами представлена на рисунке 5.7.
Рисунок 5.7 – Аудитория с подгруженными объектами
Так же для снижения числа отрисовки полигонов используется технология клиппинга (урезание полигонов за областью видимости камеры).
Существует несколько методик отсечения:
Если объект хотя бы частично попадает во вьюпорт – видны все полигоны видимых граней.
Видны только полигоны, часть которых во вьюпорте.
Полигоны рассекаются областью видимости и отрисовываются только те их части, что полностью видны наблюдателю.
Эти методы иллюстрируются примером который представлен на
рисунке 5.8.
Рисунок 5.8 – Методы отсечения полигонов
Наибольшее положительное влияние оказывает метод отсечения полигонов за областью видимости.
Еще меньшее количество полигонов для отрисовки создает метод рассечения полигонов, но сложность обработки каждого полигона и вычисление его рассечения полностью сводят преимущества на нет.
Так как в разрабатываемом программном комплексе доминируют сложные объекты из множества мелких полигонов, то мы используем метод полного отсечения полигонов. Для отрисовки используется метод представленный в листинге 5.20
Листинг 5.20 – Метод полного отсечения полигонов
camera.render().