вернуться на beanet.ru вернуться к списку проектов вернуться на главную страницу сборника

Тема: Вода


Ключевые слова: вода, water, func_water_analog, как правильно сделать воду

См. также:
Список используемых понятий, сокращений и обозначений

перейти к общему списку

Обычная вода (с постоянным уровнем по вертикали)

Для создания воды необходимо добавить на карту прямоугольный браш, верхняя сторона которого должна быть строго перпендикулярна оси Z. Другими словами – браш, изображающий воду, можно поворачивать лишь вокруг вертикальной оси. Искривлять верхнюю сторону также нельзя. Созданный браш закрашивается текстурой tools/toolsnodraw со всех сторон, кроме верхней. Верхняя сторона закрашивается одной из водных текстур (в окне просмотра/выбора текстуры в поле Filter введите слово water). Желательно выбирать текстуру с именем, оканчивающимся словом water, после которого могут стоять цифры. Все стороны водного браша, кроме верхней, должны быть скрыты внутри других брашей, либо должны вплотную прилегать к ним, т.е. Вы не должны видеть их в игре.
С целью оптимизации игры (уменьшения «торможения») рекомендуется добавить на карту энтити water_lod_control, и подобрать для нее соотвествующие настройки. Снижение качества воды до «дешёвого» (cheap) с увеличением расстояния от водной поверхности желательно сделать как можно раньше, в то же время скрывая данный эффект от игрока.
Для получения нормального отражения водной поверхностью окружающего мира используйте энтити env_cubemap, расположив ее на некоторой высоте над водой, примерно посередине поверхности.


Необходимые условия:
  • в пределах видимости участка карты (PVS) уровень воды по вертикали должен быть одним и тем же (если вода высокого качества), нельзя также смешивать настройки качества воды («дорогая» и «дешёвая»).
  • компиляция карты, на которой есть вода, должна выполняться с VVIS и VRAD, т.е. эти опции обязательно должны быть выставлены в Fast или Normal (ни в коем случае не No). В противном случае с отображением воды будут проблемы.

Возможные проблемы:
  • неестественное или неправильное отражение на водной поверхности исправляется размещением над ней (примерно посередине) специальной энтити env_cubemap. После компиляции и запуска карты в консоли необходимо ввести команду buildcubemaps. Будут построены правильные отражения для всех поверхностей, в том числе и для водной.
  • отсутствие видимой поверхности воды (снаружи или под водой) говорит о том, что на карте есть утечки (leaks). Необходимо устранить все утечки и заново выполнить компиляцию. Если это не помогло (или утечек нет), проверьте выбранную для поверхности воды текстуру – возможно, она не соответствует допустимому перечню.
  • около водной поверхности видна пустота – это означает, что боковая или нижняя грань водного браша видима для Вас (а должна быть скрыта). Необходимо вплотную придвинуть ее к обычному брашу или скрыть внутри него.


Движущаяся вода

Используется, если нужно передвигать уровень водной поверхности (обычно по вертикали). Водные шейдеры в Source работают только для поверхности с неизменным уровнем. Из-за этого движущаяся поверхность лишь частично использует шейдеры (что отражается на качестве). Также, для движущейся поверхности можно использовать только две текстуры - nature/water_movingplane и nature/water_dx70. Обычно используется первая из них.

Создайте обычную воду, закрасив верхнюю сторону водного браша в текстуру nature/water_movingplane, и преобразуйте этот браш в объект func_water_analog (используйте сочетание клавиш Ctrl+T). Более подробно см. func_water_analog.



Статьи (рус): http://developer.valvesoftware.com/wiki/Adding_Water
Статьи (eng):

перейти к общему списку

Номер статьи: 1

Сборник полезной информации по созданию модификаций на движке Valve Source Engine (игры Half-Life 2, Episode One, Episode Two)