![]() |
|
||||||||||
|
|||||
|
mikleb, кстати, parallax mapping вроде и тени поддерживает, не пробовал делать?
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 111
|
2 neelts
Это смотря какой параллакс, тут совсем простенький - один вызов дисплесментмапфильтра. Я думал как реализовать параллакс с перекрываниями (со слоями), но понял что это не реально т.к. будет порядка 6*(число слоев) вызовов фильтров и наложений еще больше. Еще думал как сделать параллакс с более точной интерполяцией, но тут нужно делить цвет каждого пикселя на число которое соответсвует этому пикселю это тока через блендмод и палитру можно быстро сделать, но будут очень большие погрешности, поэтому решил не писать ![]() Так что более крутой параллакс у меня не получается сделать, а тени и подавно |
|
|||||
|
Все, я разобрался как пользоваться! Классная штука!
|
|
|||||
|
Блин, а я не разобрался - слишком сложно... Вот объясни мне пожалуйста несколько вещей:
- что значит параллельное освещение (оно ж вроде и в обычной жизни параллельное - допустим от солнышка)??? - получается там не одна картинка, а несколько - с тенями и без; и перемещая мышь прозрачность одной картинки уменьшается, а другая наоборот усиливается (можно глянуть как выглядят исходные картинки)??? - почему там получается матрица, если освещенность выражается одним линейным уравнением, где по сути нет неизвестных??? |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 111
|
2Волгоградец
>> что значит параллельное освещение (оно ж вроде и в обычной жизни параллельное - допустим от солнышка)??? Да так и есть, но например освещение от фонарика не параллельное там лучи выходят почти из одной точки. (параллельное значит, что направляющие вектора всех световых лучей одинаковые). >> получается там не одна картинка, а несколько - с тенями и без; и перемещая мышь прозрачность одной картинки уменьшается, а другая наоборот >>усиливается (можно глянуть как выглядят исходные картинки)??? Первая картинка карта освещенности должна обновляться как тока юзер двинет мышкой (юзер двигает мышкой меняется направляющей вектор света ну и соответственно матрица). Вторая картинка это цветовая карта она не меняется - цвета пикселя в ней не учитывают освещения (то есть как если бы анти-направляющей вектор света = нормали в каждом пикселе). Потом просто рисуешь одну по верх другой с blendmode = BlendMode.MULTIPLY. (прозрачность нигде не используется) пример карты нормалей: http://up.li.ru/?id=352348;1.PNG пример карты высот: http://up.li.ru/files/2008/04/28/352350.PNG;2.PNG пример цветовой карты: http://up.li.ru/files/2008/04/28/352353.PNG;3.PNG >> почему там получается матрица, если освещенность выражается одним линейным уравнением, где по сути нет неизвестных??? Освещенность выражается 4-мя линейными уравнениями (т.к. вектор 4х мерный - RGBA) просто три из них одинаковые (за исключением переменной после знака = ) а одно выглядит как alpha = alpha Последний раз редактировалось mikleb; 28.04.2008 в 15:21. |
|
|||||
|
Так... У тебя карта освещенности == карта нормалей, т.е. это одно и то же? (И почему тогда она меняется, если нормаль всегда одинаковая для данной поверхности - меняется только угол падения света...) Откуда ты ее взял, т.е. как узнал что такие цвета должны быть - от голубого до малинового?
С картой высот понятно - это черно-белая картинка с разной яркостью пикселов. Цветовая карта тоже вродя понятно - это цвет объекта, как будно он одинаково освещен со всех сторон. Что значит Цитата:
P.S.: меня, если честно, поразили твои эффекты - весь день читаю про bump mapping и parallax - но все не то... Не объясняет никто как сделать 2D bump mapping. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 111
|
Карта освещенности != карте нормалей. Карта освещенности должна заново расчитываться при изменении вектора света.
Карту нормалей как и карту высот можно отрендерить в 3ds max например, а можно программно попиксельно расчитать по карте высот (но будет долго и будут небольшие погрешности, я пробовал так делать когда писал генератор ландшафта). Рисуешь в смысле делаешь так : (карта освещенности ). draw ((цветовая карта), null, null, BlendMode.MULTIPLY); И карта освещенности станет итоговой картинкой. |
|
|||||
|
Все понятно. По идее можно обойтись и двухмерными редакторами, только будет долго и с погрешностью, я так понял. А так в принципе для любого случая подойдет та матрица, что ты описал... Спасибо, что поделился ).
И еще вопрос: карта освещенности рассчитывается для каждого пиксела отдельно, следовательно при большой картинке будут тормоза. Но на твоем "рельефе" я не заметил тормозов... |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 111
|
2Волгоградец
Карта освещенности - расчитывается 1 раз при изменении вектора света (это карта освещенности каждого пикселя) |
|
|||||
|
Я про это и говорю - если я передвигаю мышь, вектор света меняется, значит пересчитывается освещенность каждого пиксела. Следовательно для большой картинки расчет будет серьезный. Или я опять что-то не догнал?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 19:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|