Показать сообщение отдельно
Старый 28.09.2012, 12:37   #9
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Ответ: Скрытие объектов за стенами

Сообщение от Кирпи4 Посмотреть сообщение
Надо, надо, конечно надо =)
Я ожидал что будут какие-то вопросы направляющие, а то я вот даже незнаю что подробнее объяснить

Сообщение от Mr_F_ Посмотреть сообщение
рисовать придётся видимо не 1 раз? т.к. даже если с огромным фовом отрендерить кадр в направлении портала, не факт что у нас в нём растеризуются другие порталы, которые очень по бокам.
наверное надо будет 5 раз рендерить, аля полукуб, чтобы со всех сторон потенциально видимые увидеть.
алсо, вместо софтварного растеризатора, эффективнее было бы юзать occlusion queries.
Рисовать 1 раз, ибо рисуем не через фрустум, а просто все что с одной стороны портала ( определяем чо с какой стороны находится относительно плоскости портала, как для BSP разделяющая плоскость короче ).
Насчет окклюжн квери - хороший вариант, но я предпочитаю велосипеды )

Сообщение от Mr_F_ Посмотреть сообщение
хм, я тупо делал фрустум из позиции камеры и точек портала (их было всегда 4)
Если портал виден чуть-чуть, то получишь оверхед, ибо фрустум будет через весь портал, и соответственно будет рисоваться то что не видно из камеры. Для маленьких порталов может и лучше будет, не надо будет тратить время на обрезку, и через такой портальчик видно мало. Но для больших порталов уже сомнительно.

Сообщение от Mr_F_ Посмотреть сообщение
в принципе достаточно получить описывающий прямоугольник портала в экране и поплющить направление/фов фрустума, чтобы через него шёл.
Ну можно и так, если портал не сильно сложный по форме, иначе такое огрубление прямоугольником может не окупится.

ЗЫ
Пока парочку картинок прикреплю для топикстартера, надеюсь они немного прояснят хрень в 5ой мессаге

На первой изображены некоторые варианты кулинга через порталы:
рис. 1 - порталов нет, обычный вариант кулинга через камеру
рис. 2 - один портал, полностью виден из камеры, темно-синим виден новый фрустум построеный через портал
рис. 3 - тот же вариант, только камеру немного повернули, портал теперь виден частично, ярко-красным - портал обрезаный фрустумом камеры
рис. 4 - вариант посложнее, тут уже проглядывается иерархия порталов

на второй схематично построение фрустума через полигон портала
p0 - точка камеры
p1 .. p6 - точки полигона портала
E1 .. E6 - ребра полигона, проходясь по которым строим плоскости фрустума
V1 .. V6 - вектора, построенные через точки портала от точки камеры
для каждой плоскости фрустума надо найти нормаль ( направление плоскости ) и смещение относительно центра координат.
внизу справа изображено что из себя представляет нормаль и смещение на примере треугольника ( которые и получаются по ходу расчета фрустума )
внизу слева - как считается

Ну а вообще всю эту тему можно долго мусолить, поэтому желательно чтобы были какие-то вопросы конкретные
Миниатюры
Нажмите на изображение для увеличения
Название: PortalCases.PNG
Просмотров: 3307
Размер:	27.6 Кб
ID:	17690  Нажмите на изображение для увеличения
Название: PolygonFrustum.PNG
Просмотров: 3390
Размер:	35.0 Кб
ID:	17691  
(Offline)
 
Ответить с цитированием