Moving water (Source)
![Info content.png](/w/images/f/f6/Info_content.png)
This page either contains information that is only partially or incorrectly translated, or there isn't a translation yet.
If this page cannot be translated for some reason, or is left untranslated for an extended period of time after this notice is posted, the page should be requested to be deleted.
Also, please make sure the article tries to comply with the alternate languages guide.
Движок Source поддерживает воду как энтити func_water_analog , которая может передвигаться так же, как и func_movelinear .
Contents
Ограничения
Хотя перемещение воды в принципе возможно, есть некоторые ограничения.
- Не используется шейдер воды. Для воды используется bump mapping (чтобы "удешевить" воду, т.е. сделать менее ресурсоёмкой).
- Перемещение воды не всегда корректно реагирует как нормальная вода. Ентити клиента, например, осколки от объектов в HL2MP или рэгдоллы,не всплывают.
- Всплески (чаще всего видны при взрывах) неправильно визуализируются. Скорее всего, они будут появляться на начальном уровне воды, чем на конечном,.
- Под водой не происходит изменения вида, и вода выглядит "ярче", чем нормальная.
Изготовление
To add a moving water volume to your level, follow these steps:
Создание водный браши
- Создайте браш размера водной массы используя Block Tool.
- Откройте Texture Browser нажав на кнопку Browse на Texture Bar.
- Дважды кликните
tools\toolsnodraw
материал в Texture Browser. - Теперь нажмите на кнопку Apply Current Texture чтобы применить текстуру nodraw на браш.
- Выберете Texture Application Tool, который откроет режим Face Edit.
- Кликните левой кнопкой мыши на верхний фейс водного браша в 3D виде, чтобы выделить его.
- Нажмите Browse, чтобы снова отобразить Texture Browser.
- Введите
movingplane
в поле filter и выберити текстуруnature/water_movingplane
. - Нажмите кнопку Apply на панели Face Edit.
Конфигурация энтити func_water_analog
- Now you have constructed the water brush, press Ctrl + T to tie the brush to an entity. Select
func_water_analog
from the list. - In order to trigger your water, you must name it. Enter an identifier for the water in the
Name
field. - Select the direction for the water to move in the
Move Direction
field. For most cases, you should select Up from the list. - Enter a speed at which your water should move. 55 works well, but the speed should depend on the situation.
- The entity uses the
Move Distance
field to determine how far the water should move. If you enter the height of your water brush, it will move fully above its starting position (the bottom of the brush will be where the top of the brush was originally). - You can select sounds to be played when the water starts or stops moving with the
Sounds played...
fields.
Triggering the Water
The func_water_analog
entity can be moved via two inputs, Open
and Close
. See Inputs & Outputs for more information.
Cubemaps и движущаяся вода
As mentioned earlier, moving water cannot use the water shader and instead has the same visual properties as "cheap" water, using a pre-calculated environment map from an env_cubemap instead.
Cubemaps are important to use with water surfaces. On lower than DX9 level video cards, it is not possible to render the real-time reflective water shader. For these cards, an env_cubemap entity provides the pre-calculated environment map use to render water on sub-DX9 cards.
Чтобы добавить env_cubemap к водным поверхностям:
- Добавьте энтити env_cubemap использовая Entity Tool.
- Разместите env_cubemap над поверхности воды, около центра.
- Дважды кликните на env_cubemap в 3D виде, чтобы отобразить Object Properties.
- Кликните на кнопку Brush faces в Object Properties.
- Кликните кнопку Pick.... Курсор мыши смениться на иконку пипетки.
- Кликните на верхний фейс воды, чтобы выделить его пипеткой. Он выделиться красным, чтобы показать ассоциацию фейса с энтити env_cubemap.
- Закройте Object properties.
- Скомпилируйте и запустите вашу карту. Когда карта загрузилась, откройте консоль разработчика и введите
buildcubemaps
. Движок просчитает карту окружения для каждой энтити env_cubemap, и сохранит информацию в BSP файл.