Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закраска и буфер глубины. 
:(
    Опции темы
Elfet
Дата 3.7.2007, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: 1
Всего: 16



Не могу понят причём при закраске буфер глубины? Я просто рисую один полигон повер другого в порядке увеличения псевдоглубины. А зачем тогда буфер глубины? Я так понял это используется тогда когда рисуется картинка по пиксельно?


--------------------
PM MAIL WWW Skype   Вверх
Rickert
Дата 4.7.2007, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Вот смотри: у тебя два кубика - один большой, другой маленький, они стоят соответственно второй позади первого.
Откллючаем буффер глубины и рисуем сначала первый, а потом второй, т.е. сначла большой, а потом маленький, который стоит позади большого и его не должно быть видно. В результате ты увидишь, что маленький "стоит" перед большим. Т.е. нет проверки глубины объектов относительно камеры. А если ты включишь тест глубины, то этот "косяк" пройдёт. Хотя, на самом деле, иногда это очень полезно бывает.

Это сообщение отредактировал(а) Rickert - 4.7.2007, 07:15


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Mazzi
Дата 4.7.2007, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 4
Всего: 21



Если рисовать плоские предметы расположенные перепендикулярно относительно направления камеры, то можно обойтись без буфера глубины. А для объёмных предметов ну никак, особенно если они пересекаются. Представь себе два шара которые частично пересекаются, как по вашему отрисовать без буфера глубины?


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
Rickert
Дата 4.7.2007, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Mazzi, сначала первый, а потом второй поврх первого smile


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Elfet
Дата 4.7.2007, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: 1
Всего: 16



Rickert, нет, это  ты сейчас про поверку псевдоглубины говоришь, если я правильно понял? smile
Mazzi, расскажи чуть поподробнее?


--------------------
PM MAIL WWW Skype   Вверх
WERITAS
Дата 4.7.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: 2
Всего: 5



Цитата
Я просто рисую один полигон повер другого в порядке увеличения псевдоглубины. А зачем тогда буфер глубины?


А ты представь, что полигоны, которые ты рисуешь, перекрываются! Что ты увидишь? 
ИМХО тебе нужно поподробнее разобраться с z-буфером

P.S.
Цитата
Я так понял это используется тогда когда рисуется картинка по пиксельно? 

Видеокарта потом все равно все рисует попиксельно. Этот процесс называется "растеризация". 


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
Elfet
Дата 4.7.2007, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: 1
Всего: 16



Цитата(WERITAS @  4.7.2007,  17:48 Найти цитируемый пост)
А ты представь, что полигоны, которые ты рисуешь, перекрываются! Что ты увидишь? 

Я сортирую в зависимости от псевдоглубины. Не всегда срабатывает правда, но у меня и пересечений то нету. smile


--------------------
PM MAIL WWW Skype   Вверх
Rickert
Дата 5.7.2007, 05:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Elfet, нету никакой всевдо глубины. Есть просто глубина. Откуда ты взял какую-то псевдо? Где прочитал?

Цитата(WERITAS @  4.7.2007,  16:48 Найти цитируемый пост)
ИМХО тебе нужно поподробнее разобраться с z-буфером

Наверное и тебе тоже smile
z-buffer - это алгоритм отсечения предметов, которые загораживаются другими и никакого отношения к нашей проблеме он не имеет.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Elfet
Дата 5.7.2007, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: 1
Всего: 16



Цитата(Rickert @  5.7.2007,  06:06 Найти цитируемый пост)
Elfet, нету никакой всевдо глубины. Есть просто глубина. Откуда ты взял какую-то псевдо? Где прочитал?

Ф.Хилл 'OpenGL. Программирование компьютерной графики' smile


--------------------
PM MAIL WWW Skype   Вверх
Rickert
Дата 5.7.2007, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Elfet, У меня его нет. Процетируй сюда пожалуйста определение псевдоглубины и глубины.
Как описывается разница между ними в этой книге?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Elfet
Дата 5.7.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: 1
Всего: 16



Цитата

Добавление псевдоглубины
При проецировании отбрасывается информация о глубине; это означает, что мы теряем информацию о том, насколько далеко от глаза находится данная точка. Однако не следует отбрасывать эту информацию навсегда, иначе впоследствии нам не удастся удалить невидимые поверхности.
Действительное расстояние точки Р от глаза в системе координат камеры равно ( Рx^2 + Рy^2  + Рz^2 )^1/2   . Эта формула слишком громоздка и медленна, чтобы применять ее для каждой интересующей нас точки. Все, что нам в действительности нужно, — это некоторая оценка расстояния, которая при проецировании двух точек в одну и ту же точку ближней плоскости сообщала бы нам, какая из этих двух точек ближе. На рис. 7.23 показаны точки Р, и Р2, обе располагающиеся на прямой, исходящей от глаза, и поэтому проецирующиеся в одну и ту же точку. Мы должны иметь возможность проверить, то ли точка Р, заслоняет собой Р2, то ли наоборот. Поэтому для каждой точки Р, которую мы проецируем, мы будем вычислять величину, называемую псевдоглубиной, которая является оценкой глубины для точки Р. Тогда мы можем сказать, что точка Р проецируется в точку (х*, у*, г*), где (х*, у*) — величина, полученная из уравнения (7.4), а г* — псевдоглубина точки Р.
Как лучше выбрать функцию для псевдоглубины? Заметим, что если две точки проецируются в одну и ту же точку, то более дальней из них всегда соответствует большее по модулю отрицательное значение Рг, поэтому мы можем взять в качестве псевдоглубины саму величину Рг.


Это сообщение отредактировал(а) Elfet - 5.7.2007, 09:00


--------------------
PM MAIL WWW Skype   Вверх
Rickert
Дата 5.7.2007, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Этот дядька какими-то корявыми терминами пользуется, если честно smile
Он пытается всё объяснить с точки зрения анал. геом. И называет псевдо глубиной - расстояние от объекта до плоскости камеры с точки зрения анал. геом. Короче, в ogl: глубина и псевдоглубина о котой идёт речь - одно и тоже.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
WERITAS
Дата 5.7.2007, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: 2
Всего: 5



Rickert
Цитата
это алгоритм отсечения предметов


Почитай вот  smile :
Цитата

Метод z-буфера

Это один из простейших алгоритмов удаления невидимых поверхностей. Идея z-буфера является простым обобщением идеи о буфере кадра. Буфер кадра используется для запоминания атрибутов (интенсивности) каждого пиксела в пространстве изображения, z-буфер — это отдельный буфер глубины, используемый для запоминания координаты z или глубины каждого видимого пиксела в пространстве изображения. В процессе работы глубина или значение z каждого нового пиксела, который нужно занести в буфер кадра, сравнивается с глубиной того пиксела, который уже занесен в z-буфер. Если это сравнение показывает, что новый пиксел расположен впереди пиксела, находящегося в буфере кадра, то новый пиксел заносится в этот буфер и, кроме того, производится корректировка z-буфера новым значением z. Если же сравнение дает противоположный результат, то никаких действий не производится. По сути, алгоритм является поиском по х и у наибольшего значения функции z(x, у).

Главное преимущество алгоритма — его простота. Кроме того, этот алгоритм решает задачу об удалении невидимых поверхностей и делает тривиальной визуализацию пересечений сложных поверхностей. Сцены могут быть любой сложности.

Основной недостаток алгоритма — большой объем требуемой памяти.

Дадим словесное описание алгоритма z-буфера.
Заполнить буфер кадра фоном, а z-буфер памяти — числом zmin.
Преобразовать многогранник в растровую форму: 
ax + by + cz + d = 0 — плоскость.
(x1, y1, z1)
(x2, y2, z2)
...
(xn, yn, zn)
a = S(yi - yi+1) * (zi + zi+1)
b = S(zi - zi+1) * (xi + xi+1)
c = S(xi - xi+1) * (yi + yi+1)
z = -(ax + by + d)/c. Выражаем изменение плоскости вдоль одной из осей. 

z - z' = -(ax1 + d)/c + (ax + d)/c = a(x - x1)/c
z1 = z - (a/c)Dx, но Dx = 1, поэтому
z1 = z - (a/c), где z1 — новая координата, а z — старая координата.
Вычислить для каждой точки (x, y) многоугольника значение z(x, y) — глубины нахождения в прямоугольнике.
Сравнить полученное z с соответствующим zбуфера, полученным по координатам в буфере.
Если вычисленное z меньше zбуфера, то изображение помещаем в буфер кадра, а zбуфера присваиваем z.
Цитата







--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.