![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
Tanyaata |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 28.2.2009 Репутация: нет Всего: нет |
Конечно, не все равно как. мне нужна теория, по которой написан алгоритм, в каких-то книгах. Просто у Никулина все написано по шагам. а у остальных слова, но более понятным языком))))
|
|||
|
||||
Tanyaata |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 28.2.2009 Репутация: нет Всего: нет |
по Роджерсу конечно все намного понятнее, может реализовать алгоритм из него(Алгоритм Робертса и алгоритм Z- буфера). Хотя Ваша первая программа тоже тени правильно рисует, может описать алгоритм Z-буфера и алгоритм Робертса. и сравнить Ваш первый алгоритм с Z-буфером(получим модификацию этого алгоритма).И, кстати, алгоритм Z-буфера определяет только невидимые грани, а потом нужно еще и их проекцию строить. А если время останется и Никулина можно доделать. Хотя может это уже и перебор будет...Я конечно дико извиняюсь, что не сказала, что мне не принципиально Никулин, просто я вам его книгу предложила и книгу Роджерса.
Добавлено через 3 минуты Давайте определимся за выходные, что проще сделать.Какой алгоритм легче написать. просто в вашей программе я так понимаю, объект задается треугольниками, а не точками вершин и ребрами Добавлено через 4 минуты и 55 секунд да и в книге роджерса, есть раздел, который называется Тени |
|||
|
||||
Tanyaata |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 28.2.2009 Репутация: нет Всего: нет |
Ну что проще сделать?
Добавлено через 9 минут и 10 секунд почитала, на все ответила)))) |
|||
|
||||
Dimonka2 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 19.3.2009 Репутация: нет Всего: нет |
На чём только не пишут. 3D Max, Maya и C4D явно на C++ написаны. А Блендер уж тем более на нём.
Это обратная трассировка лучей, а можно делать прямую трассировку: Для каждого экранного пикселя определять какие полигоны на нём расположены и для тех полигонов в точке пересечения рассчитывать их освещённость. Причём если у тебя нет антиалейзинга (а у тебя его нет), то тебе достаточно сделать буфер полигонов для простоты (в каждой точке экрана записывать номер полигона). Но всё равно это не наш метод. ![]() |
||||
|
|||||
Hooch |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.3.2006 Где: г. Омск Репутация: нет Всего: нет |
Что-то я не могу разобраться самостоятельно -- может быть, вы поможете?
Работаю с GLScene. Есть произвольный объект -- GLFreeForm, есть точка -- источник света. Есть плоскость -- совпадает с плоскостью XZ (т.е. ее позиция по Y равна нулю и нормаль смотрит вверх). Объект всегда находится полностью над плоскостью. Необходимо просчитать и нарисовать тень. В идеале, конечно -- мягкую. Но пусть для начала будет четкая. Я решил для тени взять GLPolygon из того соображения, что на него можно натянуть какую-нибудь текстуру с полупрозрачностью и таким образом организовать мягкость тени. Я перебираю все вершины GLFreeForm, вычисляю проекцию каждой вершины на плоскость (исходя из положения источника света), добавляю получившееся значение в полигон -- и такая фигня, знаете, получается ![]() Буду очень благодарен, если вы подскажете мне хотя бы чуть-чуть. Может быть, есть другой вариант решения задачи, помимо использования полигона для тени. Тоже буду рад, если подскажете. Но изначальная задача такова, что тень должна рисоваться и при отсутствии аппаратного ускорения на машине (т.е. всякие шейдерные тени отпадают). |
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: 2 Всего: 4 |
я не видел программы, но зебра может получаться из-за включенного z-буфера. если это так, то надо выключить его, нарисовать плоскость, нарисовать тень, включить z-буфер
--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |