понедельник, 16 июля 2012 г.

Тени на воде

В 2009 году вышел Left 4 Dead 2 и движок Source был обновлен. Появились новые параметры у материалов, которые добавляли различные эффекты. На данный момент в Half-Life 2 и эпизодах таких нет. И остается только думать, как имитировать эти эффекты. Этот способ достаточно простой. И вот результаты, которых можно с ним добиться:

 Так как же добиться такого эффекта? Все неприлично просто.
Создаете обычный материал воды (или копируете готовый). Редактируете так как надо вам, для конкретной ситуации, текстура нормалей($normalmap), сила отражения($reflectamount) и преломления($refractamount), цвет тумана($fogcolor) и его интенсивность($fogstart и $fogend).
Затем создаем еще одну текстуру. Она будет представлять из себя одноцветный квадрат и цвет будет такой:
Допустим вы создали воду с параметром цвета тумана 55 55 10. Цвет той текстуры должен быть 110 110 20. Т.е. каждое число увеличивается в 2 раза. (Так делать необязательно и можете поэкспериментировать с этими числами. Этот алгоритм я использовал для создания текстур, как на скриншотах выше) Также необходим альфа-канал. Он тоже одноцветен. Интенсивность канала(его цвет) выбираем в зависимости от интесивности тумана воды. Чем гуще туман, тем светлее должен быть альфа-канал, и наоборот. И сохраняем.
Я создаю текстуры и сохраняю через фотошоп и VTF плагин. Там при сохранении надо выбрать параметр "Compressed texture with Alpha"
Создаем материал для нашей одноцветной текстуры:
"LightmappedGeneric"
{
 "$basetexture" "Путь к вашей текстуре"
 "$translucent" 1
 "$surfaceprop" default
}
Потом наконец создаем нашу воду. Создаем браш, размещаем так как нужно и красим его в NoDraw, а верхнюю грань покрываем текстурой нашей новой воды.
Далее создаем браш толщиной 1 юнит под поверхностью воды и тоже покрываем его текстурой NoDraw. Он должен быть на расстоянии как можно меньшем от поверхности воды. 0.5-0.3 юнита подойдет.

Красим верхнюю грань браша нашей одноцветной текстурой.
Затем, выделив браш, нажимаем Ctrl+T и превращаем его в func_brush. В параметре Solidity выбираем Never.
Все! 

Комментариев нет:

Отправить комментарий