# \[5] Редактор воды

**Редактор воды** `[water]` является встроенным инструментом [Редактора карт](/documentation/gem-rts-v1-ru/redaktor/redaktor-kart.md). \
Используется для создания на картах водоемов: озер, рек, моря.&#x20;

Переключиться в **Редактор воды** можно двумя способами:

* нажать на иконку water бокового меню Редактора Карт;
* нажать клавишу 3 на клавиатуре.

<figure><img src="/files/PF4aFUR5OyjUeIT6iwSX" alt=""><figcaption><p>Редактор воды</p></figcaption></figure>

## Бассейны

Бассейн - один цельный меш поверхности воды.\
Примеры бассейнов: &#x20;

* река&#x20;
* озеро,&#x20;
* море,&#x20;
* река, впадающая в озеро.&#x20;

Список всех Бассейнов карты находится в окне `Pools`.&#x20;

<figure><img src="/files/30zoWceGtFBqDDLtE84G" alt=""><figcaption><p>Список бассейнов воды на карте</p></figcaption></figure>

### Уровень Бассейна

Значение параметра `Altitude` задает высоту уровня поверхности воды для выделенного в списке Бассейна. \
Бассейны воды со значениями параметра `Altitude` в пределах 10 игровых единиц (0.5м)  при рендере будут объединены в один уровень воды с целью оптимизации.

Рендер в Gem RTS поддерживает до 16 различных уровней поверхности воды.&#x20;

<figure><img src="/files/1j2yR0lbjkoM7ZtNZPt1" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
При создании нескольких уровней воды необходимо учитывать, что рендер каждого уровня эквивалентен рендеру целой сцены, и, соответственно, сказывается на fps. \
Хорошей практикой при проектировании карты является обоснование необходимости различных уровней воды с точки зрения игрового дизайна.
{% endhint %}

### Правила создания бассейнов

* Если водные поверхности не соединены между собой (например, 2 озера), то рекомендуется делать их разными бассейнами
* Рукава рек с разным течением допускается делать разными бассейнами (подробности описаны ниже)
* Каждый уровень воды должен быть обоснован игровым дизайном

## Создание Бассейна

### Подготовительный этап

Прежде, чем приступить к созданию Бассейна, рекомендуется при помощи инструментов [Редактора ландшафта ](/documentation/gem-rts-v1-ru/redaktor/redaktor-kart/redaktor-landshafta.md)\[Land] подготовить рельеф поверхности земли на месте предполагаемого водоема.&#x20;

### Название Бассейна

1. Вызвать контекстное меню ПКМ на пустом месте окна Pools
2. Выбрать пункт `Add...INSERT`

<figure><img src="/files/AtZGbyX2qztCoW9SRXB3" alt=""><figcaption><p>Вызов контекстного меню в окне Pools</p></figcaption></figure>

3. Ввести имя Бассейна в открывшемся окне `Input` и нажать кнопку Ok.

<figure><img src="/files/r70SYtZEEafaRZpn84A0" alt=""><figcaption><p>Процесс именования бассейна</p></figcaption></figure>

Имя Бассейна появится в списке окна Pools.

### Создание меша поверхности воды

{% hint style="info" %}
Принцип создания меша водной поверхности аналогичен созданию и редактированию полигонов меша поверхности земли в [Редакторе полигонов.](/documentation/gem-rts-v1-ru/redaktor/redaktor-kart/redaktor-landshafta/redaktor-poligonov.md)
{% endhint %}

1. Выбрать в списке окна Pools имя Бассейна, для которого необходимо создать или отредактировать меш поверхности воды
2. Установить значение параметра `Altitude`
3. Возпользоваться кистью `Polygons` для создания и редактирования меша поверхности воды

При создании и редактировании меша поверхности воды необходимо следить, чтобы полигоны меша воды пересекались в мешем поверхности земли в местах предполагаемого побережья, чтобы не возникало дыр между поверхностями.

<figure><img src="/files/RwnNstj3OcFU97gnY3z7" alt=""><figcaption><p>Набор инструментов Редактора Воды</p></figcaption></figure>

{% hint style="info" %}
Бассейн можно озвучить с помощью [Объекта area](/documentation/gem-rts-v1-ru/redaktor/redaktor-kart/specifika-redaktirovaniya-kart/obekt-dlya-ozvuchivaniya-vodnykh-basseinov.md)
{% endhint %}

## Инструменты Редактора воды

### Polygons&#x20;

Кисть Polygons используется для создания и редактирования меша поверхности воды Бассейна. \
Движение мыши с зажатой ЛКМ приводит к добавлению полигонов меша поверхности воды, с зажатой ПКМ  - полигоны удаляются.&#x20;

<figure><img src="/files/WunbtK2KF6F73W4kSjCm" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th width="269">Параметры кисти Polygons</th><th>Описание</th></tr></thead><tbody><tr><td>Флажок <code>Wireframe</code></td><td>Включить/выключить отображение полигональной сетки меша поверхности воды</td></tr><tr><td><code>Level</code></td><td>Дробность полигональной сетки меша поверхности воды</td></tr></tbody></table>

{% hint style="info" %}
На поворотах русла Бассейна реки рекомендуется разбивать полигоны на более мелкие , чтобы текстура материала воды более плавно накладывалась на меш поверхности
{% endhint %}

### Flow

Инструмент для создания течения в Бассейнах рек.

#### **Алгоритм действий**

1. Выставить направляющие точки для Кривой течения - движок сформирует текстурные координаты для создания видимости течения.
2. Отредактировать положение точек кривой так, чтобы образовалась плавная линия, соотвествующая руслу и течению реки

<figure><img src="https://lh7-us.googleusercontent.com/jWFt__8cWQuQ7pWtIbrOJbHOQxx3B-Z4k1Pn0sIpYel3mDGbn6NmTQDa4qgS2VCpXDYODgQPV1CTn1YWIHNZwAezA-vX2479j-3JGkMI8mV4m1BWO-rCDxHKvEa0yHpsEaJqvvZVxWH_ob8mBGg1VVw" alt=""><figcaption><p>Пример внешнего вида кривой Flow для Бассейна river</p></figcaption></figure>

#### Режимы редактора кривой Flow

<table><thead><tr><th width="254">Название режима</th><th>Описание</th></tr></thead><tbody><tr><td><strong>Создание</strong></td><td>Активируется при отсутствии кривой. Каждый ЛКМ на карту добавляет точку-узел. <br>Клик ПКМ - добавляет последнюю точку и выходит из режима создания.</td></tr><tr><td><strong>Редактирование</strong></td><td><p>Активируется при наведении на существующую линию или точку. </p><p>ЛКМ на кривой (не в точку) создает новую точку на кривой.</p><p>Зажатый ЛКМ на точке кривой позволяет перемещать выбранную точку кривой по карте.</p><p>ПКМ на точке кривой  удаляет точку.<br></p></td></tr></tbody></table>

#### Правила формирования кривой Flow

* Начальная и конечная точки должны немного выступать за видимую часть реки (заходить в берега или за край карты)
* На поворотах рекомендуется располагать точку кривой Flow ближе к внутреннему углу русла, чтобы анимация течения выглядела более естественной
* В местах смены направления течения воды рекомендуется делать более дробный меш (воспользоваться кистью Polygons level 5) для более плавного смешивания анимаций движения воды
* Ограничений на количество точек кривой и длины кривой нет

### Слайдеры `Soft-Sharp` и `Slow-Fast`

Положением слайдеров  `Soft-Sharp` и `Slow-Fast` задаются плавность и скорость работы кистей Colors и Materials Редактора воды.

### Colors

Кисть для подкраски вертексов меша воды. \
Работает аналогично кисти Colors Редактора ландшафта.

{% hint style="info" %}
При использовании кисти Color рекомендуется выставить в свойствах материала воды параметр сolor равный белому цвету, так как во время подкрашивания кистью Color цвета вертексов меша и материала воды перемножаются, поэтому дефолтный цвет вертексов в схеме материала будет нивелировать цвет из кисточки.
{% endhint %}

### Materials&#x20;

Кисть Materials предназначена для разукрашивания поверхности воды.\
Каждый бассейн содержит свой список материалов.\
Добавлять материалы в выбранный Бассейн можно с помощью кнопки Add.\
Доступен импорт материалов из других бассейнов или карт по нажатию кнопки Import.

<figure><img src="/files/c6MdH9HYXhaiKu2Koixk" alt=""><figcaption></figcaption></figure>

## Настройка параметров материала воды

Окно настройки параметров материала воды открывается при выборе соответствующего материала из списка на вкладке Materials.

{% hint style="info" %}
`Параметр land_texture_basis` присутствует во всех материалах карты и задает значение базового тайла материала земли. \
По умолчанию установлено значение 15.
{% endhint %}

### Базовая настройка материала воды

Материалы воды делятся на два вида:&#x20;

* однослойные;
* двухслойные.

Базовая схема, определяющая количество слоев в материале, выбирается из списка в строке с именем материала.&#x20;

При добавлении нового материала воды по умолчанию в материале используется схема однослойного материала `water/flow`.&#x20;

<figure><img src="/files/q8M9jd8oET7RMSHQH6qK" alt=""><figcaption></figcaption></figure>

### Настройка однослойного материала

SDL файл схемы находится в ресурсах по ссылке:\
`\resource\entity\service\water\water.mtl`

<details>

<summary>Содержимое SDL файла схемы однослойного материала воды</summary>

```
{"water/flow"
    {bumpvolume_noise "$/water/nwave02"}
    {bumpvolume_wave "$/water/nwave03"}
    {blend blend}
  }
}
```

</details>

<figure><img src="/files/hXLmptAkNUYCgN10JY4B" alt=""><figcaption></figcaption></figure>

Значения параметров материала можно настраивать непосредственно в Редакторе воды на вкладке Materials, выбрав соответствующий материал в списке.

<table><thead><tr><th width="203">Параметр</th><th width="416">Описание</th><th>Значение по умолчанию</th></tr></thead><tbody><tr><td>textures</td><td>В блоке textures необходимо выбрать текстуры для шума (bumpvolume_noise) и волн (bumpvolume_wave). <br>Текстуры не должны быть одинаковыми</td><td></td></tr><tr><td>color</td><td>Цвет меша поверхности воды</td><td>Синий</td></tr><tr><td>specular_power</td><td>Степень блеска поверхности, влияет на размер пятна спекуляра от "Солнца"</td><td>3000</td></tr><tr><td>bumpiness_noise</td><td>Степень рельефности текстуры ряби</td><td>1</td></tr><tr><td>specular_amount</td><td>Величина спекуляра</td><td></td></tr><tr><td>soft_attenuation</td><td>Влияет на размытость краев воды и косвенно на соотношение refract/reflect. <br>Этот параметр надо менять совместно с fresnel_power</td><td>0.1</td></tr><tr><td>refraction_scale</td><td>Коэффициент искажения refract-составляющей колебаниями воды (0 - не искажается совсем).</td><td>0.1</td></tr><tr><td>density</td><td><p>Коэффициент соотношения color/refract для иммитации прозрачности воды.</p><p>Чем больше значение, тем больше кажущаяся толща воды и меньше видно дно</p></td><td>0.002</td></tr><tr><td>reflection_scale</td><td>Коэффициент искажения reflect-составляющей колебаниями воды (0 - не искажается совсем).</td><td>0.1</td></tr><tr><td>fresnel_power</td><td>Коэффициент соотношения refract/reflect - отражающая способность поверхности воды.  Чем больше значение, тем менее отражающей будет поверхность воды.</td><td>2</td></tr><tr><td>fresnel_scale</td><td>Коэффициент усиления Френеля</td><td>1.2</td></tr><tr><td>bumpiness_wave</td><td>Степень выраженности неровностей текстуры волн, рельефность волн</td><td>0.05</td></tr><tr><td>period_wave</td><td>Частота колебаний волн</td><td>1</td></tr><tr><td>tile_wave</td><td>Растянутость текстуры волн.<br>На больших плоскостях воды нельзя использовать большое значение tile_wave, иначе будут видны тайлы текстуры.</td><td>1</td></tr><tr><td>period_noise</td><td>Частота колебаний ряби. <br>Параметр period_noise нужно настроить так, чтобы его значение не было равно значению period_wave</td><td>1</td></tr><tr><td>tile_noise</td><td>Растянутость текстуры ряби. <br>Необходимо настроить параметры tile_noise и tile_wave так, чтобы tile_noise был как минимум в 2 раза больше, чем tile_wave</td><td>2</td></tr><tr><td>speed_noise</td><td>Скорость проигрывания анимации на текстуре ряби</td><td>0.001</td></tr><tr><td>speed_wave</td><td>Скорость проигрывания анимации на текстуре, имитирующей течение воды</td><td>0.01</td></tr><tr><td>angle</td><td>Угол поворота текстуры при прокрашивании материалом</td><td>0</td></tr><tr><td>alpha_min</td><td>Минимальное значение альфа-канала</td><td>1</td></tr></tbody></table>

### Настройки двухслойного материала

Двухслойные материалы `water\layered_2` используются для создания визуально разной воды на разных участках в пределах одного Бассейна (например, река впадает в озеро)

<figure><img src="/files/xG0oxjllueEDw3XL7Mhb" alt=""><figcaption><p>Двухслойный материал</p></figcaption></figure>

**Принцип настройки двухслойного материала**

* В первом слое настроить параметры материала, аналогично одному однослойному материалу (например, реки)
* Во втором слое настроить параметры материала, аналогично второму материалу (озера)
* Параметры для каждого слоя аналогичны параметрам [однослойного материала](#nastroika-odnosloinogo-materiala).

## Переходы материалов воды

### Переход с помощью двухслойного материала

{% hint style="info" %}
Переходы между материалами воды делаются аналогично тому, как делаются [переходы между материалами на поверхности земли](/documentation/gem-rts-v1-ru/redaktor/redaktor-kart/redaktor-landshafta/redaktor-materialov-zemli.md#perekhody-mezhdu-materialami).&#x20;
{% endhint %}

Переход между однослойными материалами необходимо прокрасить двухслойным материалом так, чтобы материалы двухслойного материала стыковались с соответствующими материалами каждого из двух стыкуемых однослойных материалов.  При раскрашивании использовать ЛКМ и ПКМ для материалов из слоя 1 и 2 соответственно.

ПКМ с зажатым Ctrl  (‘pick’ feature) выбирает материал воды в точке клика, при этом возможны следующие варианты:

* если это материал из текущего бассейна, то он станет активным в списке материалов;
* если текущий бассейн пустой (в бассейне еще нет полигонов), материал со сцены заменит текущий материал;
* иначе материал добавится в список материалов текущего бассейна.

### Разные материалы в одном бассейне

Пятна с иными свойствами воды можно сделать с помощью двухслойного материала `water/layered_2`:

* первый слой в точности повторяет настройки основного материала бассейна, но значение параметра  `alpha_min=1`
* второй слой настроить согласно визуальным требованиям пятна иной воды и выставить значение параметра `alpha_min=1`

Пятна иной воды красить с зажатой ПКМ

<figure><img src="https://lh7-us.googleusercontent.com/BsiTThrDYbYmgm8h-D16sjGhbFAkSi8WRpiUqinqa8sSHknWHbsx4h9d6os-67U2tLsN2fZXbDqgkdkCbRC1ktSfgFXKY-cKmj9m3LguZB9f5pINsfv_FvRzKU3x1EwXh4L5J6SUjJo1dYCFUz1O2gc" alt=""><figcaption></figcaption></figure>

### Объединение материалов с разным направлением течения воды

Если необходимо создать разное направление течения воды на разных участках водной поверхности, то это можно сделать несколькими способами.

* С помощью двухслойного материала, с разными значениями параметра `angle` в слоях&#x20;
* С помощью создания нескольких бассейнов, с последующим визуальным объединением бассейнов

### Объединение нескольких бассейнов

Если необходимо визуально объединить несколько бассейнов с разными кривыми течения, то бленд материалов воды в бассейнах удобно делать с использованием материала `water\flow` с параметром `alpha_min = 0`

Чтобы места соединения Бассейнов не мерцали, необходимо установить параметры `Altitude` бассейнов с разницей высоты в `0.001`.&#x20;

## Дополнительная информация о настройках воды

**Цвет воды** состоит из следующих составляющих:

* reflect - отражение (берется из текстуры отражений)
* refract - дно (берется из текстуры сцены)
* color - цвет толщи воды, к нему применяется освещение источниками света
* specular - блики на поверхности от источников света

**Параметры воды**, влияющие на ее **цвет**:

* color
* density&#x20;
* fresnel\_power&#x20;
* specular\_power
* soft\_attenuation

**Параметры воды**, влияющие на ее **внешний вид**:

* bumpiness
* tile
* period
* refraction\_scale&#x20;
* reflection\_scale&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bestway-1.gitbook.io/documentation/gem-rts-v1-ru/redaktor/redaktor-kart/redaktor-vody.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
