Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Отрисовка 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().

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.