forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Тени (http://forum.boolean.name/showthread.php?t=7845)

Yalenz 16.02.2009 13:21

Тени
 
Вот, народ, я думаю над тем как тени можно сделать(уже месяца 4, этак:4to: ). У меня есть несколько идей, но чтобы проверять каждую надо много времени, а его у меня много не бывает:) Сейчас я попобую рассказать об одной из них, просьба сказать можно так или нет, просто меня бесит, когда я думаю не в том направление, впустую:-) :wallbash:

ЗЫ Просьба не давать исходники, т.к. пока хочу сам попробывать;)

Ну так вот:
1) Есть объект(пусть сфера) и источник света.
2) Надо поставить камеру на источник света, повернуть на объект.
3) Приблизить или отодвинуть, если надо(проверка: типа сравнить размер объекта и расстояние до света), таким боком, чтобы объект не выходил за приделы видимости, но и не был маленьким.Типа того(1-объект, 0-пустота):

00000000
01111110
01111110
01111110
00000000

4) Пикаем в каждый пиксель или в каждый 10ый(взависимости от нужного качества), записываем в память(в массив) ноликами и единицами, для сферы графически это будет выглядеть где -то так:


0000000000
0000110000
0001111000
0011111100
0111111110
0111111110
0011111100
0001111000
0000110000
0000000000

5) Рисуем текстуру по этому массиву, кладем ее на плоский меш 5*5, меш поворачиваем от света к объекту вот так(1-объект, 2-меш, 3-свет):

2 11111
2 11111 3
2 11111 33
2 11111 3
2 11111


6) Теперь мы "кидаем" меш, т.е. опускаем его на землю с коллизиями, и он ляжет ихмо реалстично, потому что он из 50 треугольников.

Для двигающихсмя вещей нужно делать каждый раз заново, а вот для деревьев, домов, и т.д. можно раз в минуту, если свет движется, но медленно, а если нет - то вообще не надо...


Вроде все... надеюсь, объяснил понятно. Жду коментов;)

paxlich 16.02.2009 14:08

Ответ: Тени
 
ужас то какой!!! а зачем тебе так?.. зачем такие извращения?..

HolyDel 16.02.2009 14:28

Ответ: Тени
 
ну... ээ...
похоже чем то на shadowmap. тока надо будет записывать не 0 и 1, а расстояние от камеры до точки пика. и проводить ту же процедуру и для основного пасса и потом сравнивать значения.
об фпс я вообще молу. хорошо если будет 10 в окне 120 на 80.

ABTOMAT 16.02.2009 16:14

Ответ: Тени
 
То что ты назвал называется рейтрейсингом. Аппаратно сиё дело не ускоряется, а пик в блитзе к тому же очень тормознутый. Так что... Можно попробовать только из академического интереса, практической пользы будет 0.

Yalenz 16.02.2009 16:58

Ответ: Тени
 
Спасибо...

А какие есть еще варианты?

ABTOMAT 16.02.2009 18:50

Ответ: Тени
 
Для Террайноподобных вещей хорошо пойдёт: под объект подсунуть меш, повторяющий изгибы земли, покрасить объект в чёрный, отрендерить камерой, смотрящей на него сверху вниз на белом фоне, полученную текстуру наложить на тот мешь, что под ногами у перса, мешу дать флаг мультипли, а объект перекрасить обратно. Проверял - работает.

Yalenz 16.02.2009 19:44

Ответ: Тени
 
Цитата:

Сообщение от ABTOMAT (Сообщение 98371)
Для Террайноподобных вещей хорошо пойдёт: под объект подсунуть меш, повторяющий изгибы земли, покрасить объект в чёрный, отрендерить камерой, смотрящей на него сверху вниз на белом фоне, полученную текстуру наложить на тот мешь, что под ногами у перса, мешу дать флаг мультипли, а объект перекрасить обратно. Проверял - работает.

А быстро?

tormoz 16.02.2009 21:11

Ответ: Тени
 
http://blitz.pp.ru/forum/showthread....&threadid=4214
http://blitz.pp.ru/forum/showthread....&threadid=3656
http://blitz.pp.ru/forum/showthread....&threadid=3775
http://blitz.pp.ru/forum/showthread....&threadid=4162

Yalenz 17.02.2009 15:54

Ответ: Тени
 

Спасибо, узнал много нового :)

Baisangur 10.03.2009 22:54

Ответ: Тени
 
А ASadow уже не удовлетворяет?


Часовой пояс GMT +4, время: 14:51.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot