Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите написать алгоритм построения теней, алгоритм на Delphi 
V
    Опции темы
Tanyaata
Дата 9.4.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 28.2.2009

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



Конечно, не все равно как. мне нужна теория, по которой написан алгоритм, в каких-то книгах. Просто у Никулина все написано по шагам. а у остальных слова, но более понятным языком))))
PM MAIL   Вверх
Tanyaata
Дата 10.4.2009, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 28.2.2009

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



по Роджерсу конечно все намного понятнее, может реализовать алгоритм из него(Алгоритм Робертса и алгоритм Z- буфера). Хотя Ваша первая программа тоже тени правильно рисует, может описать алгоритм Z-буфера и алгоритм Робертса. и сравнить Ваш первый алгоритм с Z-буфером(получим модификацию этого алгоритма).И, кстати, алгоритм Z-буфера определяет только невидимые грани, а потом нужно еще и их проекцию строить. А если время останется и Никулина можно доделать. Хотя может это уже и перебор будет...Я конечно дико извиняюсь, что не сказала, что мне не принципиально  Никулин, просто я вам его книгу предложила и книгу Роджерса.

Добавлено через 3 минуты
Давайте определимся за выходные, что проще сделать.Какой алгоритм легче написать. просто в вашей программе я так понимаю, объект задается треугольниками, а не точками вершин и ребрами

Добавлено через 4 минуты и 55 секунд
да и в книге роджерса, есть раздел, который называется Тени
PM MAIL   Вверх
Tanyaata
Дата 12.4.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 28.2.2009

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



Ну что проще сделать?

Добавлено через 9 минут и 10 секунд
почитала, на все ответила))))
PM MAIL   Вверх
Dimonka2
Дата 15.4.2009, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 19.3.2009

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



Цитата(Чупакабро @ 10.4.2009,  08:04)
В жизни вообще тени пишутся не на Delphi и не на С, а на HLSL или чем-нибудь подобном (если я ничего не путаю).

На чём только не пишут. 3D Max, Maya и C4D явно на C++ написаны. А Блендер уж тем более на нём.

Цитата
Dimonka2, а как такой алгогритм:
для каждой точки буфера кадра известны координаты x,y,z
проводим отрезок от точки к источнику света и смотрим его пересечение со всеми треугольниками сцены
если пересечение есть, точка затеняется

такой алгоритм я уже реализовал, просто нужно найти под него теорию от извесных авторов))

Это обратная трассировка лучей, а можно делать прямую трассировку:

Для каждого экранного пикселя определять какие полигоны на нём расположены и для тех полигонов в точке пересечения рассчитывать их освещённость. Причём если у тебя нет антиалейзинга (а у тебя его нет), то тебе достаточно сделать буфер полигонов для простоты (в каждой точке экрана записывать номер полигона).

Но всё равно это не наш метод. smile Надо придумать как это сделать очень быстро и с антиалейзингом.
PM MAIL   Вверх
Hooch
Дата 24.5.2009, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 6.3.2006
Где: г. Омск

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



Что-то я не могу разобраться самостоятельно -- может быть, вы поможете?
Работаю с GLScene. Есть произвольный объект -- GLFreeForm, есть точка -- источник света. Есть плоскость -- совпадает с плоскостью XZ (т.е. ее позиция по Y равна нулю и нормаль смотрит вверх). Объект всегда находится полностью над плоскостью. Необходимо просчитать и нарисовать тень. В идеале, конечно -- мягкую. Но пусть для начала будет четкая.

Я решил для тени взять GLPolygon из того соображения, что на него можно натянуть какую-нибудь текстуру с полупрозрачностью и таким образом организовать мягкость тени.

Я перебираю все вершины GLFreeForm, вычисляю проекцию каждой вершины на плоскость (исходя из положения источника света), добавляю получившееся значение в полигон -- и такая фигня, знаете, получается smile Вместо цельной тени получается этакая полосатая зебра. Вероятно, это зависит от очередности вершин. Так или иначе, этот момент сложноват для моего понимания. Я так понял, что в идеале необходимо добавлять в полигон только те точки, которые образуют контур тени -- но как отобрать только эти точки, да еще потом и соединить их в правильном порядке?

Буду очень благодарен, если вы подскажете мне хотя бы чуть-чуть. Может быть, есть другой вариант решения задачи, помимо использования полигона для тени. Тоже буду рад, если подскажете. Но изначальная задача такова, что тень должна рисоваться и при отсутствии аппаратного ускорения на машине (т.е. всякие шейдерные тени отпадают).
PM MAIL ICQ   Вверх
Чупакабро
Дата 31.5.2009, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


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

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


 




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


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

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