Наложение полигонов

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Наложение полигонов

Сообщение d3drm » 17.01.2005 (Пн) 4:15

Мне нужно на одной высоте прорисовать два полигона, только когда это я делаю получается глюк - полигоны смешиваются и пересекаются. Как мне сделать так, чтобы один из этих полигонов был выше?
ХЎ

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 17.01.2005 (Пн) 10:36

Это баги Z-буфера. Чтобы не изменяя позиции полигона в пр-ве, изменить его позицию в Z-буфере, можно немного изменить ZNear в матрице проекции.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 19.01.2005 (Ср) 1:52

это не подойдет. я хочу нарисовать пятно на карте отдельным полигоном, постоянно менять матрицу проекции - обломно, а если отключить запись в буффер то оно будет прорисовываться за стенками карты...
ХЎ

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 19.01.2005 (Ср) 10:47

Если пятно будет видно только с одной стороны - типа на стене, то можно обмануть и сдвинуть полигон на 0,1 или можно попробовать на 0,01 - оно не видно, но очень эффективно... я так делал... :roll:

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 20.01.2005 (Чт) 11:16

стоит конечно попробовать, но думаю что этот прием не очень хорош. При разных форматах zbuffer'a опятьже может случиться глюк, описанный выше, на довольно большом расстоянии...
ХЎ

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 20.01.2005 (Чт) 15:14

d3drm писал(а):стоит конечно попробовать, но думаю что этот прием не очень хорош. При разных форматах zbuffer'a опятьже может случиться глюк, описанный выше, на довольно большом расстоянии...
при любых форматах - этого не будет... елси при (80-это формат) - нет, то и при остальных тоже не будет.... попробуй... :roll: Это происходит только тогда, когда координаты полигонов полностью одинаковы. Смещением, ты это исправляешь... :roll:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 20.01.2005 (Чт) 17:50

Не совсем так. В z-буфере хранится single величина. Попробуй вычислить:
?10000! + 0.001!
Получишь 10000, а не 10000.001, и это 32 bit single, а в z-буфере по умолчанию 16 bit. 32 bit не всегда доступно, сильнее тормозит и жрет память.
То есть с одной стороны нужно сдвигать на достаточно большую величину, чтобы z-буфер не глючил даже при удалении, с другой как можно меньше, иначе вблизи это будет заметно.
Повторюсь, изменение z-near будет аналогично не сложению (+0.001!), а умножению, при этом вблизи сдвиг сам собой буде уменьшаться, кроме того сдвигается ТОЛЬКО z, а полигон остается на месте. Чтобы не менять матрицу один раз, можно в первый проход рендерить всю сцену, а во второй пятна.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 20.01.2005 (Чт) 18:16

Думаю я нашел выход. я буду прорисовывать пятно с отключенной записью в Zbuffer, но проверять, не пересекает ли это пятно стенки карты. Тогда пятно не будет накладываться на карту. С данным классом bsp что у меня в движке это будет не очень трудный и ресурсоемкий процесс.
ХЎ


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

    TopList