![]() |
|
Модераторы: Rickert |
![]()
|
|
| America |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.12.2005 Где: USA Репутация: 1 Всего: 1 |
Обьясните пожалуйста как убраются невидимые линии. У меня есть каркас ( 3д-обект). Нужен сам принцип.
|
|||
|
||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
America, принцип такой: просчитывается проекция точек каждого треугольника на плоскость (экран) и если все 3 вершины не попадают в область экрана или она находятся дальше по оси Z то треугольник игнорируется... так, по крайней мере Zbuffer аботает
ЗЫ: линии редко просчитываются, общепринято треугольниками обходиться Это сообщение отредактировал(а) ZC1989 - 10.12.2006, 15:02 -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| America |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.12.2005 Где: USA Репутация: 1 Всего: 1 |
таак.. Представил себе большой треугольник за ним маленький, оба лицом к нам |
|||
|
||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
America, так всю облость спроецированного большого в Z буффере надо заполнить Z координатой этого треугольника, а потом спроецировав маленький, надо сверить ещё и Z отдаление, если дальше, не рисуем, если больше, рисуем - так дирекстовый работает, поищи подробное описание работы Z буффера, так это хорошо объясняется, и если хошь, я могу статьи которые у меня есть выслать...
-------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| Arks |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 7.5.2006 Где: Барнаул Репутация: нет Всего: нет |
Я не так давно курсовик делал на тему удаления невидимых поверхностей. Там у меня вкратце перечислены разные методы и подробно разобрано использование восьмеричных деревьев. Могу дать глянуть. Не идеал (не доработан кое-где), но основные моменты освещены.
|
|||
|
||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Arks, тебе не кажется что для простого коркаса дерево применять неразумно? если уже сложная сцена с можеством движущихся объектов и ещё кучей ереси, то да, деревья в переди, но каркас рисовать, по-моему, проще с этой проверкой z-отдаления... по треугольникам...
-------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| Arks |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 7.5.2006 Где: Барнаул Репутация: нет Всего: нет |
Да, в принципе я согласен, что деревья лучше подходят для сцен со множеством объектов, и на вхождение в узлы дерева стоит проверять эти объекты, а не отдельные полигоны. Тем не менее это не исключает применения деревьев для статики. Представь себе ограмную статическую сцену с миллионами полигонов. Z-буффер не избавит от необходимости проверять ВСЕ полигоны и CPU просто задохнётся на этом. Тут как раз и пригодятся деревья и прочие хитрые способы отсечения невидимой геометрии не по одному, а сразу группами.
Кстати, я как раз и делал по полигонам - не хватало мне в курсовике ещё кучу объектов грузить и мучиться с ними И ещё, вот что у меня про z-buffer в чистом виде написано: Z-буфер. Одним из самых простых алгоритмов удаления невидимых граней является метод z-буфера (буфера глубины). Его суть: 1) Создаем массив (буфер), размером в экран (например, 800х600) 2) Заполняем этот буфер максимально возможным большим числом, например 0x7FFFFFFF. 3) Далее рисуем сцену: рисуем полигоны по порядку, для каждой отрисовываемой точки сцены считаем z-координату, если она меньше, чем в буфере, то рисуем эту точку и заносим в буфер значение этой z-координаты. Метод z-буфера работает исключительно в пространстве картинной плоскости и не требует никакой предварительной обработки данных. Порядок, в котором грани выводятся на экран, не играет никакой роли. К недостаткам метода можно отнести большой расход памяти и избыточность вычислений: осуществляется вывод всех граней вне зависимости от того, видны они или нет. Средние временные затраты этого метода: O(n), где n – общее количество граней. Однако современные видеокарты имеют аппаратную реализацию z-буфера и обеспечивают очень высокую скорость рендеринга. |
|||
|
||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Arks, ващет это написано везде где маломайски рассказывается про з-буффер, но только с одним не согласен, когда через Z отрисовываются объекты с текстурами... там нужны хотябы намёки на дерево или что-нибудь в этом роде, но щас мы не об этом... в теме лежит вопрос как линии отрисовать, те что видны...
ответы получились такие: 1 - использовать z-буффер дирекста или написать подобное... 2 - испльзовать деревья зависит всё от цели, кубик отрисовать или монстра с под-объектами и анимацией -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
| Arks |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 7.5.2006 Где: Барнаул Репутация: нет Всего: нет |
Ну дык мы как-то скатились на буффер, а ведь для линий свои методы есть.
Тут напр. есть про алгоритм Робертсона: http://algolist.manual.ru/graphics/delinvis.php |
|||
|
||||
| ZC1989 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Arks, согласен, можно и это...
-------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
![]()
|
| Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |